diff --git a/rml_noaka/EquipmentBlock.map.ttl b/rml_noaka/Equipment.map.ttl similarity index 96% rename from rml_noaka/EquipmentBlock.map.ttl rename to rml_noaka/Equipment.map.ttl index 736d774..ebadbd9 100644 --- a/rml_noaka/EquipmentBlock.map.ttl +++ b/rml_noaka/Equipment.map.ttl @@ -12,7 +12,7 @@ rml:logicalSource [ rml:source "pandid.xml"; rml:referenceFormulation ql:XPath; - rml:iterator "//Equipment" + rml:iterator "PlantModel/Equipment" ]; rr:subjectMap [ rr:template "https://assetid.equinor.com/plantx#{@ID}"; diff --git a/rml_noaka/PipingComponent.map.ttl b/rml_noaka/PipingComponent.map.ttl new file mode 100644 index 0000000..13e8366 --- /dev/null +++ b/rml_noaka/PipingComponent.map.ttl @@ -0,0 +1,78 @@ +@prefix rml: . +@prefix rr: . +@prefix ql: . +@prefix rdf: . +@prefix : . +@prefix schema: . +@prefix dexpi: . +@prefix asset: . +@prefix imf: . + +:PipingComponentTerminalMap a rr:TriplesMap; + rml:logicalSource [ + rml:source "pandid.xml"; + rml:referenceFormulation ql:XPath; + rml:iterator "//PipingNetworkSegment/PipingComponent/ConnectionPoints/Node[@Type='process'] | //PipingNetworkSegment/PropertyBreak/ConnectionPoints/Node[@Type='process']" + ]; + rr:subjectMap [ + rr:template "https://assetid.equinor.com/plantx#{concat(../../@ID, '-node', count(preceding-sibling::*))}"; + rr:termType rr:IRI; + rr:class imf:Terminal + ]; + + rr:predicateObjectMap [ + rr:predicate imf:hasConnector; + rr:objectMap [ + rr:template """https://assetid.equinor.com/plantx#{ + if(count(preceding-sibling::*) = 1) then + if(../../preceding-sibling::PipingComponent) then + concat(../../preceding-sibling::PipingComponent[1]/@ID, '-node2-connector') + else if(../../../Connection/@FromID) then + concat(../../../Connection/@FromID, '-node', ../../../Connection/@FromNode, '-connector') + else() + else if(count(preceding-sibling::*) = 2) then + if(../../following-sibling::PipingComponent or following-sibling::PropertyBreak) then + concat(../../@ID , '-node2-connector') + else if(../../../Connection/@ToID) then + concat(../../../Connection/@ToID, '-node', ../../../Connection/@ToNode, '-connector') + else( concat(../../@ID , '-node2-connector') ) + else() + }"""; + rr:termType rr:IRI; + ] + ] . + +:PipingComponentBlockMap a rr:TriplesMap; + rml:logicalSource [ + rml:source "pandid.xml"; + rml:referenceFormulation ql:XPath; + rml:iterator "//PipingNetworkSegment/PipingComponent | //PipingNetworkSegment/PropertyBreak" + ]; + rr:subjectMap [ + rr:template "https://assetid.equinor.com/plantx#{@ID}"; + rr:termType rr:IRI; + rr:class dexpi:PipingComponent, imf:Block + ] ; + rr:predicateObjectMap [ + rr:predicate imf:partOf; + rr:objectMap [ + rr:template "https://assetid.equinor.com/plantx#{../@ID}"; + rr:termType rr:IRI + ] + ] ; + rr:predicateObjectMap [ + rr:predicate rdfs:label ; + rr:objectMap [ + rml:reference "GenericAttributes/GenericAttribute[@Name='ItemTagAssignmentClass']/@Value" + ] + ] ; + rr:predicateObjectMap [ + rr:predicate imf:hasTerminal; + rr:objectMap [ + rr:parentTriplesMap :PipingComponentTerminalMap; + rr:joinCondition [ + rr:child "@ID"; + rr:parent "../../@ID"; + ]; + ]; + ] . \ No newline at end of file diff --git a/rml_noaka/PipingComponentBlock.map.ttl b/rml_noaka/PipingComponentBlock.map.ttl deleted file mode 100644 index 9e9b2c4..0000000 --- a/rml_noaka/PipingComponentBlock.map.ttl +++ /dev/null @@ -1,48 +0,0 @@ -@prefix rml: . -@prefix rr: . -@prefix ql: . -@prefix rdf: . -@prefix : . -@prefix schema: . -@prefix dexpi: . -@prefix asset: . -@prefix imf: . - -:PipingComponentBlockMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment/PipingComponent" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{@ID}"; - rr:termType rr:IRI; - rr:class dexpi:PipingComponent, imf:Block - ] ; - rr:predicateObjectMap [ - rr:predicate imf:hasTerminal; - rr:objectMap [ - 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 - ] - ] ; - rr:predicateObjectMap [ - rr:predicate imf:partOf; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{../@ID}"; - rr:termType rr:IRI - ] - ] ; - rr:predicateObjectMap [ - rr:predicate rdfs:label ; - rr:objectMap [ - rml:reference "GenericAttributes/GenericAttribute[@Name='ItemTagAssignmentClass']/@Value" - ] - ] . \ No newline at end of file diff --git a/rml_noaka/PipingComponentConnector.map.ttl b/rml_noaka/PipingComponentConnector.map.ttl deleted file mode 100644 index 36005bc..0000000 --- a/rml_noaka/PipingComponentConnector.map.ttl +++ /dev/null @@ -1,28 +0,0 @@ -@prefix rml: . -@prefix rr: . -@prefix ql: . -@prefix rdf: . -@prefix : . -@prefix schema: . -@prefix dexpi: . -@prefix asset: . -@prefix imf: . - -:PipingComponentConnectorMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment/PipingComponent" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_connector')}"; - rr:termType rr:IRI; - rr:class imf:Connector; - ] ; - rr:predicateObjectMap [ - rr:predicate rdfs:label; - rr:objectMap[ - rr:constant "connector"; - rr:datatype xsd:string - ] - ] . \ No newline at end of file diff --git a/rml_noaka/PipingComponentTerminal.map.ttl b/rml_noaka/PipingComponentTerminal.map.ttl deleted file mode 100644 index a85f561..0000000 --- a/rml_noaka/PipingComponentTerminal.map.ttl +++ /dev/null @@ -1,77 +0,0 @@ -@prefix rml: . -@prefix rr: . -@prefix ql: . -@prefix rdf: . -@prefix : . -@prefix schema: . -@prefix dexpi: . -@prefix asset: . -@prefix imf: . - -:PipingComponentInputTerminal a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment/PipingComponent" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_input')}"; - rr:termType rr:IRI; - rr:class imf:InputTerminal - ]; - # If there is no preceding-sibling, then it is the first component in the piping network segment. - # The first component is connected to the object that the piping network segment starts from. - rr:predicateObjectMap [ - 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') - else() - }"""; - rr:termType rr:IRI; - ] - ] ; - rr:predicateObjectMap [ - rr:predicate rdfs:label; - rr:objectMap [ - rr:constant "input"; - rr:datatype xsd:string - ] - ] . - -:PipingComponentOutputTerminal a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingComponent" - ] ; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_output')}"; - rr:termType rr:IRI; - rr:class imf:OutputTerminal - ] ; - # If there is no following sibling, then it is the last component in the piping network segment. - # The last component is connected to the object that the piping network segment goes to. - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:objectMap [ - rr:template """https://assetid.equinor.com/plantx#{ - if(following-sibling::PipingComponent[1]/@ID or following-sibling::PropertyBreak/@ID) then - concat(@ID, '_connector') - else if(../Connection/@ToID) then - concat(../Connection/@ToID, '_connector') - else() - }"""; - rr:termType rr:IRI; - ] - ] ; - rr:predicateObjectMap [ - rr:predicate rdfs:label; - rr:objectMap [ - rr:constant "output"; - rr:datatype xsd:string - ] - ] . \ No newline at end of file diff --git a/rml_noaka/PipingNetworkSegment.map.ttl b/rml_noaka/PipingNetworkSegment.map.ttl new file mode 100644 index 0000000..348d8d1 --- /dev/null +++ b/rml_noaka/PipingNetworkSegment.map.ttl @@ -0,0 +1,75 @@ +@prefix rml: . +@prefix rr: . +@prefix ql: . +@prefix rdf: . +@prefix : . +@prefix schema: . +@prefix dexpi: . +@prefix asset: . +@prefix imf: . + + +:hasNetworkSegmentConnector + rr:predicate imf:hasConnector; + rr:termType rr:IRI; + rr:objectMap[ + rr:template "https://assetid.equinor.com/plantx#{@ID}"; + rr:termType rr:IRI + ] . + + +:PipingComponentSegmentFromTerminalMap a rr:TriplesMap; + rml:logicalSource [ + rml:source "pandid.xml"; + rml:referenceFormulation ql:XPath; + rml:iterator "//PipingNetworkSystem/PipingNetworkSegment" + ]; + rr:subjectMap [ + rr:template """https://assetid.equinor.com/plantx#{ + if(Connection/@FromID) then + if ( Connection[@FromID = //Equipment/Nozzle/@ID] ) then + Connection/@FromID + else(concat(Connection/@FromID, '-node', Connection/@FromNode)) + else () + }"""; + rr:termType rr:IRI; + rr:class imf:Terminal + ] ; + + rr:predicateObjectMap :hasNetworkSegmentConnector ; + + rr:predicateObjectMap [ + rr:predicate imf:hasConnector; + rr:termType rr:IRI; + rr:objectMap [ + rr:template "https://assetid.equinor.com/plantx#{concat(Connection/@FromID, '-node' , Connection/@FromNode , '-connector')}" + ] + ] . + +:PipingComponentSegmentToTerminalMap a rr:TriplesMap; + rml:logicalSource [ + rml:source "pandid.xml"; + rml:referenceFormulation ql:XPath; + rml:iterator "//PipingNetworkSegment" + ]; + rr:subjectMap [ + rr:template """https://assetid.equinor.com/plantx#{ + if(Connection/@ToID) then + if (Connection[@ToID = //Equipment/Nozzle/@ID]) then + Connection/@ToID + else ( concat ( Connection/@ToID, '-node', Connection/@ToNode)) + else () + }"""; + rr:termType rr:IRI; + rr:class imf:Terminal + ] ; + + rr:predicateObjectMap :hasNetworkSegmentConnector ;¨ + + rr:predicateObjectMap [ + rr:predicate imf:hasConnector; + rr:termType rr:IRI; + rr:objectMap [ + rr:template "https://assetid.equinor.com/plantx#{concat(Connection/@ToID, '-node' , Connection/@ToNode , '-connector')}" + ] + ] . \ No newline at end of file diff --git a/rml_noaka/PipingNetworkSegmentConnectionTerminal.map.ttl b/rml_noaka/PipingNetworkSegmentConnectionTerminal.map.ttl deleted file mode 100644 index 82337fe..0000000 --- a/rml_noaka/PipingNetworkSegmentConnectionTerminal.map.ttl +++ /dev/null @@ -1,109 +0,0 @@ -@prefix rml: . -@prefix rr: . -@prefix ql: . -@prefix rdf: . -@prefix : . -@prefix schema: . -@prefix dexpi: . -@prefix asset: . -@prefix imf: . - -:PipingComponentSegmentFromNozzleConnectorMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{Connection[@FromID = //Equipment/Nozzle/@ID]/@FromID}"; - rr:termType rr:IRI; - rr:class imf:Terminal, dexpi:Nozzle - ] ; - #For connection between piping network segments - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:termType rr:IRI; - rr:objectMap[ - rr:template "https://assetid.equinor.com/plantx#{@ID}"; - rr:termType rr:IRI - ] - ] ; - #For connection to the first component on piping network segment - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:termType rr:IRI; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(Connection[@FromID = //Equipment/Nozzle/@ID]/@FromID, '_connector')}" - ] - ] . - -:PipingComponentSegmentToNozzleConnectorMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{Connection[@ToID = //Equipment/Nozzle/@ID]/@ToID}"; - rr:termType rr:IRI; - rr:class imf:Terminal, dexpi:Nozzle - ] ; - #For connection between piping network segments - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:termType rr:IRI; - rr:objectMap[ - rr:template "https://assetid.equinor.com/plantx#{@ID}"; - rr:termType rr:IRI - ] - ] ; - #For connection to the last component on piping network segment - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:termType rr:IRI; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(Connection[@ToID = //Equipment/Nozzle/@ID]/@ToID, '_connector')}" - ] - ] . - -:PipingComponentSegmentToConnectorMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{Connection[not(@ToID = //Equipment/Nozzle/@ID) and string-length(normalize-space(@ToID)) > 0]/concat(@ToID, '_input')}"; - rr:termType rr:IRI; - rr:class imf:Terminal - ] ; - #For connection between piping network segments - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:termType rr:IRI; - rr:objectMap[ - rr:template "https://assetid.equinor.com/plantx#{@ID}"; - rr:termType rr:IRI - ] - ] . - -:PipingComponentFromConnectorMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment" - ]; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{Connection[not(@FromID = //Equipment/Nozzle/@FromID) and string-length(normalize-space(@FromID)) > 0]/concat(@FromID, '_output')}"; - rr:termType rr:IRI; - rr:class imf:Terminal - ] ; - #For connection between piping network segments - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:termType rr:IRI; - rr:objectMap[ - rr:template "https://assetid.equinor.com/plantx#{@ID}"; - rr:termType rr:IRI - ] - ] . diff --git a/rml_noaka/PipingNetworkSystemConnector.map.ttl b/rml_noaka/PipingNetworkSystem.map.ttl similarity index 100% rename from rml_noaka/PipingNetworkSystemConnector.map.ttl rename to rml_noaka/PipingNetworkSystem.map.ttl diff --git a/rml_noaka/PropertyBreakBlock.map.ttl b/rml_noaka/PropertyBreakBlock.map.ttl deleted file mode 100644 index 4e9ed77..0000000 --- a/rml_noaka/PropertyBreakBlock.map.ttl +++ /dev/null @@ -1,41 +0,0 @@ -@prefix rml: . -@prefix rr: . -@prefix ql: . -@prefix rdf: . -@prefix : . -@prefix schema: . -@prefix dexpi: . -@prefix asset: . -@prefix imf: . - -# Mapping to imf:Block -:PropertyBreakBlockMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment/PropertyBreak" - ] ; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{@ID}"; - rr:termType rr:IRI; - rr:class dexpi:PropertyBreak, imf:Block; - ] ; - rr:predicateObjectMap [ - rr:predicate imf:partOf; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{../@ID}"; - rr:termType rr:IRI - ] - ] ; - rr:predicateObjectMap [ - rr:predicate imf:hasTerminal; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_input')}"; - rr:termType rr:IRI; - ] ; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_output')}"; - rr:termType rr:IRI; - ] - ] . - diff --git a/rml_noaka/PropertyBreakTerminal.map.ttl b/rml_noaka/PropertyBreakTerminal.map.ttl deleted file mode 100644 index 1280c68..0000000 --- a/rml_noaka/PropertyBreakTerminal.map.ttl +++ /dev/null @@ -1,49 +0,0 @@ -@prefix rml: . -@prefix rr: . -@prefix ql: . -@prefix rdf: . -@prefix : . -@prefix schema: . -@prefix dexpi: . -@prefix asset: . -@prefix imf: . - -# Mapping to imf:InputTerminal -:PropertyBreakInputTerminalMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment/PropertyBreak" - ] ; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_input')}"; - rr:termType rr:IRI; - rr:class imf:InputTerminal; - ] ; - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(../PipingComponent[last()]/@ID, '_connector')}"; - rr:termType rr:IRI - ] - ] . - -# Mapping to imf:OutputTerminal -:PropertyBreakOutputTerminalMap a rr:TriplesMap; - rml:logicalSource [ - rml:source "pandid.xml"; - rml:referenceFormulation ql:XPath; - rml:iterator "//PipingNetworkSegment/PropertyBreak" - ] ; - rr:subjectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_output')}"; - rr:termType rr:IRI; - rr:class imf:OutputTerminal; - ] ; - rr:predicateObjectMap [ - rr:predicate imf:hasConnector; - rr:objectMap [ - rr:template "https://assetid.equinor.com/plantx#{concat(@ID, '_connector')}"; - rr:termType rr:IRI - ] - ] . \ No newline at end of file diff --git a/rml_noaka/proteus_to_imf.md b/rml_noaka/proteus_to_imf.md index 95ab17f..ffa509a 100644 --- a/rml_noaka/proteus_to_imf.md +++ b/rml_noaka/proteus_to_imf.md @@ -1,6 +1,9 @@ # Overview of mappings This document describes the RML mappings from proteus XML to IMF RDF contained in this folder. +## NOTE +*This documentation is outdated as the mappings have changed. There are no longer input and output terminals. All terminals are now of type imf:Terminal.* + ## Connecting elements in IMF In IMF a block is connected to a terminal, and a terminal is connected to a connector. diff --git a/rml_noaka/pytesting.py b/rml_noaka/pytesting.py new file mode 100644 index 0000000..c0d26f2 --- /dev/null +++ b/rml_noaka/pytesting.py @@ -0,0 +1,25 @@ +from lxml import etree as ET + +file_path = "pandid.xml" +dexpi = ET.parse(file_path) + +def Connector(xml): + systems = xml.xpath("//PipingNetworkSegment") + for system in systems: + print() + print() + print(system.get('ID').upper()) + print(f" FromID: {system.xpath("Connection")[0].get("FromID")}") + print(f" ToID: {system.xpath("Connection")[0].get("ToID")}") + print("--------------------------") + for piping in system.xpath("PipingComponent"): + precedingSiblings = piping.xpath("preceding-sibling::PipingComponent") + isFirstElem = True if len(precedingSiblings) == 0 else False + + if(isFirstElem): + print(piping.get('ID').upper()) + for node in piping.xpath("ConnectionPoints/Node[@Type='process' and position()=2]"): + print(f" -{node.get('ID')}") + + +Connector(dexpi) \ No newline at end of file diff --git a/rml_noaka/sparql_tests.md b/rml_noaka/sparql_tests.md index a66022b..dc1c4b1 100644 --- a/rml_noaka/sparql_tests.md +++ b/rml_noaka/sparql_tests.md @@ -1,5 +1,8 @@ - # SPARQL tests + +## NOTE +*These sparql tests are outdated as the mappings have changed. They can still be used for reference* + - These tests are based on the data found in this [document](https://github.com/equinor/NOAKADEXPI/tree/main/Blueprint/DISC_EXAMPLE-02). - The SPARQL queries without documentation can be found [here](#TODO). diff --git a/www/dexpisvgNoaka.xslt b/www/dexpisvgNoaka.xslt index d8af312..81ee40d 100644 --- a/www/dexpisvgNoaka.xslt +++ b/www/dexpisvgNoaka.xslt @@ -44,16 +44,22 @@ - - + + + + + - + + + + - + M diff --git a/www/noaka_dexpi.html b/www/noaka_dexpi.html new file mode 100644 index 0000000..a6cc393 --- /dev/null +++ b/www/noaka_dexpi.html @@ -0,0 +1,9889 @@ + + + + + + SVG Display + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20PA001 + + + + + 1 + + + + + 1 + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20HA001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N02 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N03 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20FE001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N02 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20FE001 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20VA001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N02 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N03 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N05 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N06 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N07 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + M01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20PA002 + + + + + 1 + + + + + 1 + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20HA002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N02 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N03 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + N04 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20LST0008 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20LST0008 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3    +        B + + + + 3      +      B + + 3           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4-20-51 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4-20-52 + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3-20-5 + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + D-20L00001A-1800PL-AD200- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3    +        B + + + + 3      +      B + + 3           B + + + + + + + + + + + + + + + D-20L00002A-1800PL-AD200- + + + + + + + + + + + + + + + + + + D-20L00021A-0600PL-DS200- + + + + + + + + + + + + + + D-20L00020A-0600PL-DS200- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20HV0001 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + + + + + + + + D-20L00003A-1400PL-AD200- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20HV0001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20TT0007 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20TT0007 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + D-20L00022A-0600PL-AD200- + + + + + + + + + + + + D-20L00023A-0600PL-AD200- + + + + + + + + + + + + + + D-20L00004A-1400PL-AS200- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VF20-0003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20ESV0006 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VC20-0001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20ESV0006 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4-20-61 + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2-10 + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VB20-0001 + + + + + + + + + + + + + + + + + + + + + + + + D-20L00014A-1000PL-AT750- + + + + + + + + + + + + D-20L00013A-0600PL-AT750-00000N + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20TV0003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20TIC0003 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + + + + + + + + D-20L00099A-0600PL-AT750- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20TD414 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20TI0003 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + D-20L00005A-1200PL-AS200- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VB20-0003 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VG20-0001 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VB20-0002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-VG20-0002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3    +        B + + + + 3      +      B + + 3           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20PI0005 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20PI0004 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + D-20L00010A-0800PL-AD750-02050Y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + D-20L00011A-0800PL-AS200- + + + + + + + + + + + + + + + + + + + + + + + + D-20L00015A-0800PL-AD750- + + + + + + + + + + + + D-20L00012A-0600PL-AD750- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20PV0004 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20PIC0004 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4-20-52 + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20FE001 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        C + + + + 1      +      C + + 1           C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + D-20LST0008 + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 4-20-51 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3-20-5 + + + + 1    +        A + + + + 1      +      A + + 1           A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C01_NOA3 + + + + 3    +        B + + + + 3      +      B + + 3           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1    +        B + + + + 1      +      B + + 1           B + + + 1    +        A + + + + 1      +      A + + 1           A + + + 1    +        D + + + + 1      +      D + + 1           D + + + 1    +        E + + + + 1      +      E + + 1           E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file