MICA FlowSheet

A flowsheet is an ordered list of Sheets.

This document shows some example of managing a flowSheet.

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

Create a FlowSheet.
 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.     

Select one or several sheets

Select the first Sheet

Select the 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  ?firstSheet ?firstRole
      
WHERE
{
  micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:first ?firstElement .
  ?firstElement micamodel:hasKnowledgeElement ?firstSheet;
                micamodel:role ?firstRole.
} 

Select a NTh element

Select a third member from flowSheet

Select the second 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 ?secondSheet ?secondRole
WHERE {
  micaresource:d90542fe1a2d41ab8d3db1f8276af052 micamodel:hasElements/rdf:rest{1}/rdf:first ?secondElement.
 ?secondElement micamodel:hasKnowledgeElement ?secondSheet;
                micamodel:role ?secondRole.
}

Select the last element

Select the last 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 ?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.
}

Select all elements

Select all Sheets.
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.
}

Insert a given sheet in a flowsheet

Insert a sheet at the first position

Insert at the first position.
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 sheet at the specific position in FlowSheet

Insert at the second position.

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

Insert a sheet to the end of FlowSheet

Insert at the end position.

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 a given sheet in a flowsheet

Delete a sheet to the start of FlowSheet

delete a sheet.

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 a sheet at the specific position in FlowSheet

delete a sheet.

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.


}

Delete a sheet at the last element

delete a sheet.

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