A flowsheet is an ordered list of Sheets.
This document shows some example of managing a flowSheet.

Given that a flowsheet is a sheet, it must contain the same elements as a sheet such the title, description, status and author.
In addition of these elements, A FlowSheet contains an ordered list of sheets. An ordered list is describe as follows:
micaresource:d90542fe1a2d41ab8d3db1f8276af052 rdf:type micamodel:FlowSheet;
.........................
micamodel:hasElements (
[
micamodel:hasKnowledgeElement micaresource:4a76c1f420224d298709316db776dc05;
micamodel:role "mineral"
]
[
micamodel:hasKnowledgeElement micaresource:a18d695539834d149a3367e1ef14e420;
micamodel:role "exploration"
]
[
micamodel:hasKnowledgeElement micaresource:b50968fe633b4b53a6e1602775dc4956;
micamodel:role "commodities"
]
). The RDF code above shows the simple way to create a flowsheet. But this is equivalent to the following graph and RDF code.
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements _:b0 . _:b0 rdf:first _:b01. _:b01 micamodel:hasKnowledgeElement micaresource:4a76c1f420224d298709316db776dc05. _:b01 micamodel:role "mineral". _:b0 rdf:rest _:b1 . _:b1 rdf:first _:b11. _:b11 micamodel:hasKnowledgeElement micaresource:a18d695539834d149a3367e1ef14e420. _:b11 micamodel:role "exploration". _:b1 rdf:rest _:b2 . _:b2 rdf:first _:b21. _:b21 micamodel:hasKnowledgeElement micaresource:b50968fe633b4b53a6e1602775dc4956. _:b21 micamodel:role "commodities". _:b2 rdf:rest rdf:nil.
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?firstSheet ?firstRole
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:first ?firstElement .
?firstElement micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
} Select a third member from flowSheet
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?secondSheet ?secondRole
WHERE {
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:rest{1}/rdf:first ?secondElement.
?secondElement micamodel:hasKnowledgeElement ?secondSheet;
micamodel:role ?secondRole.
}prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?lastSheet ?lastRole
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:rest+ ?lastlist .
?lastlist rdf:rest rdf:nil .
?lastlist rdf:first ?lastElement .
?lastElement micamodel:hasKnowledgeElement ?lastSheet;
micamodel:role ?lastRole.
}prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?sheet ?role
WHERE {
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:rest*/rdf:first ?element.
?element micamodel:hasKnowledgeElement ?sheet;
micamodel:role ?role.
}prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE { micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?list }
INSERT { micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements [ rdf:first [
micamodel:hasKnowledgeElement micaresource:8251125449dad21d33c8bbde6c8;
micamodel:role "material"
] ;
rdf:rest ?list ]
}
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?list .
}Insert a second member
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE {
?insertionPoint rdf:rest ?rest .
}
INSERT {
_:b10 rdf:first [
micamodel:hasKnowledgeElement micaresource:8251125449dad21d33c8bbde6c8;
micamodel:role "material"
] ;
rdf:rest ?rest .
?insertionPoint rdf:rest _:b10 .
}
WHERE {
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:rest{0}/rdf:first ?item .
?insertionPoint rdf:first ?item ;
rdf:rest ?rest .
}The order here is important.
If the elements in list are more than one ( list of length >= 1)
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE { ?lastSheet rdf:rest rdf:nil }
INSERT { ?lastSheet rdf:rest [ rdf:first [
micamodel:hasKnowledgeElement micaresource:8251125449dad21d33c8bbde6c8;
micamodel:role "material"
] ;
rdf:rest rdf:nil ] }
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?list .
?list rdf:rest+ ?lastSheet .
?lastSheet rdf:rest rdf:nil .
}If the elements in list are zero ( list of length = 0 )
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE { micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements rdf:nil . }
INSERT { micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements [ rdf:first [
micamodel:hasKnowledgeElement micaresource:8251125449dad21d33c8bbde6c8;
micamodel:role "material"
] ; rdf:rest rdf:nil ] }
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements rdf:nil .
}delete the first element
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE { micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?firstnode.
?firstnode rdf:first ?firstelement ;
rdf:rest ?rest.
?firstelement micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
}
INSERT { micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?rest . }
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?firstnode.
?firstnode rdf:first ?firstelement ;
rdf:rest ?rest .
?firstelement micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
} Delete the second element
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE {
?previousMember rdf:rest ?deletionPoint .
?deletionPoint rdf:first ?item ;
rdf:rest ?rest .
?item micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
}
INSERT {
?previousMember rdf:rest ?rest.
}
WHERE {
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:rest{1}/rdf:first ?item .
?deletionPoint rdf:first ?item ;
rdf:rest ?rest .
?previousMember rdf:rest ?deletionPoint .
?item micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
}List of length >= 2
PREFIX micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix micaresource: <https://w3id.org/mica/resource/>
prefix micamodel: <https://w3id.org/mica/ontology/MicaModel#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DELETE { ?elt1 rdf:rest ?elt .
?elt rdf:first ?v .
?elt rdf:rest rdf:nil .
?v micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
}
INSERT { ?elt1 rdf:rest rdf:nil }
WHERE
{
micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements ?list .
?list rdf:rest* ?elt1 .
# Second to end.
?elt1 rdf:rest ?elt .
# End.
?elt rdf:first ?v ;
rdf:rest rdf:nil .
?v micamodel:hasKnowledgeElement ?firstSheet;
micamodel:role ?firstRole.
}