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. }