Introduction
In this topic a detailed comparison between the TP+P Method and using Templates is presented.
Comparison
The basis for this comparison is the EQUIPMENT table of the CFIHOS DATA MODEL V1.5 :
A very basic ISO 15926-compliant model for that is:
This minimum mapping is the essence of that TP+P - TemporalPart + Predicate - Method, with the exceptional complication that Equipment (in 15926 lingo: InanimatePhysicalObject AND ActualIndividual) has so many interrelational temporal parts.
Below the mapping in both methods is shown side-by-side:
The difference
It is very tempting to use the TP+P Method at the lefthand side, clean, not that many details. But it has a downside: Each system or app that is mapped to ISO 15926 this way brings with it its own nomenclature and related semantics. This will lead to an unmanageable number of predicates and these will impede the fundamental reason for existence of ISO 15926: life-cycle plant information integration and global interoperability.
Besides that customary data sets, like those in relational data bases and spreadsheets, are can only be understood by human beings and by the application they reside in.
The Templates, based on ISO 15926-2 entity types, are semantically much more precise. But they are more verbose, also because they add interlinking information that is left out by those customary data sets.
As is explained in the topic TP+P Method it will be investigated whether or not it is feasable to define a set of generic predicates, and let the mappers decide to create specializations of those generic predicates that carry the names that are familiar to the mapped system or app.
Mapping from TP+P to Templates
Mapping from a proprietary source format to TP+P is reasonably straightforward.
Provided that a set of generic predicates is standardized within the ISO 15926 framework, and provided that standard mappings between those generic predicates and one or a set of more interlinked templates can be made.
Then the mapping person could make the locally defined predicates a subProperty of those generic predicates and thus close the loop and perform that secondary mapping to templates.
It still requires some ETL work.
So let's try it, from top to bottom in above large graphs:
NOTE - When you study the above graphs, it may occur to you that some data elements in that EQUIPMENT table aren't that straightforward. Take, for instance, the data element 'Tag name'.
The semantics behind this is as follows:
- an Equipment item exists in the actual world around us, but a Tag exists in the abstract design & engineering world;
- the data element 'Tag name' represents the information that the Equipment item has been purchased in order to fulfil the requirements of the Tag;
- but that is only true when, and as long as, that Equipment item has been installed in that 'Functional Location' and has been commissioned.
- cfihos:equipmentActualInstallationDate (cfihos:00000012.10000169)
- TRIPLE: cfihos:InstalledAsset cfihos:equipmentActualInstallationDate xsd:date. # the valEffectiveDate of the Installation Activity
- SUB-PROPERTY OF: pred:beginOfTemporalPartCausedBy
- MAPS TO TEMPLATE: tpl:ActivityCausesBegunIndividual # the beginning of the existence of the Asset in an installed state
- cfihos:equipmentActualPurchaseDate (cfihos:00000012.10000032)
- TRIPLE: cfihos:InstalledAsset cfihos:equipmentActualPurchaseDate xsd:date. # the valEffectiveDate of thePurchase Order Publication Activity
- SUB-PROPERTY OF: pred:beginOfTemporalPartCausedBy
- MAPS TO TEMPLATE: tpl:ActivityCausesBegunIndividual # the beginning of the existence of the Asset in an installed state
- cfihos:equipmentActualStartupDate (cfihos:00000012.10000033)
- TRIPLE: cfihos:OperatingAsset cfihos:equipmentActualStartupDate xsd:date. # the valEffectiveDateof the Start-up Activity
- SUB-PROPERTY OF: pred:beginOfTemporalPartCausedBy
- MAPS TO TEMPLATE: tpl:ActivityCausesBegunIndividual # the beginning of the existence of the Asset in an operating state
- cfihos:equipmentClassName (cfihos:00000012.10000047)
- TRIPLE: cfihos:Asset cfihos:equipmentClassName xsd:string. # replace string with applicable RDL RDS-identifier
- SUB-PROPERTY OF: rdf:type
- MAPS TO TEMPLATE: tpl:ClassificationOfIndividual
- cfihos:equipmentManufacturerSerialNumber (cfihos:00000012.10000163)
- TRIPLE: cfihos:Asset cfihos:equipmentManufacturerSerialNumber xsd:string.
- SUB-PROPERTY OF: rdf:hasAsIdentifier
- MAPS TO TEMPLATE: tpl:IdentificationOfIndividual # use rdl:RDS2221101
- cfihos:equipmentPrice + cfihos:currencyCode (cfihos:00000012.10000170 + cfihos:00000012.10000193)
- TRIPLE: cfihos:Asset cfihos:equipmentPrice xsd:decimal. #
- SUB-PROPERTY OF: pred:hasPrice-currency
- MAPS TO TEMPLATE: tpl:IndividualHasMonetaryValue # a specialization thereof with fixed subclass of 'COST' (rdl:RDS7945027) and 'CURRENCY' (rdl:RDS2229240)
- cfihos:equipmentWarrantyEndDate (cfihos:00000012.10000035)
- TRIPLE: cfihos:Asset cfihos::equipmentWarrantyEndDate xsd:date. #
- SUB-PROPERTY OF: pred:statusEndsAt
- MAPS TO TEMPLATE: tpl:EndingOfStatusOfIndividualAtEvent # a specialization thereof with fixed status 'FACTORY WARRANTED' (rdl:RDS2229244) and event type 'WARRANTY EXPIRATION EVENT' (rdl:RDS2229800)
- cfihos:manufacturerCompanyName (cfihos:00000012.10000158)
- TRIPLE: cfihos:ManufacturedEquipment cfihos:manufacturerCompanyName cfihos:ManufacturerCompany. # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:isManufacturedBy
- MAPS TO TEMPLATE: tpl:RelationshipBetweenTwoIndividuals # a specialization thereof with fixed 'IS MANUFACTURED BY' (rdl:RDS2229929)
- cfihos:modelPartName (cfihos:00000012.10000159)
- TRIPLE: cfihos:Asset cfihos:modelPartName xsd:string. # convert string to (UU)ID
- SUB-PROPERTY OF: rdf:type
- MAPS TO TEMPLATE: tpl:ClassificationOfIndividual
- cfihos:plantCode (cfihos:00000012.10000005)
- TRIPLE: cfihos:InstalledAsset cfihos:plantCode cfihos:Plant. # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:assemblyPartOf
- MAPS TO TEMPLATE: tpl:AssemblyOfIndividual
- cfihos:purchaseOrderIssuerCompanyName (cfihos:00000012.10000180)
- TRIPLE: cfihos:PurchaseOrder cfihos:purchaseOrderIssuerCompanyName cfihos:Company . # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:documentPublisher
- MAPS TO TEMPLATE: tpl:DocumentPublication + tpl:EndedParticipationOfIndividualInActivity # a specialization thereof with fixed 'PERFORMER' (rdl:RDS222365)
- cfihos:purchaseOrderNumber (cfihos:00000012.10000128)
- TRIPLE: cfihos:SoldProduct cfihos:purchaseOrderNumber cfihos:PurchaseOrder . # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:isReferredToOnDocument
- MAPS TO TEMPLATE: tpl:ReferenceToIndividualOnDocument
- cfihos:purchaseOrderItemNumber (cfihos:00000012.10000299)
- TRIPLE: cfihos:SoldProduct cfihos:purchaseOrderItemNumber cfihos:PurchaseOrderItem . # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:isReferredToOnDocument
- MAPS TO TEMPLATE: tpl:ReferenceToIndividualOnDocument
- cfihos:tagName (cfihos:00000012.10000166)
- TRIPLE: cfihos:InstalledEquipment cfihos:tagName cfihos:Tag. # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:implementerOf
- MAPS TO TEMPLATE: tpl:ImplementationOfIndividualByIndividual
- cfihos:vendorCompanyName (cfihos:00000012.10000164)
- TRIPLE: cfihos:SoldProduct cfihos:vendorCompanyName cfihos:VendorCompany. # replace labels of subject and object with their (UU)ID
- SUB-PROPERTY OF: pred:isSoldBy
- MAPS TO TEMPLATE: tpl:RelationshipBetweenTwoIndividuals # a specialization thereof with fixed 'IS SOLD BY' (rdl:RDS2229238)
For the predicates 'temporalPartOf' in the above graph refer to the righthand side of the LSN graph Node numbers 72 - (75*) - 78 - 84 - 85. (* not included in the graph)