Part 8 compliance

latest update: 2016-10-25    

Introduction

Recently it was debated whether the implementation of ISO 15926-8, as set forth in the Topics on this website, is in line with same Part 8. In this topic the code at both sides will be compared. It will show that the code in these Topics is compliant. It also has been tested with the Manchester OWL Validator and proved to be in the profile of OWL2.

Where there are differences these are being discussed and justified.

Map

The following diagram shows the relationships between the various ontologies.

Code comparison

The following codes are being compared:

Declarations

In Part 8 declarations can only found in the normative file Part8_sample_instances.owl, attached to the standard, with code such as:

    <owl:Thing rdf:about="#1-WG-002">

        <rdf:type rdf:resource="&RDL;PipingNetworkSystem"/>

        <rdfs:label>1-WG-002</rdfs:label>

    </owl:Thing>

This, however, is not enough, because it does not define whether 1-WG-002  is either a FunctionalPhysicalObject or a MaterializedPhysicalObject, or wether or not it is a WholeLifeIndividual and/or ActualIndividual.

In ISO 15926 declaring objects means that the objects are typed with one or more applicable ISO 15926-2 entity types, thus firmly founding these objects. The above Part 8 declaration has been made more precise:

    :T1F3CA6416D4C4674B2909F8EB641DF17 rdf:type dm:FunctionalPhysicalObject, dm:WholeLifeIndividual, dm:ArrangedIndividual, rdl:RDS270359  ; # PIPING NETWORK SYSTEM

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

     

    :T942C786F1F7C48D9B9A990721F260199 rdf:type tpl:ClassifiedIdentificationOfIndividual ;

        tpl:hasIdentified :T1F3CA6416D4C4674B2909F8EB641DF17 ;

        tpl:valIdentifier "1-WG-002" ;

        tpl:hasIdentificationType rdl:RDS2221093 ; # IDENTIFICATION BY LINE NUMBER

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

Justification of differences

Since identifiers may change and the dm:Thing.ID shall be immutable, the object with its ID is declared as instance of one or more Part 2 entity types and then that object then gets some identifier, such as a tag number, by means of a template. In case the identifier changes, this template is deprecated and a new template instance with the new identifier is created. For further details see the Topic "Declaring an object".

Template definitions in OWL

In the normative file Part8_sample_tpl.owl, attached to Part 8, the following example of an OWL listing defining one template can be found:

    <owl:Class rdf:about="#ClassifiedAssemblyOfIndividual">

        <rdfs:subClassOf rdf:resource="&p7tm;BaseTemplateStatement"/>

        <rdfs:subClassOf>

            <owl:Class>

                <owl:intersectionOf rdf:parseType="Collection">

                    <owl:Restriction>

                        <owl:onProperty rdf:resource="#hasAssemblyType"/>

                        <owl:allValuesFrom rdf:resource="&dm;ClassOfAssemblyOfIndividual"/>

                    </owl:Restriction>

                    <owl:Restriction>

                        <owl:onProperty rdf:resource="#hasAssemblyType"/>

                        <owl:onClass rdf:resource="&dm;ClassOfAssemblyOfIndividual"/>

                        <owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality>

                    </owl:Restriction>

                </owl:intersectionOf>

            </owl:Class>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Class>

                <owl:intersectionOf rdf:parseType="Collection">

                    <owl:Restriction>

                        <owl:onProperty rdf:resource="&p7tpl;hasWhole"/>

                        <owl:allValuesFrom rdf:resource="&dm;ArrangedIndividual"/>

                    </owl:Restriction>

                    <owl:Restriction>

                        <owl:onProperty rdf:resource="&p7tpl;hasWhole"/>

                        <owl:onClass rdf:resource="&dm;ArrangedIndividual"/>

                        <owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality>

                    </owl:Restriction>

                </owl:intersectionOf>

            </owl:Class>

        </rdfs:subClassOf>

        <rdfs:subClassOf>

            <owl:Class>

                <owl:intersectionOf rdf:parseType="Collection">

                    <owl:Restriction>

                        <owl:onProperty rdf:resource="&p7tpl;hasPart"/>

                        <owl:allValuesFrom rdf:resource="&dm;PossibleIndividual"/>

                    </owl:Restriction>

                    <owl:Restriction>

                        <owl:onProperty rdf:resource="&p7tpl;hasPart"/>

                        <owl:onClass rdf:resource="&dm;PossibleIndividual"/>

                        <owl:qualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:qualifiedCardinality>

                    </owl:Restriction>

                </owl:intersectionOf>

            </owl:Class>

        </rdfs:subClassOf>

        <rdfs:comment>This template is set up to match the pattern of ClassifiedIdentification, as defined in P7.

            Signature for ClassifiedAssemblyOfIndividual:

            | 1 | Part    | dm:PossibleIndividual       |

            | 2 | Whole   | dm:ArrangedIndividual       |

            | 3 | Context | dm:ClassOfAssemblyOfIndividual |

        </rdfs:comment>

        <rdfs:comment>Template axiom:

            ClassifiedAssemblyOfIndividual( x1, x2, x3 ) &lt;-&gt;

            PossibleIndividual( x1 ) &amp;

            ArrangedIndividual( x2 ) &amp;

            ClassOfAssemblyOfIndividual( x3 ) &amp;

            exists y ( AssemblyOfIndividualTriple( y, x1, x2 ) &amp;

            ClassificationOfRelationship( y, x3 ) .

        </rdfs:comment>

    </owl:Class>

    

    <owl:Thing rdf:about="#TemplateDescription_of_ClassifiedAssemblyOfIndividual">

        <rdf:type rdf:resource="&p7tm;TemplateDescription"/>

        <rdfs:label>TemplateDescription_of_ClassifiedAssemblyOfIndividual</rdfs:label>

        <p7tm:valNumberOfRoles rdf:datatype="&xsd;integer">3</p7tm:valNumberOfRoles>

        <p7tm:hasTemplate rdf:resource="#ClassifiedAssemblyOfIndividual"/>

    </owl:Thing>

    

    <owl:Thing rdf:about="#TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_1">

        <rdf:type rdf:resource="p7tm:TemplateRoleDescription"/>

        <rdfs:label>TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_1</rdfs:label>

        <p7tm:valRoleIndex rdf:datatype="&xsd;integer">1</p7tm:valRoleIndex>

        <p7tm:hasRoleFillerType rdf:resource="&dm;PossibleIndividual"/>

        <p7tm:hasTemplate rdf:resource="#ClassifiedAssemblyOfIndividual"/>

        <p7tm:hasRole rdf:resource="&p7tpl;hasPart"/>

    </p7tm:TemplateRoleDescription>

    

    <owl:Thing rdf:about="#TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_2">

        <rdf:type rdf:resource="&p7tm;TemplateRoleDescription"/>

        <rdfs:label>TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_2</rdfs:label>

        <p7tm:valRoleIndex rdf:datatype="&xsd;integer">2</p7tm:valRoleIndex>

        <p7tm:hasRoleFillerType rdf:resource="&dm;ClassOfIndividual"/>

        <p7tm:hasTemplate rdf:resource="#ClassifiedAssemblyOfIndividual"/>

        <p7tm:hasRole rdf:resource="&p7tpl;hasWhole"/>

    </owl:Thing>

    

    <owl:Thing rdf:about="#TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_3">

        <rdf:type rdf:resource="&p7tm;TemplateRoleDescription"/>

        <rdfs:label>TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_3</rdfs:label>

        <p7tm:valRoleIndex rdf:datatype="&xsd;integer">3</p7tm:valRoleIndex>

        <p7tm:hasRoleFillerType rdf:resource="&dm;ClassOfAssemblyOfIndividual"/>

        <p7tm:hasTemplate rdf:resource="#ClassifiedAssemblyOfIndividual"/>

        <p7tm:hasRole rdf:resource="#hasAssemblyType"/>

    </owl:Thing>

At present the templates have been defined in Template Specifications and are, based on these human-readable specifications automatically represented in OWL such as in the following code (non-used meta data fields are omitted here):

    :ClassifiedAssemblyOfIndividual rdf:type :TemplateForStructureOfIndividual, owl:Class ;

        owl:equivalentClass tm:TM_ClassifiedAssemblyOfIndividual ;

        rdfs:label "ClassifiedAssemblyOfIndividual"@en ;

        rdfs:isDefinedBy <http://15926.org/templatespecs/IN-STRUC-03c.xml> ;

        skos:definition "PossibleIndividual [hasWhole] has PossibleIndividual [hasPart] as a part in an assembly, and this assembly is of the type [hasAssemblyType]."@en ;

        dc:description "A temporal part of an instance of PossibleIndividual is a 'part' in an assembly with a temporal part of another instance of PossibleIndividual as the 'whole', and that assembly is validated against an instance of ClassOfAssemblyOfIndividual."@en ;

        skos:example "myImpeller is a part of myPump, and that is validated against the instance of ClassOfAssemblyOfIndividual that defines that centrifugal pumps have one or more impellers."@en ;

        :valFOLCode """ClassifiedAssemblyOfIndividual(x1, x2, x3) <->

        PossibleIndividual(x1) &

        PossibleIndividual(x2) &

        ClassOfAssemblyOfIndividual(x3) &

        exists u1 exists u2 exists u3 exists u4 exists u5(

              TemporalWholePartTemplate(u1,x1) &

              PossibleIndividual(u1) &

              TemporalWholePartTemplate(u3, x2) &

              PossibleIndividual(u3) &

              ClassificationTemplate(u2, x3) &

              AssemblyOfIndividualTriple(u2, u3, u1) &

              BeginningTemplate(u4, u1) &

              BeginningTemplate(u4, u3) &

              PointInTime(u4) &

              ClassOfIdentificationTemplate(u5, u4) &

              RepresentationOfGregorianDateAndUtcTime(u5)) ."""@en

          owl:versionInfo "MMT APPROVED"@en ;

          meta:valEffectiveDate "2016-07-25T18:55:49+00:00"^^xsd:dateTime ;

          :defaultID "R655F88D49A254262BE773EF3EDA61CEF" ;

          skos:note "At instantiation of this template it is mandatory to add meta:valEffectiveDate with the dateTime that the represented information became effective." ;

          skos:scopeNote "At time of mapping to OWL the value of meta:valEffectiveDate shall be given, as xsd:dateTime, to the RepresentationOfGregorianDateAndUtcTime in an on-the-fly created instance of the template ActivityCausesTwoRelatedBegunIndividuals that is subsequently linked to the temporal part PossibleIndividual(u1) and PossibleIndividual(u2) in this template."@en ;

       

      # The code below shall only be used when applicable

       

      #   rdfs:subclassOf :XXXXX ; # Name of superclass template, only for specializations

      #   skos:altLabel "[for synonyms and for translations]"@en ;

      #   meta:hasRule "[code of applicable rule]" ;

      #   meta:hasAccessCode "[applicable access code]" ;

      #   meta:hasStatus "[use ISO codes]" ;

      #   meta:valDeprecationDate ""^^xsd:dateTime ;

      #   skos:exactMatch <http://example.org/a> ;

      #   meta:hasUnresolvedIssues "[description of issue]" ;

      #   skos:editorialNote "[used to be Admin Note]" ;

      #   meta:valChangeDate "[dateTime]"^^xsd:dateTime ;

      #   skos:changeNote ""@en ;

       

      # down to here.

       

      # PROPERTY RESTRICTIONS

       

          rdfs:subClassOf

              [ a owl:Restriction ;

                  owl:onProperty :hasWhole ;

                  owl:allValuesFrom dm:PossibleIndividual ],

              [ a owl:Restriction ;

                  owl:onProperty :hasWhole ;

                  owl:Cardinality "1"^^xsd:nonNegativeInteger ],

              [ a owl:Restriction ;

                  owl:onProperty :hasPart ;

                  owl:allValuesFrom dm:PossibleIndividual ],

              [ a owl:Restriction ;

                  owl:onProperty :hasPart ;

                  owl:Cardinality "1"^^xsd:nonNegativeInteger ],

              [ a owl:Restriction ;

                  owl:onProperty :hasAssemblyType ;

                  owl:allValuesFrom dm:ClassOfAssemblyOfIndividual ],

              [ a owl:Restriction ;

                  owl:onProperty :hasAssemblyType ;

                  owl:Cardinality "1"^^xsd:nonNegativeInteger ].

       

      # META TEMPLATES TO ISO 15926-8

       

      :TemplateDescription_of_ClassifiedAssemblyOfIndividual

          rdf:type tm:TemplateDescription, owl:Thing ;

          rdfs:label "TemplateDescription_of_ClassifiedAssemblyOfIndividual" ;

          tm:valNumberOfRoles 3 ;

          tm:hasTemplate :ClassifiedAssemblyOfIndividual .

       

      :TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_1

          rdf:type tm:TemplateRoleDescription, owl:Thing ;

          rdfs:label "(1) hasWhole " ;

          tm:valRoleIndex 1 ;

          tm:hasRole :hasWhole ;

          tm:hasRoleFillerType dm:PossibleIndividual ;

          tm:hasTemplate :ClassifiedAssemblyOfIndividual .

      :TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_2

          rdf:type tm:TemplateRoleDescription, owl:Thing ;

          rdfs:label "(2) hasPart " ;

          tm:valRoleIndex 2 ;

          tm:hasRole :hasPart ;

          tm:hasRoleFillerType dm:PossibleIndividual ;

          tm:hasTemplate :ClassifiedAssemblyOfIndividual .

      :TemplateRoleDescription_of_ClassifiedAssemblyOfIndividual_3

          rdf:type tm:TemplateRoleDescription, owl:Thing ;

          rdfs:label "(3) hasAssemblyType " ;

          tm:valRoleIndex 3 ;

          tm:hasRole :hasAssemblyType ;

          tm:hasRoleFillerType dm:ClassOfAssemblyOfIndividual ;

          tm:hasTemplate :ClassifiedAssemblyOfIndividual .

    Justification of differences

    The OWL code defines the signature of the lowered template. In both cases it is, in essence, identical.

    Template definitions in FOL

    Embedded in above template definition Part 8 represents this as follows:

          ClassifiedAssemblyOfIndividual( x1, x2, x3 ) <->

          PossibleIndividual( x1 ) &

          ArrangedIndividual( x2 ) &

          ClassOfAssemblyOfIndividual( x3 ) &

          exists y ( AssemblyOfIndividualTriple( y, x1, x2 ) &

          ClassificationOfRelationship( y, x3 ) .

    In the present template specifications this is:

      ClassifiedAssemblyOfIndividual(x1, x2, x3) <->

      PossibleIndividual(x1) &

      PossibleIndividual(x2) &

      ClassOfAssemblyOfIndividual(x3) &

      exists u1 exists u2 exists u3 exists u4 exists u5(

            TemporalWholePartTemplate(u1,x1) &

            PossibleIndividual(u1) &

            TemporalWholePartTemplate(u3, x2) &

            PossibleIndividual(u3) &

            ClassificationTemplate(u2, x3) &

            AssemblyOfIndividualTriple(u2, u3, u1) &

            BeginningTemplate(u4, u1) &

            BeginningTemplate(u4, u3) &

            PointInTime(u4) &

            ClassOfIdentificationTemplate(u5, u4) &

            RepresentationOfGregorianDateAndUtcTime(u5)) ."""@en

         

    Justification of differences

    There are two main differences:

    1. In the present templates for PossibleIndividual include temporal parts, as is prescribed by Part 7; it then has been decided to leave the "valStartTime" role out of the signature and replace that with meta:valEffectiveDate with a method to include that startTime again in the lifted template. Reason for that decision was the problem that the software suppliers had with temporal parts, and that all declared objects and all declared template instances have the same method of placing them in time, which makes SPARQL queries simpler.
    2. The Part 8 FOL listings, like this one, often are a concatenation of smaller templates, and thus depended on subsequent expanding, where the present FOL listings are already expanded, except for the prototemplates.

    Template instances in RDF

    In the normative file Part8_sample_instances.owl, attached to Part 8, the following example can be found for a template for Class:

        <tpl:AssemblyRelation rdf:about="#sample_statement_AssemblyRelation_PipingSegment">

            <rdf:type rdf:resource="&owl;Thing"/>

            <rdfs:label>PipingSegment_statement</rdfs:label>

            <tpl:valMinimumCardinalityOfPart rdf:datatype="&xsd;double">1</tpl:valMinimumCardinalityOfPart>

            <tpl:valMinimumCardinalityOfWhole rdf:datatype="&xsd;double">1</tpl:valMinimumCardinalityOfWhole>

            <tpl:valMaximumCardinalityOfWhole rdf:datatype="&xsd;double">1</tpl:valMaximumCardinalityOfWhole>

            <tpl:valMaximumCardinalityOfPart rdf:datatype="&xsd;double">INF</tpl:valMaximumCardinalityOfPart>

            <p7tpl:hasClassOfPart rdf:resource="&RDL;PipingNetworkSegment"/>

            <p7tpl:hasClassOfWhole rdf:resource="&RDL;PipingNetworkSystem"/>

            <tpl:hasAssemblyType rdf:resource="&RDL;PipingNetworkSystemHasSegment"/>

        </tpl:AssemblyRelation>

    There is no counterpart for this at present, since above listing is incorrect as far as the modeling is concerned unless "&RDL;PipingNetworkSystemHasSegment" would be at ClassOfClass level, which is not the case, because in the file Part8_sample_RDL.owl is stated:

        <owl:Class rdf:about="#PipingNetworkSystemHasSegment">

            <meta:annUniqueName

                >PipingNetworkSystemHasSegment</meta:annUniqueName>

            <rdfs:subClassOf rdf:resource="&dm;AssemblyOfIndividual"/>

            <rdfs:comment>Sample class for AssemblyRelation example.</rdfs:comment>

        </owl:Class>

    At present this "Assembly Type" would be represented in the RDL as an instance of dm:ClassOfAssemblyOfIndividual:

      :RDS4873922 rdf:type dm:ClassOfAssemblyOfIndividual, owl:Class ;

          rdfs:subclassOf :RDS4429443812 ; # ISO 15926-4 ASSEMBLY OF INDIVIDUAL

          rdfs:label "Piping Network System has Segment" ;

          dm:hasClassOfPart :RDS267704 ;  # PIPING NETWORK SEGMENT  (note: a ClassOfInanimatePhysicalObject)

          dm:hasClassOfWhole :RDS270359 ; # PIPING NETWORK SYSTEM  (note: a ClassOfInanimatePhysicalObject)

          dm:hasEnd1Cardinality :RDS222624 ; # 0:1

          dm:hasEnd2Cardinality :RDS999900700 ; # 0:*  

          meta:valEffectiveDate "1998-10-27T14:54:00Z"^^xsd:dateTime .

    At the level of PossibleIndividual the template in Part 8 looks like:

        <tpl:PipingNetworkSystemHasSegment rdf:about="#sample_statement_PipingNetworkHasSegment_006">

            <rdf:type rdf:resource="&owl;Thing"/>

            <rdfs:label>sample_statement_PipingNetworkHasSegments_006</rdfs:label>

            <rdfs:comment>Example taken from AssemblyRelation.ppt, slide 10.</rdfs:comment>

            <p7tpl:hasWhole rdf:resource="#1-WG-002"/>

            <p7tpl:hasPart rdf:resource="#1-WG-002-01"/>

            <tpl:hasAssemblyType rdf:resource="&RDL;PipingNetworkSystemHasSegment"/>

        </tpl:PipingNetworkSystemHasSegment>

    and at present:

      :T2BD682A9B18745A7A59698C5D75607E6 rdf:type tpl:ClassifiedAssemblyOfIndividual, owl:Thing ;

          rdfs:label "sample_statement_PipingNetworkHasSegments_006" ;

          rdfs:comment "Example taken from AssemblyRelation.ppt, slide 10." ;

          tpl:hasWhole :T1F3CA6416D4C4674B2909F8EB641DF17;

          tpl:hasPart :TF993184CB507432C83219767E718980E ;

          tpl:hasAssemblyType rdl:RDS4873922 ; # Piping Network System has Segment

          meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

    Justification of differences

    The two main differences are:

    1. in the Part 8 example there is no indication about the effectivity, where at present there is;
    2. in Part 8 the instances of dm:Cardinality have been expanded to its two attributes end_1_cardinality and end-2_cardinality in the RDF code, where at present simply a reference is made to the applicable instance of dm:Cardinality.
    3. Where in Part 8 a template has been used for "Piping Network System has Segment", at present the applicable subtype of dm:ClassOfRelationship is being instantiated (refer to above :RDS4873922 rdf:type dm:ClassOfAssemblyOfIndividual, owl:Class ; ).

    Reference Data Library - declarations

    In the normative file Part8_sample_RDL.owl, attached to Part 8, the following declaration can be found:

        <owl:Class rdf:about="#PipingNetworkSegment">

            <meta:annUniqueName>PipingNetworkSegment</meta:annUniqueName>

            <rdfs:subClassOf rdf:resource="&dm;PossibleIndividual"/>

        </owl:Class>

    In the present RDL this is::

      :RDS267704 rdf:type dm:ClassOfInanimatePhysicalObject ;

          rdfs:subclassOf :RDS13016965, RDS277784 ; # SEGMENT, FLUID TRANSPORTING FUNCTION

          rdfs:label "PIPING NETWORK SEGMENT" ;

          meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

    Justification of differences

    Since Part 8 was published the development of the RDL progressed. The Part 8 code is not incorrect, but less precise (it was not meant to be that precise, but only declared for use in an example). Refer to the Topic "How does pump P-101 fit in?".

    Reference Data Library - templates

    In Annex H of Part 8 the following example of a template, as used in the RDL, can be found:

      <rdl:IdentificationOfPhysicalObject-processplant rdf:ID="#t100101">

          <meta:annUniqueName rdf:datatype="&xsd;string">pcs125425 identified by process plant B14 since 2009-12-16T14:28:00Z</meta:annUniqueName>

          <meta:annRule rdf:datatype="&xsd;string">#com1_26539436548</meta:annRule>

          <meta:annAccessCode rdf:datatype="&xsd;string">#com1_836379</meta:annAccessCode>

          <p7tpl:hasWhole rdf:resource="#pcs125425"/>

          <p7tpl:hasPart rdf:resource="#pcs125789"/>

          <p7tpl:valStartTime rdf:datatype="&xsd;dateTime">2009-12-16T14:28:00Z</p7tpl:valStartTime>

          <p7tpl:hasContext rdf:resource="&rdl;ProcessPlantName"/>

          <p7tpl:valIdentifier rdf:datatype="&xsd;string">B14</p7tpl:valIdentifier>

      </rdl:IdentificationOfPhysicalObject-processplant>

    At present this template does not exist, but if it did it would look like this:

      :T7682644AFB5449E6B46D9B5C811B1ED6 rdf:type tpl:IdentificationOfPhysicalObject, owl:Thing ;

          rdfs:label "pcs125425 identified by process plant B14 since 2009-12-16T14:28:00Z";

          meta:annRule "com1_26539436548" ;

          meta:annAccessCode "com1_836379" ;

          tpl:hasWhole :pcs125425 ;

          tpl:hasPart :pcs125789 ;

          tpl:hasContext rdl:RDS393093 ;

          tpl:valIdentifier "B14" ;

          meta:valEffectiveDate "2009-12-16T14:28:00Z"^^xsd:dateTime .

    Semantically these two representations are identical. Note that this kind of information does not belong in the RDL.

    Lifecycle Information in RDF

    The lifecycle information is following the same rules as above. A composite example of the Part 8 representation and the present representation is shown below.

    In Part 8:

        <owl:Thing rdf:about="#1-WG-002">

            <rdf:type rdf:resource="&RDL;PipingNetworkSystem"/>

            <rdfs:label>1-WG-002</rdfs:label>

        </owl:Thing>

     

        <owl:Thing rdf:about="#1-WG-002-01">

            <rdf:type rdf:resource="&RDL;PipingNetworkSystem"/>

            <rdfs:label>1-WG-002-01</rdfs:label>

        </owl:Thing>

     

        <tpl:PipingNetworkSystemHasSegment rdf:about="#sample_statement_PipingNetworkHasSegment_006">

            <rdf:type rdf:resource="&owl;Thing"/>

            <rdfs:label>sample_statement_PipingNetworkHasSegments_006</rdfs:label>

            <rdfs:comment>Example taken from AssemblyRelation.ppt, slide 10.</rdfs:comment>

            <p7tpl:hasWhole rdf:resource="#1-WG-002"/>

            <p7tpl:hasPart rdf:resource="#1-WG-002-01"/>

            <tpl:hasAssemblyType rdf:resource="&RDL;PipingNetworkSystemHasSegment"/>

        </tpl:PipingNetworkSystemHasSegment>

    and at present:

    # Declaring a Piping Network System and subsequently giving it a tag

    :T1F3CA6416D4C4674B2909F8EB641DF17 rdf:type dm:FunctionalPhysicalObject, dm:WholeLifeIndividual, dm:ArrangedIndividual, owl:Thing, rdl:RDS270359  ; # PIPING NETWORK SYSTEM

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

     

    :T942C786F1F7C48D9B9A990721F260199 rdf:type tpl:ClassifiedIdentificationOfIndividual ;

        tpl:hasIdentified :T1F3CA6416D4C4674B2909F8EB641DF17 ;

        tpl:valIdentifier "1-WG-002" ;

        tpl:hasIdentificationType rdl:RDS2068799951 ;

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

     

    # Declaring a Piping Network Segment and subsequently giving it a tag

    :TF993184CB507432C83219767E718980E rdf:type dm:FunctionalPhysicalObject, dm:WholeLifeIndividual, dm:ArrangedIndividual, owl:Thing,  rdl:RDS267704  ; # PIPING NETWORK SYSTEM

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

     

    :TDB179835ED4D4902A8B050A210388BDC rdf:type tpl:ClassifiedIdentificationOfIndividual ;

        tpl:hasIdentified :TF993184CB507432C83219767E718980E ;

        tpl:valIdentifier "1-WG-002-01" ;

        tpl:hasIdentificationType rdl:RDS2068799951 ;

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

     

    # Representing the information that our Piping Network Segment  is a part of the Piping Network System

    :T2BD682A9B18745A7A59698C5D75607E6 rdf:type tpl:ClassifiedAssemblyOfIndividual, owl:Thing ;

        rdfs:label "sample_statement_PipingNetworkHasSegments_006" ;

        rdfs:comment "Example taken from AssemblyRelation.ppt, slide 10." ;

        tpl:hasWhole :T1F3CA6416D4C4674B2909F8EB641DF17 ;

        tpl:hasPart :TF993184CB507432C83219767E718980E ;

        tpl:hasAssemblyType rdl:RDS4873922 ; # Piping Network System has Segment

        meta:valEffectiveDate "2015-06-24T21:36:00Z"^^xsd:dateTime .

    Lifecycle Information in OWL

    In case there is the need to apply OWL reasoning to a subset of the lifecycle information that subset is generated by means of (a) SPARQL quer(y)ies. This has not been addressed as such in Part 8 and hence is outside the scope of this Topic.

    In due time a mapping of the templates to the OWL defined in Part 12 may become possible, but that depends on the outcome of the Part 12 development. Whether or not such OWL reasoning will have advantages above reasoning by means of SPARQL or SPIN remains to be discovered. In either case it may be seen as "cream on the pie", an extra above information sharing and integration.