A visual overview of the Observable Property ontology is provided here
First, we need to add the 8 base quantity kinds associated with the SI system of units:
- dimensionless (U)
- length (L)
- mass (M)
- time (T)
- electricCurrent (I)
- thermodynamicTemperature (Ɵ)
- amountOfSubstance (N)
- luminousIntesity (J)
See the QUDT Quantity vocabulary for details of these quantity kinds.
As an aside, I note that when adding quantity kinds into the WMO Codes Registry, the appropriate subclass of qudt:QuantityKind
should be used for the rdf:type
declaration. These include: qudt:AtomicPhysicsQuantityKind
, qudt:BiologyQuantityKind
, qudt:ChemistryQuantityKind
, qudt:ElectricityAndMagnetismQuantityKind
, qudt:MechanicsQuantityKind
, qudt:PhotometryQuantityKind
, qudt:RadiologyQuantityKind
, qudt:RadiometryQuantityKind
, qudt:SpaceAndTimeQuantityKind
and qudt:ThermodynamicsQuantityKind
.
All the SI units for these base quantity kinds are provided in Code Table C-6. However, the name dimensionless is additonally used within the WMO Codes Registry to describe the unit without dimension. QUDT refers to this unit as "Unity".
Recommend modifying the rdfs:label
and skos:prefLabel
of term http://codes.wmo.int/common/unit/1
to indicate "Unity".
Where appropriate, we can now add qudt:generalization
relationships between the terms in Code Table D-2 and the base SI units; for example:
<http://codes.wmo.int/common/quantity-kind/dewPointTemperature> qudt:generalization <http://codes.wmo.int/common/quantity-kind/thermodynamicTemperature> .
At present the dimension property of quantity kinds is specified as a literal; e.g.
<http://codes.wmo.int/common/quantity-kind/dewPointTemperature> <http://codes.wmo.int/def/common/dimensions> "Ɵ" .
I think it is appropriate to adopt the more sophisticated model from QUDT; wherein each dimension is specified as an object.
Previsouly @ TT-AvXML we agreed that we would re-use the QUDT ontology but not any of the vocabulary, so we need to (re-)define the dimension instances within the WMO Codes Registry. Let's create a new register for these entities: http://codes.wmo.int/common/dimension
. For reference, please refer to the QUDT dimension vocabulary.
In contrast to the approach taken by QUDT where the individual dimension vectors are named individually, I suggest we use blank-nodes for these ... I can't see a need to have the dimension vectors individually identifiable.
Defining the dimension vectors is where the 8 base quantity kinds for the SI system of units is required; each vector uses the property qudt:basisElement
to refer to one of the 8 base quantity kinds and asserts a magnitude for that element.
One dimension vector must be defined for each of the 8 base quantities.
Example: dimension for linear velocity
<http://codes.wmo.int/common/dimension/LT-1> a qudt:Dimension ;
rdfs:label "L/T" ;
qudt:symbol "L T^-1" ;
qudt:dimensionVector
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/dimensionless> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/length> ;
qudt:vectorMagnitude 1.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/mass> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/time> ;
qudt:vectorMagnitude -1.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/electricCurrent> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/thermodynamicTemperature> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/amountOfSubstance> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/luminousIntensity> ;
qudt:vectorMagnitude 0.0 ] .
Example: dimension for dew-point temperature
<http://codes.wmo.int/common/dimension/Ɵ> a qudt:Dimension ;
rdfs:label "Ɵ" ;
qudt:symbol "Ɵ" ;
qudt:dimensionVector
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/dimensionless> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/length> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/mass> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/time> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/electricCurrent> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/thermodynamicTemperature> ;
qudt:vectorMagnitude 1.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/amountOfSubstance> ;
qudt:vectorMagnitude 0.0 ] ,
[ qudt:baseElement <http://codes.wmo.int/common/quantity-kind/luminousIntensity> ;
qudt:vectorMagnitude 0.0 ] .
A dimension entity needs to be created for each of the dimensions referenced by the set of quantity kinds.
Once these have been created we can then link the quantity kinds to the dimensions; e.g.
<http://codes.wmo.int/common/quantity-kind/dewPointTemperature> <http://codes.wmo.int/def/common/dimensions> <http://codes.wmo.int/common/dimension/Ɵ> .
In order to complete the adoption of QUDT semantics, we should update the units to include conversion multipliers and offsets from the base SI unit. See the QUDT unit vocabulary for more details.
Example: metres per second
<http://codes.wmo.int/common/unit/m_s-1>
a skos:Concept, qudt:Unit, <http://codes.wmo.int/def/common/Unit> ;
rdfs:label "metres per second" ;
<http://codes.wmo.int/def/common/code_figure> "731" ;
<http://codes.wmo.int/def/common/wmoAbbreviation> "m s^-1" ;
<http://codes.wmo.int/def/common/wmoAbbreviationIA2> "m/s" ;
<http://codes.wmo.int/def/common/wmoAbbreviationIA5> "M/S" ;
skos:altLabel "m s^-1" ;
skos:notation "m/s" ;
skos:prefLabel "metres per second" ;
qudt:abbreviation "m/s" ;
qudt:symbol "m s^-1" ;
qudt:conversionMultiplier 1.0 ;
qudt:converionOffset 0.0 .
Example: Celsius
<http://codes.wmo.int/common/unit/degC>
a skos:Concept, qudt:Unit, <http://codes.wmo.int/def/common/Unit> ;
rdfs:label "degrees Celsius (8)" ;
<http://codes.wmo.int/def/common/code_figure> "350" ;
<http://codes.wmo.int/def/common/wmoAbbreviation> "˚ C" ;
<http://codes.wmo.int/def/common/wmoAbbreviationIA2> "C" ;
<http://codes.wmo.int/def/common/wmoAbbreviationIA5> "C" ;
skos:altLabel "˚ C" ;
skos:notation "degC" ;
skos:prefLabel"degrees Celsius (8)" ;
qudt:abbreviation "degC" ;
qudt:symbol "degC" ;
qudt:conversionMultiplier 1.0 ;
qudt:converionOffset 273.15 .
(note the difference in approach between qudt:symbol
and qudt:abbreviation
and the addition of the qudt:Unit
type declaration)
I am not yet clear whether we should also include the qudt:quantityKind
property in the description of the unit to provide a relationship to the quantity kinds for which a given unit is applicable.
Now we can look at terms from BUFR Table B ...
Quantitative properties should be declared as type op:ScaledQuantityKind
, specifying the appropriate unit of measure with property qudt:unit
. Futhermore, the relationship with the appropriate term from /common/quantity-kind
can be specified with the property qudt:generalization
.
Example: BUFR B Class 12 Term 024 (dew-point temperature)
<http://codes.wmo.int/bufr4/b/12/024>
a skos:Concept, op:ScaledQuantityKind ;
rdfs:label "Dewpoint temperature"@en ;
<http://codes.wmo.int/def/bufr4/dataWidth_Bits> 8 ;
<http://codes.wmo.int/def/bufr4/fxy> "012024" ;
<http://codes.wmo.int/def/bufr4/referenceValue> -99 ;
<http://codes.wmo.int/def/bufr4/scale> 0 ;
<http://codes.wmo.int/def/common/unit> <http://codes.wmo.int/common/unit/degC> ;
skos:notation "024" ;
qudt:unit <http://codes.wmo.int/common/unit/degC> ;
qudt:generalization <http://codes.wmo.int/common/quantity-kind/dewPointTemperature> .
(note: http://codes.wmo.int/def/common/unit
could be declared as equivalent to qudt:unit
)
Qualitative properties (declaring nominal values) should be declared as type op:QualityKind
; using the property op:applicableVocabulary
to assert the controlled vocabulary that should be used.
Example: BUFR B Class 20 Term 061 (state of the sea)
<http://codes.wmo.int/bufr4/b/22/061>
a skos:Concept, op:QualityKind ;
rdfs:label "State of the sea"@en ;
<http://codes.wmo.int/def/bufr4/dataWidth_Bits> 4 ;
<http://codes.wmo.int/def/bufr4/fxy> "022061" ;
<http://codes.wmo.int/def/bufr4/referenceValue> 0 ;
<http://codes.wmo.int/def/bufr4/scale> 0 ;
dct:references <http://codes.wmo.int/bufr4/codeflag/0-22-061> ;
skos:notation "061" ;
op:applicableVocabulary <http://codes.wmo.int/bufr4/codeflag/0-22-061> .