Introduction
In this topic a method of defining Classes, including instances of ClassOfInformationObject, with ISO 15926-7 Templates. This method is required in cases where we need a view on the integrated life-cycle information.
The use of ClassOfTemporalWholePart
A class-of-temporal-part Class can be given an effectiveDate and a deprecationDate. These dates indicate in which period in time the Class is relevant/valid in its context. This sets it apart from specialization (subClassOf) in that the subClasss lives, like all classes, eternally.
The life-cycle information is stored in a consolidating triple store. For particular activities we need a view on that information. That can be to collect certain data as input for some engineering program, but also to generate an information set for procurement reasons (LSN node [50]).
Such views are called a class-of-temporal-part of the Class of interest. The creation of the information content of such views is possible by means of the use of EnumeratedSetOfClass, as will be shown below.
The entity type ClassOfTemporalWholePart allows us to create versions of any class-of-temporal-whole Class.
Whenever we need a view of the life-cycle information, that is valid at a given dateTime, we create one with one or more instances of EnumeratedSetOfClass, one of the ISO 15926-2 entity types. The templates of interest are being typed with an instance of EnumeratedSetOfClass, that actually serves as a collector.
This collection helps us to define a Class with information that is indirectly attributed to that class. For example, the Asset Requirements Class for our proverbial pump P101 is defined with an instance of the API610 Datasheet for Centrifugal Pump that has sections for:
- GENERAL
- LIQUID CHARACTERISTICS
- OPERATING CONDITIONS
- SERVICE
- SITE AND UTILITY DATA
- PERFORMANCE
- DRIVER
- CONSTRUCTION with 10 subsections:
- NOZZLE CONNECTIONS
- CASING MOUNTING
- MATERIAL
- BEARINGS AND LUBRICATION
- BASEPLATE
- SEAL SUPPORT SYSTEM MOUNTING
- MECHANICAL SEAL
- HEATING AND COOLING
- PIPING AND APPURTENANCES
- iNSTRUMENTATION
- SURFACE PREPARATION AND PAINT
- TEST
- OTHER PURCHASER REQUIREMENTS
This could typically be set up as follows:
For further details about the data in the above "chapters" see the topic Classes and Individuals
Code example
ex:559a945f-e276-453b-b198-2e4e45c6c29f rdf:type tpl:TemplateSetAboutClass ; tpl:hasClass ex:acf933f4-900e-4a78-8bcc-3eb83db60532 ; #API 610 for B14-P101 tpl:hasInfoSet ex:76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime . ex:76614415-94fe-4de6-bd7d-eee9871de5a5 rdf:type dm:EnumerateSetOfClass ; rdfs:label "ESOC FOR CONSTRUCTION rev0" ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime . ex:a105b6d8-76a2-4288-ad4e-2f9f17ab5989 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified ex:4d9983c1-7b7f-4a88-9e3b-e7d0618b4b81 ; # PUMP CASING CLASS is an AXIAL SPLIT CASING tpl:hasClassifier ex:76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime . ex:96cfedb2-b0d8-423c-9418-e428fbfc1c65 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified ex:7c5a7289-0f6a-4281-b2e4-7596ac2c26b1 ; # PUMP CASING CLASS is an SINGLE VOLUTE TYPE CASING tpl:hasClassifier ex:76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime . ex:4eda78cd-d7a3-48e1-9bfd-95e8d8eba667 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified ex:93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e ; # CAPACITY OF 530 gpm AT 1150 rpm IMPELLER SPEED tpl:hasClassifier ex:76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime .etc
Alternatively the following is possible:
ex:a105b6d8-76a2-4288-ad4e-2f9f17ab5989 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified ex:4d9983c1-7b7f-4a88-9e3b-e7d0618b4b81, ex:7c5a7289-0f6a-4281-b2e4-7596ac2c26b1, ex:93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e ; tpl:hasClassifier ex:76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime .For this the cardinality of the property 'hasClassified' will be set at 1..n.
This type of structure can be used for both the applicable Asset Requirements Class as well as for the related representation in a Technical Specification, where the first template in above listing has a different UUID and a different 'hasClass' role filler.
When using XML Schemas for specifications one could envisage the population of those specifications with predefined SPARQL queries on the templates in the applicable Asset Requirements Class - revision.
Moving from revison 0 to revision1
Keep in mind that all the template instances that are used for a Class definition, including those for documents, never are leaving the big bulk of life-cycle information. They are referred to in such definitions, not embedded.
So, to visualize it we assume that the code below defines revision 0 of the Requirements Class CO-B14-P101:
ex:559a945f-e276-453b-b198-2e4e45c6c29f rdf:type tpl:TemplateSetAboutClass ; tpl:hasClass ex:acf933f4-900e-4a78-8bcc-3eb83db60532 ; #API 610 for CO_B14-P101 tpl:hasInfoSet ex:76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime . ex:76614415-94fe-4de6-bd7d-eee9871de5a5 rdf:type dm:EnumerateSetOfClass ; rdfs:label "ESOC FOR CONSTRUCTION rev0" ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime . :a105b6d8-76a2-4288-ad4e-2f9f17ab5989 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified ex:4d9983c1-7b7f-4a88-9e3b-e7d0618b4b81, ex:7c5a7289-0f6a-4281-b2e4-7596ac2c26b1, ex:93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e ; tpl:hasClassifier :76614415-94fe-4de6-bd7d-eee9871de5a5 ; meta:valEffectivedate "2022-04-13T12:05:00Z"^^xsd:dateTime .
where, amongst others, the UUID ex:93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e stands for:
ex:93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e
rdf:type tpl:ClassOfIndividualHasConditionalIndirectPropertyWithValue ;
tpl:hasMultidimensionalPropertyType rdl:RDS2225972 ; # PUMP CAPACITY(volume flow rate) AT IMPELLER SPEED
tpl:hasPossessorType ex:d3bdc308-7179-424c-918f-8c1fd743c970 ; # CO_B14-P101
tpl:hasIndirectPropertyType rdl:RDS7354248 ; # CAPACITY (volume flow rate)
tpl:valPropertyValue "530"^^xsd:decimal ;
tpl:hasScale rdl:RDS1346759 ; # US GALLON PER MINUTE
tpl:hasConditionPossessorType ex:f14ce469-1822-477c-b99a-7dd1ea2709ce ; # CO_B14-P101-IMP
tpl:hasConditionPropertyType rdl:RDS361034 ; # ROTATIONAL SPEED
tpl:valConditionPropertyValue "1150"^^xsd:decimal ;
tpl:hasConditionScale rdl:RDS1342304 ; # REVOLUTION PER MINUTE
meta:valEffectiveDate "2022-03-17T16:53:00Z"^^xsd:dateTime .
On December 15th, 2022 this information has been changed into:
ex:42930be0-12b1-486b-ba8e-1f35b1693cfa
rdf:type tpl:ClassOfIndividualHasConditionalIndirectPropertyWithValue ;
tpl:hasMultidimensionalPropertyType rdl:RDS2225972 ; # PUMP CAPACITY(volume flow rate) AT IMPELLER SPEED
tpl:hasPossessorType ex:d3bdc308-7179-424c-918f-8c1fd743c970 ; # CO_B14-P101
tpl:hasIndirectPropertyType rdl:RDS7354248 ; # CAPACITY (volume flow rate)
tpl:valPropertyValue "550"^^xsd:decimal ;
tpl:hasScale rdl:RDS1346759 ; # US GALLON PER MINUTE
tpl:hasConditionPossessorType ex:f14ce469-1822-477c-b99a-7dd1ea2709ce ; # CO_B14-P101-IMP
tpl:hasConditionPropertyType rdl:RDS361034 ; # ROTATIONAL SPEED
tpl:valConditionPropertyValue "1200"^^xsd:decimal ;
tpl:hasConditionScale rdl:RDS1342304 ; # REVOLUTION PER MINUTE
meta:valEffectiveDate "2022-12-15T13:04:00Z"^^xsd:dateTime .
On January 24th, 2023 prepare the update to revision 1
We run the Class query another time with the revision 1 publication date as reference. We find template instances that have an unchanged UUID, and added 'newcomers', which we can mark in some fashion as a rev1 revision.
In this example we find that the UUID ex:93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e has been replaced by ex:42930be0-12b1-486b-ba8e-1f35b1693cfa, because the Literals in the signature changed.
A new ESOC instance and new instances of tpl:TemplateSetAboutClass and tpl:EnumerationOfClass are created with SPARQL CONSTRUCT:
ex:a07c90e7-1cdf-4c18-a382-210d738ff194 rdf:type tpl:TemplateSetAboutClass ; tpl:hasClass ex:acf933f4-900e-4a78-8bcc-3eb83db60532 ; #API 610 for CO_B14-P101 tpl:hasInfoSet ex:73763c36-87e3-4769-b77e-7bb72cada464 ; meta:valEffectivedate "2023-01-24T11:27:00Z"^^xsd:dateTime . ex:73763c36-87e3-4769-b77e-7bb72cada464 rdf:type dm:EnumerateSetOfClass ; rdfs:label "ESOC FOR CONSTRUCTION rev1" ; meta:valEffectivedate "2023-01-24T11:27:00Z"^^xsd:dateTime . ex:c62f8b15-fa40-499d-b3e6-ef61b6e78e75 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified ex:4d9983c1-7b7f-4a88-9e3b-e7d0618b4b81, ex:7c5a7289-0f6a-4281-b2e4-7596ac2c26b1, ex:42930be0-12b1-486b-ba8e-1f35b1693cfa ; tpl:hasClassifier ex:73763c36-87e3-4769-b77e-7bb72cada464 ; meta:valEffectivedate "2023-01-24T11:27:00Z"^^xsd:dateTime .
Views on data about an Individual
Similar to the above, it is possible to create views on the data about an instance of PossibleIndividual. Then the entity type TemporalWholePart must be used. Since the template instances are instance of ClassOfInformationRepresentation, they can be members of EnumeratedSetOfClass as well. In this case use the template TemplateSetAboutIndividual (WorkInProgress).