Time¶
A duration, as a QuantityValue restricted to time units. It shows the per-quantity subclass
pattern: constrain the units, default to the SI one, and give each unit individual its community
aliases.
- module:
quantities - conformance IRI:
https://w3id.org/oo-ld/schemas/quantities/1.0 - published at
quantities/1.0/Time.schema.json
Not the same as the time module
This is the quantity kind Time: a duration with a unit. The time module is about
process time, that is temporal regions, process start and end, and temporalized qualities.
Upstream ontologies use the same word for both, so mapping one onto the other is a mistake
that is easy to make and hard to notice.
The schema¶
The tabs show the schema itself, the same content as YAML, an instance of it, and that instance expanded to RDF under each mapping set.
{
"$schema": "https://oo-ld.org/latest/meta/oold-meta-schema.json",
"$id": "Time.schema.json",
"x-oold-uuid": "d06f35fd-0b42-54db-a2e6-1c329204346d",
"x-oold-version": "1.0.0",
"title": "Time",
"allOf": [
{
"$ref": "QuantityValue.schema.json"
}
],
"@context": [
"QuantityValue.schema.json",
{
"qkind": "http://qudt.org/vocab/quantitykind/",
"Time": "qkind:Time",
"SEC": "qunit:SEC",
"MilliSEC": "qunit:MilliSEC",
"HR": "qunit:HR"
}
],
"properties": {
"type": {
"default": [
"Time"
]
},
"unit": {
"enum": [
"SEC",
"MilliSEC",
"HR"
],
"default": "SEC",
"x-enum-varnames": [
"second",
"milli_second",
"hour"
]
}
},
"x-oold-context": {
"Time": {
"emmo:EMMO_d4f7d378_5e3b_468a_baa1_a7e98358cda7": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/emmo",
"object_source_version": "https://w3id.org/emmo/1.0.4",
"comment": "Time (ISO 80000 item 3-7); Duration (EMMO_0adabf6f) is its subclass"
}
}
},
"SEC": {
"emmo:Second": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/emmo"
}
},
"obo:UO_0000010": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/pmdco",
"comment": "UO second; UO units are classes, punning like EMMO#377"
}
}
},
"MilliSEC": {
"emmo:MilliSecond": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/emmo"
}
},
"obo:UO_0000028": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/pmdco",
"comment": "UO millisecond"
}
}
},
"HR": {
"emmo:Hour": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/emmo"
}
},
"obo:UO_0000032": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/pmdco",
"comment": "UO hour"
}
}
}
}
}
$schema: https://oo-ld.org/latest/meta/oold-meta-schema.json
$id: Time.schema.json
x-oold-uuid: d06f35fd-0b42-54db-a2e6-1c329204346d
x-oold-version: 1.0.0
title: Time
allOf:
- $ref: QuantityValue.schema.json
'@context':
- QuantityValue.schema.json
- qkind: http://qudt.org/vocab/quantitykind/
Time: qkind:Time
SEC: qunit:SEC
MilliSEC: qunit:MilliSEC
HR: qunit:HR
properties:
type:
default:
- Time
unit:
enum:
- SEC
- MilliSEC
- HR
default: SEC
x-enum-varnames:
- second
- milli_second
- hour
x-oold-context:
Time:
emmo:EMMO_d4f7d378_5e3b_468a_baa1_a7e98358cda7:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/emmo
object_source_version: https://w3id.org/emmo/1.0.4
comment: Time (ISO 80000 item 3-7); Duration (EMMO_0adabf6f) is its subclass
SEC:
emmo:Second:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/emmo
obo:UO_0000010:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/pmdco
comment: UO second; UO units are classes, punning like EMMO#377
MilliSEC:
emmo:MilliSecond:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/emmo
obo:UO_0000028:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/pmdco
comment: UO millisecond
HR:
emmo:Hour:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/emmo
obo:UO_0000032:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/pmdco
comment: UO hour
@prefix qkind: <http://qudt.org/vocab/quantitykind/> .
@prefix qudt: <http://qudt.org/schema/qudt/> .
@prefix qunit: <http://qudt.org/vocab/unit/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/m1-duration> a qkind:Time ;
qudt:hasUnit qunit:SEC ;
qudt:standardUncertainty 5e-02 ;
qudt:value 1.27e+01 .
@prefix emmo: <https://w3id.org/emmo#> .
@prefix qudt: <http://qudt.org/schema/qudt/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/m1-duration> a emmo:EMMO_d4f7d378_5e3b_468a_baa1_a7e98358cda7 ;
qudt:value 1.27e+01 ;
emmo:EMMO_bba7f0f0_3707_42b9_b3fa_fd04610ef147 5e-02 ;
emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588 emmo:Second .
@prefix obo: <http://purl.obolibrary.org/obo/> .
@prefix qkind: <http://qudt.org/vocab/quantitykind/> .
@prefix qudt: <http://qudt.org/schema/qudt/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<https://example.org/m1-duration> a qkind:Time ;
obo:IAO_0000039 obo:UO_0000010 ;
obo:OBI_0001937 1.27e+01 ;
qudt:standardUncertainty 5e-02 .
The subclass adds four things and inherits everything else:
- A more specific class term.
Timemaps to the QUDT quantity kindqkind:Time, with EMMO's ISQTimeclass as a synonym. QUDT models quantity kinds as individuals, so typing an instance with one is punning, the same question EMMO faces for units. It is harmless for data exchange and left to the ontologies to settle. - Unit individuals as context terms.
SEC,MilliSECandHRare declared in the@context, which is what makes them aliasable at all. - An enum and a default. The enum pins the valid units, which also guards the
@vocabcoercion inherited fromQuantityValue: without it, a typo would be silently minted into an IRI under the vocabulary base. The default is the SI unit. - Value-level aliases. Each unit term carries its EMMO and UO counterparts, so a community reading resolves the unit itself, not just the property pointing at it.
Reading the three graphs¶
The RDF tabs above are three readings of one unchanged instance file.
The consensus reading types the node with the QUDT quantity kind and uses qudt:value and
qudt:hasUnit. The emmo reading swaps in EMMO's ISQ Time class, hasReferencePart, the
EMMO standardUncertainty data property, and, at value level, emmo:Second for the unit
itself. The pmdco reading uses obo:OBI_0001937 for the value and obo:IAO_0000039 with the
UO second.
The fallbacks are the honest part. EMMO has no term that a flat value can map to, so that
triple stays qudt:value; PMDco has no quantity-kind class for the type and no uncertainty
property, so those stay on the consensus mapping. A partial alignment remains usable, and it is
visible exactly where a community has nothing to offer.
CI checks all three readings for a lossless round-trip, so a mapping that drops or mangles a term fails the build rather than shipping quietly.
Where the unit aliases come from¶
The EMMO 1.0.4 branch publishes around 1600 unit individuals, each carrying a qudtReference
annotation. The alias table is therefore generated rather than hand-typed, and the same source
gives the UCUM and UN/CEFACT codes when they are needed.