Skip to content

Commit

Permalink
update input and output terminals, sparql test ok
Browse files Browse the repository at this point in the history
  • Loading branch information
henriettelienrebnor committed Sep 20, 2024
1 parent 0a74d25 commit 8c065fe
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 30 deletions.
9 changes: 8 additions & 1 deletion henriteste/PipingComponentBlock.map.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,14 @@
rr:predicateObjectMap [
rr:predicate imf:hasTerminal;
rr:objectMap [
rr:template "https://assetid.equinor.com/plantx#{ConnectionPoints/Node[position()>1]/@ID}" ;
rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_input')}";
rr:termType rr:IRI
]
] ;
rr:predicateObjectMap [
rr:predicate imf:hasTerminal;
rr:objectMap [
rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_output')}";
rr:termType rr:IRI
]
] .
33 changes: 14 additions & 19 deletions henriteste/PipingComponentTerminal.map.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,14 @@
@prefix dbo: <http://dbpedia.org/ontology/> .
@prefix imf: <http://ns.imfid.org/imf#> .

:PipingComponentFlowInTerminal a rr:TriplesMap;
:PipingComponentInputTerminal a rr:TriplesMap;
rml:logicalSource [
rml:source "pandid.xml";
rml:referenceFormulation ql:XPath;
rml:iterator """if(//PipingComponent/ConnectionPoints/@FlowIn) then
//PipingComponent/ConnectionPoints/Node[position()=number(../@FlowIn)+1]
else(//PipingComponent/ConnectionPoints/Node[position()=2])
"""
rml:iterator "//PipingComponent"
];
rr:subjectMap [
rr:template "https://assetid.equinor.com/plantx#{@ID}";
rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_input')}";
rr:termType rr:IRI;
rr:class imf:InputTerminal
];
Expand All @@ -30,10 +27,10 @@
rr:predicate imf:hasConnector;
rr:objectMap [
rr:template """https://assetid.equinor.com/plantx#{
if(../../preceding-sibling::PipingComponent[1]/@ID) then
concat(../../preceding-sibling::PipingComponent[1]/@ID, '_connector')
else if(../../../Connection/@FromID) then
concat(../../../Connection/@FromID, '_connector')
if(preceding-sibling::PipingComponent[1]/@ID) then
concat(preceding-sibling::PipingComponent[1]/@ID, '_connector')
else if(../Connection/@FromID) then
concat(../Connection/@FromID, '_connector')
else()
}""";
rr:termType rr:IRI;
Expand All @@ -47,16 +44,14 @@
]
] .

:PipingComponentFlowOutTerminal a rr:TriplesMap;
:PipingComponentOutputTerminal a rr:TriplesMap;
rml:logicalSource [
rml:source "pandid.xml";
rml:referenceFormulation ql:XPath;
rml:iterator """if(//PipingComponent/ConnectionPoints/@FlowOut) then
//PipingComponent/ConnectionPoints/Node[position()=number(../@FlowOut)+1]
else(//PipingComponent/ConnectionPoints/Node[position()=3])"""
rml:iterator "//PipingComponent"
] ;
rr:subjectMap [
rr:template "https://assetid.equinor.com/plantx#{@ID}";
rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_output')}";
rr:termType rr:IRI;
rr:class imf:OutputTerminal
] ;
Expand All @@ -66,10 +61,10 @@
rr:predicate imf:hasConnector;
rr:objectMap [
rr:template """https://assetid.equinor.com/plantx#{
if(../../following-sibling::PipingComponent[1]/@ID) then
concat(../../following-sibling::PipingComponent[1]/@ID, '_connector')
else if(../../../Connection/@ToID) then
concat(../../../Connection/@ToID, '_connector')
if(following-sibling::PipingComponent[1]/@ID) then
concat(following-sibling::PipingComponent[1]/@ID, '_connector')
else if(../Connection/@ToID) then
concat(../Connection/@ToID, '_connector')
else()
}""";
rr:termType rr:IRI;
Expand Down
20 changes: 10 additions & 10 deletions henriteste/sparql_tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ All dexpi equipment are modeled as blocks im IMF. The dexpi nozzles on the equip
-
`asset:PipingNetworkSegment-4` begins from `dexpi:Nozzle-2` and ends at `asset:Nozzle-3`, hence connecting `asset:RotaryPump-1` to `asset:PlateHeatExhanger-1`.

The components contained within `asset:PipingNetworkSegment-4` is the piping component blocks `asset:Flange-3` and `asset:Flange-4`. Hence, the input terminal `asset:Flange-3` should share the same connector as `dexpi:Nozzle-2`, and the output terminal of `asset:Flange-4` should share the same connector as `asset:Nozzle-3` :
The components contained within `asset:PipingNetworkSegment-4` is the piping component blocks `asset:Flange-3` and `asset:Flange-4`. Hence, the input terminal of `asset:Flange-3` should share the same connector as `dexpi:Nozzle-2`, and the output terminal of `asset:Flange-4` should share the same connector as `asset:Nozzle-3` :

```trig
:Flange-3_input imf:hasConnector imf:connector-1 .
dexpi:Nozzle-2 imf:hasConnector imf:connector-1 .
:Flange-4_output imf:hasConnector imf:connector-2 .
dexpi:Flange-4_output imf:hasConnector imf:connector-2 .
dexpi:Nozzle-3 imf:hasConnector imf:connector-2 .
```

Expand All @@ -43,15 +43,15 @@ This query should result in the following answer:

| block | componentTerminal | connector | nozzleTerminal |
|-------|----------|-------------------| ---------------|
| asset:RotaryPump-1 | asset:PipingNode-7 | asset:Nozzle-2_connector | asset:Nozzle-2 |
| asset:RotaryPump-1 | asset:Flange-3_input | asset:Nozzle-2_connector | asset:Nozzle-2 |

When inserting this data into RDFox we get the expected answer.
```SPARQL
INSERT DATA {
asset:Nozzle-2 imf:hasConnector asset:Nozzle-2_connector .
asset:PipingNode-7 imf:hasConnector asset:Nozzle-2_connector .
asset:Flange-3 imf:hasTerminal asset:PipingNode-7 .
asset:PipingNode-7 a imf:InputTerminal .
asset:Flange-3_input imf:hasConnector asset:Nozzle-2_connector .
asset:Flange-3 imf:hasTerminal asset:Flange-3_input .
asset:Flange-3_input a imf:InputTerminal .
}
```
Hence, we need to create these triples in the RML mappings.
Expand All @@ -74,15 +74,15 @@ This query should result in the following answer:

| block | componentTerminal | connector | nozzleTerminal |
|-------|----------|-------------------| ---------------|
| asset:PlateHeatExchanger-1 | asset:PipingNode-10 | asset:Nozzle-3_connector | asset:Nozzle-3 |
| asset:PlateHeatExchanger-1 | asset:Flange-4_output | asset:Nozzle-3_connector | asset:Nozzle-3 |

When inserting this data into RDFox we get the expected answer
```SPARQL
INSERT DATA {
asset:Nozzle- imf:hasConnector asset:Nozzle-2_connector .
asset:PipingNode-10 imf:hasConnector asset:Nozzle-3_connector .
asset:Flange-4 imf:hasTerminal asset:PipingNode-10 .
asset:PipingNode-10 a imf:OutputTerminal .
asset:Flange-4_output imf:hasConnector asset:Nozzle-3_connector .
asset:Flange-4 imf:hasTerminal asset:Flange-4_output .
asset:Flange-4_output a imf:OutputTerminal .
}
```
Hence, we need to create these triples in the RML mappings.
Expand Down

0 comments on commit 8c065fe

Please sign in to comment.