A TIP (Template of Information Pattern) is a statement with two or more variables that, when instantiated, expands into the declaration of zero to many things and/or the declaration of one or more specialized ISO 15926-7 template instances.
TIPs form a bridge between engineering language, often with its shortcuts, and the semantically equivalent set of ISO 15926-7/8 lowered template predicates.
Any TIP is the top of its iceberg. TIPs are there to provide a link between an engineer with his software that has a lot of implicit information, and the world of explicit integrated lifecycle information, which at times is rather verbose.
TIPs are usually applicable for individual data, but it is possible to build larger constructs.
Each TIP has a "signature" with "roles" and "variables" that fulfil those roles. The values of the variables are to be fetched from the source document or file.
An example of such a signature is:
Description of Variable
Example of value
Tag number of the instance of ClassOfInanimatePhysicalObject whose members shall be tested
||Suffix for the creation of a subtag for the instance of ClassOfCompound
||Value of the mandatory test pressure, quantified against var_Scale
||Scale for quantifying the test pressure
||From what xsd:dateTime is the information represented here valid?
This is converted to:
:EE2F8351A938477C91AF69F980E1128C rdf:type tip:HydrostaticTestPressureOfClassOfIndividual ;
tip:role1 "B14-P-101"^^xsd:string ;
tip:role2 "-HYF"^^xsd:string ;
tip:role3 "100"^^xsd:decimal ;
tip:role4 rdl:RDS1330559 ;
After completion of the TIP signature an ISO 15926-7/8 compliant code listing in Turtle (N3) format is being generated and made output.
The above input creates this code *):
:6EC14A6FA3EC4BD69A630855729F2C1A rdf:type tpl:ClassOfIndividualHasIndirectPropertyWithValue ;
tpl:hasPossessorType :DBE7DAE2FE144C6EAA39C9FEE2BA2DED ; # ID found against tag B14-P-101-HYF *)
tpl:hasIndirectPropertyType rdl:RDS7345161 ; # fixed value for GAUGE PRESSURE
tpl:valPropertyValue "100"^^xsd:decimal ;
tpl:hasScale rdl:RDS1330559 ;
meta:valEffectiveDate "2017-09-10T14:57:00Z"^^xsd:dateTime .
*) An earlier instantiation of the TIP HydrostaticTestFluidOfClassOfIndividual is assumed.
Below the full conversion of this case is described in detail.
The data analyst first composes a small information model, like this one:
This makes visible what the, often hidden, information structure is.
2-Declare missing objects
Normally information is, directly or indirectly, related to something that is already known to the observer (if not, the information may be rather meaningless). In this example the pressure rated artefact, such as a pressure vessel, is known, because the "test pressure" is information about it, be it indirectly as we can see from the information model.
So the activity HYDROSTATIC TESTING and the fluid used for that testing shall be declared here. (Note - It is advised to launch the TIP HydrostaticTest FluidOfClassOfIndividual first)
These declared objects get, in most cases, a subtag of the main object that was already known.
Using the applicable templates, selected from here, the relations between the objects in the above information model are being represented.
The generation of the output file is done with a CONSTRUCT statement of SPARQL. The quality of the output is as good as that of the input, provided that CONSTRUCT statement has been validated as being ISO 15926-7/8 compliant.
Class or Individual
When writing the CONSTRUCT statement it is important to properly decide on the question whether this information applies to an Individual thing or to a Class of individuals
Without implying that further study on this is unimportant, it is possible to give a few rules of thumb:
All information related to Engineering & Design is at Class level, with the exception of topological information found on functional diagrams (e.g. P&IDs) or in 3D models
All information related to Procurement, Manufacturing, Logistics, Construction, Operations and Maintenance is at Individual level, except for procedures, rules and regulations.
Given the fact that there are many thousands data fields passing by during the life of a plant, it isn't very wise to try to build a TIP for each and every such data. Due to the generic character of the ISO 15926 data model, a TIP can be re-used multiple times, with only one or a few variations in the input of the signature. That is why the name is about "information patterns".
At places in the TIP signature where multiple values are possible (and one has to be selected) use can be made of pick-lists. Constructing those, if so required company-defined, pick-lists also limit the chances of incorrect choices or misspellings.
Tip names shall be informative for an engineer, and that applies as well to the names of the variables. The TIP name is the ID of that TIP type. For example:
:710F6CC1777346C18230A7EBD3505655 rdf:type tip:DocumentRefersToClassOfIndividual ; # for example: pump specification BR-43805 rev. 2 is referred to on
Purchase Order Xp-54043
For Individuals distinction shall be made between designed Individuals (those in a topology, see above) and actual Individuals (those who exist in the real world). One example for each:
:A4BF55C8E36A406D976F6A49AAC619C3 rdf:type tip:DocumentRefersToDesignedIndividual ; # for example: pump P-101 is referred to on P&ID P12345-rev.1
:74FBB77E5D38403AB618DC98B770F9E0 rdf:type tip:DocumentRefersToActualIndividual ; # for example: pump with serial
number RU-43983 is referred to on Test Report T84427
TIP definitions are accessible here. NOTE - This is Work In Progress!! They can be freely copied, changed, and used.
In recent years industry and software representatives in the USA and Great Britain have put together an extensive list of 406 TIPs. This list can be found here.
These "old" TIPs will be, over time, mapped to the TIPs defined in this topic.
Each output file starts with a heading like this one:
@prefix : <http://data.xyz.org/p1234/> . # just a fantasy URI for project p1234 of the XYZ inc.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . # defines Literals (text, dateTimes, numbers, etc)
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> . # defines metadata
@prefix meta: <http://data.15926.org/meta/> . # defines ISO 15926-specific metadata
@prefix dm: <http://data.15926.org/dm/> . # defines the ISO 15926-2 data model
@prefix edm: <http://data.15926.org/edm/> . # defines an extension of the ISO 15926-2 data model
@prefix tpl: <http://data.15926.org/tpl/> . # defines the ISO 15926-7 templates
@prefix rdl: <http://data.15926.org/rdl/> . # defines the ISO 15926-4 reference data
@prefix xyzrdl: <http://data.xyz.org/rdl/> . # just a fantasy URI for an RDL extension of the XYZ inc. (if any)
The user-defined URIs can be inputted by the user.
Detailed description of this case
In the normal work process first the type of fluid for hydrostatic testing is defined. This is represented with the TIP HydrostaticTestFluidOfClassOfIndividual. See there.