<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="2.9.1" schema-version="v2.3.0" flavor="ribose">
<bibdata type="standard">
<title language="en" type="main">UnitsML specifications — General</title>
<docidentifier primary="true" type="Ribose">36812(d)</docidentifier><docnumber>36812</docnumber><date type="updated"><on>2026-11-01</on></date><contributor><role type="author"/><organization>
<name>Ribose Asia Limited</name>
<abbreviation>Ribose</abbreviation></organization></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>Ribose Asia Limited</name>
<subdivision type="Committee" subtype="technical">
<name>CalConnect</name>
</subdivision></organization></contributor><contributor><role type="publisher"/><organization>
<name>Ribose Asia Limited</name>
<abbreviation>Ribose</abbreviation></organization></contributor><edition>1</edition><version>2026-11-01</version><language>en</language><script>Latn</script><status><stage>draft-standard</stage></status><copyright><from>2026</from><owner><organization>
<name>Ribose Asia Limited</name>
<abbreviation>Ribose</abbreviation></organization></owner></copyright><ext><doctype>standard</doctype><flavor>ribose</flavor></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><toc-heading-levels>2</toc-heading-levels><html-toc-heading-levels>2</html-toc-heading-levels><doc-toc-heading-levels>2</doc-toc-heading-levels><pdf-toc-heading-levels>2</pdf-toc-heading-levels></presentation-metadata></metanorma-extension>
<boilerplate><copyright-statement>

<clause id="_0bf1199e-8f6c-bc16-f9b0-78b3f1efec79" obligation="normative"><p id="_945067f2-795a-1e64-6f2b-25dd57c0f4d3">© Ribose Asia Limited 2026</p>
</clause>
</copyright-statement>

<license-statement>

<clause id="_3179d22c-816d-e694-6037-341f744bc6dc" obligation="normative">
<title id="_5ad8fb30-fcae-1072-87a2-407e6b4939ec">Warning for Drafts</title>
<p id="_a24807ee-0381-7ef8-1167-c3aacbb0fd73">This document is not a Ribose Standard. It is distributed for review and comment, and is subject to change without notice and may not be referred to as a Standard. Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.</p>
</clause>
</license-statement>

<legal-statement>

<clause id="_7e0f3c63-3fc9-65cf-37f7-b94afa0dbc5d" obligation="normative"><p id="_50bbfa02-61c3-8332-bad8-61e7389d1808">All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from the address below.</p>
</clause>
</legal-statement>

<feedback-statement>

<clause id="_d43a5e83-e752-e9bc-955e-4282a8ebb43a" obligation="normative"><p id="_0145a561-c9cc-a509-4784-ac2a1e6ea922" anchor="boilerplate-name" align="left">Ribose Asia Limited</p>

<p id="_80954cc8-1f49-9d20-5987-829595995a92" anchor="boilerplate-address" align="left">Suite 1, 8/F, New Henry House<br/> 10 Ice House Street<br/> Central<br/> Hong Kong<br/> <br/> <link target="mailto:copyright@ribose.com"/><br/> <link target="https://www.ribose.com">www.ribose.com</link></p>
</clause>
</feedback-statement>
</boilerplate><preface><foreword id="_75fb42bf-1502-adcf-bf23-d976cc48dc4b" obligation="informative">
<title id="_41c9fad3-d4c1-eecc-4fad-f91704acc026">Foreword</title>
<p id="_1249d258-7efa-1b38-97dd-c33f48854948">This part of the UnitsML specification series establishes the register procedures, the normative vocabulary, the artifact discipline and the release procedures that every other part assumes. It is the root of the series: every other part cites it for requirement language and procedures and carries no duplicate of that content.</p>

<p id="_feda0edc-5296-cd7a-ed01-2dd846c9fa37">The series is developed within the UnitsML program. The program dependency graph and stage gates are tracked in unitsml/unitsml-ruby#95. The series is specified in the ribose document flavor: each part states its model normatively (LML where the content is a data model, PARG where it is a grammar), carries worked examples with expected outcomes, and is gated by the register validator and the frozen corpora.</p>
</foreword><introduction id="_63123d52-be0d-8ce9-bae6-2ae9bdedc895" obligation="informative">
<title id="_2b2e98d1-114a-3da4-8556-01ae0a724280">Introduction</title>
<p id="_a9f74745-4b1d-21b0-12c8-bd1ce375301c">The UnitsML stack expresses measurement — values, units, quantity kinds, uncertainty — across a data register (UnitsDB), expression languages and multiple output formats, with implementations in Ruby, TypeScript and Rust. The architecture principle of the series is that <strong>artifacts are the product and engines are interchangeable</strong>: everything shareable is compiled to a checksummed artifact, every runtime replays the same conformance corpora, and byte-identity across languages is enforced by contract testing rather than by shared binaries.</p>

<p id="_493fbf9a-99d4-bb7f-60b3-267fc25102a5">Implementations follow a reference-first rule: the Ruby implementation lands every semantic layer first and its outputs are frozen as the oracle corpora; implementations in other languages are generated from schema declarations or verified against those corpora, never re-derived independently.</p>
</introduction></preface><sections>

<clause id="_d0aaf1c5-762f-57a9-4bae-2eec6cfbeca3" type="scope" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<p id="_64f74ffb-afa1-08b9-dd8e-8e4801006741">This document specifies:</p>

<ul id="_009d5568-2e70-b0ae-dfd1-90c74fe49341"><li><p id="_d61452f8-0020-53ff-a99a-9d11db234700">the procedures of the UnitsML specification register: document numbering, types, lifecycle and amendment rules;</p>
</li>
<li><p id="_7c2de260-826d-3e30-827a-3a14492fbf38">the normative vocabulary of the series and the binding of statements to conformance classes;</p>
</li>
<li><p id="_e8b57d7c-9d25-0e8c-74f9-6eba4c3e4036">the artifact discipline: checksums, editions, and the binding between normative parts and their conformance corpora;</p>
</li>
<li><p id="_eef1e8d3-8564-6640-ea39-cc75270b7b77">the release and distribution procedures for the data register and its downstream packages.</p>
</li>
</ul>

<p id="_df28d3ea-3db7-d077-2d7c-4391fcc80bc5">This document does not specify any behavior of units, quantities, conversions, expressions or evaluation; those are specified in Parts 2 to 8 and in the companion Plurimath series.</p>
</clause>



<terms id="_149b0aa0-97c8-30ea-3e59-11ebaef1a4d3" obligation="normative">
<title id="_dfb2eab2-f980-6365-3c47-81d0eb272962">Terms and definitions</title><p id="_9608c37a-eaae-1098-3a4b-f705fd512d85">No terms and definitions are listed in this document.</p>
<p id="_44019f7c-608e-0020-3363-715be497391e">For the purposes of this document, the following terms and definitions apply.</p>

<dl id="_8604c6b0-8cf9-07cc-5f0e-107e85cc9a9d"><dt>artifact</dt>
<dd id="_34aa5383-09b7-70be-12e7-2f3d2fa2478c"><p id="_3f0672ee-2352-400f-b91b-061a4c075b23">versioned, checksummed, language-independent file produced from a normative source (grammar, register, schema, corpus) and consumed by implementations without modification. Artifact bytes are authoritative; consumers verify checksums before use.</p>
</dd>
<dt>corpus</dt>
<dd id="_19fe7472-df76-2d2d-c090-875fbac3537b"><p id="_a2a044dc-9690-755a-956d-e7f2b691a4ea">a versioned collection of test vectors owned by CalConnect 36819. A corpus entry names its normative source clause and the tolerance convention that applies.</p>
</dd>
<dt>oracle</dt>
<dd id="_b8284fcf-996f-461f-b0c1-808b3cb161aa"><p id="_d591eb00-b923-1266-b44a-1872e47b8578">an implementation whose output is frozen into a corpus. The reference implementation of the series is the Ruby one; corpora are frozen from it.</p>
</dd>
<dt>edition</dt>
<dd id="_6a0b8c93-4d29-ca3d-ba36-008a1d73c1e6"><p id="_da2f0327-6177-f62e-8479-2ef2cee97f95">a recorded revision of an artifact or register, identified by checksum and version string.</p>
</dd>
<dt>conformance class</dt>
<dd id="_4af2a175-ad57-38cd-b667-9696104187a7"><p id="_ee380006-7730-73f3-2e00-7274b5c4b649">the set of vector classes an implementation replays, licensing specific claims (CalConnect 36819).</p>
</dd>
<dt>dialect L</dt>
<dd id="_1dccf908-c649-1371-7b63-8cf3e2c41b48"><p id="_00d9a238-f6dc-48fd-01ae-a7573c5363f6">the legacy AsciiMath compatibility dialect (Plurimath series, asciimath Part 1); not extended by this series.</p>
</dd>
<dt>dialect P (pma)</dt>
<dd id="_601bf075-98df-9ecc-93af-3fa76d2144b3"><p id="_4c760a23-3ea7-267f-92d3-ba9cbcc02f7c">the featureful strict input language (Plurimath series, pma Part 1).</p>
</dd>
<dt>SP 811</dt>
<dd id="_0905bc72-64d9-404c-9262-b21288290eda"><p id="_68c6c759-2d9f-4451-a672-aa0f697e2977">NIST Special Publication 811, <em>Guide for the Use of the International System of Units (SI)</em>.</p>
</dd>
<dt>VIM</dt>
<dd id="_5ae3415f-ccb3-4e4f-58f7-d66ddd0b8d7f"><p id="_ae35e2f1-6e1c-fb0d-98eb-d030b1feee50">JCGM 200, <em>International vocabulary of metrology</em>.</p>
</dd>
</dl>
</terms>

<clause id="_0c1d50cf-618c-4b6a-2750-745732367378" obligation="normative">
<title id="_577f0878-cbad-249b-c576-b43a5f664bb6">Conventions</title>
<p id="_c64a2baf-6089-2f8a-050e-f2cdd68a5543">Normative statements are declarative: the document states what implementations do and what invariants hold, and an implementation that does otherwise does not conform. A statement binds an implementation only within the conformance class it claims (CalConnect 36819).</p>

<example id="_ac08120a-6ab0-8672-382f-e2f6e6f8a2ff"><p id="_6b5e95c1-1fab-01c4-ad04-de3a1bd03e89">A TypeScript runtime that replays the parse/render and conversion corpora but no evaluator vectors claims class <tt>quantity-conversion</tt>; it does not advertise evaluation.</p>
</example>

<p id="_ca12bccc-5890-708b-030d-2dd18ea280ab">Single-source normativity: a normative rule is stated in exactly one part of the series; other parts cite it. Restating a rule from another part is an editorial defect corrected on sight.</p>
</clause>

<clause id="_cd7895f6-3713-4b69-1472-31e308b6a305" obligation="normative">
<title id="_2a056933-c9c1-c0a2-5996-9502e97631b7">Register procedures</title>
<clause id="_6574839f-66fd-48d9-caca-c122d96553b4" obligation="normative">
<title id="_f78b5037-43df-adbc-b92b-39edea4ecc8e">Document types</title>
<p id="_cb80389b-d5ef-2d28-2de4-c4e783f2981a">Register documents are classified as in <xref target="tbl-doc-types"/>.</p>

<table id="_b6b04638-cae9-0a70-721c-85eacc1cf9ec" anchor="tbl-doc-types"><colgroup><col width="25%"/><col width="75%"/></colgroup>
<name id="_67cb4aa7-1e90-8a09-11c0-c020b8e77cbd">Registered document types</name>
<thead><tr id="_6f210373-58a3-765e-be43-a1287af352ad"><th id="_f3dac6d1-6e59-45be-e382-93cca7f45b9a" valign="top" align="left">Type</th>
<th id="_879b97a0-f0ec-70e0-9789-abd921348f05" valign="top" align="left">Meaning</th>
</tr></thead>
<tbody><tr id="_05bdd29c-77f1-2134-8b9c-ceb6c20f3c07"><td id="_b4926321-dc85-b23c-bdd6-8889fceb2890" valign="top" align="left">Standards Track</td>
<td id="_6358ebc3-c7ee-376e-043e-b7bc5bce839e" valign="top" align="left">normative specifications of behavior, data or syntax; enforced by corpora</td>
</tr><tr id="_6d4e5248-af66-fbac-4803-25b8b2c06b0f"><td id="_c640af58-ff0f-d14b-14a9-5e8f94655f84" valign="top" align="left">Informational</td>
<td id="_b0ac09b6-0288-c9ad-3e19-73093c460274" valign="top" align="left">orientation, glossaries, research notes; never cited as a requirement source</td>
</tr><tr id="_d96cea7c-9d3b-c388-425d-c2ea449df95b"><td id="_6c3509b1-0121-71cd-dc09-d162b3360aa6" valign="top" align="left">Process</td>
<td id="_c03f62d8-5dbe-59e1-d4ac-1754de5a3779" valign="top" align="left">this document and its amendments</td>
</tr></tbody>
</table>
</clause>

<clause id="_440452ba-3b8b-0e70-0d16-3a2fb0d174fc" obligation="normative">
<title id="_eb30ee6e-fa61-0f1e-d192-148f4f5112df">Lifecycle</title>
<p id="_270fbed9-b86a-bc01-82e7-10e8895bbe2b">Idea → Draft (docstage 20) → Committee Draft (30) → Final Draft (50) → Published (60).</p>

<example id="_05481c9e-c629-18e7-687c-188413007f9f"><p id="_8fb3f308-409e-2ffc-9f32-577b3e12b7a1"><strong>Expected outcome.</strong> A part moved to docstage 60 without its Annex test vectors frozen in CalConnect 36819 is mis-published; the register procedure rejects the move.</p>
</example>
</clause>

<clause id="_0c2214fb-d786-0f16-ec77-5c7346af3d9c" obligation="normative">
<title id="_de6b98da-d819-d458-f535-17e0e6f3a4f8">Numbering</title>
<p id="_4051d974-2932-8c4a-02b1-e960f87054e1">Part numbers are permanent and never reused. Informational documents share the numbering space with an explicit type marker.</p>
</clause>

<clause id="_ceeb52cd-8d46-4313-c03c-e0c0680ef380" obligation="normative">
<title id="_dfca93b1-ce12-a7d0-e513-b16d9a2512ff">Amendments</title>
<p id="_415cafc6-9478-a5bd-924a-6a787d6f5ffa">A Published document changes only by a numbered Amendment; corrections that would alter normative content require an Amendment entry, never silent edits.</p>

<example id="_dd434ed4-ac3e-cdeb-01e8-ce64e38d9131"><p id="_52768d82-2146-b9d3-6afe-5f1fd6a2420c"><strong>Expected outcome.</strong> Correcting “Lagrange function” to “energy” in a rendered example is an editorial fix; changing the primary-reference selection rule of CalConnect 36814 requires “CalConnect 36814/Amd.1”.</p>
</example>
</clause>
</clause>

<clause id="_714f1e55-febf-bdf9-e6d6-a55eb16a07cd" obligation="normative">
<title id="_513eb9c2-ad16-48ec-5093-c3704e3b9cca">Conformance language</title>
<p id="_08e39a3c-d809-e05d-7a1b-8777bbc9ae44">Statements are declarative; requirement strength comes from precision and from the corpus vectors that test them.</p>

<example id="_5e26da76-2356-2bc6-470e-38ef2cfd47d2"><p id="_9bd790e5-c409-0e8c-c65b-cce1bf77f362"><strong>Interpretation.</strong> “Conversions with <tt>exact="true"</tt> are computed in exact rational arithmetic” (CalConnect 36816: an implementation returning 0.1 as a binary float for a declared-exact tenth is non-conforming, and the violation is detectable by byte comparison of the serialized decimal string.</p>
</example>
</clause>

<clause id="_28e2bf51-a87a-d791-5fce-9af17da00951" obligation="normative">
<title id="_561c38d3-164f-6781-7d27-b5b8c40933f1">Artifact discipline</title>
<p id="_083d8700-18d8-c7c5-4d9f-a8f609b91641">Every artifact carries a checksum; consumers verify it before load. Every artifact records its edition (source revision and generation date). Grammars, the register dataset, model schemas and corpora are artifacts; per-language engines are not. A change to artifact content regenerates the artifact and its conformance corpus in the same change.</p>

<example id="_351a3fa8-1190-64d2-914f-47b8529a1021"><p id="_e69df306-052f-71bd-c478-107f4386c95c"><strong>Expected outcome.</strong> The asciiunits artifact ships <tt>artifacts/unitsml.json</tt> with a checksum file. A consumer loading the artifact with a stale checksum aborts with a typed load error — not a warning — because grammar and behavior are bound to the bytes.</p>
</example>
</clause>

<clause id="_32309a4c-3c85-f695-453d-0ea94e324d77" obligation="normative">
<title id="_d28ceba1-38df-1234-ce21-ffd97a329eac">Distribution and release procedures</title>
<p id="_985e6769-56ea-c9d9-1899-f5075459b5e5">The release chain is strict and ordered:</p>

<quote id="_1d3f176b-3c30-c0c6-076a-b9debbc14acd"><p id="_8047b797-ffad-bcb8-33cf-edd1ba23e3bb">unitsdb data (tag v*) → unitsdb-ruby (submodule pin, VERSION, UNITS_DATA_VERSION)   → unitsml-ruby (payload regeneration, dependency bump)   → unitsdb-ts / unitsml-ts (dataset rebuild) → npm (bare, unprefixed names)</p>
</quote>

<p id="_98eff7a8-f554-10d9-5dca-0e48bd35c0ce">Rules:</p>

<ul id="_0cd108e3-38cc-8eae-b8bc-b9030e90d62e"><li><p id="_f558c6a3-912a-c794-c8c2-d456faa40f44">Data schema versions and package versions are independent; the data pin travels via <tt>UNITS_DATA_VERSION</tt>.</p>
</li>
<li><p id="_484ce12a-d1fc-ad62-6356-141123769674">Releases are PATCH bumps unless the maintainer states otherwise.</p>
</li>
<li><p id="_6c0b796d-2835-e611-09c1-e6dc817b8c6f">npm package names are bare and unprefixed (<tt>unitsml</tt>, <tt>unitsdb</tt>, <tt>asciiunits</tt>).</p>
</li>
<li><p id="_efebbfbc-da53-a2b2-8060-766f16c46971">Release workflows run Node 24: trusted publishing requires npm ≥ 11.5.</p>
</li>
<li><p id="_d6a53976-7403-0add-3f0d-dfe369a7d434">Every release is gated by conformance-corpus replay (CalConnect 36819).</p>
</li>
</ul>

<example id="_9ebff837-54a8-e05f-287f-7e8d4b333ca9"><p id="_c1d2dfb6-c381-6720-f26f-46e39ec1432f"><strong>Expected outcome (worked release).</strong> Data PRs land schema 2.2.0 (primary references, equivalence classes, 121 canonical conversions, IEC 62720 coverage) → tag v2.2.0 → unitsdb-ruby 2.2.13 (<tt>UNITS_DATA_VERSION = "2.2.0"</tt>) → unitsml-ruby payload regeneration → unitsdb-ts rebuild → <tt>unitsdb@0.1.2</tt> on npm, where <tt>getById("cur:EUR")</tt> returns the Euro with ISO numeric 978, the joule carries its primary reference NISTq17 (energy), and 6 quantities carry the energy equivalence class.</p>
</example>
</clause>

<clause id="_7cad99f9-3c76-e690-fb6e-04736776af61" obligation="normative">
<title id="_f41a072a-a8e6-8c4d-0aed-1d8d00526418">Conformance</title>
<p id="_1aa00256-af56-304d-6af2-9c264067fb86">This part is enforced by the register procedures themselves; it introduces no vectors. Conformance classes are defined in CalConnect 36819 and referenced from every other part’s conformance clause. The informative annexes map the series (<xref target="annex-series-map"/>) and provide additional test-suite examples (<xref target="annex-test-suite"/>).</p>
</clause>






</sections><annex id="_843ffa84-a8e6-288f-0446-1982b19e7345" anchor="annex-series-map" obligation="normative">
<title id="_3d03d812-ba6d-35a4-fb9a-0c0e6e0b9f62">Annex A (informative): series map</title>
<p id="_6bbac5d6-6076-5197-35c8-b3e2c06a86d3">The series is consumed as mapped in <xref target="tbl-series-map"/>.</p>

<table id="_2fe541e1-5248-ccf7-5671-59f968eec103" anchor="tbl-series-map"><colgroup><col width="25%"/><col width="50%"/><col width="25%"/></colgroup>
<name id="_b5888db2-ac83-98c7-8744-4f743385d257">Series map</name>
<thead><tr id="_2664ab6d-779c-ce6f-ef42-11e86a6d3ecc"><th id="_25f3454b-bbcf-79f0-c715-bc17336329ce" valign="top" align="left">Part</th>
<th id="_4dcc1f64-bfa6-d14f-1bf1-d2f11f39eb4d" valign="top" align="left">Title</th>
<th id="_c96a35f0-75b2-5f3c-58c1-96524c4c46e2" valign="top" align="left">Consumes</th>
</tr></thead>
<tbody><tr id="_ca8c56f0-13e7-a931-b506-b79a086fa1aa"><td id="_6cfd9f3d-9506-68c7-0806-da21c50cac94" valign="top" align="left">2</td>
<td id="_a26583d6-6d1e-c1b1-4786-a73acb517265" valign="top" align="left">Numeric and serialization contract</td>
<td id="_41c2d8ae-c1f0-2333-15da-5db566769055" valign="top" align="left">1</td>
</tr><tr id="_f716daf0-17c4-566f-db2a-2f4033bedcbd"><td id="_2ca80bf7-c189-5c09-5c78-22b32e6eea79" valign="top" align="left">3</td>
<td id="_55a3a399-7477-7d7f-fb96-a52c0f5d6922" valign="top" align="left">UnitsDB: the register</td>
<td id="_8c4329fa-aaa2-fa6b-0083-8a536964ca5e" valign="top" align="left">1, 2</td>
</tr><tr id="_4288d8a3-a588-d2ad-ba13-9a172ed600b1"><td id="_549fd47f-1af0-51b5-72bc-c586db240347" valign="top" align="left">4</td>
<td id="_30bb1cd0-d10b-59c6-ebc4-f6168a701d52" valign="top" align="left">The units model</td>
<td id="_f1e71167-6242-2db2-cb38-151ef7878b6e" valign="top" align="left">3, 2</td>
</tr><tr id="_e74e83b2-0deb-0b0d-3fbc-d06ca3470b29"><td id="_589530d6-dd73-b75d-76cd-db52b4961ce7" valign="top" align="left">5</td>
<td id="_518f6b86-2dcf-22e2-197d-7bd9a1197118" valign="top" align="left">Conversions</td>
<td id="_a611ffd4-d085-30e1-8f81-25c6c4e2fe0f" valign="top" align="left">3, 4, 2</td>
</tr><tr id="_763a0308-6248-27f4-7d04-4847dc3cfb0b"><td id="_3268ebe3-7a41-cf6c-9753-5792fbd33033" valign="top" align="left">6</td>
<td id="_7c49687d-25fd-524d-33a7-a405173b9d47" valign="top" align="left">asciiunits content language</td>
<td id="_cbed5560-b819-cd03-3800-422f476f951c" valign="top" align="left">3, 1</td>
</tr><tr id="_89f6af02-3276-2296-c00a-2a6ba4334a2d"><td id="_f39ffdf2-8b61-adfe-bca0-3d6c855f0efc" valign="top" align="left">7</td>
<td id="_29cfa95e-1c01-1d07-73fc-288c41f43541" valign="top" align="left">UnitsML XML usage</td>
<td id="_291f685a-ae55-b7bd-daac-28efde0931d5" valign="top" align="left">3, 4, 5</td>
</tr><tr id="_74fe0419-4180-bd72-8128-674691385866"><td id="_a8a73d64-cb9c-53bf-939e-ce0ef96ea8cd" valign="top" align="left">8</td>
<td id="_56d55200-cc4f-0d9d-e15f-f6ff228bd101" valign="top" align="left">Conformance</td>
<td id="_cceb9953-7a98-e907-84b7-c5e7ee4a5938" valign="top" align="left">1, 2 and all tested parts</td>
</tr></tbody>
</table>

<p id="_2cff75c1-f15a-be6a-6bfe-098f6c6291fd">The companion Plurimath series (math model, format interfaces, uncertainty representation, evaluation) references this series at exactly three seams: the unit-expression content language (Part 6), the units semantics (Parts 4 and 5), and the conformance corpora (Part 8).</p>
</annex><annex id="_eaa087d5-ba7e-a58e-b7a8-ab4488d044bf" anchor="annex-test-suite" obligation="normative">
<title id="_fa73360f-a8ae-e9c7-c8b0-9da22b4ca7c7">Annex B (informative): additional test-suite examples</title>
<example id="_29d16875-7c6f-4967-ed3b-ac671a2b94ba"><p id="_2523637b-c8f0-f907-7cf9-5432e65e95e3"><strong>Release-chain integrity.</strong> After the worked release of Clause 8, a consumer pinning <tt>unitsdb@0.1.2</tt> observes: 178 currencies; <tt>getById("cur:EUR")</tt> → Euro (ISO numeric 978); the joule’s <tt>quantity_references</tt> containing exactly one <tt>primary: true</tt> entry, <tt>NISTq17</tt> (energy); and 6 quantities carrying <tt>equivalence_class: "energy"</tt>.</p>
</example>

<example id="_71603128-e1f2-2000-db95-f8a4c5c28a3f"><p id="_0f76098c-88a7-b563-ddad-00ae16b9ff1b"><strong>Checksum failure.</strong> Modifying one byte of <tt>artifacts/unitsml.json</tt> without regenerating <tt>checksums</tt> aborts the load with the typed checksum error in every runtime.</p>
</example>

<example id="_b2f2e2e1-ba90-e47d-7e99-f77d12529b9a"><p id="_f8785760-3f53-d69d-f8ad-d3b19c353853"><strong>Amendment trace.</strong> A reader of Published CalConnect 36814 following an amendment finds the Amendment entry referenced from the part’s revision history; an unamended content change between releases is a register defect.</p>
</example>
</annex><bibliography><references id="_15964aee-a607-7a0d-6bdd-07651b76cb74" normative="true" obligation="informative">
<title id="_270c5ee6-077e-f285-ff95-287984a30140">Normative references</title><p id="_49996d2b-65c1-916b-9bbf-42b933aa0025">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>


<bibitem id="_cc10a81e-03b0-be7c-29cc-63c174223289" type="standard" schema-version="v1.5.6" anchor="jcgm200">
  <fetched>2026-11-05</fetched>
  
<title language="en" script="Latn">International vocabulary of metrology – Basic and general concepts and associated terms (VIM)</title>

  
<title language="fr" script="Latn">Vocabulaire international de métrologie – Concepts fondamentaux et généraux et termes associés (VIM)</title>

  <uri language="en" script="Latn" type="citation">https://www.bipm.org/documents/20126/2071204/JCGM_200_2012.pdf/f0e1ad45-d337-bbeb-53a6-15fe649d0ff1</uri>
  <docidentifier language="en" script="Latn" type="BIPM" primary="true">JCGM 200:2012</docidentifier>
  <docidentifier language="fr" script="Latn" type="BIPM" primary="true">JCGM 200:2012</docidentifier>
  <docidentifier type="BIPM" primary="true">JCGM 200:2012</docidentifier>
  <docnumber>JCGM 200:2012</docnumber>
  <date type="published">
    <on>2012</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Bureau of Weights and Measures</name>

      
<name language="fr" script="Latn">Bureau international des poids et mesures</name>

      <abbreviation language="fr" script="Latn">BIPM</abbreviation>
      <uri>www.bipm.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Organization for Standardization</name>

      
<name language="fr" script="Latn">Organisation internationale de normalisation</name>

      <abbreviation language="en" script="Latn">ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Organization for Standardization</name>

      
<name language="fr" script="Latn">Organisation internationale de normalisation</name>

      <abbreviation language="en" script="Latn">ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Electrotechnical Commission</name>

      
<name language="fr" script="Latn">Commission électrotechnique internationale</name>

      <abbreviation language="en" script="Latn">IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Organization of Legal Metrology</name>

      
<name language="fr" script="Latn">Organisation Internationale de Métrologie Légale</name>

      <abbreviation language="fr" script="Latn">OIML</abbreviation>
      <uri>www.oiml.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Union of Pure and Applied Chemistry</name>

      
<name language="fr" script="Latn">Union internationale de chimie pure et appliquée</name>

      <abbreviation language="en" script="Latn">IUPAC</abbreviation>
      <uri>www.iupac.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Union of Pure and Applied Physics</name>

      
<name language="fr" script="Latn">Union internationale de physique pure et appliquée</name>

      <abbreviation language="en" script="Latn">IUPAP</abbreviation>
      <uri>www.iupap.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Federation of Clinical Chemistry and Laboratory Medicine</name>

      
<name language="fr" script="Latn">Fédération internationale de chimie clinique et de biologie moléculaire</name>

      <abbreviation language="en" script="Latn">IFCC</abbreviation>
      <uri>www.ifcc.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Laboratory Accreditation Cooperation</name>

      
<name language="fr" script="Latn">Coopération internationale d’accréditation des laboratoires</name>

      <abbreviation language="en" script="Latn">ILAC</abbreviation>
      <uri>www.ilac.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="fr" script="Latn">Bureau international des poids et mesures</name>

      <subdivision>
        
<name language="en" script="Latn">Joint Committee for Guides in Metrology</name>

        
<name language="fr" script="Latn">Comité commun pour les guides en métrologie</name>

        <abbreviation>JCGM</abbreviation>
      </subdivision>
      <abbreviation language="fr" script="Latn">BIPM</abbreviation>
    </organization>
  </contributor>
  <edition>3</edition>
  <language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <place>
    <city>Paris</city>
  </place>
</bibitem>
<bibitem id="_3bb014e9-457b-4de0-e11f-c92ff4ad3bc4" type="standard" schema-version="v1.5.6" anchor="jcgm100">
  <fetched>2026-11-05</fetched>
  
<title language="en" script="Latn">Guide to the expression of uncertainty in measurement</title>

  
<title language="fr" script="Latn">Guide pour l’expression de l’incertitude de mesure</title>

  <uri language="en" script="Latn" type="citation">https://www.bipm.org/documents/20126/2071204/JCGM_100_2008_E.pdf/cb0ef43f-baa5-11cf-3f85-4dcd86f77bd6</uri>
  <uri language="fr" script="Latn" type="citation">https://www.bipm.org/documents/20126/2071204/JCGM_100_2008_F.pdf/53384399-1e6d-b598-dd17-2831a6b5b812</uri>
  <docidentifier language="en" script="Latn" type="BIPM" primary="true">JCGM 100:2008</docidentifier>
  <docidentifier language="fr" script="Latn" type="BIPM" primary="true">JCGM 100:2008</docidentifier>
  <docidentifier type="BIPM" primary="true">JCGM 100:2008</docidentifier>
  <docnumber>JCGM 100:2008</docnumber>
  <date type="published">
    <on>2008-09</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Bureau of Weights and Measures</name>

      
<name language="fr" script="Latn">Bureau international des poids et mesures</name>

      <abbreviation language="fr" script="Latn">BIPM</abbreviation>
      <uri>www.bipm.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Organization for Standardization</name>

      
<name language="fr" script="Latn">Organisation internationale de normalisation</name>

      <abbreviation language="en" script="Latn">ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Electrotechnical Commission</name>

      
<name language="fr" script="Latn">Commission électrotechnique internationale</name>

      <abbreviation language="en" script="Latn">IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Organization of Legal Metrology</name>

      
<name language="fr" script="Latn">Organisation Internationale de Métrologie Légale</name>

      <abbreviation language="fr" script="Latn">OIML</abbreviation>
      <uri>www.oiml.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Union of Pure and Applied Chemistry</name>

      
<name language="fr" script="Latn">Union internationale de chimie pure et appliquée</name>

      <abbreviation language="en" script="Latn">IUPAC</abbreviation>
      <uri>www.iupac.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Union of Pure and Applied Physics</name>

      
<name language="fr" script="Latn">Union internationale de physique pure et appliquée</name>

      <abbreviation language="en" script="Latn">IUPAP</abbreviation>
      <uri>www.iupap.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Federation of Clinical Chemistry and Laboratory Medicine</name>

      
<name language="fr" script="Latn">Fédération internationale de chimie clinique et de biologie moléculaire</name>

      <abbreviation language="en" script="Latn">IFCC</abbreviation>
      <uri>www.ifcc.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Laboratory Accreditation Cooperation</name>

      
<name language="fr" script="Latn">Coopération internationale d’accréditation des laboratoires</name>

      <abbreviation language="en" script="Latn">ILAC</abbreviation>
      <uri>www.ilac.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="fr" script="Latn">Bureau international des poids et mesures</name>

      <subdivision>
        
<name language="en" script="Latn">Joint Committee for Guides in Metrology</name>

        
<name language="fr" script="Latn">Comité commun pour les guides en métrologie</name>

        <abbreviation>JCGM</abbreviation>
      </subdivision>
      <abbreviation language="fr" script="Latn">BIPM</abbreviation>
    </organization>
  </contributor>
  <edition>1</edition>
  <language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <place>
    <city>Paris</city>
  </place>
</bibitem>
</references><references id="_924a34c6-8a84-f2d2-e169-ec41b20f7ce6" normative="false" obligation="informative">
<title id="_50ceb1e1-516f-2673-d73d-4f0c58b4d023">Bibliography</title><bibitem anchor="ref95" id="_74b9d47e-21a1-aabd-9820-1111117ff681">
  <formattedref format="application/x-isodoc+xml"><em>UnitsML program master graph</em> — <link target="https://github.com/unitsml/unitsml-ruby/issues/95"/></formattedref>
  <docidentifier>unitsml/unitsml-ruby#95</docidentifier>
  <docnumber>95</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="pendrill2024" id="_5987559b-0c49-ed3f-55c2-ed1b28f9c8f4">
  <formattedref format="application/x-isodoc+xml">L. R. Pendrill, <em>Quantities and units: order amongst complexity</em>, De Gruyter</formattedref>
  <docidentifier>Pendrill 2024</docidentifier>
  <docnumber>2024</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="xsd-spec" id="_bc6026f4-2cef-8f4b-6d3a-4f732ecd63d9">
  <formattedref format="application/x-isodoc+xml"><em>UnitsML XML Schema specification</em> (generated from XSD; house document pattern)</formattedref>
  <docidentifier>unitsml/docs PR #9</docidentifier>
  <docnumber>9</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem>



</references></bibliography>
</metanorma>
