This is a short tutorial to get familiarized with its use.
This tutorial uses an example template: IdentificationOfTemporalPart.
This template is used for identification of a PossibleIndividual. In our example a vessel called 11V-101
The roles are:
- (x1) hasTemporalWhole this is just an object e.g. with id = F12345 which is MyVessel
- (x2) hasIdentified this is a temporal part e.g. with id = F22222 which is the temporal part for the identification
- (x3) valIdentifier the string "11V-101"
- (x4) valStartTime the date 07/11/2012
You can see the roles which are called x1 trough x4 in the model. For data exchange purposes it is sufficient that this information object is an n-ary relationship (template) expressed in a rule language for example:
IdentificationOfTemporalPart("F12345", "F22222", "11V-101", "07/11.2012")
or in RDF for example:
(where ex is some local namespace for the example)
ex:T12345 rdf:type p7tpl:IdentificationOfTemporalPart
ex:T12345 ex:hasTemporalWhole ex:F12345
ex:T12345 ex:hasIdentified ex:F22222
ex:T12345 ex:valIdentifier "P-101"^^xsd:string
ex:T12345 ex:valStartTime "07/11/2012"^^xsd:date
But to represent the diagram shown above the n-ary relationship needs to be lifted to know its true semantics. This is not necessary for the purpose of data exchange, but for the purpose of semantic precision, and only if this is required for a certain business case.
For this lifting action we can use the Template Expander.
The First Order Logic (FOL) axiom of this template is:
Code: Select all
IdentificationOfTemporalPart(x1, x2, x3, x4) <->
PossibleIndividual(x1) &
PossibleIndividual(x2) &
ExpressString(x3) &
RepresentationOfGregorianDateAndUtcTime(x4) &
TemporalPartTemplate(x2, x1) &
ClassOfIdentificationTemplate(x3, x2) &
exists u(PointInTime(u) &
BeginningTemplate(u, x2) &
ClassOfIdentificationTemplate(x4, u)) .
There are two kinds of templates used in the FOL:
[*] Proto-Templates - these are a one-on-one representation of the ISO 15926-2 data model. Their name is the name of the entity data type followed by the suffix "Template" or "Triple".
[*] Base-Templates - these comprise of Proto-Templates and connect to entity data types.
In the above FOL code the following are proto-templates:
Temporal(Whole)PartTemplate, BeginningTemplate and ClassOfIdentificationTemplate.
There are no base-templates in this example (templates that comprise of proto-templates), but it would have been legal to have them in the axiom.
ACTIONS:
- In the top-block of the template expander, behind all the axioms, we paste our new axiom.
- In the center block we paste just the signature, so that is everything before the <-> sign of our axiom.
- Click the Expand button.
Code: Select all
PossibleIndividual(x1)
& PossibleIndividual(x2)
& ExpressString(x3)
& RepresentationOfGregorianDateAndUtcTime(x4)
& TemporalPartTemplate(x2, x1)
& exists z
(ClassOfIdentification(z) & hasPattern(z, x3) & hasRepresented(z, x2)
& exists u
(PointInTime(u)
& exists z (Beginning(z) & hasPart(z, u) & hasWhole(z, x2))
& exists z
(ClassOfIdentification(z) & hasPattern(z, x4) & hasRepresented(z, u)))
All templates (ending with "Template" or "Triple") should have been expanded through their proto template statements. No "Template" or "Triple" should be there any more.
However, there is a mistake. The TemporalPartTemplate(x2, x1) was not expanded.
Checking the proto templates, you will find that the correct name is TemporalWholePartTemplate(x2, x1). Correcting the error, and expanding once again, we arrive at the correct end-result.
Code: Select all
PossibleIndividual(x1)
& PossibleIndividual(x2)
& ExpressString(x3)
& RepresentationOfGregorianDateAndUtcTime(x4)
& exists z (TemperalWholePart(z) & hasPart(z, x2) & hasWhole(z, x1))
& exists z
(ClassOfIdentification(z) & hasPattern(z, x3) & hasRepresented(z, x2)
& exists u
(PointInTime(u)
& exists z (Beginning(z) & hasPart(z, u) & hasWhole(z, x2))
& exists z
(ClassOfIdentification(z) & hasPattern(z, x4) & hasRepresented(z, u)))
If this axiom is approved, it can be added to all-templates.txt and uploaded by the upload button.
Note that the template expander has a bug: it is not possible to copy/paste between it and an external editor. So it is also not possible to copy the output back into your Word document or email.
This bug is caused by a later update of Java. Copy/paste was regarded a security risk.
If you want to enable copy/paste to Java Applets you have to set up a policy on your own computer.
Here are the instructions:
- Download this file: http://15926.org/.java.policy (right-click the link and select save target link as)
- Copy this file in your user area on your PC.
- on Windows XP this is folder: C:\Documents and Settings\<your user ident>\
- on Windows 7 this is folder: C:\Users\<your user ident>\
- Check that the file is really there, and really called .java.policy (mind the dot at the front)