Mapping of structured documents

latest update 2023-04-25  

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:

Example Information Model

Below is an example information model of a part of a pump data sheet.

CASING SPLIT AXIAL RADIAL  
CASING TYPE SINGLE VOLUTE DOUBLE VOLUTE DIFFUSER  
CASING PRESSURE kg/cm2g MAX. ALLOWABLE @ PT 145 HYDRO 235 @ 38 °C

On the data sheet the following data are being attributed to the pump casing:

This translates to the following template types:

using the following identifiers from the RDL:

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 "CO_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 MAXIMUM ALLOWABLE at 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 .

Collecting all templates of a class or document

In case you want to publish the document as such, it is useful to collect all its templates or a view thereof as required for a certain activity, such as sizing.

This can be done by using an instance of dm:EnumeratedSetOfClass and make those templates a member of it.
We use the template tpl:EnumerationOfClass for that, one template at a time. When done this way we can find out what the difference is between two revisions of that document, see the topic 'Set Operations', see also the topicViews on information about a Class or Individual.
The code of the (partial) template collection of above Requirements Class CO-P101 is as follows:

:559a945f-e276-453b-b198-2e4e45c6c29f rdf:type tpl:TemplateSetAboutClass ;
    tpl:hasClass :acf933f4-900e-4a78-8bcc-3eb83db60532  ; # Requirements Class CO_P101
    tpl:hasInfoSet :76614415-94fe-4de6-bd7d-eee9871de5a5  ;
    meta:valEffectivedate "2023-04-13T12:05:00Z"^^xsd:dateTime .    

:76614415-94fe-4de6-bd7d-eee9871de5a5  rdf:type dm:EnumerateSetOfClass ;
    rdfs:label "A view on the information content of Requirements Class CO-P101_20230413" ;
    meta:valEffectivedate "2023-04-13T12:05:00Z"^^xsd:dateTime .

:25385702-4a4d-40ac-9ba2-6994d1c52fa2 rdf:type tpl:EnumerationOfClass ;
    tpl:hasClassified :79d7ab72-f608-446f-a8d8-d635d9dd4a2e,  :4d9983c1-7b7f-4a88-9e3b-e7d0618b4b81,  
	:7c5a7289-0f6a-4281-b2e4-7596ac2c26b1, :93da71cc-0bd9-4c86-86f9-ccb12a8e1b9e,  
	:e5957623-a437-45ad-aaa3-6e3fdf6a717e,  :97232fe2-a91c-4bf0-ab28-ba00df3d6789, 
	:fc090f68-68b4-42bc-8f04-b0c295eba0a5,  :799a7716-a125-4e4c-b7a4-86d340853f09 ;
    tpl:hasClassifier :76614415-94fe-4de6-bd7d-eee9871de5a5 ;
    meta:valEffectivedate "2023-04-13T12:05:00Z"^^xsd:dateTime .

Pick-lists

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 .
or, in short-form format:
#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:RDS249209, asme:RDS249479,  asme:RDS249569 ;
    tpl:hasClassifier :895f8236-13d1-4436-ae3a-fcfe95ad8800 ;
    meta:valEffectivedate "2017-09-02T00:00:00Z"^^xsd:dateTime .