QuantityValue¶
A number with a unit, optionally with its standard uncertainty. It is the building block reused by every typed field in the other modules, so it is worth getting exactly right: if this one is awkward, the awkwardness spreads everywhere.
- module:
quantities - conformance IRI:
https://w3id.org/oo-ld/schemas/quantities/1.0 - published at
quantities/1.0/QuantityValue.schema.json
The schema¶
{
"$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": "1.0.0",
"title": "QuantityValue",
"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-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/schemaorg"
}
},
"obo:OBI_0001937": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/pmdco"
}
}
},
"unit": {
"schema:unitCode": {
"@type": "@vocab",
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/schemaorg",
"comment": "URL branch of schema:unitCode, carrying the QUDT unit IRI"
}
},
"obo:IAO_0000039": {
"@type": "@vocab",
"x-sssom": {
"predicate_id": "skos:closeMatch",
"mapping_set_id": "https://example.org/mappings/pmdco",
"comment": "range is iao:measurement unit label; unit-label vs QUDT-IRI mapping needed"
}
},
"emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588": {
"@type": "@vocab",
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/emmo",
"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-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/emmo",
"object_source_version": "https://w3id.org/emmo/1.0.4",
"comment": "standardUncertainty (VIM4 3.6); 1.0.4 branch only"
}
}
},
"QuantityValue": {
"schema:QuantitativeValue": {
"x-sssom": {
"predicate_id": "skos:closeMatch",
"mapping_set_id": "https://example.org/mappings/schemaorg",
"comment": "broader: also covers intervals/ranges"
}
},
"obo:OBI_0001931": {
"x-sssom": {
"predicate_id": "skos:exactMatch",
"mapping_set_id": "https://example.org/mappings/pmdco"
}
},
"emmo:EMMO_f658c301_ce93_46cf_9639_4eace2c5d1d5": {
"x-sssom": {
"predicate_id": "skos:closeMatch",
"mapping_set_id": "https://example.org/mappings/emmo",
"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: 1.0.0
title: QuantityValue
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-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/schemaorg
obo:OBI_0001937:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/pmdco
unit:
schema:unitCode:
'@type': '@vocab'
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/schemaorg
comment: URL branch of schema:unitCode, carrying the QUDT unit IRI
obo:IAO_0000039:
'@type': '@vocab'
x-sssom:
predicate_id: skos:closeMatch
mapping_set_id: https://example.org/mappings/pmdco
comment: range is iao:measurement unit label; unit-label vs QUDT-IRI mapping needed
emmo:EMMO_eeb06032_dd4f_476e_9da6_aa24302b7588:
'@type': '@vocab'
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/emmo
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-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/emmo
object_source_version: https://w3id.org/emmo/1.0.4
comment: standardUncertainty (VIM4 3.6); 1.0.4 branch only
QuantityValue:
schema:QuantitativeValue:
x-sssom:
predicate_id: skos:closeMatch
mapping_set_id: https://example.org/mappings/schemaorg
comment: 'broader: also covers intervals/ranges'
obo:OBI_0001931:
x-sssom:
predicate_id: skos:exactMatch
mapping_set_id: https://example.org/mappings/pmdco
emmo:EMMO_f658c301_ce93_46cf_9639_4eace2c5d1d5:
x-sssom:
predicate_id: skos:closeMatch
mapping_set_id: https://example.org/mappings/emmo
comment: EMMO QuantityValue requires a nested numerical part (EMMO#376)
How each term reads¶
| term | consensus (@context) |
other readings (x-oold-context) |
|---|---|---|
type |
the class term, aliased to @type |
schema:QuantitativeValue, obo:OBI_0001931, EMMO QuantityValue |
value |
qudt:value |
schema:value, obo:OBI_0001937 |
unit |
qudt:hasUnit |
schema:unitCode, obo:IAO_0000039, EMMO hasReferencePart |
standard_uncertainty |
qudt:standardUncertainty |
EMMO standardUncertainty |
relative_standard_uncertainty |
qudt:relativeStandardUncertainty |
- |
Class alternatives sit on the inline type term rather than in x-oold-instance-rdf-type,
because that keyword materializes all declared types on every export. That is right for
consensus co-typing and wrong for either/or community alignments, where the point is to pick
one.
Decisions worth knowing¶
Uncertainty is flat, and deliberately incomplete. Only two forms are here:
standard_uncertainty, in the unit of the value following the GUM convention, and
relative_standard_uncertainty, a dimensionless ratio and not a percentage. These are the only
two that released vocabularies actually map. Expanded uncertainty, coverage factor and coverage
intervals have no flat target in QUDT, EMMO, PMDco or schema.org, so inventing terms for them
here would create mappings that mean nothing to anyone else. They belong in a separate,
node-shaped uncertainty record once there is something to map them to.
Numbers are not datatype-coerced. JSON numbers project to xsd:double, which is the only
fractional datatype that survives the round-trip back into a native JSON number. Coercing to
xsd:decimal looks tidier and quietly breaks re-validation, because the value returns from RDF
as a string. QUDT constrains these properties to xsd:decimal on qudt:Quantifiable, but our
nodes are not typed as Quantifiable, so no constraint is violated; a QUDT-strict consumer can
canonicalize on ingest.
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.
The unit is an IRI, and unit is coerced with @type: @vocab. Modelling the unit as a
reference to a unit individual keeps the class-versus-individual question out of the data
entirely. The @vocab coercion is what lets a subclass declare its unit individuals as terms
and give each one community aliases; see Time.
EMMO has no synonym for value. EMMO models a quantity value as a node with a nested
numerical part, and no JSON-LD term definition can produce a nested node from a literal. That is
a structural mismatch, not an oversight, so the EMMO reading falls back to qudt:value and the
correspondence is left to rule or SSSOM level. See
emmo-repo/EMMO#376.
Provenance of the mappings¶
Each synonym records the ontology and the exact version it was checked against. The EMMO
mappings target the 1.0.4 development branch rather than the 1.0.3 release, because that is
where units became individuals and the VIM4 data properties appeared. The published build at
w3id.org/emmo/1.0.4 was stale against its own branch when this was written, which is why the
pin names a commit rather than trusting the version IRI.
References¶
- emmo-repo/EMMO#376, preferred representation of quantities
- emmo-repo/EMMO#377, relating quantity individuals to units
- OO-LD/oold-schema#107, this schema upstream
- OO-LD/oold-schema#108, the mapping-selection requirements