Introduction
A "document" in this context is structured such a spreadsheet, a set of tables, a P&ID, etc.
This topic explains a way to model such a document in ISO 15926-8 format.
Procedure
Mapping is done in four steps:
- Find all placeholders of information in the document and declare those (see topic "Declaring an object");
- Draft an information model, in which all placeholders are interrelated, thus forming one integrated network;
- Map those relations to ISO 15926-7 templates (see "Template Specifications");
- Attribute all information in the document to its placeholder, also using ISO 15926-7 templates or predicates.
Example Information Model
Below is an example information model of a part of a pump data sheet.
CASING SPLIT | ![]() |
![]() |
|||
CASING TYPE | ![]() |
![]() |
![]() |
||
CASING PRESSURE kg/cm2g | ![]() |
145 | ![]() |
235 | @ 38 °C |
On the data sheet the following data are being attributed to the pump casing:
- CASING SPLIT: ONEOF[AXIAL, RADIAL]
- CASING TYPE: ONEOF[SINGLE VOLUTE, DOUBLE VOLUTE, DIFFUSER]
- CASING PRESS (kg/cm2g): MAX ALLOW@PT (PT = Pumping Temperature)
- CASING PRESS (kg/cm2g): HYDRO @ 38 °C
This translates to the following template types:
- CASING SPLIT: SpecializationOfClassOfIndividual
- CASING TYPE: SpecializationOfClassOfIndividual
- CASING PRESS (kg/cm2g): MAX ALLOW@PT
- CASING PRESS (kg/cm2g): HYDRO @ 38 °C :
using the following identifiers from the RDL:
- CASING SPLIT: ONEOF[ rdl:RDS881279, rdl:RDS881324];
- CASING TYPE: ONEOF[ rdl:RDS1013264, rdl:RDS1013219, rdl:RDS881414];
- CASING PRESS (kg/cm2g): MAX ALLOW@PT : rdl:RDS2225991;
- CASING PRESS (kg/cm2g): HYDRO @ 38 °C: rdl:RDS361349
Example Code Listing
# DECLARATION OF INFORMATION PLACEHOLDERS # Declaration of PUMP REQUIREMENTS CLASS :acf933f4-900e-4a78-8bcc-3eb83db60532 rdf:type dm:ClassOfInanimatePhysicalObject ; rdfs:subClassOf rdl:RDS327239 ; # PUMP rdfs:label "P-101" ; meta:valEffectivedate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Declaration of PUMP CASING CLASS :6e182328-9d74-4ddf-8148-8599b3a30c7d rdf:type dm:ClassOfInanimatePhysicalObject ; rdfs:subClassOf rdl:RDS461204 ; # PUMP CASING rdfs:label "P-101-CAS" ; # subtag, user-defined meta:valEffectivedate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Declaration of the hydrostatic tesing activity class :ecf00085-1fd4-4bcd-a4f9-3e0dedc03b42 rdf:type dm:ClassOfActivity ; rdfs:subClassOf rdl:RDS9706787 ; # HYDROSTATIC TESTING rdfs:label "P-101-HYA" ; meta:valEffectiveDate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Declaration of test liquid class :a1b7ff81-d6fc-4fe4-85d2-a4e008e8f6af rdf:type dm:ClassOfCompound ; rdfs:subClassOf rdl:RDS427094 ; # LIQUID COMPOUND rdfs:label "P-101-HYF" ; meta:valEffectiveDate "2015-07-24T00:00:00Z"^^xsd:dateTime . # DECLARATION OF TEMPLATES DEFINING THE INTERRELATIONS BETWEEN PLACEHOLDERS # PUMP CASING CLASS is a (class of) part of PUMP REQUIREMENTS CLASS :79d7ab72-f608-446f-a8d8-d635d9dd4a2e rdl:type tpl:ClassOfAssemblyDefinition ; tpl:hasClassOfWhole :acf933f4-900e-4a78-8bcc-3eb83db60532 ; tpl:hasClassOfPart :6e182328-9d74-4ddf-8148-8599b3a30c7d ; tpl:hasCardinalityOfWhole rdl:RDS222625 ; # ONE TO ONE tpl:hasCardinalityOfPart rdl:RDS222625 ; # ONE TO ONE meta:valEffectivedate "2015-07-24T00:00:00Z"^^xsd:dateTime . # DECLARATION OF TEMPLATES DEFINING THE INFORMATION ATTRIBUTED TO THE PLACEHOLDERS OTHER THAN ABOVE INTERRELATIONS # CASING SPLIT is AXIAL :4d9983c1-7b7f-4a88-9e3b-e7d0618b4b81 rdf:type tpl:SpecializationOfClassOfIndividual ; tpl:hasSubClass :6e182328-9d74-4ddf-8148-8599b3a30c7d ; tpl:hasSuperClass rdl:RDS881279 ; # AXIAL SPLIT CASING meta:valEffectivedate "2015-07-24T00:00:00Z"^^xsd:dateTime . # CASING TYPE is SINGLE VOLUTE :7c5a7289-0f6a-4281-b2e4-7596ac2c26b1 rdf:type tpl:SpecializationOfClassOfIndividual ; tpl:hasSubClass :6e182328-9d74-4ddf-8148-8599b3a30c7d ; tpl:hasSuperClass rdl:RDS1013264 ; # SINGLE VOLUTE TYPE CASING meta:valEffectivedate "2015-07-24T00:00:00Z"^^xsd:dateTime . # CASING PRESS is MAX ALLOW@PT :93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e rdf:type tpl:ClassOfIndividualHasConditionalIndirectPropertyWithValue ; tpl:hasMultidimensionalPropertyType rdl:RDS2225991; # MAWP AT REFERENCE TEMPERATURE tpl:hasPossessorType :6e182328-9d74-4ddf-8148-8599b3a30c7d ; # PUMP CASING CLASS tpl:hasIndirectPropertyType rdl:RDS13113437 ; # UPPER LIMIT ALLOWABLE WORKING PRESSURE tpl:valPropertyValue "145"^^xsd:decimal ; tpl:hasScale rdl:RDS2223604 ; # KILOGRAM PER SQUARE CENTIMETRE GAUGE tpl:hasConditionPossessorType :c13c9b0c-1376-4b7a-9789-23dddd55577b ; # STREAM CLASS contained by CASING (not declared here) tpl:hasConditionPropertyType rdl:RDS357119 ; # OPERATING TEMPERATURE tpl:valConditionPropertyValue "95"^^xsd:decimal ; tpl:hasConditionScale rdl:RDS1322684 ; # DEGREE CELSIUS meta:valEffectiveDate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Participation of tested object in hydrostatic testing activity :e5957623-a437-45ad-aaa3-6e3fdf6a717e rdf:type tpl:ClassOfParticipationDefinition ; tpl:hasActivityType :ecf00085-1fd4-4bcd-a4f9-3e0dedc03b42 ; # declared hydrostatic testing activity class tpl:hasParticipantType :6e182328-9d74-4ddf-8148-8599b3a30c7d ; # PUMP CASING CLASS tpl:hasParticipantRole rdl:RDS2221130 ; # TESTED OBJECT tpl:hasCardinalityOfActivity rdl:RDS222625 ;# ONE TO ONE tpl:hasCardinalityOfParticipant rdl:RDS222625 ; # ONE TO ONE meta:valEffectiveDate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Participation of test liquid class in hydrostatic testing activity class :97232fe2-a91c-4bf0-ab28-ba00df3d6789 rdf:type tpl:ClassOfParticipationDefinition ; tpl:hasActivityType :ecf00085-1fd4-4bcd-a4f9-3e0dedc03b42 ; # declared testing activity class tpl:hasParticipantType :a1b7ff81-d6fc-4fe4-85d2-a4e008e8f6af ; ; # declared test liquid class tpl:hasParticipantRole rdl:RDS2221131 ; # TEST FLUID tpl:hasCardinalityOfActivity rdl:RDS222624 ; # ZERO TO ONE tpl:hasCardinalityOfParticipant rdl:RDS222625 ; # ONE TO ONE meta:valEffectiveDate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Defining the type of test liquid :fc090f68-68b4-42bc-8f04-b0c295eba0a5 rdf:type tpl:SpecializationByCompoundType ; tpl:hasSubClass :a1b7ff81-d6fc-4fe4-85d2-a4e008e8f6af ; # declared test liquid class tpl:hasSuperClass rdl:RDS1012769 ; # WATER meta:valEffectiveDate "2015-07-24T00:00:00Z"^^xsd:dateTime . # Defining the pressure of members of the test liquid class :799a7716-a125-4e4c-b7a4-86d340853f09 rdf:type tpl:ClassOfIndividualHasPropertyWithValue ; tpl:hasPossessorType :a1b7ff81-d6fc-4fe4-85d2-a4e008e8f6af ; tpl:hasPropertyType rdl:RDS7345161 ; # GAUGE PRESSURE tpl:valPropertyValue "100"^^xsd:decimal ; tpl:hasScale rdl:RDS2223604 ; # KILOGRAM PER SQUARE CENTIMETRE GAUGE meta:valEffectivedate "2015-07-24T00:00:00ZZ"^^xsd:dateTime .
Pick-lists
On ISO 15926 standard pick-lists will be set-up and be accessible on endpoint http://data.15926.org/esoc/. For example all ASME B16.5 Flange sizes (or: the ASME B16.5 Flange sizes that you need on your project as is shown below).
A pick-list is an instance of dm:EnumeratedSetOfClass of which one to many classes are members by means of one of two template types.
Examples are:
#Declaration of EnumeratedSetOfClass instance that is the core of a pick-list: :895f8236-13d1-4436-ae3a-fcfe95ad8800 rdf:type dm:EnumerateSetOfClass ; rdfs:label "Picklist for ASME B16.5 END SIZE CLASSES for Project P1234" ; meta:valEffectivedate "2017-09-09T00:00:00Z"^^xsd:dateTime #Declaration of templates that each allocate one size to above pick-list :6673144a-6aa7-436b-96cd-465538fbb4a6 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified asme:RDS248849 ; # ASME B16.5 NPS 1 END SIZE CLASS tpl:hasClassifier :895f8236-13d1-4436-ae3a-fcfe95ad8800 ; meta:valEffectivedate "2017-09-02T00:00:00Z"^^xsd:dateTime . :e6d6e61b-912b-42b2-a2ee-5b3db8b0fd11 rdf:type tpl:EnumerationOfClass ; tpl:hasClassified asme:RDS249209 ; # ASME B16.5 NPS 2 END SIZE CLASS tpl:hasClassifier :895f8236-13d1-4436-ae3a-fcfe95ad8800 ; meta:valEffectivedate "2017-09-02T00:00:00Z"^^xsd:dateTime . :84c641f8-bd42-4bd6-bc59-cab5c631374e rdf:type tpl:EnumerationOfClass ; tpl:hasClassified asme:RDS249479 ; # ASME B16.5 NPS 4 END SIZE CLASS tpl:hasClassifier :895f8236-13d1-4436-ae3a-fcfe95ad8800 ; meta:valEffectivedate "2017-09-02T00:00:00Z"^^xsd:dateTime . :a94bf081-07d1-4633-add6-9a576d88516e rdf:type tpl:EnumerationOfClass ; tpl:hasClassified asme:RDS249569 ; # ASME B16.5 NPS 6 END SIZE CLASS tpl:hasClassifier :895f8236-13d1-4436-ae3a-fcfe95ad8800 ; meta:valEffectivedate "2017-09-02T00:00:00Z"^^xsd:dateTime .
Mapping
For each data element in the document that needs to be mapped (by the way, that is, from a business point of view, not always required) a script must be written that, in many cases, uses the value of one or more other data elements.
The data on data sheets are either:
- literals (strings), that represent some class or individual, and that usually leads to a template for an interrelationship via a script, e.g. a SPARQL CONSTRUCT script
- literals (numbers), that usually leads to a template for a quantity;
- radio buttons or Y/N choices, that leads to a template with a Boolean.