| Ontology for self-describing networks | S-TEN D2.1 |
The path to a formal approach to the recording of physical quantities measure begins with the concept of "number with unit". This is a number with some information about what it means. For example we may have:
[ a myOnt:number_with_unit ; myOnt:number "27.0" ; myOnt:unit bipm:metre }
NOTE Examples are given in N3. They should be readable even if you do not know the format.
The problem with "number with unit" is that its meaning is vague. It is not just a number, but is it a length or an information object which describes a length?
The physical quantity "27.0 metres" is a length. Length is a "category of comparable physical quantities". (This phrase is taken from the introduction to ISO 31-0.)
The physical quantity "27.0 metres" may be described by an information object that consists of a number and a unit. For example we may have:
[ a iso31:length ;
myOnt:described_by
[ a myOnt:physical_quantity_description ;
myOnt:number "27.0" ;
myOnt:unit bipm:metre ] ]
There is nothing wrong with this approach, but it ignores the mathematics of the relationship between categories of physical quantities and numbers. As a result we have to invent new information objects for all related concepts such as length intervals, probability distributions over length, etc..
In the examples so far, we have regarded numbers as just literals. If we wish to use mathermatics it is necessary to recognise that:
A number space, such as the reals, can be regarded as a owl:Class. Hence the literal "27" in the examples above can be replaced by the anonymous object:
[ a sten:real ; basics:decimal "27.0" ]
or more concisely, just:
[ basics:decimal "27.0" ]
A scale is a function from a "category of comparable physical quantities" (or sten:physical_quantity_space) to a number space. A sten:physical_quantity_space consists of a set of physical quantities, and relationships between the physical quantities which define the structure of the space.
A scale has properties (such as being increasing or continuous) which depend upon the structures of its domain and range.
An ontology can define celsius and metre_scale, as follows:
bipm:celsius a owl:FunctionalProperty;
rdfs:domain iso31:thermodynamic_temperature ;
rdfs:range sten:real .
:metre_scale a owl:FunctionalProperty;
rdfs:domain iso31:length ;
rdfs:range sten:real .
Using an ontology of scales, the representation of a physical quantity value is simple, rigorous and concise. For the length 27.0 we have:
[ a iso31:length ; :metre_scale [ basics:decimal "27.0" ] ]
or more concisely:
[ :metre_scale [ basics:decimal "27.0" ] ]
Similarly the representation of the temperature 20 degrees Celsius is:
[ bipm:celsius [ basics:decimal "20.0" ] ]
The suffix "_scale" has been included in the ID "metre_scale", because the SI concept of metre is not a scale but a named length. In an ontology, the metre would be:
bipm:metre a iso31:length ;
rdfs:comment "Defined by the BIPM." .
Because metre_scale (like all other scales derived from units) is linear, the metre_scale is completely defined by the statements:
:metre_scale a sten:linear_function . bipm:metre :metre_scale [ basics:decimal "1.0" ] .
The standards on units are not good at distinguishing between units and scales. It is clear that all the SI base units are indeed units and not scales. The only two scales in common use are Celsius and Fahrenheit.
NOTE The Kelvin is a unit. It is a named thermodynamic temperature. The Celsius is not a unit.
The temperature scale ITS-90 is a scale. It is a practical approximation to the scale that is derived from the Kelvin unit.
A physical quantity can be regarded as a class.
EXAMPLE 1 The physical quantity "27.0 metres" is a class which consists of pairs of points in space.
The ship "Jolly George" with a waterline length of 27 metres is not a member of this class, but the pair of points defined by the intersection of:
is.
As in example 1, the members of a physical quantity are almost invariably theoretical things rather than observable physical things.
EXAMPLE 2 The physical quantity "10 tonnes" is a class which consists of quantities of matter at an instant.
Pump P_101 at 2007-04-02T10:30 is a member of the physical quantity "10 tonnes", but this is not measurable. All we can say is that the average mass during the measuring process, which lasts from 2007-04-02T10:29:59 to 2007-04-02T10:30:01 is "10 tonnes".
EXAMPLE 3 The physical quantity "7.1 tonnes per cubic metre" is a class which consists of points within volumes of matter at an instant. This is a fictional class, because matter is not a continuum and there is no concept of density at sufficiently small scales.
We cannot say that point P within the casing of pump P_101 at 2007-04-02T10:30 is a member of the class "7.1 tonnes per cubic metre". All we can say is that the average density of a small volume surrounding point P for a small time interval around 2007-04-02T10:30 is "7.1 tonnes per cubic metre".
A physical aspect of a sten:physical_thing can be recorded as a relationship with a sten:physical_quantity. The sten:physical_thing is not necessarily a member of the sten:physical_quantity.
EXAMPLE 1 The statement "The Jolly George at 2007-04-02T10:30 has a waterline length of exactly 27 metres", which is a valid statement but which is probably untrue, can be recorded as follows:
:Jolly_George_at_2007-04-02T10:30
a sten:classical_object_at_instant ;
sten:temporal_part_of :Jolly_George ;
ship:waterline_length [ :metre_scale [basics:decimal "27.0" ] .
The pair of points which defines the waterline length of the Jolly George (see the example in clause Member of a physical quantity) is a member of "27 metres", but not the ship.
The relationship is an evaluation of a sten:physical_property. This is a basics:function which has a space of instances of sten:physical_thing as its domain and a sten:physical_quantity_space as its range.
EXAMPLE 2 The basics:function ship:waterline_length has instants in the life of ships as its domain and iso31:length as its range. This can be recorded as follows:
ship:waterline_length a owl:FunctionalProperty ;
rdfs:domain
[ owl:intersectionOf
( sten:classical_object_at_instant
[ owl:onProperty sten:temporal_part_of ;
owl:allValuesFrom ship:ship ]
)
] ;
rdfs:range iso31:length .
If the evaluation of sten:physical_property is uncertain, then a region which contains the value can be specified.
EXAMPLE 3 A more truthful version of the statement in EXAMPLE 1 is "The Jolly George at 2007-04-02T10:30 has a waterline length which is within an understood tolerance of 27 metres", where "understood tolerance" will be interpreted according to a activity. This can be recorded as follows:
:Jolly_George_at_2007-04-02T10:30
a sten:classical_object_at_instant ;
sten:temporal_part_of :Jolly_George ;
ship:waterline_length [ rdf:type
[ rdfs:subClassOf iso31:length ;
rdf:type sten:understood_tolerance ;
sten:has_nominal_value
[ :metre_scale [basics:decimal "27.0" ]
]
] .
In order to record the variation of a sten:physical_property with time, a sub-property can be defined that has a 1D manifold of temporal instants as its domain. The use of functions to record property variation is discussed in An approach to property variation.
EXAMPLE 4 The variation of the waterline length of the Jolly George can be recorded by the "Jolly George waterline length" function. The domain of this function is the life of the Jolly George regarded as a 1D manifold of instants, and the range is iso31:length. The image of this function is within an understood tolerance of 27 metres. This can be recorded as follows:
:Jolly_George a ship:ship ;
a basics:manifold_1d ;
rdfs:subClassOf sten:classical_object_at_instant .
[ rdfs:domain :Jolly_George ;
rdfs:range iso31:length ;
rdfs:subPropertyOf ship:waterline_length ]
sten:has_image [ rdfs:subClassOf iso31:length ;
rdf:type sten:understood_tolerance ;
sten:has_nominal_value
[ :metre_scale [basics:decimal "27.0" ]
] .
In the case of a fundamental property such as "mass", there is no sten:physical_property. Instead, the relationship between the sten:physical_thing and the sten:physical_quantity is classification. This causes a practical problem because classification is not a function. You cannot ask "what is a thing classified as?" and expect a sensible answer.
This problem can be avoided by deriving a trivial sten:physical_property from each sten:physical_quantity_space.
NOTE This seems very sordid, and it would be good to have an alternative.
EXAMPLE 5 The variation of the mass of the Jolly George can be recorded by the "Jolly George mass" function, in a way that is analogous to EXAMPLE 4. The domain of this function is the life of the Jolly George regarded as a 1D manifold of instants, and the range is iso31:mass. The image of this function is within an understood tolerance of 63 tonnes. This can be recorded as follows:
:Jolly_George a ship:ship ;
a basics:manifold_1d ;
rdfs:subClassOf sten:classical_object_at_instant .
[ rdfs:domain :Jolly_George ;
rdfs:range iso31:mass ;
rdfs:subPropertyOf sten:has_mass ]
sten:has_image [ rdfs:subClassOf iso31:mass ;
rdf:type sten:understood_tolerance ;
sten:has_nominal_value
[ :tonne_scale [basics:decimal "63.0" ]
] .
The function has:mass is defined as follows:
has_mass a owl:FunctionalProperty ;
rdfs:domain sten:physical_thing ;
rdfs:range iso31:mass ;
rdfs:subPropertyOf rdf:type .
An object is a sten:physical_quantity if and only if it is a "physical quantity", where the term is as used in ISO 31-0.
NOTE 1 ISO 31-0 does not define the term "physical quantity". A possible definition is "magnitude of a physical phenomenon, which can be compared with other magnitudes of the same physical phenomenon."
NOTE 2 Units are named instances of sten:physical_quantity.
EXAMPLE
bipm:metre a sten:physical_quantity ;
a iso31:length .
OWL specification:
--> <owl:Class rdf:about="&sten;physical_quantity"> <rdfs:subClassOf rdf:resource="&basics;structure_point"/> <owl:sameAs rdf:resource="&iso15926-2;property"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#physical_quantity"/> </owl:Class> <!--
An object is a sten:physical_quantity_space if and only if it is a "category of physical quantities which are mutually comparable".
NOTE 1 The clause "category of physical quantities which are mutually comparable" is as used in ISO 31-0, but the object is not assigned a name.
NOTE 2 Instances of sten:physical_quantity_space are defined in the parts of ISO 31. These instances have been recorded as OWL within STEN deliverable D3.2.
EXAMPLE 1
iso31:thermodynamic_temperature a sten:physical_quantity_space .
EXAMPLE 2
iso31:mass a sten:physical_quantity_space .
OWL specification:
--> <owl:Class rdf:about="&sten;physical_quantity_space"> <rdfs:subClassOf rdf:resource="&basics;structure"/> <owl:sameAs rdf:resource="&iso15926-2;property_space"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#physical_quantity_space"/> </owl:Class> <!--
An object is a sten:scale if and only if it is a basics:function from a sten:physical_quantity_space to a numeric space.
EXAMPLE 1
bipm:celsius a sten:scale ;
rdfs:domain iso31:thermodynamic_temperature .
rdfs:range basics:real_numbers .
OWL specification:
--> <owl:Class rdf:about="&sten;scale"> <rdfs:subClassOf rdf:resource="&owl;FunctionalProperty"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdfs;domain"/> <owl:allValuesFrom rdf:resource="&sten;physical_quantity_space"/> </owl:Restriction> </rdfs:subClassOf> <owl:sameAs rdf:resource="&iso15926-2;scale"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#scale"/> </owl:Class> <!--
NOTE The restriction on the range is a bit tricky. Probably is any structure. For the scale to be useful, there has to be a way of identifying each member of the structure.
An object is a sten:linear_function if and only if:
F(k.x) = k.F(x)
where x is in the domain of F, and k is a scalar.
OWL specification:
--> <owl:Class rdf:about="&sten;linear_function"> <rdfs:subClassOf rdf:resource="&owl;FunctionalProperty"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdfs;domain"/> <owl:allValuesFrom rdf:resource="&basics;vector_space"/> </owl:Restriction> </rdfs:subClassOf> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdfs;range"/> <owl:allValuesFrom rdf:resource="&basics;vector_space"/> </owl:Restriction> </rdfs:subClassOf> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#linear_function"/> </owl:Class> <!--
An object is a sten:physical_property if and only if
OWL specification:
--> <owl:Class rdf:about="&sten;physical_property"> <rdfs:subClassOf rdf:resource="&owl;FunctionalProperty"/> <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="&rdfs;range"/> <owl:allValuesFrom rdf:resource="&sten;physical_quantity_space"/> </owl:Restriction> </rdfs:subClassOf> <owl:sameAs rdf:resource="&iso15926-2;indirect_property"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#physical_property"/> </owl:Class> <!--
NOTE The restriction on the domain is a bit tricky. It is any subclass of sten:physical_thing.
An object is a sten:understood_tolerance if and only if
NOTE An sten:understood_tolerance cam be within a sten:physical_quantity_space.
An sten:understood_tolerance can be a sten:period.
An sten:understood_tolerance can be a sten:region.
OWL specification:
--> <owl:Class rdf:about="&sten;understood_tolerance"> <rdfs:subClassOf rdf:resource="&basics;sub_structure"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#understood_tolerance"/> </owl:Class> <!--
An object is a sten:has_nominal_value relationship if and only if:
NOTE If an sten:understood_tolerance is within a sten:physical_quantity_space then a sten:has_nominal_value gives a sten:physical_quantity.
If an sten:understood_tolerance is within a sten:time then a sten:has_nominal_value gives an sten:instant.
If an sten:understood_tolerance is within a sten:physical_space then a sten:has_nominal_value gives a sten:point_in_space.
OWL specification:
--> <owl:FunctionalProperty rdf:about="&sten;has_nominal_value"> <rdfs:domain rdf:resource="&sten;understood_tolerance"/> <rdfs:range rdf:resource="&basics;structure_point"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#has_nominal_value"/> </owl:FunctionalProperty> <!--
An object is a sten:has_image relationship if and only if:
OWL specification:
--> <owl:FunctionalProperty rdf:about="&sten;has_image"> <rdfs:domain rdf:resource="&basics;mapping"/> <rdfs:range rdf:resource="&owl;Class"/> <meta:defined_by rdf:resource="&D2.1;/physical_quantity_property_and_scale.htm#has_image"/> </owl:FunctionalProperty> <!--
© S-TEN Association e.V. — Public deliverable of the S-TEN project