Skip to content

How it works

Four schemas, each building on the one before, are enough to show every mechanism in this library. The notation itself is specified in the OO-LD specification; this page is about what the schemas here do with it. Read them in order and you will have seen how one document carries structure and meaning at once, how a second community reading is added without touching the data, and what a subschema costs.

The widgets below are the same ones the modules pages use, rendered from the schemas themselves. Nothing here is retyped, so nothing here can go stale.

QuantityValue

QuantityValue is a number, a unit, and optionally the uncertainty of the number. Everything else in the library reuses it, so it is worth reading closely: if this one is awkward, the awkwardness spreads everywhere.

TermConstraintsConsensus mappingAlternative mappings
typearray, default ["QuantityValue"]@type-
"QuantityValue"type aliasqudt:Quantity value
value *numberqudt:value
unitstring, format iri-referencequdt:has unit
standard_uncertainty
Standard uncertainty, expressed in the unit of value (GUM convention)
numberqudt:standard uncertainty
relative_standard_uncertainty
Dimensionless ratio, not percent; ratio-scale quantities only, undefined at value 0; redundant with standard_uncertainty (u = r * |v|), give only one
numberqudt:relative standard uncertainty-

* marks a required property.

{
  "$schema": "https://oo-ld.org/latest/meta/oold-meta-schema.json",
  "$id": "QuantityValue.schema.json",
  "x-oold-uuid": "0d241e1a-9bf9-5441-81ff-5313948143c0",
  "x-oold-version": "0.1.0",
  "title": "QuantityValue",
  "examples": [
    {
      "type": [
        "QuantityValue"
      ],
      "value": 12.7,
      "unit": "http://qudt.org/vocab/unit/SEC",
      "standard_uncertainty": 0.05
    }
  ],
  "type": "object",
  "properties": {
    "type": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [
        "QuantityValue"
      ]
    },
    "value": {
      "type": "number"
    },
    "unit": {
      "type": "string",
      "format": "iri-reference"
    },
    "standard_uncertainty": {
      "type": "number",
      "description": "Standard uncertainty, expressed in the unit of value (GUM convention)"
    },
    "relative_standard_uncertainty": {
      "type": "number",
      "description": "Dimensionless ratio, not percent; ratio-scale quantities only, undefined at value 0; redundant with standard_uncertainty (u = r * |v|), give only one"
    }
  },
  "required": [
    "value"
  ],
  "@context": {
    "@version": 1.1,
    "qudt": "http://qudt.org/schema/qudt/",
    "qunit": "http://qudt.org/vocab/unit/",
    "schema": "http://schema.org/",
    "obo": "http://purl.obolibrary.org/obo/",
    "emmo": "https://w3id.org/emmo#",
    "type": {
      "@id": "@type",
      "@container": "@set"
    },
    "QuantityValue": "qudt:QuantityValue",
    "value": "qudt:value",
    "unit": {
      "@id": "qudt:hasUnit",
      "@type": "@vocab"
    },
    "standard_uncertainty": "qudt:standardUncertainty",
    "relative_standard_uncertainty": "qudt:relativeStandardUncertainty"
  },
  "x-oold-context": {
    "value": {
      "schema:value": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/schemaorg.sssom.tsv"
        }
      },
      "obo:OBI_0001937": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv"
        }
      }
    },
    "unit": {
      "schema:unitCode": {
        "@type": "@vocab",
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/schemaorg.sssom.tsv",
          "comment": "URL branch of schema:unitCode, carrying the QUDT unit IRI"
        }
      },
      "obo:IAO_0000039": {
        "@type": "@vocab",
        "x-oold-sssom": {
          "predicate_id": "skos:closeMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "range is iao:measurement unit label; unit-label vs QUDT-IRI mapping needed"
        }
      },
      "emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588": {
        "@type": "@vocab",
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source": "https://w3id.org/emmo",
          "object_source_version": "https://w3id.org/emmo/1.0.4",
          "comment": "hasReferencePart; pinned 1.0.4 branch snapshot (units are individuals there)"
        }
      }
    },
    "standard_uncertainty": {
      "emmo:EMMO_bba7f0f0_3707_42b9_b3fa_fd04610ef147": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4",
          "comment": "standardUncertainty (VIM4 3.6); 1.0.4 branch only"
        }
      }
    },
    "QuantityValue": {
      "schema:QuantitativeValue": {
        "x-oold-sssom": {
          "predicate_id": "skos:closeMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/schemaorg.sssom.tsv",
          "comment": "broader: also covers intervals/ranges"
        }
      },
      "obo:OBI_0001931": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv"
        }
      },
      "emmo:EMMO_f658c301_ce93_46cf_9639_4eace2c5d1d5": {
        "x-oold-sssom": {
          "predicate_id": "skos:closeMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "comment": "EMMO QuantityValue requires a nested numerical part (EMMO#376)"
        }
      }
    }
  }
}
$schema: https://oo-ld.org/latest/meta/oold-meta-schema.json
$id: QuantityValue.schema.json
x-oold-uuid: 0d241e1a-9bf9-5441-81ff-5313948143c0
x-oold-version: 0.1.0
title: QuantityValue
examples:
- type:
  - QuantityValue
  value: 12.7
  unit: http://qudt.org/vocab/unit/SEC
  standard_uncertainty: 0.05
type: object
properties:
  type:
    type: array
    items:
      type: string
    default:
    - QuantityValue
  value:
    type: number
  unit:
    type: string
    format: iri-reference
  standard_uncertainty:
    type: number
    description: Standard uncertainty, expressed in the unit of value (GUM convention)
  relative_standard_uncertainty:
    type: number
    description: Dimensionless ratio, not percent; ratio-scale quantities only, undefined at value 0;
      redundant with standard_uncertainty (u = r * |v|), give only one
required:
- value
'@context':
  '@version': 1.1
  qudt: http://qudt.org/schema/qudt/
  qunit: http://qudt.org/vocab/unit/
  schema: http://schema.org/
  obo: http://purl.obolibrary.org/obo/
  emmo: https://w3id.org/emmo#
  type:
    '@id': '@type'
    '@container': '@set'
  QuantityValue: qudt:QuantityValue
  value: qudt:value
  unit:
    '@id': qudt:hasUnit
    '@type': '@vocab'
  standard_uncertainty: qudt:standardUncertainty
  relative_standard_uncertainty: qudt:relativeStandardUncertainty
x-oold-context:
  value:
    schema:value:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/schemaorg.sssom.tsv
    obo:OBI_0001937:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
  unit:
    schema:unitCode:
      '@type': '@vocab'
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/schemaorg.sssom.tsv
        comment: URL branch of schema:unitCode, carrying the QUDT unit IRI
    obo:IAO_0000039:
      '@type': '@vocab'
      x-oold-sssom:
        predicate_id: skos:closeMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: range is iao:measurement unit label; unit-label vs QUDT-IRI mapping needed
    emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588:
      '@type': '@vocab'
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source: https://w3id.org/emmo
        object_source_version: https://w3id.org/emmo/1.0.4
        comment: hasReferencePart; pinned 1.0.4 branch snapshot (units are individuals there)
  standard_uncertainty:
    emmo:EMMO_bba7f0f0_3707_42b9_b3fa_fd04610ef147:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
        comment: standardUncertainty (VIM4 3.6); 1.0.4 branch only
  QuantityValue:
    schema:QuantitativeValue:
      x-oold-sssom:
        predicate_id: skos:closeMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/schemaorg.sssom.tsv
        comment: 'broader: also covers intervals/ranges'
    obo:OBI_0001931:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
    emmo:EMMO_f658c301_ce93_46cf_9639_4eace2c5d1d5:
      x-oold-sssom:
        predicate_id: skos:closeMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        comment: EMMO QuantityValue requires a nested numerical part (EMMO#376)
{
  "$schema": "https://w3id.org/oo-ld/schemas/quantities/0.2/QuantityValue.schema.json",
  "@context": "https://w3id.org/oo-ld/schemas/quantities/0.2/QuantityValue.schema.json",
  "@id": "https://example.org/instance",
  "type": [
    "QuantityValue"
  ],
  "value": 12.7,
  "unit": "http://qudt.org/vocab/unit/SEC",
  "standard_uncertainty": 0.05
}

PREFIX ns1: <https://example.org/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a qudt:QuantityValue ;
    qudt:hasUnit qunit:SEC ;
    qudt:standardUncertainty 5e-02 ;
    qudt:value 1.27e+01 ;
.
PREFIX emmo: <https://w3id.org/emmo#>
PREFIX ns1: <https://example.org/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a emmo:EMMO_f658c301_ce93_46cf_9639_4eace2c5d1d5 ;
    qudt:value 1.27e+01 ;
    emmo:EMMO_bba7f0f0_3707_42b9_b3fa_fd04610ef147 5e-02 ;
    emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588 qunit:SEC ;
.
PREFIX ns1: <https://example.org/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a obo:OBI_0001931 ;
    obo:IAO_0000039 qunit:SEC ;
    obo:OBI_0001937 1.27e+01 ;
    qudt:standardUncertainty 5e-02 ;
.
PREFIX ns1: <https://example.org/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX schema1: <http://schema.org/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a schema1:QuantitativeValue ;
    qudt:standardUncertainty 5e-02 ;
    schema1:unitCode qunit:SEC ;
    schema1:value 1.27e+01 ;
.

Five tabs, one source. Terms is the schema read as a vocabulary: every term, what constrains it, what it means in the consensus reading, and what each community calls it instead. JSON and YAML are the schema itself. Instance is a document that validates against it. RDF is that same document expanded to triples, with a selector for the mapping set, which is the whole point of the exercise: one file, several readings.

Look at the unit row in the Terms tab. The property maps to qudt:hasUnit, and underneath it sit the permitted values, each mapping to a unit individual of its own. That two-level structure is what lets a community rename both the property and the units it points at.

Notes for implementers

Examples sit at the schema root, not on individual properties. A root-level examples entry is a whole example instance, which is what the keyword is for, and it is what the documentation and the generated instance tab use. It also avoids oold-schema#134: the validator's depth guard truncates anything below six levels, so a per-property examples becomes {} once a schema is three inheritance levels deep, and a valid schema is reported as invalid.

type declares @container: @set. A strictly array-typed property without it comes back from RDF as a scalar when it holds a single element, and then fails its own schema.

Time: constraining the units

Time restricts QuantityValue to time units. It is the pattern every quantity kind follows.

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.

TermConstraintsConsensus mappingAlternative mappings
typearray, default ["QuantityValue"]@type-
"QuantityValue"type aliasqudt:Quantity value
value *numberqudt:value
unitstring, format iri-referencequdt:has unit
standard_uncertainty
Standard uncertainty, expressed in the unit of value (GUM convention)
numberqudt:standard uncertainty
relative_standard_uncertainty
Dimensionless ratio, not percent; ratio-scale quantities only, undefined at value 0; redundant with standard_uncertainty (u = r * |v|), give only one
numberqudt:relative standard uncertainty-
Time
typedefault ["Time"]@type-
"Time"type aliasqkind:Time
  • emmo: emmo:Time
    Time (ISO 80000 item 3-7); Duration (EMMO_0adabf6f) is its subclass
unitenum, default "second"qudt:has unit-
"second"value aliasqunit:Second
"milli_second"value aliasqunit:Millisecond
"hour"value aliasqunit:Hour

* marks a required property.

{
  "$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": "0.2.0",
  "title": "Time",
  "examples": [
    {
      "type": [
        "Time"
      ],
      "value": 12.7,
      "unit": "second",
      "standard_uncertainty": 0.05
    }
  ],
  "allOf": [
    {
      "$ref": "QuantityValue.schema.json"
    }
  ],
  "@context": [
    "QuantityValue.schema.json",
    {
      "qkind": "http://qudt.org/vocab/quantitykind/",
      "Time": "qkind:Time",
      "second": "qunit:SEC",
      "milli_second": "qunit:MilliSEC",
      "hour": "qunit:HR"
    }
  ],
  "properties": {
    "type": {
      "default": [
        "Time"
      ]
    },
    "unit": {
      "enum": [
        "second",
        "milli_second",
        "hour"
      ],
      "default": "second"
    }
  },
  "x-oold-context": {
    "Time": {
      "emmo:EMMO_d4f7d378_5e3b_468a_baa1_a7e98358cda7": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4",
          "comment": "Time (ISO 80000 item 3-7); Duration (EMMO_0adabf6f) is its subclass"
        }
      }
    },
    "second": {
      "emmo:Second": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv"
        }
      },
      "obo:UO_0000010": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "UO second; UO units are classes, punning like EMMO#377"
        }
      }
    },
    "milli_second": {
      "emmo:MilliSecond": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv"
        }
      },
      "obo:UO_0000028": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "UO millisecond"
        }
      }
    },
    "hour": {
      "emmo:Hour": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv"
        }
      },
      "obo:UO_0000032": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "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: 0.2.0
title: Time
examples:
- type:
  - Time
  value: 12.7
  unit: second
  standard_uncertainty: 0.05
allOf:
- $ref: QuantityValue.schema.json
'@context':
- QuantityValue.schema.json
- qkind: http://qudt.org/vocab/quantitykind/
  Time: qkind:Time
  second: qunit:SEC
  milli_second: qunit:MilliSEC
  hour: qunit:HR
properties:
  type:
    default:
    - Time
  unit:
    enum:
    - second
    - milli_second
    - hour
    default: second
x-oold-context:
  Time:
    emmo:EMMO_d4f7d378_5e3b_468a_baa1_a7e98358cda7:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
        comment: Time (ISO 80000 item 3-7); Duration (EMMO_0adabf6f) is its subclass
  second:
    emmo:Second:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
    obo:UO_0000010:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO second; UO units are classes, punning like EMMO#377
  milli_second:
    emmo:MilliSecond:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
    obo:UO_0000028:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO millisecond
  hour:
    emmo:Hour:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
    obo:UO_0000032:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO hour
{
  "$schema": "https://w3id.org/oo-ld/schemas/quantities/0.2/Time.schema.json",
  "@context": "https://w3id.org/oo-ld/schemas/quantities/0.2/Time.schema.json",
  "@id": "https://example.org/m1-duration",
  "type": [
    "Time"
  ],
  "value": 12.7,
  "unit": "second",
  "standard_uncertainty": 0.05
}

PREFIX ns1: <https://example.org/>
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#>

ns1: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 ns1: <https://example.org/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1: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 ns1: <https://example.org/>
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#>

ns1:m1-duration
    a qkind:Time ;
    obo:IAO_0000039 obo:UO_0000010 ;
    obo:OBI_0001937 1.27e+01 ;
    qudt:standardUncertainty 5e-02 ;
.
PREFIX ns1: <https://example.org/>
PREFIX qkind: <http://qudt.org/vocab/quantitykind/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX schema1: <http://schema.org/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:m1-duration
    a qkind:Time ;
    qudt:standardUncertainty 5e-02 ;
    schema1:unitCode qunit:SEC ;
    schema1:value 1.27e+01 ;
.

The subclass adds four things and inherits everything else:

  1. A more specific class term. Time maps to the QUDT quantity kind qkind:Time, with EMMO's ISQ Time class 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.
  2. Unit individuals as context terms. SEC, MilliSEC and HR are declared in the @context, which is what makes them aliasable at all.
  3. An enum and a default. The enum pins the valid units, which also guards the @vocab coercion inherited from QuantityValue: without it, a typo would be silently minted into an IRI under the vocabulary base. The default is the SI unit.
  4. 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.

In the Terms tab this is visible as two sections: everything inherited from QuantityValue, then what Time overrides. The class row sits under type, because that is what it is, the default value of type resolved through a type alias, not a field of its own.

Reading the three graphs

Switch the mapping set in the RDF tab. Those 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 every reading for a lossless round-trip, so a mapping that drops or mangles a term fails the build rather than shipping quietly.

Length: the same pattern again

Length repeats the pattern for another quantity kind, which is the point: the second one costs nothing new to design.

TermConstraintsConsensus mappingAlternative mappings
typearray, default ["QuantityValue"]@type-
"QuantityValue"type aliasqudt:Quantity value
value *numberqudt:value
unitstring, format iri-referencequdt:has unit
standard_uncertainty
Standard uncertainty, expressed in the unit of value (GUM convention)
numberqudt:standard uncertainty
relative_standard_uncertainty
Dimensionless ratio, not percent; ratio-scale quantities only, undefined at value 0; redundant with standard_uncertainty (u = r * |v|), give only one
numberqudt:relative standard uncertainty-
Length
typedefault ["Length"]@type-
"Length"
QuantityValue restricted to length units.
type aliasqkind:Length
unitenum, default "metre"qudt:has unit-
"kilo_metre"value aliasqunit:Kilometre
"metre"value aliasqunit:Metre
"milli_metre"value aliasqunit:Millimetre
"micro_metre"value aliasqunit:Micrometre

* marks a required property.

{
  "$schema": "https://oo-ld.org/latest/meta/oold-meta-schema.json",
  "$id": "Length.schema.json",
  "x-oold-uuid": "7c1d5a80-b42f-5dd5-ace8-3ae6841f3faf",
  "x-oold-version": "0.2.0",
  "title": "Length",
  "description": "QuantityValue restricted to length units.",
  "examples": [
    {
      "type": [
        "Length"
      ],
      "value": 0.0254,
      "unit": "metre"
    }
  ],
  "allOf": [
    {
      "$ref": "QuantityValue.schema.json"
    }
  ],
  "@context": [
    "QuantityValue.schema.json",
    {
      "qkind": "http://qudt.org/vocab/quantitykind/",
      "Length": "qkind:Length",
      "kilo_metre": "qunit:KiloM",
      "metre": "qunit:M",
      "milli_metre": "qunit:MilliM",
      "micro_metre": "qunit:MicroM"
    }
  ],
  "properties": {
    "type": {
      "default": [
        "Length"
      ]
    },
    "unit": {
      "enum": [
        "kilo_metre",
        "metre",
        "milli_metre",
        "micro_metre"
      ],
      "default": "metre"
    }
  },
  "x-oold-context": {
    "Length": {
      "emmo:EMMO_cd2cd0de_e0cc_4ef1_b27e_2e88db027bac": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4",
          "comment": "EMMO Length, ISO 80000 item 3-1.1"
        }
      },
      "obo:PATO_0000122": {
        "x-oold-sssom": {
          "predicate_id": "skos:closeMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "PATO length is a quality inhering in a bearer, not a value with a unit"
        }
      }
    },
    "kilo_metre": {
      "emmo:KiloMetre": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4"
        }
      },
      "obo:UO_0010066": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "UO kilometer; UO units are classes, punning as in EMMO#377"
        }
      }
    },
    "metre": {
      "emmo:Metre": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4"
        }
      },
      "obo:UO_0000008": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "UO meter; UO units are classes, punning as in EMMO#377"
        }
      }
    },
    "milli_metre": {
      "emmo:MilliMetre": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4"
        }
      },
      "obo:UO_0000016": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "UO millimeter; UO units are classes, punning as in EMMO#377"
        }
      }
    },
    "micro_metre": {
      "emmo:MicroMetre": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4"
        }
      },
      "obo:UO_0000017": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "UO micrometer; UO units are classes, punning as in EMMO#377"
        }
      }
    }
  }
}
$schema: https://oo-ld.org/latest/meta/oold-meta-schema.json
$id: Length.schema.json
x-oold-uuid: 7c1d5a80-b42f-5dd5-ace8-3ae6841f3faf
x-oold-version: 0.2.0
title: Length
description: QuantityValue restricted to length units.
examples:
- type:
  - Length
  value: 0.0254
  unit: metre
allOf:
- $ref: QuantityValue.schema.json
'@context':
- QuantityValue.schema.json
- qkind: http://qudt.org/vocab/quantitykind/
  Length: qkind:Length
  kilo_metre: qunit:KiloM
  metre: qunit:M
  milli_metre: qunit:MilliM
  micro_metre: qunit:MicroM
properties:
  type:
    default:
    - Length
  unit:
    enum:
    - kilo_metre
    - metre
    - milli_metre
    - micro_metre
    default: metre
x-oold-context:
  Length:
    emmo:EMMO_cd2cd0de_e0cc_4ef1_b27e_2e88db027bac:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
        comment: EMMO Length, ISO 80000 item 3-1.1
    obo:PATO_0000122:
      x-oold-sssom:
        predicate_id: skos:closeMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: PATO length is a quality inhering in a bearer, not a value with a unit
  kilo_metre:
    emmo:KiloMetre:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
    obo:UO_0010066:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO kilometer; UO units are classes, punning as in EMMO#377
  metre:
    emmo:Metre:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
    obo:UO_0000008:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO meter; UO units are classes, punning as in EMMO#377
  milli_metre:
    emmo:MilliMetre:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
    obo:UO_0000016:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO millimeter; UO units are classes, punning as in EMMO#377
  micro_metre:
    emmo:MicroMetre:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
    obo:UO_0000017:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: UO micrometer; UO units are classes, punning as in EMMO#377
{
  "$schema": "https://w3id.org/oo-ld/schemas/quantities/0.2/Length.schema.json",
  "@context": "https://w3id.org/oo-ld/schemas/quantities/0.2/Length.schema.json",
  "@id": "https://example.org/instance",
  "type": [
    "Length"
  ],
  "value": 0.0254,
  "unit": "metre"
}

PREFIX ns1: <https://example.org/>
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#>

ns1:instance
    a qkind:Length ;
    qudt:hasUnit qunit:M ;
    qudt:value 2.54e-02 ;
.
PREFIX emmo: <https://w3id.org/emmo#>
PREFIX ns1: <https://example.org/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a emmo:EMMO_cd2cd0de_e0cc_4ef1_b27e_2e88db027bac ;
    qudt:value 2.54e-02 ;
    emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588 emmo:Metre ;
.
PREFIX ns1: <https://example.org/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a obo:PATO_0000122 ;
    obo:IAO_0000039 obo:UO_0000008 ;
    obo:OBI_0001937 2.54e-02 ;
.
PREFIX ns1: <https://example.org/>
PREFIX qkind: <http://qudt.org/vocab/quantitykind/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX schema1: <http://schema.org/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a qkind:Length ;
    schema1:unitCode qunit:M ;
    schema1:value 2.54e-02 ;
.

It adds a class term mapping to qkind:Length, a unit enum that pins the valid length units and guards the inherited @vocab coercion, the SI unit as default so an instance may omit unit entirely, and a value term per unit so each one is aliasable per community. With four permitted units the Terms tab collapses them behind a toggle rather than pushing the properties out of view.

Diameter: three levels deep

TermConstraintsConsensus mappingAlternative mappings
typearray, default ["QuantityValue"]@type-
"QuantityValue"type aliasqudt:Quantity value
value *numberqudt:value
unitstring, format iri-referencequdt:has unit
standard_uncertainty
Standard uncertainty, expressed in the unit of value (GUM convention)
numberqudt:standard uncertainty
relative_standard_uncertainty
Dimensionless ratio, not percent; ratio-scale quantities only, undefined at value 0; redundant with standard_uncertainty (u = r * |v|), give only one
numberqudt:relative standard uncertainty-
typedefault ["Length"]@type-
"Length"
QuantityValue restricted to length units.
type aliasqkind:Length
unitenum, default "metre"qudt:has unit-
"kilo_metre"value aliasqunit:Kilometre
"metre"value aliasqunit:Metre
"milli_metre"value aliasqunit:Millimetre
"micro_metre"value aliasqunit:Micrometre
Diameter
typedefault ["Diameter"]@type-
"Diameter"
Length taken across a round object through its centre.
type aliasqkind:Diameter

* marks a required property.

{
  "$schema": "https://oo-ld.org/latest/meta/oold-meta-schema.json",
  "$id": "Diameter.schema.json",
  "x-oold-uuid": "805bf901-6ac5-5933-bcb2-f133b0b1b9bf",
  "x-oold-version": "0.1.1",
  "title": "Diameter",
  "description": "Length taken across a round object through its centre.",
  "examples": [
    {
      "type": [
        "Diameter"
      ],
      "value": 20.1,
      "unit": "milli_metre"
    }
  ],
  "allOf": [
    {
      "$ref": "Length.schema.json"
    }
  ],
  "@context": [
    "Length.schema.json",
    {
      "Diameter": "qkind:Diameter"
    }
  ],
  "properties": {
    "type": {
      "default": [
        "Diameter"
      ]
    }
  },
  "x-oold-context": {
    "Diameter": {
      "emmo:EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6": {
        "x-oold-sssom": {
          "predicate_id": "skos:exactMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv",
          "object_source_version": "https://w3id.org/emmo/1.0.4",
          "comment": "EMMO Diameter, ISO 80000 item 3-1.5"
        }
      },
      "obo:PATO_0001334": {
        "x-oold-sssom": {
          "predicate_id": "skos:closeMatch",
          "mapping_set_id": "https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv",
          "comment": "PATO diameter is a length quality of a bearer, not a value with a unit"
        }
      }
    }
  }
}
$schema: https://oo-ld.org/latest/meta/oold-meta-schema.json
$id: Diameter.schema.json
x-oold-uuid: 805bf901-6ac5-5933-bcb2-f133b0b1b9bf
x-oold-version: 0.1.1
title: Diameter
description: Length taken across a round object through its centre.
examples:
- type:
  - Diameter
  value: 20.1
  unit: milli_metre
allOf:
- $ref: Length.schema.json
'@context':
- Length.schema.json
- Diameter: qkind:Diameter
properties:
  type:
    default:
    - Diameter
x-oold-context:
  Diameter:
    emmo:EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6:
      x-oold-sssom:
        predicate_id: skos:exactMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/emmo.sssom.tsv
        object_source_version: https://w3id.org/emmo/1.0.4
        comment: EMMO Diameter, ISO 80000 item 3-1.5
    obo:PATO_0001334:
      x-oold-sssom:
        predicate_id: skos:closeMatch
        mapping_set_id: https://w3id.org/oo-ld/schemas/mappings/pmdco.sssom.tsv
        comment: PATO diameter is a length quality of a bearer, not a value with a unit
{
  "$schema": "https://w3id.org/oo-ld/schemas/quantities/0.2/Diameter.schema.json",
  "@context": "https://w3id.org/oo-ld/schemas/quantities/0.2/Diameter.schema.json",
  "@id": "https://example.org/instance",
  "type": [
    "Diameter"
  ],
  "value": 20.1,
  "unit": "milli_metre"
}

PREFIX ns1: <https://example.org/>
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#>

ns1:instance
    a qkind:Diameter ;
    qudt:hasUnit qunit:MilliM ;
    qudt:value 2.01e+01 ;
.
PREFIX emmo: <https://w3id.org/emmo#>
PREFIX ns1: <https://example.org/>
PREFIX qudt: <http://qudt.org/schema/qudt/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a emmo:EMMO_c1c8ac3c_8a1c_4777_8e0b_14c1f9f9b0c6 ;
    qudt:value 2.01e+01 ;
    emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588 emmo:MilliMetre ;
.
PREFIX ns1: <https://example.org/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a obo:PATO_0001334 ;
    obo:IAO_0000039 obo:UO_0000016 ;
    obo:OBI_0001937 2.01e+01 ;
.
PREFIX ns1: <https://example.org/>
PREFIX qkind: <http://qudt.org/vocab/quantitykind/>
PREFIX qunit: <http://qudt.org/vocab/unit/>
PREFIX schema1: <http://schema.org/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

ns1:instance
    a qkind:Diameter ;
    schema1:unitCode qunit:MilliM ;
    schema1:value 2.01e+01 ;
.

Note how little it declares. The units, their aliases, the value and uncertainty terms and every mapping on them come from Length and QuantityValue; Diameter only narrows the class term and the example. That is the point of the chain: a new quantity costs a handful of lines, and it inherits a validated mapping set rather than restating one.

Where to go next

References