This document shows some example of managing a flowSheet.
A flowsheet is an ordered list of Sheets.
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:FlowSheetValueAdded rdf:type micamodel:FlowSheet; ......................... micamodel:content ( micaresource:FactSheetMineClosure micaresource:DocSheetStocksInUse micaresource:DefSheetCircularEconomy micaresource:WebDocumentResourceWebsite micaresource:MicaDataResourceGlassWaste ).
The RDF code above shows the simple way to create a flowsheet. But this is equivalent to the following graph and RDF code.
micaresource:FlowSheetValueAdded micamodel:content _:b0 . _:b0 rdf:first micaresource:FactSheetMineClosure. _:b0 rdf:rest _:b1 . _:b1 rdf:first micaresource:DocSheetStocksInUse. _:b1 rdf:rest _:b2 . _:b2 rdf:first micaresource:DefSheetCircularEconomy. _:b2 rdf:rest _:b3 . _:b3 rdf:first micaresource:WebDocumentResourceWebsite . _:b3 rdf:rest _:b4 . _:b4 rdf:first micaresource:MicaDataResourceGlassWaste . _:b4 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 WHERE { micaresource:FlowSheetValueAdded micamodel:content ?list . ?list rdf:first ?firstSheet . }
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 ?sheet WHERE { micaresource:FlowSheetValueAdded micamodel:content/rdf:rest{2}/rdf:first ?sheet. }
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 WHERE { micaresource:FlowSheetValueAdded micamodel:content ?list . ?list rdf:rest+ ?lastlist . ?lastlist rdf:rest rdf:nil . ?lastlist rdf:first ?lastSheet . }
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 WHERE { micaresource:FlowSheetValueAdded micamodel:content/rdf:rest*/rdf:first ?sheet }
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:FlowSheetValueAdded micamodel:content ?list } INSERT { micaresource:FlowSheetValueAdded micamodel:content [ rdf:first micaresource:FactSheetABM ; rdf:rest ?list ] } WHERE { micaresource:FlowSheetValueAdded micamodel:content ?list . }
Insert a third 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 { _:b1 rdf:first micaresource:FactSheetABM ; rdf:rest ?rest . ?insertionPoint rdf:rest _:b1 . } WHERE { micaresource:FlowSheetValueAdded micamodel:content/rdf:rest{2}/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 micaresource:FactSheetABM ; rdf:rest rdf:nil ] } WHERE { micaresource:FlowSheetValueAdded micamodel:content ?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:FlowSheetValueAdded micamodel:content rdf:nil . } INSERT { micaresource:FlowSheetValueAdded micamodel:content [ rdf:first micaresource:FactSheetABM ; rdf:rest rdf:nil ] } WHERE { micaresource:FlowSheetValueAdded micamodel:content rdf:nil . }
List of length 1
Do before other lists.
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:FlowSheetValueAdded micamodel:content ?firstSheet . ?firstSheet rdf:first ?v . ?firstSheet rdf:rest rdf:nil . } INSERT { micaresource:FlowSheetValueAdded micamodel:content rdf:nil . } WHERE { micaresource:FlowSheetValueAdded micamodel:content ?firstSheet . ?firstSheet rdf:first ?v ; rdf:rest rdf:nil . } ;
List of length >= 2
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 . } INSERT { ?elt1 rdf:rest rdf:nil } WHERE { micaresource:FlowSheetValueAdded micamodel:content ?list . ?list rdf:rest* ?elt1 . # Second to end. ?elt1 rdf:rest ?elt . # End. ?elt rdf:first ?v ; 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#> DELETE { ?previousMember rdf:rest ?deletionPoint . ?deletionPoint rdf:rest ?rest . ?s ?p ?item . ?item ?s ?p . } INSERT { ?previousMember rdf:rest ?rest. } WHERE { micaresource:FlowSheetValueAdded micamodel:content/rdf:rest/rdf:rest/rdf:first ?item . ?deletionPoint rdf:first ?item ; rdf:rest ?rest . ?previousMember rdf:rest ?deletionPoint . ?s ?p ?item . OPTIONAL { ?item ?s ?o . } }