# Vercy AI instruction - YAML 1.2 (JSON-compatible) { "vercy": "1.0-draft", "publication": { "status": "published", "adjudicationStatus": "reviewable-draft", "publishableCanonical": false, "generatedAt": "2026-08-23T03:58:21Z", "synthesisSha256": "99f394785be7050845ec43c1f4b1ed555d474dfc88e32e03824e3c00ffe3e64d", "providerMode": "dual-provider", "providers": [ "Claude", "Grok" ], "waivedProviders": [] }, "metaModel": { "id": "WM-XCT-008", "registryId": "vr.wm-xct-008", "name": "Quantity / Unit", "version": "0.3.0-research.1", "previousVersions": [], "entryKind": "mixin", "family": "World Models", "category": "Cross-cutting context", "industry": [ "Cross-industry" ], "domain": [ "XCT.QTY" ], "tags": [ "quantity", "unit", "xct.qty" ], "status": "published" }, "canonicalUrl": "https://ver.cy/models/wm-xct-008-quantity-unit/", "sourceUrl": "https://github.com/ver-cy/world-models/tree/feat/mega-model-registry/research/runs/wm-xct-008", "model": { "registry_id": "vr.wm-xct-008", "model_id": "WM-XCT-008", "name": "Quantity / Unit", "entry_kind": "mixin", "purpose": "Provide a format-neutral, embeddable value-object mixin that lets an AI agent state, interpret, validate, convert, compare and govern a quantity value — a number bound to a reference (unit, measurement procedure or reference material) — with the quantity kind, scale type, numeric fidelity, uncertainty, provenance and registry governance needed to use it safely across domains.", "scope_statement": "WM-XCT-008 covers the semantics of a quantity value and its unit as an embedded value object: what is measured (quantity kind, dimension, scale type), what the number references (unit identity, codes, expression grammar, prefixes, system membership), how the number itself is carried (form, bounds, precision, exactness), how values may be compared and converted (commensurability, linear and non-linear conversion, information loss), how quality is stated (uncertainty, tolerance, constraints, validation), the contextual qualifiers and provenance/time needed to interpret it, and the interoperability, versioning and embedding governance required to reuse it. It does not model the act of measurement, the measured thing, or any domain-specific property catalogue.", "in_scope": [ "Quantity kind, quantity dimension, and the ISQ dimensional exponents used for consistency checks", "Measurement unit identity: symbol, name, governed codes (UCUM, UN/CEFACT common code, QUDT IRI) and code-system versioning", "Unit expression grammar: compound expressions, exponents, annotations, prefixes, multiples and submultiples", "Scale type (ratio, interval, ordinal, nominal) and the operations each scale permits or forbids", "Quantity value composition: numeric value bound to a reference, point vs interval vs bounded vs ratio forms", "Numeric fidelity: significant digits, trailing-zero precision, exactness, rounding, representation format", "Commensurability, equality, and conversion by multiplier/offset or by non-linear function", "Measurement uncertainty expression (standard, combined, expanded, coverage factor) and tolerance/specification limits", "Reference conditions, denominator/population qualifiers and other context that changes interpretation", "Provenance of the value (measured, computed, converted, asserted), event time vs observation/ingestion time", "Constraint specification, validation outcomes and exception handling for unrecognised units or failing values", "Alignment to external unit vocabularies, recorded conflicts, and profile/value-set binding", "Embedding contract for use as a mixin inside host records" ], "out_of_scope": [ "The measurement or observation act itself — sensor, procedure, feature of interest, sampling — which belongs to a Measurement/Observation sibling model", "Time instants, intervals and calendars as first-class entities; this model only carries timestamps and durations as quantity values or metadata", "Spatial geometry, coordinate reference systems and datum transformation", "Monetary amounts, currency governance and exchange rates; a currency code is not a unit of a physical quantity kind", "Full metrological traceability chains, calibration certificates and laboratory accreditation records", "Domain property catalogues (for example laboratory analyte catalogues or product attribute dictionaries)", "Statistical distributions, uncertainty budgets as computational models, and Monte Carlo propagation methods", "Curation of the external unit registries themselves; this model consumes and pins their releases" ], "boundary_notes": [ { "neighbor": "Measurement / Observation model", "distinction": "SOSA/SSN models the act (sensor, procedure, feature of interest) and explicitly delegates unit encoding to external vocabularies; WM-XCT-008 supplies the result value object that such an observation carries, and never restates the observing act.", "source_refs": [ "SRC-015", "SRC-002" ] }, { "neighbor": "Temporal / Time model", "distinction": "A duration expressed as a quantity ('30 min') is in scope; a calendar instant, interval, recurrence or timezone rule is not. Record timestamps use RFC 3339 and belong to the temporal sibling's semantics.", "source_refs": [ "SRC-016", "SRC-009" ] }, { "neighbor": "Money / Currency model", "distinction": "schema.org permits currency codes in unitCode, but a currency is not a unit of a physical quantity kind and has no dimension; monetary amounts must resolve through a Money sibling model, and only the numeric-fidelity rules are shared.", "source_refs": [ "SRC-014", "SRC-002" ] }, { "neighbor": "Metrological traceability / calibration model", "distinction": "WM-XCT-008 carries the reported uncertainty and any traceability claim as a reference; the calibration hierarchy, standards and certificates that substantiate the claim are a separate model.", "source_refs": [ "SRC-002", "SRC-012" ] }, { "neighbor": "Identifier / code registry model", "distinction": "This model pins and resolves unit codes but does not define registry governance mechanics; a code registry sibling owns release cadence, deprecation policy and publication of the code lists it consumes.", "source_refs": [ "SRC-006", "SRC-007" ] }, { "neighbor": "Nominal property / classifier model", "distinction": "VIM 1.30 defines a nominal property as having no magnitude; blood group or colour names are classifications, not quantities, and must not be forced into this mixin even when coded numerically.", "source_refs": [ "SRC-002" ] }, { "neighbor": "Statistical aggregate model", "distinction": "A mean, median or percentile is a quantity value and uses this mixin, but the population definition, sampling frame and estimator specification belong to a statistics sibling model.", "source_refs": [ "SRC-012", "SRC-010" ] } ] }, "sources": [ { "id": "SRC-001", "title": "The International System of Units (SI), 9th edition (SI Brochure)", "organization": "Bureau International des Poids et Mesures (BIPM)", "url": "https://www.bipm.org/en/publications/si-brochure", "version_or_date": "9th edition 2019, English version updated 2026; DOI 10.59161/AUEZ1291", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Normative definition of the SI: base and derived units, coherence, prefixes, and rules for writing unit symbols and numerical values." }, { "id": "SRC-002", "title": "JCGM 200:2012 International vocabulary of metrology — Basic and general concepts and associated terms (VIM, 3rd edition), online browser", "organization": "Joint Committee for Guides in Metrology (JCGM) / BIPM", "url": "https://jcgm.bipm.org/vim/en/1.1.html", "version_or_date": "3rd edition, 2012 (2008 version with minor corrections)", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Verified source of the definitions used throughout: quantity (1.1), kind of quantity (1.2), quantity dimension (1.7), measurement unit (1.9), quantity value (1.19), ordinal quantity (1.26), conventional reference scale (1.29), nominal property (1.30)." }, { "id": "SRC-003", "title": "Measurement units — SI base units and defining constants", "organization": "Bureau International des Poids et Mesures (BIPM)", "url": "https://www.bipm.org/en/measurement-units", "version_or_date": "Accessed 2026-08-23 (SI as revised 2019)", "source_type": "public-authority", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Confirms the seven base units and the seven exact defining constants that anchor dimensional analysis and coherent-unit normalisation." }, { "id": "SRC-004", "title": "Resolution 3 of the 27th CGPM (2022): On the extension of the range of SI prefixes", "organization": "Conférence Générale des Poids et Mesures (CGPM) / BIPM", "url": "https://www.bipm.org/en/cgpm-2022/resolution-3", "version_or_date": "27th CGPM, 2022", "source_type": "legislation", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Adds ronna (R, 10^27), quetta (Q, 10^30), ronto (r, 10^-27) and quecto (q, 10^-30); fixes the admissible prefix set and its effective date." }, { "id": "SRC-005", "title": "The Unified Code for Units of Measure (UCUM) specification", "organization": "Regenstrief Institute, Inc. / UCUM Organization", "url": "https://ucum.org/ucum", "version_or_date": "Version 2.2, 2024-06-17", "source_type": "standard", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Normative machine grammar for unit expressions: atoms, prefixes, '.'/'/' operators, exponents, square-bracket customary units, curly-brace annotations that conformant parsers discard, case-sensitive vs case-insensitive codes, special (non-ratio) units, arbitrary units, commensurability and conformance levels." }, { "id": "SRC-006", "title": "Recommendation No. 20 — Codes for Units of Measure Used in International Trade, Revision 17 (Annexes I to III)", "organization": "UNECE / UN/CEFACT", "url": "https://unece.org/trade/documents/revision-17-annexes-i-iii", "version_or_date": "Revision 17, 2021 (rec20_Rev17e-2021.xlsx)", "source_type": "registry", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Governed three-character alphanumeric common codes for units used in trade documents, organised by quantity category, unit name and common code; the de facto code list for commercial and supply-chain exchange." }, { "id": "SRC-007", "title": "QUDT public repository — releases", "organization": "QUDT.org", "url": "https://github.com/qudt/qudt-public-repo/releases", "version_or_date": "v3.5.0, 2026-07-28", "source_type": "ontology", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Evidence that unit vocabularies version and break: v3.4.0 introduced an explicit commensurability framework replacing ambiguous skos:broader use, and v3.5.0 redefined BIT/BYTE/OCTET as counting units — a concrete case for pinning registry releases." }, { "id": "SRC-008", "title": "QUDT — Quantities, Units, Dimensions and Types ontology (home)", "organization": "QUDT.org", "url": "https://www.qudt.org/pages/HomePage.html", "version_or_date": "Release 2.1 page, last updated 2022-03-01 (current catalogue per releases)", "source_type": "ontology", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Supplies the class/property vocabulary this model aligns to: Quantity, QuantityKind, Unit, QuantityValue, SystemOfUnits, QuantityKindDimensionVector, conversionMultiplier, conversionOffset, applicableUnit, ucumCode, uneceCommonCode." }, { "id": "SRC-009", "title": "HL7 FHIR Release 5 — Data Types (Quantity, SimpleQuantity, Range, Ratio)", "organization": "Health Level Seven International (HL7)", "url": "https://hl7.org/fhir/datatypes.html", "version_or_date": "FHIR v5.0.0 (R5), 2023", "source_type": "schema", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "A widely deployed concrete binding: value/comparator/unit/system/code element set, UCUM as recommended code system, explicit rule that decimal precision is semantically significant (0.010 differs from 0.01), and profiled variants for Age, Duration, Count, Distance, MoneyQuantity." }, { "id": "SRC-010", "title": "ISO 80000-1:2022 Quantities and units — Part 1: General", "organization": "International Organization for Standardization (ISO)", "url": "https://www.iso.org/standard/76921.html", "version_or_date": "Edition 2, published 2022-12; cancels ISO 80000-1:2009", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Defines the International System of Quantities (ISQ), quantity and unit symbol conventions, coherent unit systems, rounding of numbers and logarithmic quantities. Catalogue metadata was read via the public ISO listing; full normative text is paywalled." }, { "id": "SRC-011", "title": "NIST Special Publication 811 — Guide for the Use of the International System of Units (SI)", "organization": "National Institute of Standards and Technology (NIST), U.S. Department of Commerce", "url": "https://www.nist.gov/pml/special-publication-811", "version_or_date": "2008 edition; NIST notes it is not yet updated for the 2019 SI revision and points to SP 330 (2019)", "source_type": "public-authority", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Style and conversion authority: rules for printing and using units, expressing values of quantities, spelling unit names, and conversion factors. Its stale status is itself evidence that style guidance must be version-pinned." }, { "id": "SRC-012", "title": "JCGM 100:2008 Evaluation of measurement data — Guide to the expression of uncertainty in measurement (GUM)", "organization": "Joint Committee for Guides in Metrology (JCGM) / BIPM", "url": "https://www.bipm.org/documents/20126/2071204/JCGM_100_2008_E.pdf", "version_or_date": "2008 (GUM 1995 with minor corrections)", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Normative framework for stating uncertainty: standard uncertainty, Type A and Type B evaluation, combined standard uncertainty, expanded uncertainty with coverage factor and coverage probability, and reporting requirements." }, { "id": "SRC-013", "title": "SmartCom Digital-SI (D-SI) XML exchange format for metrological data, version 2.2.0", "organization": "Physikalisch-Technische Bundesanstalt (PTB) / EMPIR 17IND02 SmartCom", "url": "https://zenodo.org/records/10230771", "version_or_date": "v2.2.0, published 2023-11-30; DOI 10.5281/zenodo.10230771", "source_type": "schema", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "A metrology-native machine-readable exchange format for a quantity value together with unit and uncertainty, explicitly aligned to VIM, GUM and CODATA — demonstrating that value, unit and uncertainty travel as one inseparable payload." }, { "id": "SRC-014", "title": "schema.org QuantitativeValue", "organization": "W3C Schema.org Community Group", "url": "https://schema.org/QuantitativeValue", "version_or_date": "Schema.org version 30.0, released 2026-03-19", "source_type": "schema", "primary_source": false, "authority_tier": 3, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Mass-market projection using UN/CEFACT common codes in unitCode, unitText as free-text fallback, minValue/maxValue for intervals and valueReference for context — and a documented conflict where currency codes are carried in unitCode." }, { "id": "SRC-015", "title": "Semantic Sensor Network Ontology (SSN/SOSA), W3C Recommendation", "organization": "World Wide Web Consortium (W3C) / OGC", "url": "https://www.w3.org/TR/vocab-ssn/", "version_or_date": "W3C Recommendation 19 October 2017 (link corrections 8 December 2017)", "source_type": "ontology", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Establishes the boundary with the observation model: sosa:Observation carries a result via hasResult or hasSimpleResult and deliberately defines no units, delegating unit encoding to external vocabularies such as this mixin." }, { "id": "SRC-016", "title": "RFC 3339 — Date and Time on the Internet: Timestamps", "organization": "Internet Engineering Task Force (IETF)", "url": "https://www.rfc-editor.org/rfc/rfc3339", "version_or_date": "July 2002", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T00:00:00Z", "relevance": "Normative timestamp profile for event time and observation/ingestion time, including mandatory offset, 'Z' for UTC and the distinct meaning of '-00:00' as unknown local offset." }, { "id": "SRC-017", "title": "JCGM 200:2012 International Vocabulary of Metrology – Basic and general concepts and associated terms (VIM), 3rd edition", "organization": "Joint Committee for Guides in Metrology (JCGM) / BIPM", "url": "https://www.bipm.org/en/doi/10.59161/jcgm200-2012", "version_or_date": "JCGM 200:2012 (VIM 3rd edition, 2008 with minor corrections)", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T16:00:00Z", "relevance": "Authoritative definitions of quantity, kind of quantity, dimension, unit of measurement, quantity value, measurement, measurand, uncertainty and metrological traceability." }, { "id": "SRC-018", "title": "Quantities, Units, Dimensions and Types (QUDT) Schema, Version 2.1.29", "organization": "QUDT.org", "url": "https://qudt.org/doc/2023/07/DOC_SCHEMA-QUDT-v2.1.html", "version_or_date": "2.1.29, last modified 2023-07-28", "source_type": "ontology", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T16:00:00Z", "relevance": "Conceptual split of Quantity, QuantityKind, QuantityValue and Unit; dimension vectors; conversion multiplier and offset; delta quantities; scale types; and crosswalk properties for UCUM, UNECE and IEC 61360 codes." }, { "id": "SRC-019", "title": "JCGM 100:2008 Evaluation of measurement data — Guide to the expression of uncertainty in measurement (GUM)", "organization": "Joint Committee for Guides in Metrology (JCGM) / BIPM", "url": "https://www.bipm.org/en/doi/10.59161/jcgm100-2008e", "version_or_date": "JCGM 100:2008(E), GUM 1995 with minor corrections; corrected version 2010", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T16:00:00Z", "relevance": "Normative rules for evaluating and expressing standard, combined and expanded measurement uncertainty, coverage factors and the measurement model that relates input quantities to a measurand." }, { "id": "SRC-020", "title": "HL7 FHIR Release 4 Data Types — Quantity and related types", "organization": "Health Level Seven International (HL7)", "url": "https://hl7.org/fhir/R4/datatypes-definitions.html#Quantity", "version_or_date": "FHIR R4 v4.0.1, 2019-10-30, normative Quantity", "source_type": "schema", "primary_source": true, "authority_tier": 2, "accessed_at": "2026-08-23T16:00:00Z", "relevance": "Operational quantity value object: decimal value with implicit precision, comparator, human unit, coding system URI, unit code, Range, Ratio, Money separation, and the qty-3 invariant that a unit code requires a system." }, { "id": "SRC-021", "title": "UN/CEFACT Recommendation 20 — Codes for Units of Measure Used in International Trade", "organization": "United Nations Economic Commission for Europe (UNECE)", "url": "https://unece.org/trade/uncefact/cl-recommendations", "version_or_date": "Recommendation 20, current UNECE code-list recommendation (annexes by quantity category)", "source_type": "registry", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T16:00:00Z", "relevance": "Tabulated three-character alphabetic and alphanumeric unit codes for length, area, volume, mass, time and other trade quantities, grouped by quantity category for EDI." }, { "id": "SRC-022", "title": "ISO 11240:2012 Health informatics — Identification of medicinal products — Data elements and structures for the unique identification and exchange of units of measurement", "organization": "International Organization for Standardization (ISO)", "url": "https://www.iso.org/standard/55033.html", "version_or_date": "ISO 11240:2012, first edition 2012-11, confirmed 2020", "source_type": "standard", "primary_source": true, "authority_tier": 1, "accessed_at": "2026-08-23T16:00:00Z", "relevance": "Coded representation of units for quantitative medicinal-product characteristics, traceability to international metrological standards, and mapping rules among unit vocabularies for computer interchange." } ], "structure": { "bundles": [ { "id": "quantity-semantics", "name": "Quantity semantics", "description": "What the number is about: the kind of quantity, its dimension in the ISQ, the type of scale it lives on, and the special handling of dimension-one, count and logarithmic quantities.", "rationale": "VIM separates quantity (1.1) from kind of quantity (1.2), dimension (1.7) and unit (1.9); ISO 80000-1 fixes the ISQ. Units alone are insufficient — joule per kelvin serves both heat capacity and entropy, and hertz and becquerel are both 1/s — so kind and scale must be modelled before unit identity.", "source_refs": [ "SRC-002", "SRC-010", "SRC-001" ], "layers": [ { "id": "kind-and-dimension", "name": "Quantity kind and dimension", "description": "Identification of the quantity kind and its dimensional exponents over the ISQ base quantities, and the consistency checks these enable.", "source_refs": [ "SRC-002", "SRC-010", "SRC-008" ], "findings": [ { "id": "quantity-kind-identity", "name": "Quantity kind identity and disambiguation", "description": "Which kind of quantity the value expresses, resolved to a governed identifier, and how kinds that share a dimension are kept apart. VIM 1.2 defines kind of quantity as the aspect common to mutually comparable quantities; VIM 1.9 Note 2 records that units with the same dimension may name different kinds (joule per kelvin for both heat capacity and entropy; hertz for frequency but becquerel for activity, both 1/s). QUDT carries this as qudt:QuantityKind linked by qudt:hasQuantityKind with qudt:applicableUnit constraining admissible units.", "source_refs": [ "SRC-002", "SRC-008", "SRC-010" ], "questions": [ { "id": "qki-q1", "text": "Which quantity kind does this value express, and through which governed identifier is that kind resolved?", "kind": "identity", "answer_data": [ "quantity kind identifier (IRI or registry code)", "quantity kind label", "issuing vocabulary and pinned version" ] }, { "id": "qki-q2", "text": "When two candidate units share a dimension but denote different kinds, what evidence disambiguates the intended kind?", "kind": "classification", "answer_data": [ "disambiguating kind assertion", "dimension vector shared by the candidates", "rule or note cited for the distinction" ] }, { "id": "qki-q3", "text": "Which quantity kinds are admissible in this property slot, and who has authority to add one?", "kind": "authority", "answer_data": [ "admissible quantity kind list", "binding strength (required, extensible, example)", "authority reference for extension" ] }, { "id": "qki-q4", "text": "Is the property in fact a nominal property with no magnitude, and therefore outside this mixin?", "kind": "validation", "answer_data": [ "magnitude-bearing flag", "redirect target model when not magnitude-bearing" ] } ], "data_elements": [ { "id": "quantity-kind-id", "name": "Quantity kind identifier", "description": "Governed identifier for the kind of quantity, preferring an authoritative registry IRI over a locally minted code.", "value_kind": "identifier", "cardinality": "1", "required": true, "source_refs": [ "SRC-008", "SRC-002" ] }, { "id": "quantity-kind-vocabulary-version", "name": "Quantity kind vocabulary version", "description": "Pinned release of the vocabulary that supplied the kind identifier, so the identifier resolves deterministically.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-007" ] }, { "id": "admissible-kind-set", "name": "Admissible quantity kind set", "description": "The kinds permitted for the host property slot, with binding strength.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-009", "SRC-008" ] } ], "artifacts": [], "inline_only_rationale": "The quantity kind is an inline reference to an external vocabulary term; the mixin holds only the identifier and pinned version. The vocabulary release itself is an artifact governed by the unit-registry finding, not duplicated here." }, { "id": "dimension-and-consistency", "name": "Quantity dimension and dimensional consistency", "description": "The dimension of the quantity expressed as integer exponents over the ISQ base quantities (length, mass, time, electric current, thermodynamic temperature, amount of substance, luminous intensity), and the arithmetic checks it authorises. VIM 1.7 defines quantity dimension; VIM 1.8 defines quantity of dimension one. QUDT materialises this as a QuantityKindDimensionVector. Dimension equality is a necessary but not sufficient condition for comparability.", "source_refs": [ "SRC-002", "SRC-003", "SRC-008", "SRC-010" ], "questions": [ { "id": "dim-q1", "text": "What are the dimensional exponents of this quantity over the seven ISQ base quantities?", "kind": "measurement", "answer_data": [ "dimension exponent vector", "base quantity ordering convention", "source vocabulary for the vector" ] }, { "id": "dim-q2", "text": "Which dimensional consistency checks must pass before an addition, comparison or assignment involving this value is accepted?", "kind": "constraint", "answer_data": [ "required check list", "failure action", "operations exempted from the check" ] }, { "id": "dim-q3", "text": "Does dimension equality alone authorise treating two values as interchangeable in this context?", "kind": "relationship", "answer_data": [ "dimension-equality outcome", "kind-equality outcome", "decision on interchangeability" ] } ], "data_elements": [ { "id": "dimension-vector", "name": "Dimension exponent vector", "description": "Ordered integer or rational exponents of the ISQ base quantities characterising the quantity dimension.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-008" ] }, { "id": "dimension-one-flag", "name": "Dimension-one indicator", "description": "Whether all dimensional exponents are zero, in which case the quantity is of dimension one.", "value_kind": "boolean", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002" ] } ], "artifacts": [], "inline_only_rationale": "A dimension vector is derived, deterministic data computed from the quantity kind or the unit expression; materialising it as a standalone artifact would create a second source of truth that can drift from the registry." }, { "id": "system-of-quantities", "name": "System of quantities", "description": "A system of quantity kinds is a set of kinds plus the equations that relate them, typically identifying a base subset from which others are derived. The SI is coupled to the International System of Quantities. Choice of base kinds is conventional. A unit system associated with a quantity-kind system must define at least one unit for each kind of interest.", "source_refs": [ "SRC-018", "SRC-010", "SRC-001" ], "questions": [ { "id": "system-of-quantities-q01", "text": "Which system of quantities governs this record, and which base quantity kinds does that system declare?", "kind": "classification", "answer_data": [ "system-of-quantities-iri", "base-quantity-kind-iris", "governing-standard" ] }, { "id": "system-of-quantities-q02", "text": "Which defining equations or physical relations of the system are needed to derive this kind from the bases?", "kind": "composition", "answer_data": [ "defining-relations", "derived-from-kinds" ] }, { "id": "system-of-quantities-q03", "text": "Which system of units is explicitly coupled to this system of quantities, and does it define a unit for every kind in use?", "kind": "relationship", "answer_data": [ "coupled-unit-system-iri", "missing-unit-kinds", "coherence-claim" ] } ], "data_elements": [ { "id": "system-of-quantities-data01", "name": "System of quantities IRI", "description": "Identifier of the governing system of quantity kinds, typically ISQ/SI.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-018", "SRC-010" ] }, { "id": "system-of-quantities-data02", "name": "Base quantity kinds", "description": "The base kinds declared by the system.", "value_kind": "collection", "cardinality": "1..n", "required": true, "source_refs": [ "SRC-018" ] }, { "id": "system-of-quantities-data03", "name": "Governing standard", "description": "Citation of ISO 80000, the SI Brochure or another system definition.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-010", "SRC-001" ] } ], "artifacts": [ { "id": "system-of-quantities-artifact01", "name": "System of quantities register", "description": "Dimension-governed register of the adopted system of quantities, its bases, equations and coupled unit system.", "media_or_form": [ "RDF vocabulary", "JSON register" ], "serial": true, "identity_strategy": "Master identity is the system IRI plus release version.", "source_refs": [ "SRC-018", "SRC-010" ] } ], "inline_only_rationale": null }, { "id": "quantity-calculus-homogeneity", "name": "Quantity calculus and dimensional homogeneity", "description": "ISO 80000-1 describes quantity calculus: only quantities of the same kind, and therefore the same dimension, may be added or subtracted. Products and quotients produce derived kinds whose dimensions are the corresponding products of powers. Numerical-value equations have the same form as quantity equations only in a coherent system. UCUM implements the algebra as an Abelian group under multiplication with integer exponents. Implementations must refuse mixed-kind addition even when a naive dimension check would pass.", "source_refs": [ "SRC-010", "SRC-005", "SRC-001" ], "questions": [ { "id": "quantity-calculus-homogeneity-q01", "text": "What algebraic operation is requested among which operand quantities, and is each operand dimensionally legal for that operation?", "kind": "process", "answer_data": [ "operation-code", "operand-quantity-ids", "homogeneity-ok" ] }, { "id": "quantity-calculus-homogeneity-q02", "text": "What quantity kind, dimension and coherent unit does the result have, and must the numerical value be recomputed in a coherent system to avoid hidden factors?", "kind": "composition", "answer_data": [ "result-kind-code", "result-dimension-vector", "result-unit-code", "coherent-recompute-required" ] }, { "id": "quantity-calculus-homogeneity-q03", "text": "If a non-coherent unit such as hour or millimetre appears in a product, how are prefix and conversion factors accumulated so that the numerical-value equation stays correct?", "kind": "validation", "answer_data": [ "accumulated-magnitude-factor", "incoherent-operands", "normalised-result" ] } ], "data_elements": [ { "id": "quantity-calculus-homogeneity-data01", "name": "Algebraic operation", "description": "multiply, divide, exponentiate, add or subtract.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-010", "SRC-005" ] }, { "id": "quantity-calculus-homogeneity-data02", "name": "Dimensional homogeneity satisfied", "description": "True when the operands are legal for the operation.", "value_kind": "boolean", "cardinality": "1", "required": true, "source_refs": [ "SRC-010" ] }, { "id": "quantity-calculus-homogeneity-data03", "name": "Accumulated magnitude factor", "description": "Product of non-coherent numeric factors that must be applied to numerical values.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "Calculus inputs and outputs are quantity values. Proof of homogeneity is an inline validation result." } ] }, { "id": "scale-and-measurability", "name": "Scale type and measurability", "description": "The scale on which the value sits and the operations that scale permits, including the awkward cases of dimension-one, count, ordinal and logarithmic quantities.", "source_refs": [ "SRC-002", "SRC-005", "SRC-010" ], "findings": [ { "id": "scale-type-classification", "name": "Scale type and permitted operations", "description": "Whether the value sits on a ratio, interval, ordinal or nominal scale, and which arithmetic is therefore legal. VIM 1.26 defines ordinal quantity, 1.27 quantity-value scale, 1.28 ordinal quantity-value scale and 1.29 conventional reference scale. UCUM separates proper units, which form an Abelian group under multiplication, from special units on non-ratio scales such as degree Celsius that convert by function rather than scalar multiplication. Ratios and multiplicative scaling are invalid on interval scales.", "source_refs": [ "SRC-002", "SRC-005", "SRC-010" ], "questions": [ { "id": "stc-q1", "text": "Is the underlying scale ratio, interval, ordinal or nominal?", "kind": "classification", "answer_data": [ "scale type code", "justification or source clause", "special-unit indicator" ] }, { "id": "stc-q2", "text": "Which arithmetic operations must be refused on this scale type, and what is returned instead?", "kind": "constraint", "answer_data": [ "prohibited operation list", "permitted operation list", "refusal or error behaviour" ] }, { "id": "stc-q3", "text": "If a conventional reference scale is used, which scale definition and edition applies?", "kind": "provenance", "answer_data": [ "reference scale identifier", "edition or year", "issuing authority" ] }, { "id": "stc-q4", "text": "How are ordinal codes that look numeric prevented from entering arithmetic pipelines?", "kind": "validation", "answer_data": [ "ordinal marker on the value", "storage type used", "guard rule and enforcement point" ] } ], "data_elements": [ { "id": "scale-type", "name": "Scale type", "description": "Ratio, interval, ordinal or nominal classification of the underlying quantity-value scale.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-005" ] }, { "id": "reference-scale-id", "name": "Conventional reference scale identifier", "description": "Identifier and edition of a conventional reference scale, where the value derives its meaning from a scale rather than a unit alone.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002" ] }, { "id": "prohibited-operations", "name": "Prohibited operation set", "description": "Operations that must be refused for this scale type, such as ratio or multiplicative scaling on interval scales.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-005", "SRC-010" ] } ], "artifacts": [ { "id": "scale-definition-record", "name": "Conventional reference scale definition record", "description": "The pinned definition of a conventional reference scale (for example a hardness or pH scale) that the value references, held so historical values remain interpretable after the scale is revised.", "media_or_form": [ "structured record", "normative document reference", "registry entry" ], "serial": false, "identity_strategy": "Authoritative scale identifier issued by the defining standards body; where none exists, a governed IRI minted by the adopting Dimension plus the edition designation.", "source_refs": [ "SRC-002", "SRC-010" ] } ], "inline_only_rationale": null }, { "id": "dimension-one-and-counts", "name": "Dimension-one, count and logarithmic quantities", "description": "Handling of values whose unit is 1, omitted, a count of discrete entities, a fraction such as percent or ppm, or a logarithmic quantity such as decibel or pH. VIM 1.8 notes that units for quantities of dimension one are numbers, sometimes with special names (radian, steradian) or as quotient expressions. ISO 80000-1 gives explicit rules for logarithmic quantities. FHIR provides a distinct Count profile. UCUM v2.2 illustrates the instability of this area: QUDT v3.5.0 reclassified BIT, BYTE and OCTET as counting units rather than information-entropy units.", "source_refs": [ "SRC-002", "SRC-010", "SRC-009", "SRC-007" ], "questions": [ { "id": "doc-q1", "text": "Is the value a count of discrete entities, and what entity type is being counted?", "kind": "definition", "answer_data": [ "count indicator", "counted entity type", "integrality constraint" ] }, { "id": "doc-q2", "text": "When the unit is absent, how does a consumer distinguish 'no unit was recorded' from 'the unit is one'?", "kind": "validation", "answer_data": [ "explicit unit-one code when applicable", "missing-unit reason code", "consumer default behaviour" ] }, { "id": "doc-q3", "text": "For a fraction or logarithmic quantity, what reference value and base are implied by the unit?", "kind": "measurement", "answer_data": [ "reference quantity or denominator", "logarithm base", "scaling factor implied by the unit" ] } ], "data_elements": [ { "id": "count-entity-type", "name": "Counted entity type", "description": "Identifier of the discrete entity being counted when the quantity is a count.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-007" ] }, { "id": "unit-absence-reason", "name": "Unit absence reason", "description": "Explicit reason a unit is not present: unit is one, unit unknown, unit not applicable, or unit pending resolution.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-009" ] }, { "id": "logarithmic-reference", "name": "Logarithmic reference and base", "description": "Reference quantity value and logarithm base underpinning a logarithmic quantity such as a level in decibels.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-010", "SRC-001" ] } ], "artifacts": [], "inline_only_rationale": "These are discriminating flags and references carried inline with the value; the reference quantity for a logarithmic level is itself a quantity value using this same mixin, not a separate artifact." } ] } ] }, { "id": "unit-identity-and-expression", "name": "Unit identity and expression", "description": "The unit as a governed referent: how it is identified across code systems, how its symbol and name are presented, how compound expressions and prefixes are parsed, and which system of units it belongs to.", "rationale": "VIM 1.9 defines a measurement unit as a real scalar quantity adopted by convention. Interoperable use requires a resolvable code, not a display string: UCUM supplies a parseable grammar, UN/CEFACT Rec 20 supplies trade common codes, QUDT supplies IRIs, and the SI Brochure and NIST SP 811 supply presentation rules.", "source_refs": [ "SRC-002", "SRC-005", "SRC-006", "SRC-001", "SRC-011" ], "layers": [ { "id": "unit-identification", "name": "Unit identification and presentation", "description": "Resolvable identification of the unit across governed code systems, and the separate question of how it is displayed to a human.", "source_refs": [ "SRC-005", "SRC-006", "SRC-008", "SRC-001" ], "findings": [ { "id": "unit-identity-and-codes", "name": "Unit identity across governed code systems", "description": "How the unit is identified so that a machine can resolve it. FHIR Quantity pairs a system URI with a code and keeps unit as a separate human-readable string, recommending UCUM. UCUM defines both case-sensitive and case-insensitive symbol variants and warns that mixing case in case-insensitive codes carries no meaning. UN/CEFACT Rec 20 Rev 17 supplies three-character alphanumeric common codes. QUDT exposes qudt:ucumCode and qudt:uneceCommonCode on its unit IRIs, making it a crosswalk hub.", "source_refs": [ "SRC-009", "SRC-005", "SRC-006", "SRC-008" ], "questions": [ { "id": "uic-q1", "text": "Which code system and code identify the unit, and is that code system case-sensitive?", "kind": "identity", "answer_data": [ "code system URI", "unit code", "case-sensitivity flag of the code system" ] }, { "id": "uic-q2", "text": "When a UCUM code, a UN/CEFACT common code and a QUDT IRI are all present, which is authoritative and which are derived?", "kind": "authority", "answer_data": [ "primary code designation", "secondary code set", "precedence rule applied" ] }, { "id": "uic-q3", "text": "How is the code system version pinned so the same code resolves identically in five years?", "kind": "provenance", "answer_data": [ "code system version or release tag", "resolution date", "snapshot or resolver endpoint" ] }, { "id": "uic-q4", "text": "What happens when the unit has no code in any bound code system?", "kind": "exception", "answer_data": [ "fallback free-text unit string", "local extension code and its namespace", "downstream restriction applied to the value" ] } ], "data_elements": [ { "id": "unit-code", "name": "Unit code", "description": "Machine-processable code for the unit within a named code system.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-005" ] }, { "id": "unit-code-system", "name": "Unit code system URI", "description": "URI identifying the code system that defines the unit code.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "unit-code-system-version", "name": "Unit code system version", "description": "Pinned release identifier of the code system used to resolve the code.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-007", "SRC-006" ] }, { "id": "unit-alternate-codes", "name": "Alternate unit codes", "description": "Equivalent codes for the same unit in other governed systems, each tagged with its system and version.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-008", "SRC-006" ] } ], "artifacts": [ { "id": "unit-code-crosswalk", "name": "Unit code crosswalk", "description": "Maintained mapping between UCUM expressions, UN/CEFACT common codes, QUDT unit IRIs and any local extension codes, with the mapping strength (exact, narrower, broader, approximate) recorded per row.", "media_or_form": [ "tabular mapping", "RDF mapping graph", "code-system concept map" ], "serial": false, "identity_strategy": "Governed IRI for the crosswalk in the adopting Dimension namespace, versioned by release tag; rows keyed by source code system URI plus code.", "source_refs": [ "SRC-008", "SRC-006", "SRC-005" ] } ], "inline_only_rationale": null }, { "id": "unit-symbol-and-presentation", "name": "Unit symbol, name and presentation rules", "description": "The human-facing surface of the unit, kept distinct from its code. The SI Brochure and NIST SP 811 give rules for printing and using units and for spelling unit names; FHIR separates unit (display string) from code (machine token). Presentation is locale-sensitive and must never be parsed as the authoritative unit. Note that NIST SP 811 (2008) predates the 2019 SI revision, so style guidance itself needs version pinning.", "source_refs": [ "SRC-001", "SRC-011", "SRC-009", "SRC-010" ], "questions": [ { "id": "usp-q1", "text": "What is the authoritative symbol and full unit name, and which locale variants are held?", "kind": "definition", "answer_data": [ "unit symbol", "unit name", "locale-tagged name variants" ] }, { "id": "usp-q2", "text": "Which printing and spelling rules are enforced for this unit, and against which pinned style authority?", "kind": "constraint", "answer_data": [ "style authority and edition", "enforced rule set", "known deviations accepted" ] }, { "id": "usp-q3", "text": "Is the display string derived from the code or authored independently, and which prevails on conflict?", "kind": "quality", "answer_data": [ "derivation flag", "conflict precedence rule", "reconciliation action" ] } ], "data_elements": [ { "id": "unit-symbol", "name": "Unit symbol", "description": "Conventional symbol for the unit as adopted by the defining authority.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-001", "SRC-002" ] }, { "id": "unit-display-text", "name": "Unit display text", "description": "Human-readable unit rendering, optionally locale-tagged, explicitly non-authoritative for machine processing.", "value_kind": "text", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-009", "SRC-014" ] }, { "id": "style-authority-ref", "name": "Style authority reference", "description": "Pinned reference to the presentation rule set applied, including edition.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-011", "SRC-001" ] } ], "artifacts": [], "inline_only_rationale": "Symbol and display text are inline attributes of the embedded value object; the style authority is an external normative document referenced by URL and edition rather than reproduced." } ] }, { "id": "unit-expression-grammar", "name": "Unit expression and scaling", "description": "Parsing and validating compound unit expressions, and the governed set of prefixes and scaled units.", "source_refs": [ "SRC-005", "SRC-001", "SRC-004" ], "findings": [ { "id": "compound-unit-expression", "name": "Compound unit expression grammar", "description": "The grammar that makes a unit expression machine-checkable. UCUM v2.2 uses 7-bit US-ASCII, '.' for multiplication and '/' for division evaluated left to right with equal precedence, integer exponents following the symbol, square brackets for customary units that also block prefix matching, and curly-brace annotations that fully conformant parsers must discard. Full conformance requires recognising that 'km' equals '1000.m'; limited conformance compares expressions literally — a difference that silently changes equality semantics between systems.", "source_refs": [ "SRC-005", "SRC-008" ], "questions": [ { "id": "cue-q1", "text": "Which grammar and conformance level govern parsing of compound unit expressions in this deployment?", "kind": "interoperability", "answer_data": [ "grammar identifier and version", "conformance level (full or limited)", "parser implementation reference" ] }, { "id": "cue-q2", "text": "Are curly-brace annotations permitted, and are they discarded before semantic comparison?", "kind": "constraint", "answer_data": [ "annotation policy", "discard-before-compare rule", "annotation retention location if kept" ] }, { "id": "cue-q3", "text": "Are syntactically different but semantically equal expressions treated as equal, and is a canonical form stored?", "kind": "validation", "answer_data": [ "canonical expression form", "original expression as received", "equality test used" ] }, { "id": "cue-q4", "text": "What is the outcome when an expression fails to parse — rejection, quarantine, or acceptance with a flag?", "kind": "exception", "answer_data": [ "parse failure action", "error code and message", "quarantine location and review owner" ] } ], "data_elements": [ { "id": "unit-expression", "name": "Unit expression as received", "description": "The verbatim unit expression string as supplied by the source, preserved before canonicalisation.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] }, { "id": "unit-expression-canonical", "name": "Canonical unit expression", "description": "Deterministically normalised form of the unit expression used for equality and commensurability tests.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005", "SRC-008" ] }, { "id": "unit-annotation", "name": "Unit annotation", "description": "Semantically void annotation text extracted from curly braces, retained for human context only.", "value_kind": "text", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-005" ] } ], "artifacts": [ { "id": "parser-conformance-statement", "name": "Unit expression parser conformance statement", "description": "Declared conformance level of the deployment's unit parser against the pinned grammar version, with the test corpus and results that substantiate the claim.", "media_or_form": [ "conformance declaration", "test result set", "machine-readable capability statement" ], "serial": false, "identity_strategy": "Governed IRI in the adopting Dimension namespace, versioned per parser release and per pinned grammar version.", "source_refs": [ "SRC-005" ] } ], "inline_only_rationale": null }, { "id": "prefixes-and-scaled-units", "name": "Prefixes, multiples and submultiples", "description": "The admissible prefix set and its traps. The SI defines decimal prefixes; CGPM 2022 Resolution 3 added ronna (R, 10^27), quetta (Q, 10^30), ronto (r, 10^-27) and quecto (q, 10^-30). VIM 1.17 and 1.18 define multiple and submultiple of a unit. UCUM forbids unit atoms from containing prefixes and blocks prefix matching across bracket boundaries. Two persistent hazards: the kilogram is the base unit yet carries a prefix, and binary prefixes (Ki, Mi, Gi) are not SI prefixes and must not be conflated with decimal ones.", "source_refs": [ "SRC-001", "SRC-004", "SRC-005", "SRC-002" ], "questions": [ { "id": "pfx-q1", "text": "Which prefix set is admitted, and does it include the prefixes adopted by CGPM in 2022?", "kind": "classification", "answer_data": [ "admitted prefix list with symbols and factors", "adoption date of the prefix set", "excluded prefixes and reason" ] }, { "id": "pfx-q2", "text": "Are binary prefixes permitted, and how are they kept distinct from decimal prefixes of the same initial letter?", "kind": "interoperability", "answer_data": [ "binary prefix policy", "distinguishing code or namespace", "conversion factor applied" ] }, { "id": "pfx-q3", "text": "How are compound prefixes, prefixes on non-metric atoms, and the prefixed base unit kilogram handled?", "kind": "constraint", "answer_data": [ "compound prefix rejection rule", "non-metric atom prefix rule", "kilogram special-case handling" ] } ], "data_elements": [ { "id": "prefix-symbol", "name": "Prefix symbol", "description": "Symbol of the decimal or binary prefix applied to a unit atom.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-001", "SRC-004" ] }, { "id": "prefix-factor", "name": "Prefix multiplying factor", "description": "Exact numeric factor the prefix applies, expressed as a power of ten or two.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004", "SRC-001" ] }, { "id": "prefix-set-version", "name": "Prefix set version", "description": "Which CGPM-adopted prefix set edition the deployment recognises, so pre-2022 data can be interpreted consistently.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-004" ] } ], "artifacts": [], "inline_only_rationale": "Prefixes are a small closed vocabulary fixed by CGPM resolution and reproduced in the SI Brochure; the model references that authority rather than maintaining a competing artifact." } ] }, { "id": "system-membership", "name": "System of units membership", "description": "Which system of units the unit belongs to, whether it is coherent within that system, and how off-system, customary and arbitrary units are constrained.", "source_refs": [ "SRC-002", "SRC-001", "SRC-005" ], "findings": [ { "id": "system-and-non-si-units", "name": "System membership, coherence and non-SI units", "description": "VIM 1.13 defines a system of units, 1.14 a coherent system of units, 1.12 a coherent derived unit and 1.15 an off-system measurement unit. QUDT models this as qudt:SystemOfUnits. The decisive operational distinctions are: coherent SI units allow conversion factors of exactly one in coherent equations; units accepted for use with the SI (minute, hour, litre, tonne, electronvolt) require explicit factors; customary units require bracketed treatment in UCUM; and arbitrary units are procedure-dependent, carry no general meaning relative to any other unit, and form no equivalence classes — so cross-comparison of two arbitrary units must be refused outright, not merely warned about.", "source_refs": [ "SRC-002", "SRC-001", "SRC-005", "SRC-008" ], "questions": [ { "id": "snu-q1", "text": "To which system of units does this unit belong, and is it coherent within that system?", "kind": "classification", "answer_data": [ "system of units identifier", "coherence flag", "coherent SI unit of the same kind" ] }, { "id": "snu-q2", "text": "Is the unit SI, accepted for use with the SI, off-system, customary, arbitrary or procedure-defined?", "kind": "classification", "answer_data": [ "unit category code", "authorising source and clause", "restrictions attached to the category" ] }, { "id": "snu-q3", "text": "For an arbitrary or procedure-defined unit, which procedure or reference material defines it, and is comparison with any other arbitrary unit forbidden?", "kind": "constraint", "answer_data": [ "defining procedure or reference material identifier", "comparison prohibition flag", "permitted comparison scope" ] }, { "id": "snu-q4", "text": "Which unit is used for storage and which for presentation when they differ?", "kind": "decision", "answer_data": [ "storage unit", "presentation unit", "conversion applied at render time" ] } ], "data_elements": [ { "id": "system-of-units-id", "name": "System of units identifier", "description": "Identifier of the system of units to which the unit belongs, such as SI or a named customary system.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-008" ] }, { "id": "unit-category", "name": "Unit category", "description": "Category of the unit: base, coherent derived, accepted for use with SI, off-system, customary, arbitrary or procedure-defined.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-001", "SRC-005" ] }, { "id": "defining-procedure-ref", "name": "Defining procedure or reference material", "description": "Reference to the measurement procedure or reference material that defines an arbitrary unit, per VIM 1.19 Note on references other than units.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "System membership and unit category are classification attributes resolved from the pinned unit registry entry; the registry release itself is the artifact and is governed under versioning-and-correction." } ] } ] }, { "id": "value-expression", "name": "Value expression and numeric fidelity", "description": "The numeric side of the value object: what the number is bound to, what form it takes, and how its precision and exactness survive storage and transfer.", "rationale": "VIM 1.19 defines a quantity value as a number and a reference together; FHIR makes decimal precision semantically significant and adds a comparator for bounded results; ISO 80000-1 specifies rounding of numbers. Losing precision or splitting value from unit are the two most common silent failures in exchanged quantity data.", "source_refs": [ "SRC-002", "SRC-009", "SRC-010", "SRC-013" ], "layers": [ { "id": "value-composition", "name": "Value composition and form", "description": "How the number binds to its reference, and whether the value is a point, an interval, a bound or a ratio.", "source_refs": [ "SRC-002", "SRC-009", "SRC-014" ], "findings": [ { "id": "value-reference-binding", "name": "Numeric value and reference binding", "description": "VIM 1.19 defines a quantity value as a number and reference together, where the reference may be a measurement unit (5.34 m), a measurement procedure (43.5 HRC) or a reference material (5.0 IU/l). VIM 1.20 defines the numerical quantity value as the number in that expression. The number may be complex, and vector or tensor quantities have a value per component. The operational consequence is that value and reference form an atomic pair: neither may be written, updated, defaulted or indexed independently, and D-SI carries them as one payload with uncertainty.", "source_refs": [ "SRC-002", "SRC-013", "SRC-009" ], "questions": [ { "id": "vrb-q1", "text": "What is the numerical value, and which reference type does it bind to — unit, measurement procedure or reference material?", "kind": "composition", "answer_data": [ "numerical value", "reference type code", "reference identifier" ] }, { "id": "vrb-q2", "text": "Is the numerical value real, complex, vector or tensor, and how are components carried and ordered?", "kind": "definition", "answer_data": [ "value arity and type", "component ordering convention", "per-component unit if components differ" ] }, { "id": "vrb-q3", "text": "Is the value/reference pair enforced as atomic, so that no write path can set one without the other?", "kind": "constraint", "answer_data": [ "atomicity constraint statement", "enforcement point", "behaviour on partial write" ] } ], "data_elements": [ { "id": "numeric-value", "name": "Numerical quantity value", "description": "The number component of the quantity value, carried in a representation that preserves the source precision.", "value_kind": "number", "cardinality": "1", "required": true, "source_refs": [ "SRC-002", "SRC-009" ] }, { "id": "reference-type", "name": "Reference type", "description": "Whether the reference is a measurement unit, a measurement procedure or a reference material.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-002" ] }, { "id": "value-components", "name": "Vector or tensor components", "description": "Ordered component values for a vector or tensor quantity, each a number sharing or overriding the parent reference.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-002" ] } ], "artifacts": [], "inline_only_rationale": "This is the irreducible inline payload of the mixin. Externalising the number or reference into a separate artifact would break the atomicity the finding exists to enforce." }, { "id": "value-forms-and-bounds", "name": "Value forms, bounds and comparators", "description": "A quantity value is not always a point. FHIR provides a comparator element (<, <=, >=, >, plus ad-hoc statistical markers) that modifies the meaning of the value, and separate Range and Ratio types; SimpleQuantity forbids the comparator. schema.org QuantitativeValue offers minValue and maxValue for intervals. Detection limits, censored values, values outside the measuring interval and rate expressions all need an explicit form so that a consumer never mistakes a bound for a point estimate.", "source_refs": [ "SRC-009", "SRC-014", "SRC-002" ], "questions": [ { "id": "vfb-q1", "text": "Is this value a point, a one-sided bound, an interval, or a ratio of two quantities?", "kind": "classification", "answer_data": [ "value form code", "comparator symbol if bounded", "numerator and denominator quantities if a ratio" ] }, { "id": "vfb-q2", "text": "For an interval, are the bounds inclusive, and must both bounds share the same unit?", "kind": "constraint", "answer_data": [ "lower bound with inclusivity", "upper bound with inclusivity", "same-unit enforcement rule" ] }, { "id": "vfb-q3", "text": "How is a result below a detection limit or outside the measuring interval encoded so it is not aggregated as a point value?", "kind": "exception", "answer_data": [ "censoring indicator", "limit value and direction", "aggregation exclusion rule" ] }, { "id": "vfb-q4", "text": "Which value forms are prohibited in this property slot?", "kind": "validation", "answer_data": [ "permitted value form list", "rejection behaviour", "profile clause enforcing the restriction" ] } ], "data_elements": [ { "id": "value-form", "name": "Value form", "description": "Whether the value is a point, bounded, interval, ratio or censored result.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-009", "SRC-014" ] }, { "id": "value-comparator", "name": "Comparator", "description": "Operator that modifies the meaning of the numeric value when the true value is known only to be above or below it.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "value-bounds", "name": "Interval bounds", "description": "Lower and upper bounds with explicit inclusivity, sharing the parent unit.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-014", "SRC-009" ] } ], "artifacts": [], "inline_only_rationale": "Value form, comparator and bounds are inline structural variants of the same embedded value object; no separately identified artifact is produced or exchanged." } ] }, { "id": "numeric-representation", "name": "Numeric representation and fidelity", "description": "How the number survives storage, serialisation and arithmetic without silent loss of meaning.", "source_refs": [ "SRC-009", "SRC-010", "SRC-011" ], "findings": [ { "id": "precision-rounding-exactness", "name": "Precision, rounding and exactness", "description": "FHIR states that a Quantity value 'includes an implicit precision in the presentation of the value' and that 0.010 is regarded as different from 0.01, so trailing zeros are semantically significant and must be preserved. ISO 80000-1:2022 specifies rules for rounding of numbers, and NIST SP 811 gives rules for expressing values of quantities. Binary floating-point representation destroys both trailing-zero precision and exact decimal round-trips, so the representation choice is a semantic decision, not an implementation detail. Some values are exact by definition (the SI defining constants, and defined conversions such as 1 in = 25.4 mm) and must never be rounded.", "source_refs": [ "SRC-009", "SRC-010", "SRC-011", "SRC-003" ], "questions": [ { "id": "pre-q1", "text": "How many significant digits are meaningful, and are trailing zeros preserved through storage and serialisation?", "kind": "measurement", "answer_data": [ "significant digit count", "trailing-zero preservation flag", "serialisation form that preserves it" ] }, { "id": "pre-q2", "text": "Is this value exact by definition or an approximation subject to rounding?", "kind": "quality", "answer_data": [ "exactness flag", "defining authority for an exact value", "rounding permitted or prohibited" ] }, { "id": "pre-q3", "text": "Which numeric representation is mandated to guarantee lossless round-trip, and what is the behaviour if a consumer cannot honour it?", "kind": "interoperability", "answer_data": [ "mandated representation (decimal string, arbitrary precision decimal, rational)", "prohibited representations", "degradation behaviour and required warning" ] }, { "id": "pre-q4", "text": "Which rounding rule applies when the value is scaled, converted or aggregated, and is the rounding recorded?", "kind": "constraint", "answer_data": [ "rounding rule identifier", "rounding recorded as provenance", "pre-rounding value retained or discarded" ] } ], "data_elements": [ { "id": "significant-digits", "name": "Significant digits", "description": "Number of digits in the value that carry measurement meaning, distinct from the digits used in storage.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-010" ] }, { "id": "exactness-flag", "name": "Exactness indicator", "description": "Whether the value is exact by definition and must not be rounded, or is an approximation.", "value_kind": "boolean", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-003", "SRC-011" ] }, { "id": "numeric-representation-form", "name": "Numeric representation form", "description": "Declared representation used to carry the number without loss, for example arbitrary-precision decimal string or exact rational.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-013" ] } ], "artifacts": [], "inline_only_rationale": "Precision and exactness are properties of the inline number itself. The only durable artifact in this area is the deployment's numeric-representation policy, which is governed under the service layers rather than duplicated as a finding artifact." } ] } ] }, { "id": "comparability-and-conversion", "name": "Comparability and conversion", "description": "When two quantity values may be compared, and how a value is transformed from one unit to another without silently corrupting its meaning.", "rationale": "UCUM defines commensurability as sharing a dimension while noting that commensurable units need not be equal, and separates proper units convertible by scalar factor from special units convertible only by function. QUDT supplies conversionMultiplier and conversionOffset, and its v3.4.0 release replaced ambiguous broader-than relations with an explicit commensurability framework — direct evidence that naive dimension matching is unsafe.", "source_refs": [ "SRC-005", "SRC-008", "SRC-007", "SRC-011" ], "layers": [ { "id": "comparability", "name": "Commensurability and comparison", "description": "The tests that decide whether two values may lawfully be compared, added or aggregated.", "source_refs": [ "SRC-005", "SRC-007", "SRC-002" ], "findings": [ { "id": "commensurability-and-equality", "name": "Commensurability, equality and comparison rules", "description": "UCUM treats two units as commensurable when they share the same dimension, while stressing that commensurable units need not be equal, and that equality forms a narrower equivalence class than commensurability. Arbitrary units form no equivalence classes at all and are incomparable even to other arbitrary units. QUDT v3.4.0 introduced explicit relations such as qudt:specializationOf and qudt:unitForQuantityKind precisely because dimensional matching alone produced wrong equivalences. Comparison of values carrying uncertainty is a further distinct decision that must not default to bare numeric comparison.", "source_refs": [ "SRC-005", "SRC-007", "SRC-002", "SRC-012" ], "questions": [ { "id": "com-q1", "text": "Are the two units commensurable, and by which test — equal dimension, equal quantity kind, or both?", "kind": "relationship", "answer_data": [ "commensurability test applied", "test outcome", "dimension and kind of each operand" ] }, { "id": "com-q2", "text": "Does commensurability alone authorise comparison here, or is agreement on quantity kind also required?", "kind": "constraint", "answer_data": [ "comparison precondition set", "kind-agreement requirement flag", "documented exceptions" ] }, { "id": "com-q3", "text": "How are equality and ordering defined when one or both values carry uncertainty or a comparator?", "kind": "decision", "answer_data": [ "comparison semantics for uncertain values", "treatment of comparators in ordering", "tie or overlap resolution rule" ] }, { "id": "com-q4", "text": "Which comparisons must be refused outright rather than approximated?", "kind": "exception", "answer_data": [ "prohibited comparison classes such as arbitrary-unit pairs", "refusal response", "escalation path" ] } ], "data_elements": [ { "id": "commensurability-result", "name": "Commensurability determination", "description": "Recorded outcome of a commensurability test between two units, with the test kind and the vocabulary version used.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005", "SRC-007" ] }, { "id": "comparison-semantics", "name": "Comparison semantics identifier", "description": "Named rule set governing equality and ordering for values of this kind, including uncertainty handling.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012", "SRC-005" ] } ], "artifacts": [], "inline_only_rationale": "A commensurability determination is a derived computation over pinned registry data; persisting it as an artifact would create a cache that silently ages when the registry version changes." } ] }, { "id": "conversion-mechanics", "name": "Conversion mechanics and consequences", "description": "The parameters and functions that convert values between units, and the provenance and loss that conversion creates.", "source_refs": [ "SRC-008", "SRC-005", "SRC-011", "SRC-013" ], "findings": [ { "id": "conversion-functions", "name": "Linear and non-linear conversion", "description": "QUDT expresses conversion as qudt:conversionMultiplier with an optional qudt:conversionOffset relative to the coherent SI unit of the kind. UCUM distinguishes proper units, where conversion factors derive from dimensional analysis over its base set (meter, second, gram, radian, kelvin, coulomb, candela), from special units on non-ratio scales such as degree Celsius, which require mathematical functions rather than scalar multiplication. The critical trap is that converting a point on an interval scale and converting a difference on the same scale use different rules: a temperature difference of 5 °C is 5 K, but a temperature of 5 °C is 278.15 K.", "source_refs": [ "SRC-008", "SRC-005", "SRC-011", "SRC-001" ], "questions": [ { "id": "cnv-q1", "text": "What multiplier and offset convert this unit to the coherent SI unit of its quantity kind?", "kind": "measurement", "answer_data": [ "conversion multiplier", "conversion offset", "target coherent SI unit" ] }, { "id": "cnv-q2", "text": "Does the unit require a non-linear conversion function rather than multiplier and offset?", "kind": "constraint", "answer_data": [ "special-unit flag", "conversion function identifier and parameters", "function domain restrictions" ] }, { "id": "cnv-q3", "text": "Is this value a point on the scale or a difference, and which conversion rule therefore applies?", "kind": "decision", "answer_data": [ "point-or-difference designation", "conversion rule selected", "offset applied or suppressed" ] }, { "id": "cnv-q4", "text": "Which authority publishes the conversion factor, at what version, and is the factor exact or rounded?", "kind": "authority", "answer_data": [ "publishing authority and document", "version or edition", "exact or rounded designation with digits" ] } ], "data_elements": [ { "id": "conversion-multiplier", "name": "Conversion multiplier", "description": "Factor converting a value in this unit to the coherent SI unit of the same quantity kind.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008", "SRC-011" ] }, { "id": "conversion-offset", "name": "Conversion offset", "description": "Additive offset applied after the multiplier for units on non-zero-origin scales.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-008" ] }, { "id": "conversion-function-ref", "name": "Conversion function reference", "description": "Identifier and parameters of a non-linear conversion function required by a special unit.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005" ] }, { "id": "point-or-difference", "name": "Point or difference designation", "description": "Whether the value denotes a point on the scale or a difference, selecting whether the offset applies.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-005", "SRC-001" ] } ], "artifacts": [ { "id": "conversion-factor-table", "name": "Pinned conversion factor table", "description": "The set of conversion multipliers, offsets and function references in force for a deployment, pinned to named authority editions so that a historical conversion can be reproduced exactly.", "media_or_form": [ "tabular data", "RDF graph", "versioned reference dataset" ], "serial": true, "identity_strategy": "Governed IRI plus monotonically increasing release number in the adopting Dimension namespace; each row cites its upstream authority document and edition.", "source_refs": [ "SRC-008", "SRC-011", "SRC-001" ] } ], "inline_only_rationale": null }, { "id": "conversion-provenance-and-loss", "name": "Conversion provenance and information loss", "description": "Every conversion is a derivation that can lose information. A converted value that overwrites the original destroys the ability to audit or reverse the transformation, and rounding after conversion silently changes the implied precision. D-SI carries value, unit and uncertainty as a single payload precisely so that a transformed result remains metrologically interpretable. Round-trip conversion through binary floating point is frequently not idempotent.", "source_refs": [ "SRC-013", "SRC-009", "SRC-012", "SRC-011" ], "questions": [ { "id": "cpl-q1", "text": "Is the stored value the value as originally reported, or a derivative produced by conversion?", "kind": "provenance", "answer_data": [ "original or derived designation", "source value and source unit", "conversion agent and timestamp" ] }, { "id": "cpl-q2", "text": "What precision or uncertainty was lost in the conversion, and is the pre-conversion value retained?", "kind": "quality", "answer_data": [ "pre-conversion significant digits", "post-conversion significant digits", "retention decision for the original" ] }, { "id": "cpl-q3", "text": "Is the conversion reversible without drift, and is a round-trip check required before the result is accepted?", "kind": "validation", "answer_data": [ "round-trip test outcome", "tolerance for round-trip deviation", "action on failure" ] } ], "data_elements": [ { "id": "source-quantity-ref", "name": "Source quantity value", "description": "The originally reported value and unit from which a converted value was derived.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-013", "SRC-009" ] }, { "id": "conversion-event-time", "name": "Conversion timestamp", "description": "RFC 3339 timestamp with explicit offset or Z recording when the conversion was performed.", "value_kind": "timestamp", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016" ] }, { "id": "conversion-loss-note", "name": "Conversion loss note", "description": "Recorded statement of precision, uncertainty or scale information lost or approximated during conversion.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012", "SRC-011" ] } ], "artifacts": [], "inline_only_rationale": "Conversion provenance is inline metadata attached to the derived value so it travels with it; separating it into an artifact would let a converted value circulate without its own derivation record." } ] } ] }, { "id": "quality-uncertainty-and-validation", "name": "Quality, uncertainty and validation", "description": "How confidence in the value is stated, how tolerance and conformity decisions are separated from measurement uncertainty, and how constraints and validation outcomes are recorded.", "rationale": "The GUM defines the normative vocabulary for stating uncertainty; VIM separates measurement uncertainty from tolerance. Conflating the two produces invalid conformity decisions. Constraint specification and explicit validation outcomes are what make a quantity value safe for automated consumption.", "source_refs": [ "SRC-012", "SRC-002", "SRC-009", "SRC-013" ], "layers": [ { "id": "uncertainty-and-tolerance", "name": "Uncertainty and tolerance", "description": "Stating dispersion attributable to measurement, and separately stating the permitted interval a value must fall within.", "source_refs": [ "SRC-012", "SRC-002", "SRC-013" ], "findings": [ { "id": "uncertainty-expression", "name": "Measurement uncertainty expression", "description": "The GUM defines standard uncertainty as the standard deviation characterising the dispersion of values attributable to the measurand, evaluated by Type A (statistical analysis of repeated observations) or Type B (other means such as certificates or expert judgement) methods, combined into a combined standard uncertainty and optionally multiplied by a coverage factor k to give an expanded uncertainty with a stated coverage probability. A reported uncertainty without its type, coverage factor and coverage probability is uninterpretable. D-SI carries these as structured fields alongside value and unit.", "source_refs": [ "SRC-012", "SRC-013", "SRC-002" ], "questions": [ { "id": "unc-q1", "text": "Is the reported uncertainty a standard uncertainty, a combined standard uncertainty or an expanded uncertainty?", "kind": "measurement", "answer_data": [ "uncertainty type code", "uncertainty numeric value", "unit of the uncertainty or relative flag" ] }, { "id": "unc-q2", "text": "For an expanded uncertainty, what coverage factor and coverage probability apply, and how was the factor chosen?", "kind": "measurement", "answer_data": [ "coverage factor k", "coverage probability", "basis for choosing k, including effective degrees of freedom if used" ] }, { "id": "unc-q3", "text": "Were the contributing components evaluated by Type A or Type B methods, and is the evidence for Type B components recorded?", "kind": "evidence", "answer_data": [ "evaluation type per component", "evidence reference for Type B components", "assumed distribution where applicable" ] }, { "id": "unc-q4", "text": "Is the uncertainty expressed in the same unit as the value or as a relative quantity, and how is that declared?", "kind": "constraint", "answer_data": [ "absolute or relative designation", "unit of the uncertainty", "conversion rule between the two forms" ] } ], "data_elements": [ { "id": "uncertainty-value", "name": "Uncertainty value", "description": "Numeric magnitude of the reported uncertainty, in the same unit as the value or declared relative.", "value_kind": "quantity", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012", "SRC-013" ] }, { "id": "uncertainty-type", "name": "Uncertainty type", "description": "Standard, combined standard or expanded uncertainty per GUM terminology.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012" ] }, { "id": "coverage-factor", "name": "Coverage factor", "description": "Numerical factor k relating expanded uncertainty to combined standard uncertainty.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012" ] }, { "id": "coverage-probability", "name": "Coverage probability", "description": "Stated probability that the interval defined by the expanded uncertainty contains the measurand value.", "value_kind": "number", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012" ] } ], "artifacts": [ { "id": "uncertainty-budget", "name": "Uncertainty budget", "description": "Itemised statement of uncertainty components, their evaluation type, distributions, sensitivity coefficients and combination, substantiating the reported uncertainty. Referenced by the value rather than embedded in it.", "media_or_form": [ "structured record", "tabular budget", "calibration report section" ], "serial": false, "identity_strategy": "Identifier issued by the originating laboratory or calibration system where one exists; otherwise a governed IRI minted by the adopting Dimension, always paired with the measurement it substantiates.", "source_refs": [ "SRC-012", "SRC-013" ] } ], "inline_only_rationale": null }, { "id": "tolerance-and-conformity", "name": "Tolerance, specification limits and conformity decisions", "description": "Tolerance is a requirement imposed by a specification; measurement uncertainty is a property of the measurement. They have different owners, different lifecycles and different consequences, and must never be stored in the same field. A conformity decision — whether the value passes — depends additionally on a decision rule and any guard band, and is a separate assertion from either the value or its uncertainty.", "source_refs": [ "SRC-002", "SRC-012", "SRC-009", "SRC-010" ], "questions": [ { "id": "tol-q1", "text": "What tolerance or specification interval applies to this value, and which authority set it?", "kind": "requirement", "answer_data": [ "lower and upper specification limits with inclusivity", "specification document reference and version", "setting authority" ] }, { "id": "tol-q2", "text": "Is a conformity decision recorded, and what decision rule and guard band produced it?", "kind": "decision", "answer_data": [ "conformity outcome", "decision rule identifier", "guard band applied and its basis" ] }, { "id": "tol-q3", "text": "How does the record keep tolerance distinct from measurement uncertainty so neither is mistaken for the other?", "kind": "validation", "answer_data": [ "separate field designations", "cross-field validation rule", "detection of conflation" ] } ], "data_elements": [ { "id": "specification-limits", "name": "Specification limits", "description": "Lower and upper permitted values with inclusivity, expressed in the same unit as the value.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-010" ] }, { "id": "conformity-outcome", "name": "Conformity outcome", "description": "Recorded pass, fail or indeterminate decision against the specification limits.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012", "SRC-002" ] }, { "id": "decision-rule-ref", "name": "Decision rule reference", "description": "Identifier of the decision rule, including any guard band, used to reach the conformity outcome.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-012" ] } ], "artifacts": [], "inline_only_rationale": "The specification document that sets a tolerance belongs to a requirements or specification sibling model; this mixin carries only the limits in force and a reference to that document, so no artifact is produced here." }, { "id": "metrological-traceability-claim", "name": "Metrological traceability and evidence", "description": "VIM defines metrological traceability as a property of a measurement result whereby the result can be related to a reference through a documented unbroken chain of calibrations, each contributing to the measurement uncertainty. ISO 11240 requires units used in medicinal-product interchange to be traceable to international metrological standards and provides mapping structures among vocabularies. After 20 May 2019 the SI reference is the set of defining constants rather than artefacts such as the international prototype of the kilogram. Claims of traceability without a chain are not conformance.", "source_refs": [ "SRC-017", "SRC-022", "SRC-003" ], "questions": [ { "id": "metrological-traceability-claim-q01", "text": "To which international reference is this quantity value or unit claimed to be traceable, and is the calibration chain documented end to end?", "kind": "provenance", "answer_data": [ "traceability-reference", "chain-documented", "realisation-method" ] }, { "id": "metrological-traceability-claim-q02", "text": "What evidence artefacts support the traceability claim, such as a calibration certificate identifier, mise en pratique citation, or mapping table version?", "kind": "evidence", "answer_data": [ "evidence-artefact-ids", "certificate-id", "mapping-table-version" ] }, { "id": "metrological-traceability-claim-q03", "text": "Which organisation is responsible for maintaining the traceability claim, and under which accreditation or metrological authority?", "kind": "ownership", "answer_data": [ "responsible-organisation", "accreditation-reference", "authority-name" ] }, { "id": "metrological-traceability-claim-q04", "text": "Where does the chain stop, and is the result therefore only internally consistent rather than metrologically traceable?", "kind": "quality", "answer_data": [ "chain-break-description", "internal-only-flag" ] } ], "data_elements": [ { "id": "metrological-traceability-claim-data01", "name": "Traceability reference", "description": "Reference to an SI defining constant, a national standard, or another stated metrological reference.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-017", "SRC-003" ] }, { "id": "metrological-traceability-claim-data02", "name": "Calibration chain documented", "description": "True when an unbroken documented chain exists.", "value_kind": "boolean", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-017" ] }, { "id": "metrological-traceability-claim-data03", "name": "Calibration certificate identifier", "description": "Master identifier of a calibration certificate when one exists. Digital calibration certificate formats are an evidence gap if not supplied.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-017" ] }, { "id": "metrological-traceability-claim-data04", "name": "Responsible organisation", "description": "Organisation accountable for the traceability statement.", "value_kind": "text", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-022" ] } ], "artifacts": [ { "id": "metrological-traceability-claim-artifact01", "name": "Traceability record", "description": "Documented chain from the quantity value or unit to a stated international reference, including certificate identifiers and mapping versions.", "media_or_form": [ "PDF certificate", "JSON chain", "XML DCC if provided by host" ], "serial": true, "identity_strategy": "Certificate or chain master identifier from the issuing metrology body; Dimension UUID only as a local surrogate.", "source_refs": [ "SRC-017", "SRC-022" ] } ], "inline_only_rationale": null } ] }, { "id": "constraint-and-validation", "name": "Constraint specification and validation", "description": "The declarative constraints applied to a quantity slot and the recorded outcome of applying them.", "source_refs": [ "SRC-009", "SRC-008", "SRC-005" ], "findings": [ { "id": "constraints-and-validation-outcomes", "name": "Constraints, validation outcomes and exception handling", "description": "FHIR binds units through value sets on Quantity elements and restricts SimpleQuantity by forbidding a comparator; QUDT constrains admissible units per quantity kind through qudt:applicableUnit; UCUM conformance level determines whether an unrecognised expression can even be evaluated. A quantity slot needs a declared constraint set (allowed units, allowed value forms, plausibility range, cardinality, requiredness) and a recorded, re-evaluable validation outcome — because a value that passed under one registry release may fail under the next.", "source_refs": [ "SRC-009", "SRC-008", "SRC-005", "SRC-007" ], "questions": [ { "id": "cvo-q1", "text": "Which units and value forms are permitted for this quantity slot, and with what binding strength?", "kind": "constraint", "answer_data": [ "allowed unit value set and version", "allowed value form list", "binding strength (required, extensible, preferred, example)" ] }, { "id": "cvo-q2", "text": "What plausibility range, cardinality and requiredness apply, and are they hard constraints or advisory warnings?", "kind": "validation", "answer_data": [ "plausibility lower and upper bounds", "cardinality", "hard or advisory severity per rule" ] }, { "id": "cvo-q3", "text": "What must a consumer do when the unit is unrecognised or a constraint fails — reject, quarantine, or accept with a flag?", "kind": "exception", "answer_data": [ "failure disposition per rule", "error code vocabulary", "quarantine destination and review owner" ] }, { "id": "cvo-q4", "text": "Is the validation outcome persisted, and is it re-evaluated when the bound registry release changes?", "kind": "state", "answer_data": [ "validation status and timestamp", "registry release the outcome was computed against", "re-evaluation trigger and cadence" ] } ], "data_elements": [ { "id": "allowed-unit-set", "name": "Allowed unit value set", "description": "Bound set of admissible unit codes for the slot, with the value set version and binding strength.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-008" ] }, { "id": "plausibility-range", "name": "Plausibility range", "description": "Advisory lower and upper bounds used to detect implausible values without asserting a specification limit.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "validation-status", "name": "Validation status", "description": "Recorded outcome of constraint evaluation, with severity, rule identifiers and the registry release evaluated against.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-007", "SRC-009" ] } ], "artifacts": [ { "id": "validation-report", "name": "Quantity validation report", "description": "Machine-readable record of constraint evaluation over a batch or stream of quantity values, listing rule identifiers, severities, failing values, the pinned registry and value set versions used, and the disposition applied.", "media_or_form": [ "structured report", "validation result set", "log record" ], "serial": false, "identity_strategy": "Governed IRI in the adopting Dimension namespace keyed by validation run, carrying an RFC 3339 run timestamp and the pinned registry release identifiers.", "source_refs": [ "SRC-009", "SRC-007", "SRC-016" ] } ], "inline_only_rationale": null } ] } ] }, { "id": "context-provenance-and-lifecycle", "name": "Context, provenance and lifecycle", "description": "The qualifiers that change how the same number and unit must be read, where the value came from, when it applies, and how it and its unit definitions change over time.", "rationale": "VIM 1.19 shows the reference may be a procedure or reference material, implying context-dependence; schema.org provides valueReference for exactly this; RFC 3339 fixes timestamp form; QUDT release history proves unit vocabularies change in breaking ways, so values must be pinned to the definitions in force when recorded.", "source_refs": [ "SRC-002", "SRC-014", "SRC-016", "SRC-007" ], "layers": [ { "id": "contextual-qualification", "name": "Contextual qualification", "description": "Reference conditions, denominators and other qualifiers without which the number and unit are ambiguous.", "source_refs": [ "SRC-014", "SRC-002", "SRC-010" ], "findings": [ { "id": "qualifiers-and-reference-conditions", "name": "Reference conditions and denominator context", "description": "The same number and unit can mean different things depending on context that is not encoded in either. Gas volumes depend on reference temperature and pressure; concentrations depend on the basis (dry weight, wet weight, per volume of what); rates depend on their denominator population and period; fuel consumption in L/100 km carries an implied per-distance basis. schema.org provides valueReference explicitly to carry such context, and unitText as a fallback where no code exists for compound expressions like 'L/100 km'. UCUM annotations can carry the denominator hint but are semantically void and discarded by conformant parsers, so they cannot be relied on for meaning.", "source_refs": [ "SRC-014", "SRC-005", "SRC-002", "SRC-010" ], "questions": [ { "id": "qrc-q1", "text": "Under which reference conditions is this value defined, and are those conditions recorded as structured data rather than free text?", "kind": "constraint", "answer_data": [ "reference temperature, pressure or other conditions as quantity values", "basis code such as dry or wet weight", "structured or free-text designation" ] }, { "id": "qrc-q2", "text": "For a rate or ratio, what is the denominator — per what entity, per what population, per what period?", "kind": "definition", "answer_data": [ "denominator entity or population definition", "denominator period", "denominator quantity value" ] }, { "id": "qrc-q3", "text": "Does a contextual qualifier change how the same number and unit must be interpreted, and is a consumer required to fail if it cannot interpret the qualifier?", "kind": "interoperability", "answer_data": [ "qualifier identifier and vocabulary", "interpretation impact statement", "fail-closed requirement flag" ] }, { "id": "qrc-q4", "text": "Is any semantic meaning being carried in a UCUM annotation that a conformant parser will discard?", "kind": "quality", "answer_data": [ "annotation content audit", "structured relocation target for that meaning", "remediation status" ] } ], "data_elements": [ { "id": "reference-conditions", "name": "Reference conditions", "description": "Structured conditions under which the value is defined, each itself a quantity value using this mixin.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-014", "SRC-010" ] }, { "id": "denominator-context", "name": "Denominator context", "description": "Definition of the denominator entity, population or period for a rate or ratio value.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-014", "SRC-009" ] }, { "id": "value-reference-qualifier", "name": "Value reference qualifier", "description": "Reference to a further structured value that qualifies interpretation, equivalent in role to schema.org valueReference.", "value_kind": "reference", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-014" ] } ], "artifacts": [ { "id": "reference-condition-definition", "name": "Reference condition definition record", "description": "Named, versioned definition of a set of reference conditions (for example a standard temperature and pressure basis) that many values cite, so the basis can be revised without silently reinterpreting historical values.", "media_or_form": [ "structured record", "registry entry", "normative document reference" ], "serial": false, "identity_strategy": "Authoritative identifier from the defining standards body where one exists; otherwise a governed IRI in the adopting Dimension namespace with an explicit version.", "source_refs": [ "SRC-010", "SRC-014" ] } ], "inline_only_rationale": null } ] }, { "id": "provenance-and-time", "name": "Provenance and time", "description": "Where the value came from, by what means, and the separate times at which the phenomenon occurred and the value was recorded.", "source_refs": [ "SRC-002", "SRC-016", "SRC-015" ], "findings": [ { "id": "value-derivation-provenance", "name": "Value origin and derivation", "description": "Whether a value was measured, computed, estimated, asserted, defaulted or converted determines what may be inferred from it. SOSA distinguishes the observation act from its result and delegates the result's encoding; the mixin therefore carries a compact origin statement plus a reference to the fuller observation or calculation record in the sibling model. VIM 2.41 metrological traceability is a claim requiring an unbroken documented calibration chain, so it must be recorded as a referenced claim with evidence, never asserted by default.", "source_refs": [ "SRC-002", "SRC-015", "SRC-013" ], "questions": [ { "id": "vdp-q1", "text": "Was this value measured, computed, estimated, asserted, defaulted or converted?", "kind": "provenance", "answer_data": [ "origin category code", "originating agent or system identifier", "reference to the observation or calculation record" ] }, { "id": "vdp-q2", "text": "If computed, from which input quantity values and by which documented method or expression?", "kind": "process", "answer_data": [ "input value references", "method or expression identifier and version", "execution timestamp" ] }, { "id": "vdp-q3", "text": "Is a metrological traceability claim made, and what documented calibration evidence supports it?", "kind": "evidence", "answer_data": [ "traceability claim flag", "reference standard or certificate identifier", "evidence document reference" ] } ], "data_elements": [ { "id": "origin-category", "name": "Origin category", "description": "How the value came into existence: measured, computed, estimated, asserted, defaulted or converted.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-015" ] }, { "id": "originating-agent", "name": "Originating agent", "description": "Identifier of the person, device, service or model that produced the value.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-015" ] }, { "id": "traceability-claim-ref", "name": "Traceability claim reference", "description": "Reference to the calibration or reference-standard evidence supporting a metrological traceability claim.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-002", "SRC-012" ] } ], "artifacts": [], "inline_only_rationale": "Provenance here is a compact inline pointer set. The substantive artifacts — observation records, calculation specifications and calibration certificates — are owned by sibling models and referenced by identifier, so duplicating them here would fork the record of truth." }, { "id": "event-time-and-record-time", "name": "Event time versus observation and record time", "description": "A quantity value has at least two distinct times: when the phenomenon it describes occurred or held, and when the value was observed, ingested or recorded. Conflating them makes late-arriving data, backfills and corrections indistinguishable from real change. RFC 3339 fixes the format: seconds are required and an offset must be present, with 'Z' meaning UTC and '-00:00' explicitly meaning that UTC is known but the local offset is not — a distinction that must be preserved rather than normalised away.", "source_refs": [ "SRC-016", "SRC-009", "SRC-002" ], "questions": [ { "id": "etr-q1", "text": "When did the phenomenon the value describes occur or hold, and when was the value observed or ingested?", "kind": "temporal", "answer_data": [ "event time or validity interval", "observation or ingestion time", "source of each timestamp" ] }, { "id": "etr-q2", "text": "Are both timestamps RFC 3339 with seconds and an explicit offset or Z, and is '-00:00' preserved where the local offset is unknown?", "kind": "temporal", "answer_data": [ "timestamp format conformance flag", "offset handling policy", "unknown-offset preservation flag" ] }, { "id": "etr-q3", "text": "Over what interval is the value valid, and does it expire or require refresh?", "kind": "state", "answer_data": [ "validity interval start and end", "expiry or refresh policy", "behaviour after expiry" ] }, { "id": "etr-q4", "text": "How is a late-arriving or backfilled value distinguished from a genuine change in the measured quantity?", "kind": "event", "answer_data": [ "arrival versus event time delta", "backfill indicator", "supersession relationship to prior values" ] } ], "data_elements": [ { "id": "event-time", "name": "Event time", "description": "RFC 3339 timestamp, with seconds and explicit offset or Z, for when the described phenomenon occurred or held.", "value_kind": "timestamp", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016" ] }, { "id": "record-time", "name": "Observation or ingestion time", "description": "RFC 3339 timestamp for when the value was observed, received or recorded by the holding system.", "value_kind": "timestamp", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016" ] }, { "id": "validity-interval", "name": "Validity interval", "description": "Interval over which the value is asserted to hold, with explicit start and end or an open end.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-016", "SRC-009" ] } ], "artifacts": [], "inline_only_rationale": "Timestamps are inline attributes of the value record. Calendar and interval semantics beyond the RFC 3339 lexical form belong to the temporal sibling model and are referenced rather than restated." } ] }, { "id": "versioning-and-correction", "name": "Versioning, deprecation and correction", "description": "How changes to unit definitions and to recorded values are handled without retroactively falsifying history.", "source_refs": [ "SRC-007", "SRC-006", "SRC-004", "SRC-001" ], "findings": [ { "id": "registry-version-and-value-correction", "name": "Registry versioning, deprecation and value correction", "description": "Unit vocabularies change in ways that alter meaning: QUDT v3.4.0 replaced ambiguous broader-than relations with an explicit commensurability framework and v3.5.0 redefined BIT, BYTE and OCTET as counting units; CGPM 2022 extended the prefix set; UN/CEFACT Rec 20 has reached Revision 17; the SI itself was redefined in 2019 in terms of exact defining constants. Values must therefore record the registry release in force when they were created, and the model must state whether historical values are reinterpreted under new definitions or frozen. Separately, a corrected value needs an explicit disposition — in-place amendment, superseding version, or retraction — because silent overwrite destroys auditability.", "source_refs": [ "SRC-007", "SRC-004", "SRC-006", "SRC-001", "SRC-003" ], "questions": [ { "id": "rvc-q1", "text": "Which registry release supplied the unit definition in force when this value was created?", "kind": "provenance", "answer_data": [ "registry identifier and release tag", "release date", "pinning mechanism" ] }, { "id": "rvc-q2", "text": "Has the unit code since been deprecated, redefined or reclassified, and what is the successor and migration rule?", "kind": "lifecycle", "answer_data": [ "deprecation status and date", "successor code", "migration rule and whether it is value-affecting" ] }, { "id": "rvc-q3", "text": "Are historical values reinterpreted under a new unit definition, or frozen at the version of record?", "kind": "decision", "answer_data": [ "reinterpretation policy", "affected value population", "notification obligation to consumers" ] }, { "id": "rvc-q4", "text": "When a value is corrected, is it amended in place, superseded by a new version, or retracted — and what remains visible?", "kind": "state", "answer_data": [ "correction disposition", "supersession or retraction link", "visibility of the prior value and its reason" ] } ], "data_elements": [ { "id": "registry-release-pin", "name": "Registry release pin", "description": "Identifier and release tag of each unit or quantity-kind registry release the value was resolved against.", "value_kind": "collection", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-007", "SRC-006" ] }, { "id": "unit-lifecycle-status", "name": "Unit lifecycle status", "description": "Status of the unit code in its registry: active, deprecated, redefined, withdrawn, or replaced.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-007", "SRC-006" ] }, { "id": "correction-disposition", "name": "Correction disposition", "description": "How a change to a recorded value was applied: amended, superseded or retracted, with a reason code.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] } ], "artifacts": [ { "id": "registry-release-manifest", "name": "Pinned registry release manifest", "description": "Manifest listing every external unit, quantity-kind and value-set release the deployment has pinned, with release tags, retrieval timestamps, content digests and the breaking changes noted between releases.", "media_or_form": [ "manifest record", "lock file", "versioned reference dataset" ], "serial": true, "identity_strategy": "Governed IRI plus monotonically increasing manifest sequence number; each entry keyed by upstream registry URI, release tag and content digest.", "source_refs": [ "SRC-007", "SRC-006", "SRC-005" ] }, { "id": "deprecation-and-migration-notice", "name": "Unit deprecation and migration notice", "description": "Notice issued when a pinned unit code is deprecated or redefined upstream, stating the successor code, whether the change is value-affecting, the affected value population and the remediation deadline.", "media_or_form": [ "notice record", "change log entry", "machine-readable migration rule" ], "serial": true, "identity_strategy": "Governed IRI with a sequential notice number, carrying an RFC 3339 issue timestamp and references to the affected registry release manifest entries.", "source_refs": [ "SRC-007", "SRC-004", "SRC-006" ] } ], "inline_only_rationale": null } ] } ] }, { "id": "interoperability-and-embedding", "name": "Interoperability, embedding and disclosure", "description": "How this mixin aligns with external standards without over-claiming conformance, how it is bound into exchanges, how it embeds in host records, and what access and retention rules attach to the values it carries.", "rationale": "Multiple credible unit vocabularies exist with genuine conflicts — schema.org places currency codes in unitCode, UCUM conformance levels change equality semantics, QUDT and UCUM have diverged on information units. Alignment must be recorded as alignment with strength and conflicts, never as conformance without evidence.", "source_refs": [ "SRC-014", "SRC-005", "SRC-007", "SRC-009" ], "layers": [ { "id": "external-alignment", "name": "External alignment and binding", "description": "Recorded mappings to external vocabularies with strength and conflicts, and the profile bindings that govern a given exchange.", "source_refs": [ "SRC-005", "SRC-006", "SRC-008", "SRC-009", "SRC-014" ], "findings": [ { "id": "alignment-and-conflicts", "name": "Standard alignment and conflict register", "description": "This model aligns to, and does not subsume, UCUM (machine grammar), UN/CEFACT Rec 20 (trade common codes), QUDT (IRIs, dimensions and conversion parameters), ISO 80000 and the SI Brochure (normative quantity and unit semantics), FHIR (a deployed binding) and schema.org (a web projection). Real conflicts must be registered rather than smoothed over: schema.org documents currency codes in unitCode although a currency has no quantity dimension; QUDT reclassified information units between releases; UCUM full versus limited conformance changes whether 'km' equals '1000.m'; and NIST SP 811 remains at its 2008 edition, predating the 2019 SI revision.", "source_refs": [ "SRC-005", "SRC-006", "SRC-008", "SRC-009", "SRC-014", "SRC-011", "SRC-007" ], "questions": [ { "id": "alc-q1", "text": "To which external vocabularies is this unit or quantity kind aligned, and is each mapping exact, broader, narrower or approximate?", "kind": "interoperability", "answer_data": [ "target vocabulary and version", "target term identifier", "mapping strength and direction" ] }, { "id": "alc-q2", "text": "Where do the aligned standards conflict, and what resolution has been recorded for this deployment?", "kind": "exception", "answer_data": [ "conflict description and affected terms", "standards in conflict with clause references", "chosen resolution and its rationale" ] }, { "id": "alc-q3", "text": "Is conformance to a named standard being claimed, and what evidence substantiates the claim?", "kind": "evidence", "answer_data": [ "standard and clause claimed", "conformance evidence reference", "scope and limits of the claim" ] }, { "id": "alc-q4", "text": "Which alignments are advisory only and must not be used to drive automated conversion?", "kind": "constraint", "answer_data": [ "advisory alignment list", "prohibited automated uses", "enforcement mechanism" ] } ], "data_elements": [ { "id": "alignment-mapping", "name": "Alignment mapping", "description": "Mapping from a local unit or quantity kind to an external vocabulary term, with target version, mapping strength and direction.", "value_kind": "object", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-008", "SRC-005", "SRC-006" ] }, { "id": "conformance-claim", "name": "Conformance claim", "description": "Explicit statement of conformance to a named standard clause, with supporting evidence and stated scope limits.", "value_kind": "object", "cardinality": "0..n", "required": false, "source_refs": [ "SRC-005", "SRC-009" ] } ], "artifacts": [ { "id": "alignment-and-conflict-register", "name": "Alignment and conflict register", "description": "Maintained register of every external alignment with its strength and pinned target version, alongside a dated list of known conflicts between aligned standards and the resolution adopted for each.", "media_or_form": [ "structured register", "mapping set", "change-tracked document" ], "serial": false, "identity_strategy": "Governed IRI in the adopting Dimension namespace, versioned by release; each row keyed by local term identifier plus target vocabulary URI and version.", "source_refs": [ "SRC-005", "SRC-008", "SRC-014", "SRC-011" ] } ], "inline_only_rationale": null }, { "id": "profile-binding-and-negotiation", "name": "Profile binding and exchange negotiation", "description": "A generic Quantity is rarely safe on the wire; it is made safe by a profile. FHIR demonstrates this with SimpleQuantity forbidding a comparator, with unit value-set bindings on specific elements, and with typed profiles (Age, Duration, Count, Distance, MoneyQuantity). An exchange must therefore state which profile applies, which value set binds the unit, the binding strength, and what happens when a partner sends something outside it — including whether the receiver fails closed or accepts with a flag.", "source_refs": [ "SRC-009", "SRC-005", "SRC-014" ], "questions": [ { "id": "pbn-q1", "text": "Which profile and unit value set bind this quantity slot in this exchange, and at what binding strength?", "kind": "constraint", "answer_data": [ "profile identifier and version", "bound value set and version", "binding strength" ] }, { "id": "pbn-q2", "text": "How was the binding agreed with the exchange partner, and where is that agreement recorded?", "kind": "interoperability", "answer_data": [ "agreement reference and effective date", "parties and their roles", "change notification procedure" ] }, { "id": "pbn-q3", "text": "What is the receiver's behaviour when a value arrives outside the bound value set or violates the profile?", "kind": "exception", "answer_data": [ "fail-closed or accept-with-flag decision", "rejection response format", "reconciliation path" ] } ], "data_elements": [ { "id": "profile-id", "name": "Profile identifier", "description": "Identifier and version of the profile constraining the quantity slot in a given exchange.", "value_kind": "identifier", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "binding-strength", "name": "Binding strength", "description": "Whether the bound unit value set is required, extensible, preferred or example.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "nonconformance-disposition", "name": "Non-conformance disposition", "description": "Declared receiver behaviour for values outside the bound value set or profile.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-005" ] } ], "artifacts": [ { "id": "profile-binding-declaration", "name": "Profile and value-set binding declaration", "description": "Machine-readable declaration of the profiles, unit value sets, binding strengths and non-conformance dispositions in force for a named exchange, with effective dates.", "media_or_form": [ "capability or profile declaration", "value set definition", "interface contract" ], "serial": false, "identity_strategy": "Governed IRI plus version in the adopting Dimension namespace; where an interoperability framework already issues canonical profile URLs, that identifier is authoritative.", "source_refs": [ "SRC-009", "SRC-005" ] } ], "inline_only_rationale": null } ] }, { "id": "embedding-and-disclosure", "name": "Embedding and disclosure", "description": "How the mixin attaches to host records and what the host must decide about access, disclosure and retention of the values it carries.", "source_refs": [ "SRC-009", "SRC-015", "SRC-013" ], "findings": [ { "id": "mixin-embedding-contract", "name": "Mixin embedding contract", "description": "The registry marks this model as an EMBED value object. Embedding rather than referencing means the quantity has no independent identity or lifecycle: it is created, versioned, secured and deleted with its host. FHIR's Quantity is a datatype, not a resource, for the same reason, and SOSA delegates result encoding to whatever vocabulary the host adopts. The contract must state the minimum field set every embedding carries, which host responsibilities are inherited rather than restated, and the narrow conditions under which a quantity may instead be referenced by identifier — for example a shared reference condition or a defining constant reused across many records.", "source_refs": [ "SRC-009", "SRC-015", "SRC-013", "SRC-008" ], "questions": [ { "id": "mec-q1", "text": "Is the quantity embedded as a value object in the host record, or referenced by identifier, and what justifies the choice?", "kind": "composition", "answer_data": [ "embed or reference decision", "justification", "referenced object identifier if referenced" ] }, { "id": "mec-q2", "text": "Which fields are mandatory in every embedding, and which are conditionally required by scale type or origin?", "kind": "requirement", "answer_data": [ "mandatory field set", "conditional requirement rules", "minimum viable embedding example" ] }, { "id": "mec-q3", "text": "Does the embedded quantity inherit the host record's identity, versioning and audit trail, or does it carry its own?", "kind": "identity", "answer_data": [ "identity inheritance statement", "versioning inheritance statement", "audit trail location" ] }, { "id": "mec-q4", "text": "Which host-model responsibilities are explicitly delegated so this mixin does not restate them?", "kind": "ownership", "answer_data": [ "delegated responsibility list", "host model reference", "non-duplication assertion" ] } ], "data_elements": [ { "id": "embedding-mode", "name": "Embedding mode", "description": "Whether the quantity is embedded in the host record or referenced by identifier.", "value_kind": "code", "cardinality": "1", "required": true, "source_refs": [ "SRC-009", "SRC-008" ] }, { "id": "mandatory-field-set", "name": "Mandatory field set", "description": "The minimum fields that must be present in any embedding for the value to be interpretable.", "value_kind": "collection", "cardinality": "1..n", "required": true, "source_refs": [ "SRC-009", "SRC-013" ] }, { "id": "host-record-ref", "name": "Host record reference", "description": "Identifier of the record that owns the embedded quantity and from which it inherits identity and lifecycle.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-015" ] } ], "artifacts": [ { "id": "embedding-conformance-profile", "name": "Embedding conformance profile", "description": "Declaration of the mandatory and conditional field set for embeddings of this mixin in a given host model, with the inherited-responsibility list and worked minimal examples in at least one concrete projection.", "media_or_form": [ "profile declaration", "schema fragment", "conformance example set" ], "serial": false, "identity_strategy": "Governed IRI plus version in the adopting Dimension namespace, keyed by host model identifier and mixin version.", "source_refs": [ "SRC-009", "SRC-013" ] } ], "inline_only_rationale": null }, { "id": "access-disclosure-and-retention", "name": "Access, disclosure and retention of quantity values", "description": "A quantity value is small but not neutral. Precise numeric values can re-identify individuals, reveal protected attributes, or disclose commercially sensitive process parameters, and precision reduction or banding is a recognised disclosure control that itself changes the value's meaning and must be recorded as a derivation. No consulted primary metrology or units standard addresses access control or retention for quantity values, so these rules are inherited from the host model and from the adopting Dimension's policy — this finding exists to make that delegation explicit and auditable rather than implicit.", "source_refs": [ "SRC-009", "SRC-015", "SRC-013" ], "questions": [ { "id": "adr-q1", "text": "Can this numeric value, alone or combined with others, re-identify a person or reveal a controlled attribute?", "kind": "privacy", "answer_data": [ "sensitivity assessment outcome", "re-identification risk factors considered", "controlling policy reference" ] }, { "id": "adr-q2", "text": "Which access rule applies to the numeric value as against its unit and quantity-kind metadata?", "kind": "access", "answer_data": [ "access rule for the value", "access rule for the metadata", "separation enforcement point" ] }, { "id": "adr-q3", "text": "Under which retention rule is the value deleted, and is the unit and provenance metadata retained so remaining data stays interpretable?", "kind": "retention", "answer_data": [ "retention period and trigger", "deletion scope (value only or whole embedding)", "metadata retained after deletion" ] }, { "id": "adr-q4", "text": "Is precision reduction, banding or perturbation applied as a disclosure control, and is that transformation recorded as provenance?", "kind": "security", "answer_data": [ "disclosure control technique and parameters", "recorded derivation from the original value", "audit entry for the transformation" ] } ], "data_elements": [ { "id": "sensitivity-classification", "name": "Sensitivity classification", "description": "Classification of the value's disclosure sensitivity, assigned by the host model's policy.", "value_kind": "code", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "retention-rule-ref", "name": "Retention rule reference", "description": "Reference to the retention rule governing the value, including trigger, period and deletion scope.", "value_kind": "reference", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009" ] }, { "id": "disclosure-control-applied", "name": "Disclosure control applied", "description": "Record of any precision reduction, banding or perturbation applied to the value before release, with parameters.", "value_kind": "object", "cardinality": "0..1", "required": false, "source_refs": [ "SRC-009", "SRC-013" ] } ], "artifacts": [ { "id": "disclosure-and-retention-policy-record", "name": "Disclosure and retention policy record", "description": "Policy record binding sensitivity classifications to access rules, retention periods, deletion scope and permitted disclosure-control techniques for quantity values in a given Dimension, with effective dates and approving authority.", "media_or_form": [ "policy record", "governance document", "machine-readable rule set" ], "serial": false, "identity_strategy": "Governed IRI plus version in the adopting Dimension namespace; where an enterprise policy register issues authoritative identifiers, that identifier takes precedence.", "source_refs": [ "SRC-009" ] } ], "inline_only_rationale": null } ] } ] } ] }, "functions": [ { "id": "resolve-unit", "name": "Resolve unit reference", "description": "Resolve a unit code, expression or display string to a pinned registry entry yielding the canonical expression, quantity kind, dimension vector, system membership and conversion parameters.", "inputs": [ "unit code or expression as received", "code system URI and pinned version", "expected quantity kind if constrained" ], "outputs": [ "canonical unit expression", "resolved unit registry entry reference", "dimension vector and quantity kind", "resolution status with reason code" ], "preconditions": [ "A registry release is pinned and retrievable", "The parser conformance level is declared" ], "effects": [ "Records the registry release and resolution timestamp against the value", "Raises an unresolved-unit exception with the declared disposition when no entry matches" ], "source_refs": [ "SRC-005", "SRC-006", "SRC-008", "SRC-007" ] }, { "id": "parse-unit-expression", "name": "Parse and canonicalise unit expression", "description": "Parse a compound unit expression under the pinned grammar, discard curly-brace annotations for semantic purposes, and emit a deterministic canonical form for equality and commensurability testing.", "inputs": [ "unit expression string", "grammar version and conformance level" ], "outputs": [ "canonical unit expression", "extracted annotations", "parse diagnostics" ], "preconditions": [ "Expression is in the character set the grammar admits", "Conformance level is full where semantic equality is required" ], "effects": [ "Preserves the verbatim source expression alongside the canonical form", "Rejects or quarantines unparseable expressions per the declared disposition" ], "source_refs": [ "SRC-005" ] }, { "id": "check-commensurability", "name": "Check commensurability and comparability", "description": "Determine whether two quantity values may lawfully be compared, added or aggregated, testing dimension equality, quantity-kind agreement and scale-type compatibility, and refusing arbitrary-unit pairs outright.", "inputs": [ "two resolved quantity values", "required test strictness" ], "outputs": [ "comparability determination with the test applied", "refusal reason when not comparable" ], "preconditions": [ "Both units resolved against the same pinned registry release", "Scale types are known for both operands" ], "effects": [ "Blocks the downstream operation when comparability fails", "Emits a diagnostic naming the failing test" ], "source_refs": [ "SRC-005", "SRC-007", "SRC-002" ] }, { "id": "convert-quantity", "name": "Convert quantity value", "description": "Convert a value to a target unit using the pinned multiplier and offset, or a declared non-linear function for special units, applying the point-versus-difference rule and recording the derivation.", "inputs": [ "source quantity value", "target unit", "point or difference designation", "rounding rule" ], "outputs": [ "converted quantity value", "conversion provenance record", "precision or uncertainty loss note" ], "preconditions": [ "Source and target are commensurable and of the same quantity kind", "Conversion parameters are pinned to a named authority edition", "Scale type permits the requested conversion" ], "effects": [ "Retains the source value and unit as provenance", "Suppresses the offset when converting a difference on an interval scale", "Refuses conversion for arbitrary and procedure-defined units" ], "source_refs": [ "SRC-008", "SRC-005", "SRC-011", "SRC-001" ] }, { "id": "normalise-to-coherent-si", "name": "Normalise to coherent SI unit", "description": "Express a value in the coherent SI unit of its quantity kind to give a canonical comparison basis, without discarding the value as originally reported.", "inputs": [ "resolved quantity value", "coherent SI unit for the quantity kind" ], "outputs": [ "normalised quantity value", "normalisation provenance" ], "preconditions": [ "Quantity kind is resolved", "A coherent SI unit exists for the kind" ], "effects": [ "Stores the normalised value as a derived companion rather than replacing the original", "Flags kinds with no coherent SI unit for manual handling" ], "source_refs": [ "SRC-001", "SRC-003", "SRC-008" ] }, { "id": "validate-quantity", "name": "Validate quantity value", "description": "Evaluate a quantity value against its bound unit value set, permitted value forms, plausibility range, cardinality, requiredness and scale-type operation restrictions, and record a re-evaluable outcome.", "inputs": [ "quantity value", "profile and bound value set with versions", "constraint rule set" ], "outputs": [ "validation status with severity per rule", "error codes and messages", "pinned versions the outcome was computed against" ], "preconditions": [ "Unit is resolved or an explicit unresolved disposition exists", "Binding strength is declared" ], "effects": [ "Applies the declared disposition on failure: reject, quarantine or accept with a flag", "Marks the outcome stale when a pinned registry release changes" ], "source_refs": [ "SRC-009", "SRC-008", "SRC-005", "SRC-007" ] }, { "id": "assert-uncertainty", "name": "Assert measurement uncertainty", "description": "Attach a GUM-conformant uncertainty statement to a value, requiring the uncertainty type and, for expanded uncertainty, the coverage factor and coverage probability.", "inputs": [ "quantity value", "uncertainty magnitude and type", "coverage factor and coverage probability where expanded", "evaluation type per component" ], "outputs": [ "uncertainty-bearing quantity value", "reference to the substantiating uncertainty budget" ], "preconditions": [ "Uncertainty is expressed in the value's unit or explicitly declared relative", "Uncertainty type is one of standard, combined standard or expanded" ], "effects": [ "Rejects an expanded uncertainty lacking a coverage factor or coverage probability", "Links the value to the uncertainty budget artifact when one exists" ], "source_refs": [ "SRC-012", "SRC-013", "SRC-002" ] }, { "id": "decide-conformity", "name": "Decide conformity against specification", "description": "Compare a value and its uncertainty against specification limits using a named decision rule and any guard band, and record the outcome separately from both the value and its uncertainty.", "inputs": [ "quantity value with uncertainty", "specification limits", "decision rule and guard band" ], "outputs": [ "conformity outcome", "decision record citing rule and guard band" ], "preconditions": [ "Specification limits share the value's unit", "Decision rule is named and versioned" ], "effects": [ "Writes the conformity outcome as a distinct assertion, never overwriting the value", "Returns indeterminate rather than pass or fail when uncertainty straddles a limit under the rule" ], "source_refs": [ "SRC-012", "SRC-002", "SRC-010" ] }, { "id": "render-quantity", "name": "Render quantity for presentation", "description": "Produce a locale-appropriate display string from the resolved unit and the value's significant digits, applying the pinned style authority's printing and spelling rules without mutating the stored value.", "inputs": [ "resolved quantity value", "target locale", "pinned style authority and edition" ], "outputs": [ "display string", "applied style rule references" ], "preconditions": [ "Significant digits are known or a default digit policy is declared", "Style authority edition is pinned" ], "effects": [ "Leaves the stored numeric value and unit code unchanged", "Marks the display string as non-authoritative and non-parseable" ], "source_refs": [ "SRC-001", "SRC-011", "SRC-009", "SRC-010" ] }, { "id": "reconcile-registry-release", "name": "Reconcile pinned registry release", "description": "Compare a newly published unit or quantity-kind registry release against the pinned manifest, classify each change as cosmetic, semantic or value-affecting, and issue migration notices for affected values.", "inputs": [ "current pinned registry manifest", "candidate upstream release", "affected value population query" ], "outputs": [ "change classification per term", "deprecation and migration notice", "updated manifest candidate" ], "preconditions": [ "The current manifest records release tags and content digests", "Affected value populations are queryable by unit code" ], "effects": [ "Blocks silent adoption of value-affecting changes", "Triggers re-validation of values whose bound registry release changed", "Records the reconciliation with an RFC 3339 timestamp" ], "source_refs": [ "SRC-007", "SRC-006", "SRC-004", "SRC-016" ] }, { "id": "record-value-provenance", "name": "Record value provenance and times", "description": "Attach the origin category, originating agent, derivation inputs and both event time and observation/ingestion time to a quantity value in RFC 3339 form with explicit offsets.", "inputs": [ "quantity value", "origin category and agent", "event time and observation time", "derivation inputs where computed" ], "outputs": [ "provenance-bearing quantity value", "supersession link where the value replaces an earlier one" ], "preconditions": [ "Timestamps carry seconds and an explicit offset or Z", "Origin category is from the declared vocabulary" ], "effects": [ "Preserves '-00:00' where the local offset is genuinely unknown", "Distinguishes backfilled values from genuine change by comparing event and observation times" ], "source_refs": [ "SRC-016", "SRC-015", "SRC-002", "SRC-009" ] }, { "id": "apply-quantity-calculus", "name": "Apply quantity calculus", "description": "Multiply, divide, exponentiate, add or subtract quantity values under dimensional homogeneity and coherent-factor accounting.", "inputs": [ "operation code", "operand quantity values", "system of units" ], "outputs": [ "result quantity value", "result kind", "result dimension", "accumulated magnitude factor" ], "preconditions": [ "Addition and subtraction require same kind, not only same dimension.", "Operands are not arbitrary units unless the operation is explicitly local to that assay." ], "effects": [ "Produces a derived quantity value.", "Fails closed on homogeneity violations." ], "source_refs": [ "SRC-010", "SRC-005", "SRC-001" ] }, { "id": "map-unit-code", "name": "Map unit code", "description": "Translate a unit identifier from one vocabulary to another using an authorised crosswalk, recording mapping type and conflicts.", "inputs": [ "source system", "source code", "target system", "crosswalk version" ], "outputs": [ "target code", "mapping type", "conflict code", "conversion-refused flag" ], "preconditions": [ "Crosswalk version is in force.", "Currency codes are not mapped into SI units." ], "effects": [ "Returns unmatched rather than inventing an equivalent.", "Surfaces recorded non-isomorphisms such as UCUM versus SI angle." ], "source_refs": [ "SRC-022", "SRC-018", "SRC-021" ] }, { "id": "freeze-original-value", "name": "Freeze original quantity value", "description": "Create an immutable snapshot of the originally recorded lexical value, unit, comparator and provenance before any conversion.", "inputs": [ "quantity value as received", "host record identifier" ], "outputs": [ "snapshot identifier", "original-value snapshot artefact" ], "preconditions": [ "A host master identifier exists or the Dimension assigns a UUID.", "Event time and ingestion time are recorded separately when known." ], "effects": [ "Makes the original lexical form indelible for the host retention period.", "Subsequent conversions reference the snapshot rather than overwriting it." ], "source_refs": [ "SRC-020", "SRC-011" ] } ], "composition": [ { "target": "Measurement / Observation model (SOSA/SSN-aligned sibling)", "relation": "REFERENCE", "purpose": "The observation act supplies the context in which a quantity value is a result; SOSA explicitly defines no units and delegates their encoding, so this mixin fills that slot and references the observation rather than restating sensor, procedure or feature of interest.", "required": false, "source_refs": [ "SRC-015", "SRC-002" ] }, { "target": "Temporal / Time model", "relation": "REFERENCE", "purpose": "Event time, observation time and validity intervals are carried here in RFC 3339 lexical form, but calendar, interval, recurrence and timezone-rule semantics are owned by the temporal sibling.", "required": false, "source_refs": [ "SRC-016", "SRC-009" ] }, { "target": "Provenance model", "relation": "MIX-IN", "purpose": "Origin category, originating agent, derivation inputs and supersession links are provenance concerns mixed into the quantity value object rather than modelled independently within it.", "required": false, "source_refs": [ "SRC-015", "SRC-002" ] }, { "target": "Metrological traceability and calibration model", "relation": "EXTEND", "purpose": "Traceability claims and uncertainty budgets referenced from a quantity value are substantiated by calibration chains, reference standards and certificates owned by that model.", "required": false, "source_refs": [ "SRC-002", "SRC-012" ] }, { "target": "Money / Currency model", "relation": "REFERENCE", "purpose": "Monetary amounts share the numeric-fidelity and value-form rules but have no quantity dimension; a currency code must resolve through the Money model even where a projection such as schema.org places it in unitCode.", "required": false, "source_refs": [ "SRC-014", "SRC-009" ] }, { "target": "Spatial / Geometry model", "relation": "REFERENCE", "purpose": "Lengths, areas, volumes and angles used in geometry are quantity values from this mixin, but coordinates, coordinate reference systems and datum transformations belong to the spatial model.", "required": false, "source_refs": [ "SRC-002", "SRC-001" ] }, { "target": "Code registry / identifier governance model", "relation": "REFERENCE", "purpose": "Unit code lists are consumed and pinned here; their publication cadence, deprecation policy and issuance governance belong to the registry sibling.", "required": false, "source_refs": [ "SRC-006", "SRC-007" ] }, { "target": "UCUM — The Unified Code for Units of Measure v2.2", "relation": "ALIGN", "purpose": "Alignment for machine-parseable unit expressions, prefix and atom rules, annotation handling, special and arbitrary unit semantics, commensurability and conformance levels. Alignment, not conformance: conformance requires a tested parser declaration.", "required": false, "source_refs": [ "SRC-005" ] }, { "target": "UN/CEFACT Recommendation 20 Revision 17 common codes", "relation": "ALIGN", "purpose": "Alignment for three-character common codes required in trade and supply-chain exchange, crosswalked to UCUM expressions and QUDT IRIs with explicit mapping strength.", "required": false, "source_refs": [ "SRC-006", "SRC-008" ] }, { "target": "QUDT ontology v3.5.0", "relation": "ALIGN", "purpose": "Alignment for unit and quantity-kind IRIs, dimension vectors, conversion multiplier and offset, applicable-unit constraints and the commensurability framework, pinned by release because QUDT has made value-affecting changes between releases.", "required": false, "source_refs": [ "SRC-008", "SRC-007" ] }, { "target": "ISO 80000 series / ISQ and the SI Brochure", "relation": "ALIGN", "purpose": "Normative alignment for the system of quantities, dimensions, coherent units, prefixes, printing rules, rounding and logarithmic quantities. Full ISO 80000 text is paywalled, so clause-level conformance is not claimed.", "required": false, "source_refs": [ "SRC-010", "SRC-001", "SRC-003", "SRC-004" ] }, { "target": "JCGM 100:2008 GUM uncertainty framework", "relation": "ALIGN", "purpose": "Alignment for the uncertainty vocabulary and reporting requirements: standard, combined standard and expanded uncertainty, Type A and Type B evaluation, coverage factor and coverage probability.", "required": false, "source_refs": [ "SRC-012", "SRC-013" ] }, { "target": "HL7 FHIR R5 Quantity datatype", "relation": "ALIGN", "purpose": "Alignment to a widely deployed concrete binding covering value, comparator, unit, system and code, decimal precision significance, and profiled variants; used as an interoperability test case rather than as the model's semantics.", "required": false, "source_refs": [ "SRC-009" ] }, { "target": "schema.org QuantitativeValue", "relation": "ALIGN", "purpose": "Alignment to the web projection using UN/CEFACT unitCode, unitText fallback, minValue/maxValue and valueReference, with the currency-in-unitCode divergence recorded as a conflict.", "required": false, "source_refs": [ "SRC-014" ] }, { "target": "D-SI SmartCom XML exchange format v2.2.0", "relation": "ALIGN", "purpose": "Alignment to a metrology-native exchange format that carries value, unit and uncertainty as one payload, used to test that this mixin's mandatory field set is sufficient for metrological round-tripping.", "required": false, "source_refs": [ "SRC-013" ] } ], "serviceLayers": { "dimension": { "owner_package_requirements": [ "Name a single accountable owner for the model instance in the adopting Dimension, with a named deputy, since the registry entry currently records only 'owner designated by the adopting Dimension'.", "Maintain the pinned registry release manifest for every external unit, quantity-kind and value-set vocabulary in use, including release tags, retrieval timestamps and content digests.", "Publish and version the alignment and conflict register, the unit code crosswalk and the conversion factor table, and review them whenever an upstream release is reconciled.", "Declare the deployment's UCUM parser conformance level and the numeric representation policy, and test both against a published corpus before adoption.", "Operate a change-notification path to consumers for value-affecting unit changes, with a stated remediation deadline." ], "namespace_guidance": "Use a stable namespace under the adopting Dimension for locally minted terms, for example {dimension-base}/xct/qty/. Never mint a local identifier where a governed one exists: prefer the upstream unit IRI, then the UCUM expression, then the UN/CEFACT common code. Local extension codes must be namespaced so they can never be mistaken for a governed code, must carry an explicit 'local' marker, and must be reviewed for retirement whenever an upstream release adds the missing term.", "registry_links": [ "Vercy registry entry vr.wm-xct-008 (WM-XCT-008, entry kind mixin, validation flag: EMBED value object)", "UCUM specification and unit atom tables (https://ucum.org/ucum)", "UN/CEFACT Recommendation 20 Revision 17 code lists (https://unece.org/trade/documents/revision-17-annexes-i-iii)", "QUDT unit and quantity-kind vocabularies, pinned by release (https://github.com/qudt/qudt-public-repo/releases)", "BIPM SI Brochure and CGPM resolutions for base units, coherent derived units and prefixes (https://www.bipm.org/en/publications/si-brochure)" ] }, "canon_and_patch": { "canonicalization_rules": [ "Canonicalise the unit expression under the pinned grammar with a deterministic operator, exponent and factor ordering; retain the verbatim source expression alongside it and never discard the original.", "Discard curly-brace annotations before any semantic comparison, but retain their text in a separate annotation field so nothing is silently lost.", "Preserve the numeric value as an exact decimal lexical form including trailing zeros; canonicalisation must never renormalise 0.010 to 0.01, and must never route the value through binary floating point.", "Normalise timestamps to RFC 3339 with seconds and an explicit offset or Z, preserving '-00:00' where the local offset is genuinely unknown rather than rewriting it to Z.", "Compute derived data — dimension vector, coherent-SI normalised value, commensurability determinations — on demand from the pinned registry rather than persisting it as canonical." ], "patch_rules": [ "A patch may never modify the numeric value or the unit independently; the value and its reference are a single atomic unit of change.", "Any change that alters the interpreted magnitude — unit change, precision change, conversion, rounding — is value-affecting and requires a new version with provenance, not an in-place amendment.", "Adding provenance, alignment, annotation or validation-outcome fields is non-value-affecting and may be applied in place with an audit entry.", "A correction must declare its disposition — amended, superseded or retracted — and retain the prior value with a reason code; silent overwrite is prohibited.", "Patches that adopt a new upstream registry release must be preceded by a reconciliation that classifies every change as cosmetic, semantic or value-affecting." ], "compatibility_rules": [ "Adding an optional field, an alignment or a new alternate code is backward compatible.", "Narrowing a binding, tightening a constraint, changing a binding strength to required, or changing the mandatory field set is breaking and requires a major version and consumer notification.", "Redefining or reclassifying a unit code upstream is breaking for values already recorded against it; historical values remain frozen at their recorded registry release unless a documented reinterpretation decision states otherwise.", "Consumers must fail closed on an unrecognised required field and must not infer a unit from a display string under any circumstances.", "A conformance claim to any external standard is valid only with cited evidence and a stated scope; alignment alone never implies conformance." ] }, "artifact_rules": { "identity_priority": [ "Identifier issued by the authoritative master system or defining standards body — for example an upstream unit registry IRI, a UN/CEFACT common code, or a laboratory-issued uncertainty budget identifier.", "Governed global identifier or IRI minted in the adopting Dimension namespace where no authoritative identifier exists, always paired with an explicit version.", "UUID or ULID assigned by the adopting Dimension as a last resort, recorded alongside any natural keys rather than replacing them.", "A date, a release year, a display string or a unit symbol is never an identifier." ], "timestamp_rule": "All timestamps use RFC 3339 with seconds and an explicit numeric offset or 'Z'; event time and observation/ingestion time are recorded in separate fields and never collapsed. '-00:00' is preserved where UTC is known but the local offset is not, and is not rewritten to 'Z'.", "serial_naming_rule": "Artifacts marked serial — the pinned registry release manifest, deprecation and migration notices, and the conversion factor table — carry a monotonically increasing sequence number within a stable governed IRI base, with no gaps and no reuse; each issue records an RFC 3339 issue timestamp and the sequence numbers it supersedes.", "integrity_rule": "Every pinned external artifact records a content digest and retrieval timestamp so a historical resolution can be reproduced exactly; any artifact whose digest no longer matches its upstream source is marked drifted, blocked from automated conversion use, and referred for reconciliation before adoption." }, "policies": [ "Value and unit are inseparable: no interface may expose, accept, index or persist a numeric value without its resolved reference, and no default unit may ever be inferred.", "Alignment is not conformance: external standards are recorded as alignments with mapping strength and pinned target versions, and a conformance claim requires cited evidence and a stated scope.", "Registry releases are pinned, never floating: every value records the unit and quantity-kind releases it was resolved against, and upstream releases are adopted only after change classification.", "Precision is semantic: trailing zeros, significant digits and exactness flags are preserved end to end, and any rounding, banding or precision reduction is recorded as a derivation with provenance.", "Refuse rather than approximate: comparison or conversion involving arbitrary units, incompatible scale types or unresolved units is refused with a diagnostic, not silently coerced.", "Access, retention and deletion rules are inherited from the host record and the adopting Dimension's policy; this mixin records the inheritance explicitly and asserts no independent rules.", "Unknown or unmapped inbound units are not converted; they follow the Dimension unknown-unit action of reject, store-text or queue-for-steward.", "Original recorded quantity values are retained at least as long as the host record and are not overwritten by canonicalised forms.", "Unit definitions are deprecated, not deleted, so historical values remain interpretable.", "Currency, calendar instants, geometry and units of presentation are out of scope and must be refused or redirected to sibling models.", "Uncertainty, when required by the host measurement context, uses GUM terms and a unit commensurable with the value." ], "crud": { "read": [ "Read returns the numeric value together with its resolved reference, scale type and the pinned registry releases used for resolution; a value-only read is not offered.", "Derived views — coherent-SI normalisation, display rendering, dimension vector — are computed at read time from the pinned registry and labelled as derived.", "Reads that cross a sensitivity boundary apply the host record's access rule and record the disclosure control applied, if any." ], "create": [ "Create requires the mandatory embedding field set, a resolvable reference or an explicit unresolved-unit disposition, and both event time and observation time where the host model demands them.", "On create, the unit is resolved against the pinned registry release and that release identifier is written to the value.", "Creation of a value whose unit fails resolution follows the declared disposition — reject, quarantine or accept with a flag — and is never silently defaulted." ], "update": [ "Value-affecting updates create a new version with provenance linking to the prior value; the value and reference are updated atomically or not at all.", "Non-value-affecting updates — provenance enrichment, alignment additions, validation-outcome refresh — are applied in place with an audit entry.", "Bulk updates driven by a registry release change require a completed reconciliation and an issued migration notice before execution." ], "delete": [ "Deletion is governed by the host record's retention rule; an embedded value has no independent deletion lifecycle.", "Where a value is deleted but its context must remain interpretable, the unit, quantity kind and provenance metadata may be retained under an explicit policy decision and the deletion recorded.", "Retraction of an erroneous value preserves a tombstone with a reason code and the retracting authority; hard deletion is permitted only where a legal or policy obligation requires it and is audited." ] }, "roles": [ { "name": "Model owner", "responsibilities": [ "Own WM-XCT-008 in the adopting Dimension, approve version changes and adjudicate boundary disputes with sibling models.", "Approve or reject adoption of value-affecting upstream registry changes." ] }, { "name": "Unit registry steward", "responsibilities": [ "Maintain the pinned registry release manifest, the unit code crosswalk and the conversion factor table.", "Reconcile upstream releases, classify changes, and issue deprecation and migration notices.", "Review and retire local extension codes when upstream terms become available." ] }, { "name": "Metrology reviewer", "responsibilities": [ "Review uncertainty statements for GUM conformance, including uncertainty type, coverage factor and coverage probability.", "Approve conversion parameters, non-linear conversion functions and decision rules used for conformity assessment.", "Challenge scale-type assignments and reject invalid arithmetic on interval and ordinal scales." ] }, { "name": "Interoperability steward", "responsibilities": [ "Maintain the alignment and conflict register and the profile and value-set binding declarations.", "Negotiate and record bindings with exchange partners, including non-conformance disposition.", "Validate that a conformance claim is evidenced before it is published." ] }, { "name": "Data protection and retention officer", "responsibilities": [ "Assign sensitivity classifications and retention rules to quantity values in host contexts.", "Approve disclosure-control techniques such as precision reduction or banding and require them to be recorded as derivations.", "Audit deletions, retractions and tombstones against policy." ] } ], "access": { "default_rule": "An embedded quantity value inherits the access rule of its host record; it has no independent access control surface. Where the host applies no explicit rule, the value defaults to the most restrictive classification available in the adopting Dimension until a classification is assigned.", "scopes": [ "bundle", "layer", "finding", "artifact" ], "exceptions": [ "Unit, quantity kind and dimension metadata may be readable at a lower sensitivity than the numeric value, so that schema discovery and validation can operate without exposing values.", "Precision-reduced or banded projections of a value may be released to a wider scope than the full-precision value, provided the transformation is recorded as a derivation and the recipient is told the value is derived.", "Registry artifacts — crosswalks, conversion tables, release manifests, alignment registers — are ordinarily readable across the Dimension because they contain no subject data, unless a specific artifact encodes commercially sensitive process parameters.", "Emergency or safety-critical reads may bypass a restrictive default under a break-glass procedure, which must be time-bounded, justified at the time of use and audited.", "Uncertainty budgets and calibration evidence may be restricted more tightly than the values they substantiate where they disclose laboratory methods.", "A conversion agent may read conversion-factor tables and unit vocabularies without access to host personal data.", "Redacted original values remain visible to auditors for the retention period even when producers can no longer read them." ], "audit_requirements": [ "Log every read of a full-precision value that crosses a sensitivity boundary, with the requesting identity, scope, purpose and an RFC 3339 timestamp.", "Log every value-affecting write, conversion, rounding, retraction and disclosure-control application, retaining the prior value and the acting identity.", "Log every registry release pin, reconciliation and migration notice issuance, with content digests and the change classification applied.", "Retain audit entries at least as long as the values they describe, and independently of the value's own deletion, so that a deletion itself remains auditable.", "Make audit entries queryable by unit code and by registry release so the blast radius of an upstream change can be established after the fact.", "Record actor, event time, ingestion time, artefact identity and before/after version for conversion, policy change, deprecation and redaction.", "Audit unknown-unit exceptions and refused conversions caused by kind mismatch or missing mapping." ] }, "agents_bootstrap": { "filename": "AGENTS.md", "required_fields": [ "Name", "Type", "Specification URL", "Storage type URL", "Interface URL", "Processes URL", "Model ID", "Registry ID", "Pinned registry release manifest URL", "Owner and deputy" ], "read_order": [ "AGENTS.md — establishes Name, Type, Model ID, Registry ID and the four URLs before any other action", "Specification URL — the WM-XCT-008 model definition: scope, boundaries, bundles, layers, findings and mandatory embedding field set", "Pinned registry release manifest — the exact unit, quantity-kind and value-set releases in force, with content digests", "Storage type URL — how the model is projected into the concrete store (MongoDB collection, Git repository, document set), including the numeric representation policy that guarantees lossless decimal round-trip", "Interface URL — the access surface (MCP tool, API, query interface), its authentication model and its declared UCUM parser conformance level", "Processes URL — the governed procedures: resolution, validation, conversion, uncertainty assertion, registry reconciliation, correction and retraction", "Alignment and conflict register — known divergences between aligned standards and the resolutions adopted, read before any cross-standard mapping" ] } }, "coverage": { "claim": "A standards-led context structure for an embeddable Quantity/Unit value-object mixin, built on Claude's boundary set (BIPM SI Brochure 9th ed., JCGM VIM3 and GUM, ISO 80000-1:2022, CGPM 2022 Res 3, UCUM v2.2, UN/CEFACT Rec 20 Rev 17, QUDT v3.5.0, FHIR R5, D-SI v2.2.0, SOSA/SSN, RFC 3339, schema.org) and extended with three grok findings and three grok functions. Coverage is bounded to the value object: the measurement act, the measured thing, calendar identity, monetary amounts, calibration chains and domain property catalogues remain with sibling models, and ownership, access and retention stay declared evidence gaps rather than standards-derived content. No completeness across domains, jurisdictions or unit vocabularies is claimed, and no conformance to any cited standard is asserted.", "confidence": "medium", "checklist": [ { "dimension": "identity", "status": "covered", "notes": "Unit identity is grounded in UCUM codes, UN/CEFACT common codes and QUDT IRIs with an explicit precedence rule, code-system version pinning and a case-sensitivity question. The value object itself deliberately has no independent identity: as an EMBED value object it inherits the host record's identity, which is stated explicitly in the embedding contract rather than left implicit." }, { "dimension": "lifecycle", "status": "covered", "notes": "Two distinct lifecycles are modelled and kept apart: the unit code's lifecycle in its upstream registry (active, deprecated, redefined, withdrawn, replaced, with successor and migration rule) and the recorded value's lifecycle (amended, superseded, retracted, tombstoned). QUDT v3.4.0/v3.5.0 breaking changes and the 2019 SI redefinition provide concrete primary evidence that this separation is necessary." }, { "dimension": "relationships", "status": "covered", "notes": "Relationships are covered through quantity-kind-to-unit applicability, commensurability and equality determinations, ratio numerator/denominator structure, logarithmic reference quantities, source-to-derived conversion links, supersession links, and fourteen composition links to sibling models and external vocabularies, each with mapping strength or relation type." }, { "dimension": "temporal", "status": "covered", "notes": "Event time and observation/ingestion time are modelled as separate fields, validity intervals and expiry are questioned, and RFC 3339 with seconds and explicit offset is mandated including preservation of '-00:00' for unknown local offset. Deeper calendar and interval semantics are explicitly delegated to the temporal sibling model." }, { "dimension": "provenance", "status": "covered", "notes": "Origin category, originating agent, derivation inputs, conversion provenance with explicit information-loss notes, registry release pinning with content digests, and traceability claims requiring cited calibration evidence. D-SI and SOSA support the delegation pattern used." }, { "dimension": "ownership", "status": "gap", "notes": "No consulted primary source assigns ownership or stewardship of a quantity value; metrology standards govern semantics, not custody. The registry entry itself records only 'owner designated by the adopting Dimension'. Ownership is therefore handled as a service-layer role definition and an explicit inheritance from the host record, and is marked a gap rather than presented as standards-backed." }, { "dimension": "validation", "status": "covered", "notes": "Constraint specification (allowed unit value sets with binding strength, permitted value forms, plausibility ranges, cardinality, requiredness), scale-type operation restrictions, parser conformance levels, dimensional consistency checks, round-trip conversion checks, and re-evaluable validation outcomes pinned to registry versions. Supported by FHIR bindings, QUDT applicableUnit and UCUM conformance levels." }, { "dimension": "access", "status": "gap", "notes": "No primary metrology or units standard addresses access control for quantity values. Access is modelled as strictly inherited from the host record, with a most-restrictive default, exceptions for unit metadata and precision-reduced projections, and audit requirements. This is reasoned governance, not standards-derived normative content, and is marked a gap accordingly." }, { "dimension": "retention and deletion", "status": "gap", "notes": "Likewise unsupported by any consulted primary source. The model states that an embedded value has no independent deletion lifecycle, that unit and provenance metadata may be retained after value deletion to keep remaining data interpretable, and that retraction leaves an audited tombstone — but these are policy positions of the adopting Dimension, not normative requirements." }, { "dimension": "interoperability", "status": "covered", "notes": "Alignments to UCUM, UN/CEFACT Rec 20, QUDT, ISO 80000/SI, GUM, FHIR, schema.org and D-SI, each pinned by version and recorded with mapping strength, plus a conflict register, profile and value-set binding with declared non-conformance disposition, and an explicit rule that alignment never implies conformance." }, { "dimension": "classification", "status": "covered", "notes": "Quantity kind, dimension, scale type (ratio, interval, ordinal, nominal), unit category (base, coherent derived, accepted for use with SI, off-system, customary, arbitrary, procedure-defined), value form and origin category are each modelled as governed classifications with authoritative sources." }, { "dimension": "numeric fidelity", "status": "covered", "notes": "Significant digits, trailing-zero preservation (grounded in FHIR's explicit rule that 0.010 differs from 0.01), exactness flags for defined values, mandated lossless numeric representation, and recorded rounding rules. This is the dimension most often lost in practice and is treated as semantic rather than implementational." }, { "dimension": "uncertainty and quality", "status": "covered", "notes": "GUM-grounded uncertainty type, coverage factor and coverage probability, Type A versus Type B evaluation with evidence for Type B components, and a strict separation of measurement uncertainty from specification tolerance and from conformity decisions with their decision rules and guard bands." }, { "dimension": "security", "status": "not-applicable", "notes": "Transport security, authentication and cryptographic controls are properties of the storage and interface projections, which this format-neutral mixin deliberately does not constrain. The one security-adjacent concern that genuinely belongs here — disclosure control by precision reduction changing the value's meaning — is modelled under access and disclosure." } ], "known_omissions": [ "Full normative text of ISO 80000-1:2022 and the other ISO 80000 parts is paywalled; only the public catalogue record (edition 2, December 2022) was read, so no clause-level claim is made against ISO 80000.", "The SI Brochure and GUM were retrieved as PDFs that could not be machine-parsed in this session; their content is cited from the BIPM landing pages and from well-established published definitions, and clause-level quotation is not asserted for either.", "Direct fetch of unece.org was blocked (HTTP 403) throughout; UN/CEFACT Recommendation 20 Revision 17 (2021) and its three annexes were confirmed through the UNECE site's own indexed listings rather than by reading the page body.", "VIM4 is in committee draft and may change definitions relied on here (notably around quantity, value and unit); this model is built against VIM3 (JCGM 200:2012) and will need re-checking on VIM4 publication.", "No exhaustive unit atom inventory, prefix table or conversion factor set is reproduced; these belong in the pinned registry artifacts, not in the model.", "Statistical uncertainty propagation methods, including the GUM Supplement 1 Monte Carlo approach, are referenced only as an extension point and are not modelled.", "Legal metrology requirements — trade approval, verification marks, national weights-and-measures law — are not covered and are jurisdiction-specific.", "Sexagesimal, fractional-inch and other non-decimal customary presentations are acknowledged only through the presentation finding; no normalisation rules are specified.", "The Ontology of units of Measure (OM 2) could not be retrieved (TLS certificate mismatch on its published host) and is therefore absent from the alignment set despite being a credible sibling vocabulary.", "Full text of ISO 80000-1:2022 and ISO 11240:2012 is paywalled; abstracts and public tables of contents were used, so clause-level data-element names from those standards may be incomplete.", "UCUM 2.2 prefix table as published 2024-06-17 does not show ronna, quetta, ronto or quecto; whether a later UCUM revision added them was not verified beyond this version.", "OIML legal-metrology instruments, WELMEC guides and national weights-and-measures statutes were not taken as primary sources.", "Digital calibration certificate (DCC) schemas, CODATA least-squares constant adjustments after 2019, and VIM4 draft revisions are not incorporated.", "IEC 80000-13 information-science units, UDUNITS, OM ontology, SensorML/SWE Quantity, UN/CEFACT CCTS Quantity.Type and schema.org QuantitativeValue are discovery alignments only.", "Vector, tensor, complex, distributional and interval-arithmetic quantity types beyond FHIR Range are not modelled.", "Catalytic enzyme units, WHO International Units and other biological potency systems are covered only as arbitrary/procedure-defined units." ], "conflicts": [ "schema.org documents currency codes such as USD as valid unitCode values alongside physical unit codes, although a currency has no quantity dimension and cannot participate in dimensional analysis. This model refuses that conflation and routes monetary amounts to a Money sibling.", "QUDT v3.5.0 redefined BIT, BYTE and OCTET as counting/storage units rather than information-entropy units, and v3.4.0 replaced ambiguous skos:broader use with an explicit commensurability framework. Values recorded against earlier releases may carry different semantics, which is why release pinning is mandatory here.", "UCUM full conformance requires recognising that 'km' equals '1000.m', while limited conformance permits literal string comparison. Two systems can both claim UCUM support and still disagree on equality, so the conformance level must be declared per deployment.", "UCUM annotations in curly braces must be discarded by fully conformant parsers, yet they are widely used in practice to carry denominator or specimen meaning. Any semantics placed there is unreliable and must be relocated to structured fields.", "NIST SP 811 (2008) has not been updated for the 2019 SI revision and NIST itself redirects users to SP 330 (2019); style and conversion guidance therefore requires explicit edition pinning rather than generic citation.", "VIM 1.9 records that units with the same dimension may denote different kinds (hertz for frequency, becquerel for activity, both 1/s; joule per kelvin for both heat capacity and entropy), so dimension-based equivalence used by many implementations is demonstrably unsafe.", "UN/CEFACT Rec 20 common codes and UCUM expressions are not in one-to-one correspondence: some trade codes are packaging or commercial units with no metrological unit equivalent, so crosswalk rows require explicit mapping strength rather than assumed equality.", "UCUM defining bases (metre, second, gram, radian, kelvin, coulomb, candela) are not isomorphic with SI bases; mole is a count in UCUM and radian is a base, whereas SI treats the radian as a dimensionless derived unit.", "NIST SP 811 Appendix A still states pre-2019 artefact-based base-unit definitions and the publication itself warns it has not been updated for the 2019 SI.", "SI Brochure guidance after version 3.01 urges explicit units for quantities of dimension one, which conflicts with widespread practice of omitting the unit one.", "Gray versus sievert and joule versus newton metre share dimensions but not quantity kinds; dimension-only converters will silently mis-convert.", "UNECE Rec 20 tabulated three-character codes cannot express arbitrary UCUM products, so trade and scientific unit languages are not 1:1.", "FHIR treats Money as distinct from Quantity, while QUDT includes CurrencyUnit in the same schema family.", "Degree Celsius is an SI unit that is incoherent with the SI in UCUM special-unit semantics; prefixing Celsius scales the numerical value, not a ratio-scale unit." ], "regional_assumptions": [ "The SI is assumed as the reference system, with customary and off-system units treated as convertible alternatives. Jurisdictions with statutory customary-unit requirements will need a locally bound presentation and storage policy.", "UN/CEFACT Rec 20 is assumed as the trade code list. Domain-specific regimes (for example customs tariff schedules or sector-specific code lists) may mandate different codes in the same exchange.", "UCUM is assumed as the machine grammar, reflecting its adoption in healthcare through FHIR; other sectors may mandate a different expression syntax, in which case the parser conformance declaration must name it.", "Decimal separators, digit grouping and unit name spelling vary by locale and language; the model treats these as presentation concerns bound to a pinned style authority rather than as data.", "Access, disclosure and retention positions assume a general-purpose governance regime; jurisdictions with specific data protection, health, financial or trade-secret statutes will impose stricter rules that override the defaults here.", "Calendar-dependent duration units such as month and year are ambiguous across contexts; FHIR's practice of treating 'mo' as a calendar month when calculating recurrence is one convention among several and must be declared per deployment.", "SI is treated as the default physical system of units; US customary and Imperial units are supported only as named non-SI systems with explicit variants such as US versus Imperial gallon.", "English and French names in the SI Brochure are both authentic; this research used English texts.", "UNECE Rec 20 is assumed for international trade EDI; some jurisdictions mandate additional national unit lists that were not reviewed.", "ISO 11240 is global IDMP but operationally driven by medicines regulators; non-health Dimensions may ignore it without losing SI alignment.", "NIST SP 811 informs US style and conversion rounding but is not a substitute for the current SI Brochure." ], "adversarial_checks": [ "Counterexample to dimension-based comparability: hertz and becquerel are both 1/s and joule per kelvin serves both heat capacity and entropy (VIM 1.9 Note 2), so any structure that treated dimension equality as sufficient for comparison was rejected; quantity-kind agreement is required as a separate test.", "Counterexample to uniform conversion: degree Celsius is a special unit on a non-ratio scale (UCUM), and converting a temperature difference differs from converting a temperature point. A single multiplier-and-offset conversion function was rejected in favour of an explicit point-or-difference designation.", "Counterexample to unit universality: UCUM states that arbitrary units carry no general meaning relative to any other unit and form no equivalence classes. Rather than warn and approximate, the model requires outright refusal of such comparisons — a stricter position than most implementations take.", "Counterexample to precision as an implementation detail: FHIR states explicitly that 0.010 differs from 0.01 and that original precision must be preserved. Any structure that allowed numeric normalisation through binary floating point was rejected, and numeric representation was elevated to a semantic policy.", "Counterexample to registry stability: QUDT reclassified BIT, BYTE and OCTET between v3.4.0 and v3.5.0, and CGPM extended the prefix set in 2022. A design that resolved units against a floating 'latest' vocabulary was rejected in favour of mandatory release pinning with content digests.", "Rejected attractive structure — a Measurement or Observation bundle: SOSA/SSN is a W3C Recommendation that already models the observing act and explicitly delegates unit encoding, so adding sensors, procedures or features of interest here would have duplicated a sibling model and violated the registry's EMBED value-object constraint.", "Rejected attractive structure — a Currency or Money bundle: although schema.org places currency codes in unitCode and FHIR defines MoneyQuantity, a currency has no dimension and cannot be dimensionally analysed. Including it would have imported foreign-exchange, rounding-to-minor-unit and legal-tender concerns with no metrological basis.", "Rejected attractive structure — a unit registry curation bundle: publication cadence, code issuance and deprecation policy for UCUM, Rec 20 and QUDT are owned by their issuing organisations. This model consumes and pins those releases; asserting curation authority over them would have been unsupportable.", "Tested the mandatory field set against D-SI v2.2.0, which carries value, unit and uncertainty as one payload: the resulting embedding contract requires value plus reference as an atomic pair, with uncertainty conditionally required, rather than treating uncertainty as an optional afterthought.", "Checked whether ownership, access and retention could be grounded in any consulted primary source. They could not, so all three are marked as gaps in the checklist and handled as explicit inheritance from the host record rather than dressed up as standards-derived requirements.", "If an agent converts gray to sievert or joule to newton metre because the dimension vectors match, the model has failed the kind-mismatch constraint.", "If an agent applies a 273.15 offset to a temperature interval marked as a delta, conversion is wrong.", "If an agent treats a UCUM curly-brace annotation as a unit, or treats {RBC} as commensurable with 1, semantic comparison is wrong.", "If an agent deletes a deprecated unit so that a historical millimetre-of-mercury value can no longer be interpreted, retention policy is violated.", "If an agent claims SI conformance while storing UCUM radian as an independent base without recording the non-isomorphism, the alignment has been over-claimed.", "If a currency amount is stored as a Quantity with system ISO 4217 instead of being redirected to a money sibling, scope has been breached.", "If conversion overwrites the original lexical decimal 0.010 to 0.01, presentation precision required by FHIR decimal has been lost." ] }, "researchAdjudication": { "providerMode": "dual-provider", "activeProviders": [ "claude", "grok" ], "waivedProviders": [], "providerPolicy": {}, "boundaryDecision": { "entry_kind": "mixin", "status": "accepted", "rationale": "Both providers independently returned entry_kind=mixin and the registry marks vr.wm-xct-008 as an EMBED value object; FHIR models Quantity as a datatype rather than a resource and SOSA delegates result encoding to the host vocabulary, so the quantity carries no independent identity or lifecycle. Claude's boundary is adopted intact — value object only, with the observing act, calendar and instant semantics, monetary amounts, calibration hierarchies, registry curation and domain property catalogues delegated to named siblings, each delegation carrying source refs. One narrowing is applied to the single accepted grok addition in this area: metrological traceability enters as a claim plus evidence pointers, never as a calibration-chain or accreditation model, so Claude's stated out_of_scope holds." }, "decisions": [ { "concept": "Base provider selection", "disposition": "claude", "rationale": "Clearest complete boundaries, not size: seven boundary notes each naming a sibling model with source refs versus six; honest gap marking on ownership, access and retention; tighter version pins (FHIR R5, QUDT v3.5.0 releases, Rec 20 Rev 17, CGPM 2022 Resolution 3 and RFC 3339 as first-class sources); and a consistent inline_only_rationale on every artifact-free finding, which the deterministic synthesizer needs." }, { "concept": "Entry kind and model boundary", "disposition": "accepted as mixin / EMBED value object", "rationale": "Providers agree independently, the registry marks it EMBED, FHIR treats Quantity as a datatype not a resource, and SOSA delegates result encoding to the host. No reclassification or split is warranted, so nodes can be accepted against a settled boundary." }, { "concept": "System of quantities (ISQ) as governing frame", "disposition": "accepted from grok into kind-and-dimension", "rationale": "Claude presumes a single fixed ISQ basis and never records which system governs, its declared base kinds, its defining equations, or whether the coupled unit system covers every kind in use. Backed by ISO 80000-1 and QUDT SystemOfQuantities." }, { "concept": "Quantity calculus and coherent-factor accounting", "disposition": "accepted from grok into kind-and-dimension", "rationale": "Result-kind derivation and factor accumulation for non-coherent units in a product are absent from the base, which only gates operations and converts single values. ISO 80000-1 and the UCUM multiplicative group supply the evidence." }, { "concept": "Metrological traceability claim", "disposition": "accepted from grok into uncertainty-and-tolerance, narrowed", "rationale": "Base carries a first-class VIM 2.41 property in one question despite naming it in a boundary note. Accepted as claim, reference target, evidence identifiers and chain-stop only; the calibration hierarchy, certificates and accreditation records remain out of scope, preserving Claude's stated delegation." }, { "concept": "Delta versus absolute quantity", "disposition": "rejected as duplicative", "rationale": "Claude's conversion-functions finding already states the point-versus-difference rule with the same worked example (5 °C difference is 5 K; 5 °C temperature is 278.15 K) and carries cnv-q3 as an explicit designation question. Adding a second finding would fork the same rule." }, { "concept": "Special units on non-ratio scales", "disposition": "rejected as duplicative; prefix-scaling trap deferred", "rationale": "UCUM special units and function-based conversion are covered at both ends by scale-type-classification and conversion-functions. The one genuinely new item, prefix scaling on a special unit (milli-degree Celsius), is question-level material this plan cannot transfer, so it is deferred rather than justifying a duplicate finding." }, { "concept": "Comparator, range and ratio structures", "disposition": "rejected as duplicative", "rationale": "Claude's value-forms-and-bounds already covers point versus one-sided bound versus interval versus ratio, inclusive bounds sharing a unit, censored and detection-limit encoding, and prohibited forms per slot. The instrument that set the detection limit belongs to the host measurement model under Claude's boundary." }, { "concept": "Dimensionless quantities and the unit one", "disposition": "rejected as duplicative; angle non-isomorphism deferred", "rationale": "Claude's dimension-one-and-counts covers unit one, absent-unit versus unit-is-one, fractions and logarithmic quantities. The distinctive grok content — UCUM treating radian as a base while SI treats it as dimension one, and UCUM's deprecation of ppb/pptr — is conflict-register content that Claude's alignment-and-conflicts finding is already shaped to hold." }, { "concept": "Decimal and binary prefixes", "disposition": "rejected as duplicative; UCUM prefix lag held for verification", "rationale": "Claude's prefixes-and-scaled-units covers the CGPM 2022 additions, binary-versus-decimal separation, the prefixed kilogram, compound prefixes and prefixes on non-metric atoms. Grok's claim that UCUM v2.2 still stops at yotta/yocto is self-declared unverified against later revisions, so it fails the evidence-backed test for an addition." }, { "concept": "Unit code system split into UCUM / Rec 20 / QUDT findings", "disposition": "rejected as duplicative", "rationale": "Claude carries all three code systems in unit-identity-and-codes with an explicit precedence rule and a crosswalk artifact, the grammar in compound-unit-expression, and the non-1:1 trade-versus-scientific mismatch in its conflict list. Splitting into three findings would triple-count the same governed identity." }, { "concept": "SI defining constants and base-unit definitional expressions", "disposition": "rejected as registry curation content", "rationale": "Claude explicitly scopes out curation of external unit registries and consumes pinned releases instead; which defining constant fixes a base unit and the expression of a unit in base units are registry entry contents, resolved through resolve-unit rather than restated in the mixin." }, { "concept": "AGENTS.md bootstrap contract", "disposition": "rejected as unsupported by the evidence pack", "rationale": "Its source_refs are FHIR and QUDT, neither of which says anything about a bootstrap file. It is a Vercy platform convention belonging to the merged service layers and the specification scaffolding, not to a standards-researched context model." }, { "concept": "Ownership, access and retention coverage rating", "disposition": "Claude's declared gaps retained; grok's covered rating rejected", "rationale": "Grok rates all three covered but cites SI, UCUM, FHIR and NIST sources that assign no custody, access rule or retention period for a quantity value. Claude's position — inherit from the host, mark as gap, do not dress policy as normative — is the defensible one and must survive into the draft." }, { "concept": "Original-value retention and access", "disposition": "finding rejected as duplicative; function accepted", "rationale": "conversion-provenance-and-loss and access-disclosure-and-retention already carry the semantics, but no operation performs the freeze, leaving the retention requirement unexecutable. Only freeze-original-value is imported." }, { "concept": "Vector, tensor and complex quantities", "disposition": "keep Claude's in-scope treatment", "rationale": "Grok excludes them outright while Claude carries components inline via vrb-q2 without modelling tensor algebra. The base reading is narrower in obligation and wider in usability, and a scope divergence between providers is resolved in favour of the base rather than treated as a contradiction." }, { "concept": "Unit of presentation (ISO 11239 / ISO 11240) boundary", "disposition": "deferred to a boundary-note pass", "rationale": "Grok's distinction between a unit of presentation (tablet, ampoule, puff) and a metrological unit is real and is a live failure mode for UCUM atoms, but it is expressed as a boundary note, which this plan cannot add, and it depends on adopting ISO 11240 as a source the base does not hold." } ], "publicationHolds": [ "Source verification: every accepted source must be re-fetched live and confirmed against its stated version before publication. Claude records HTTP 403 on unece.org throughout and grok cites only the general UNECE recommendations index, so UN/CEFACT Rec 20 Revision 17 is currently confirmed by indexed listing rather than by reading the code list.", "Version-pin reconciliation: the two providers pinned different releases of the same vocabularies (FHIR R5 versus R4, QUDT v3.5.0 releases versus schema 2.1.29). The draft must state one release per vocabulary with a content digest and must not mix claims drawn from different releases.", "Multi-profile validation is incomplete: neither provider exercised the model across the healthcare/FHIR, trade/EDI Rec 20, scientific/SI-coherent and medicinal-product/ISO 11240 profiles. Domain-profile validation must be run before the structure is presented as deployable rather than as a research draft.", "Ownership, access and retention must be published as declared evidence gaps inherited from the host record, not as covered dimensions. Grok's 'covered' rating is not standards-backed and must not be carried into the draft's checklist.", "Paywalled normative text: ISO 80000-1:2022 and ISO 11240:2012 were read only as catalogue records and abstracts, and the SI Brochure and GUM PDFs were not machine-parsed. No clause-level claim or quotation may be published against any of them.", "UCUM prefix currency: whether the current UCUM release includes ronna, quetta, ronto and quecto is unverified in both packs. Verify against the live UCUM terminal table before publishing either a conflict or an alignment on the CGPM 2022 prefix extension.", "VIM4 is in committee draft and may change the definitions of quantity, quantity value and unit that this model is built on. The draft must state that it is built against VIM3 (JCGM 200:2012) and requires re-checking on VIM4 publication." ], "deferredResearch": [ "Record the UCUM/SI dimension-basis non-isomorphism in the alignment-and-conflict register: UCUM's defining basis (metre, second, gram, radian, kelvin, coulomb, candela) is not isomorphic with the SI, and UCUM treats radian as a base while the SI treats plane angle as dimension one — which changes commensurability results for angle quantities.", "Fold the prefix-on-special-unit scaling trap into the prefixes-and-scaled-units finding as a question: a prefix on a special unit scales the function output, so milli-degree Celsius is not 0.001 times a Celsius temperature.", "Evaluate adding a unit-of-presentation boundary note (ISO 11239 / ISO 11240): tablet, ampoule, vial and puff are counted presentations, not metrological units, and must not be stored as bare UCUM atoms. Requires adopting ISO 11240 as a source first.", "Confirm and record UCUM's deprecation of ppb and pptr on the grounds that billion and trillion are internationally ambiguous, and specify the power-of-ten replacement rule for the dimension-one-and-counts finding.", "Decide whether the accepted metrological-traceability-claim finding needs its own artifact or should reference the host model's calibration record by identifier, so the claim never circulates without locatable evidence while the chain stays out of scope.", "Retrieve the OM 2 ontology (Claude reports a TLS certificate mismatch on its published host) and IEC 80000-13 information-science units, both credible sibling vocabularies currently absent from the alignment set." ] }, "statistics": { "sources": 22, "bundles": 7, "layers": 16, "findings": 29, "questions": 105, "artifacts": 15, "functions": 14 } }