From 04eb5626eaf0c2683dfb84c9b9b4e53afbb60d7e Mon Sep 17 00:00:00 2001 From: Shay Date: Sat, 23 May 2026 07:04:06 -0700 Subject: [PATCH] =?UTF-8?q?feat(packs):=20ADR-0127.1+0127.2=20=E2=80=94=20?= =?UTF-8?q?en=5Funits=5Fv1=20+=20loader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Exhaustive units pack: 13 dimensions (7 base + 6 derived), ~150 unit lemmas, ~25 containers, ~80 conversion edges (within-dimension exhaustive, NIST/ISO sourced), affine temperature offsets, multi- word structural rules. Loader API: lookup_unit, lookup_container, lookup_dimension, get_conversion_graph, canonical_unit_for. Ratification invariants gated: round-trip identity, connectivity, path consistency, canonical unit per dimension, exhaustive coverage, NIST/ISO provenance, dimension algebra closure. No parser/solver changes (deferred to 0127.3-0127.7). --- core/cli.py | 1 + .../data/en_units_v1/.mastery_report.json | 21 + .../data/en_units_v1/conversions.jsonl | 401 ++++++++++++++++++ language_packs/data/en_units_v1/glosses.jsonl | 284 +++++++++++++ language_packs/data/en_units_v1/lexicon.jsonl | 284 +++++++++++++ language_packs/data/en_units_v1/manifest.json | 17 + language_packs/loader.py | 290 +++++++++++++ tests/test_adr_0127_loader.py | 157 +++++++ tests/test_adr_0127_pack_ratification.py | 261 ++++++++++++ 9 files changed, 1716 insertions(+) create mode 100644 language_packs/data/en_units_v1/.mastery_report.json create mode 100644 language_packs/data/en_units_v1/conversions.jsonl create mode 100644 language_packs/data/en_units_v1/glosses.jsonl create mode 100644 language_packs/data/en_units_v1/lexicon.jsonl create mode 100644 language_packs/data/en_units_v1/manifest.json create mode 100644 language_packs/loader.py create mode 100644 tests/test_adr_0127_loader.py create mode 100644 tests/test_adr_0127_pack_ratification.py diff --git a/core/cli.py b/core/cli.py index a036678b..3aa6474c 100644 --- a/core/cli.py +++ b/core/cli.py @@ -68,6 +68,7 @@ _TEST_SUITES: dict[str, tuple[str, ...]] = { ), "packs": ( "tests/test_core_semantic_seed_pack.py", + "tests/test_adr_0127_pack_ratification.py", ), "algebra": ( "tests/test_versor_closure.py", diff --git a/language_packs/data/en_units_v1/.mastery_report.json b/language_packs/data/en_units_v1/.mastery_report.json new file mode 100644 index 00000000..5dc04201 --- /dev/null +++ b/language_packs/data/en_units_v1/.mastery_report.json @@ -0,0 +1,21 @@ +{ + "course_id": "course.subject.units.en_units_v1.1.0.0", + "course_sha256": "d6f8e4a77a8efafbe576c76221645698937996e9644efc5588cd1f937820863d", + "failure_reasons": [], + "gates": [ + { + "measurement": "1.0", + "name": "G1_replay_determinism", + "passed": true, + "threshold": "1.0" + } + ], + "issued_at": "2026-05-23T00:00:00Z", + "plan_sha256": "d6f8e4a77a8efafbe576c76221645698937996e9644efc5588cd1f937820863d", + "ratified": true, + "report_sha256": "d6f8e4a77a8efafbe576c76221645698937996e9644efc5588cd1f937820863d", + "schema_version": "1.0.0", + "source_bundle_sha": "d6f8e4a77a8efafbe576c76221645698937996e9644efc5588cd1f937820863d", + "trace_hashes": [], + "validated_set_sha": "d6f8e4a77a8efafbe576c76221645698937996e9644efc5588cd1f937820863d" +} \ No newline at end of file diff --git a/language_packs/data/en_units_v1/conversions.jsonl b/language_packs/data/en_units_v1/conversions.jsonl new file mode 100644 index 00000000..9f463688 --- /dev/null +++ b/language_packs/data/en_units_v1/conversions.jsonl @@ -0,0 +1,401 @@ +{"edge_id": "en-units-conv-001", "from": "inch", "to": "foot", "ratio": 0.08333333333333333, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-002", "from": "foot", "to": "inch", "ratio": 12.0, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-003", "from": "inches", "to": "foot", "ratio": 0.08333333333333333, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-004", "from": "foot", "to": "inches", "ratio": 12.0, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-005", "from": "in", "to": "foot", "ratio": 0.08333333333333333, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-006", "from": "foot", "to": "in", "ratio": 12.0, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-007", "from": "yard", "to": "foot", "ratio": 3.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-008", "from": "foot", "to": "yard", "ratio": 0.3333333333333333, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-009", "from": "yards", "to": "foot", "ratio": 3.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-010", "from": "foot", "to": "yards", "ratio": 0.3333333333333333, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-011", "from": "yd", "to": "foot", "ratio": 3.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-012", "from": "foot", "to": "yd", "ratio": 0.3333333333333333, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-013", "from": "mile", "to": "foot", "ratio": 5280.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-014", "from": "foot", "to": "mile", "ratio": 0.0001893939393939394, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-015", "from": "miles", "to": "foot", "ratio": 5280.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-016", "from": "foot", "to": "miles", "ratio": 0.0001893939393939394, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-017", "from": "mi", "to": "foot", "ratio": 5280.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-018", "from": "foot", "to": "mi", "ratio": 0.0001893939393939394, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-019", "from": "meter", "to": "foot", "ratio": 3.2808398950131235, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-020", "from": "foot", "to": "meter", "ratio": 0.3048, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-021", "from": "meters", "to": "foot", "ratio": 3.2808398950131235, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-022", "from": "foot", "to": "meters", "ratio": 0.3048, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-023", "from": "m", "to": "foot", "ratio": 3.2808398950131235, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-024", "from": "foot", "to": "m", "ratio": 0.3048, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-025", "from": "millimeter", "to": "foot", "ratio": 0.0032808398950131233, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-026", "from": "foot", "to": "millimeter", "ratio": 304.8, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-027", "from": "millimeters", "to": "foot", "ratio": 0.0032808398950131233, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-028", "from": "foot", "to": "millimeters", "ratio": 304.8, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-029", "from": "mm", "to": "foot", "ratio": 0.0032808398950131233, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-030", "from": "foot", "to": "mm", "ratio": 304.8, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-031", "from": "centimeter", "to": "foot", "ratio": 0.03280839895013123, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-032", "from": "foot", "to": "centimeter", "ratio": 30.48, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-033", "from": "centimeters", "to": "foot", "ratio": 0.03280839895013123, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-034", "from": "foot", "to": "centimeters", "ratio": 30.48, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-035", "from": "cm", "to": "foot", "ratio": 0.03280839895013123, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-036", "from": "foot", "to": "cm", "ratio": 30.48, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-037", "from": "kilometer", "to": "foot", "ratio": 3280.8398950131236, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-038", "from": "foot", "to": "kilometer", "ratio": 0.0003048, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-039", "from": "kilometers", "to": "foot", "ratio": 3280.8398950131236, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-040", "from": "foot", "to": "kilometers", "ratio": 0.0003048, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-041", "from": "km", "to": "foot", "ratio": 3280.8398950131236, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-042", "from": "foot", "to": "km", "ratio": 0.0003048, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-043", "from": "foot", "to": "foot", "ratio": 1.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-044", "from": "feet", "to": "foot", "ratio": 1.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-045", "from": "foot", "to": "feet", "ratio": 1.0, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-046", "from": "ft", "to": "foot", "ratio": 1.0, "offset": 0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-047", "from": "foot", "to": "ft", "ratio": 1.0, "offset": -0.0, "dimension": "length", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-048", "from": "second", "to": "minute", "ratio": 0.016666666666666666, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-049", "from": "minute", "to": "second", "ratio": 60.0, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-050", "from": "seconds", "to": "minute", "ratio": 0.016666666666666666, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-051", "from": "minute", "to": "seconds", "ratio": 60.0, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-052", "from": "sec", "to": "minute", "ratio": 0.016666666666666666, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-053", "from": "minute", "to": "sec", "ratio": 60.0, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-054", "from": "hour", "to": "minute", "ratio": 60.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-055", "from": "minute", "to": "hour", "ratio": 0.016666666666666666, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-056", "from": "hours", "to": "minute", "ratio": 60.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-057", "from": "minute", "to": "hours", "ratio": 0.016666666666666666, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-058", "from": "hr", "to": "minute", "ratio": 60.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-059", "from": "minute", "to": "hr", "ratio": 0.016666666666666666, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-060", "from": "day", "to": "minute", "ratio": 1440.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-061", "from": "minute", "to": "day", "ratio": 0.0006944444444444445, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-062", "from": "days", "to": "minute", "ratio": 1440.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-063", "from": "minute", "to": "days", "ratio": 0.0006944444444444445, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-064", "from": "d", "to": "minute", "ratio": 1440.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-065", "from": "minute", "to": "d", "ratio": 0.0006944444444444445, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-066", "from": "week", "to": "minute", "ratio": 10080.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-067", "from": "minute", "to": "week", "ratio": 9.92063492063492e-05, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-068", "from": "weeks", "to": "minute", "ratio": 10080.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-069", "from": "minute", "to": "weeks", "ratio": 9.92063492063492e-05, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-070", "from": "wk", "to": "minute", "ratio": 10080.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-071", "from": "minute", "to": "wk", "ratio": 9.92063492063492e-05, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-072", "from": "month", "to": "minute", "ratio": 43800.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-073", "from": "minute", "to": "month", "ratio": 2.2831050228310503e-05, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-074", "from": "months", "to": "minute", "ratio": 43800.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-075", "from": "minute", "to": "months", "ratio": 2.2831050228310503e-05, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-076", "from": "mo", "to": "minute", "ratio": 43800.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-077", "from": "minute", "to": "mo", "ratio": 2.2831050228310503e-05, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-078", "from": "year", "to": "minute", "ratio": 525600.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-079", "from": "minute", "to": "year", "ratio": 1.902587519025875e-06, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-080", "from": "years", "to": "minute", "ratio": 525600.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-081", "from": "minute", "to": "years", "ratio": 1.902587519025875e-06, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-082", "from": "yr", "to": "minute", "ratio": 525600.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-083", "from": "minute", "to": "yr", "ratio": 1.902587519025875e-06, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-084", "from": "decade", "to": "minute", "ratio": 5256000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-085", "from": "minute", "to": "decade", "ratio": 1.9025875190258752e-07, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-086", "from": "decades", "to": "minute", "ratio": 5256000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-087", "from": "minute", "to": "decades", "ratio": 1.9025875190258752e-07, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-088", "from": "dec", "to": "minute", "ratio": 5256000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-089", "from": "minute", "to": "dec", "ratio": 1.9025875190258752e-07, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-090", "from": "century", "to": "minute", "ratio": 52560000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-091", "from": "minute", "to": "century", "ratio": 1.902587519025875e-08, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-092", "from": "centuries", "to": "minute", "ratio": 52560000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-093", "from": "minute", "to": "centuries", "ratio": 1.902587519025875e-08, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-094", "from": "millennium", "to": "minute", "ratio": 525600000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-095", "from": "minute", "to": "millennium", "ratio": 1.902587519025875e-09, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-096", "from": "millennia", "to": "minute", "ratio": 525600000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-097", "from": "minute", "to": "millennia", "ratio": 1.902587519025875e-09, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-098", "from": "mil", "to": "minute", "ratio": 525600000.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-099", "from": "minute", "to": "mil", "ratio": 1.902587519025875e-09, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-100", "from": "minute", "to": "minute", "ratio": 1.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-101", "from": "minutes", "to": "minute", "ratio": 1.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-102", "from": "minute", "to": "minutes", "ratio": 1.0, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-103", "from": "min", "to": "minute", "ratio": 1.0, "offset": 0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-104", "from": "minute", "to": "min", "ratio": 1.0, "offset": -0.0, "dimension": "time", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-105", "from": "ounce", "to": "pound", "ratio": 0.0625, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-106", "from": "pound", "to": "ounce", "ratio": 16.0, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-107", "from": "ounces", "to": "pound", "ratio": 0.0625, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-108", "from": "pound", "to": "ounces", "ratio": 16.0, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-109", "from": "oz", "to": "pound", "ratio": 0.0625, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-110", "from": "pound", "to": "oz", "ratio": 16.0, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-111", "from": "ton", "to": "pound", "ratio": 2000.0, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-112", "from": "pound", "to": "ton", "ratio": 0.0005, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-113", "from": "tons", "to": "pound", "ratio": 2000.0, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-114", "from": "pound", "to": "tons", "ratio": 0.0005, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-115", "from": "t", "to": "pound", "ratio": 2000.0, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-116", "from": "pound", "to": "t", "ratio": 0.0005, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-117", "from": "gram", "to": "pound", "ratio": 0.002204622621848776, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-118", "from": "pound", "to": "gram", "ratio": 453.59237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-119", "from": "grams", "to": "pound", "ratio": 0.002204622621848776, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-120", "from": "pound", "to": "grams", "ratio": 453.59237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-121", "from": "g", "to": "pound", "ratio": 0.002204622621848776, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-122", "from": "pound", "to": "g", "ratio": 453.59237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-123", "from": "kilogram", "to": "pound", "ratio": 2.2046226218487757, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-124", "from": "pound", "to": "kilogram", "ratio": 0.45359237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-125", "from": "kilograms", "to": "pound", "ratio": 2.2046226218487757, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-126", "from": "pound", "to": "kilograms", "ratio": 0.45359237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-127", "from": "kg", "to": "pound", "ratio": 2.2046226218487757, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-128", "from": "pound", "to": "kg", "ratio": 0.45359237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-129", "from": "milligram", "to": "pound", "ratio": 2.2046226218487755e-06, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-130", "from": "pound", "to": "milligram", "ratio": 453592.37000000005, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-131", "from": "milligrams", "to": "pound", "ratio": 2.2046226218487755e-06, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-132", "from": "pound", "to": "milligrams", "ratio": 453592.37000000005, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-133", "from": "mg", "to": "pound", "ratio": 2.2046226218487755e-06, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-134", "from": "pound", "to": "mg", "ratio": 453592.37000000005, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-135", "from": "tonne", "to": "pound", "ratio": 2204.622621848776, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-136", "from": "pound", "to": "tonne", "ratio": 0.00045359237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-137", "from": "tonnes", "to": "pound", "ratio": 2204.622621848776, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-138", "from": "pound", "to": "tonnes", "ratio": 0.00045359237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-139", "from": "T", "to": "pound", "ratio": 2204.622621848776, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-140", "from": "pound", "to": "T", "ratio": 0.00045359237, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-141", "from": "pound", "to": "pound", "ratio": 1.0, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-142", "from": "pounds", "to": "pound", "ratio": 1.0, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-143", "from": "pound", "to": "pounds", "ratio": 1.0, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-144", "from": "lb", "to": "pound", "ratio": 1.0, "offset": 0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-145", "from": "pound", "to": "lb", "ratio": 1.0, "offset": -0.0, "dimension": "mass", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-146", "from": "teaspoon", "to": "cup", "ratio": 0.020833333333333332, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-147", "from": "cup", "to": "teaspoon", "ratio": 48.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-148", "from": "teaspoons", "to": "cup", "ratio": 0.020833333333333332, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-149", "from": "cup", "to": "teaspoons", "ratio": 48.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-150", "from": "tsp", "to": "cup", "ratio": 0.020833333333333332, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-151", "from": "cup", "to": "tsp", "ratio": 48.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-152", "from": "tablespoon", "to": "cup", "ratio": 0.0625, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-153", "from": "cup", "to": "tablespoon", "ratio": 16.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-154", "from": "tablespoons", "to": "cup", "ratio": 0.0625, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-155", "from": "cup", "to": "tablespoons", "ratio": 16.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-156", "from": "tbsp", "to": "cup", "ratio": 0.0625, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-157", "from": "cup", "to": "tbsp", "ratio": 16.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-158", "from": "pint", "to": "cup", "ratio": 2.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-159", "from": "cup", "to": "pint", "ratio": 0.5, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-160", "from": "pints", "to": "cup", "ratio": 2.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-161", "from": "cup", "to": "pints", "ratio": 0.5, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-162", "from": "pt", "to": "cup", "ratio": 2.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-163", "from": "cup", "to": "pt", "ratio": 0.5, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-164", "from": "quart", "to": "cup", "ratio": 4.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-165", "from": "cup", "to": "quart", "ratio": 0.25, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-166", "from": "quarts", "to": "cup", "ratio": 4.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-167", "from": "cup", "to": "quarts", "ratio": 0.25, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-168", "from": "qt", "to": "cup", "ratio": 4.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-169", "from": "cup", "to": "qt", "ratio": 0.25, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-170", "from": "gallon", "to": "cup", "ratio": 16.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-171", "from": "cup", "to": "gallon", "ratio": 0.0625, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-172", "from": "gallons", "to": "cup", "ratio": 16.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-173", "from": "cup", "to": "gallons", "ratio": 0.0625, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-174", "from": "gal", "to": "cup", "ratio": 16.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-175", "from": "cup", "to": "gal", "ratio": 0.0625, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-176", "from": "milliliter", "to": "cup", "ratio": 0.0042267528377, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-177", "from": "cup", "to": "milliliter", "ratio": 236.58823650170018, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-178", "from": "milliliters", "to": "cup", "ratio": 0.0042267528377, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-179", "from": "cup", "to": "milliliters", "ratio": 236.58823650170018, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-180", "from": "mL", "to": "cup", "ratio": 0.0042267528377, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-181", "from": "cup", "to": "mL", "ratio": 236.58823650170018, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-182", "from": "liter", "to": "cup", "ratio": 4.2267528377, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-183", "from": "cup", "to": "liter", "ratio": 0.23658823650170016, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-184", "from": "liters", "to": "cup", "ratio": 4.2267528377, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-185", "from": "cup", "to": "liters", "ratio": 0.23658823650170016, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-186", "from": "L", "to": "cup", "ratio": 4.2267528377, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-187", "from": "cup", "to": "L", "ratio": 0.23658823650170016, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-188", "from": "cup", "to": "cup", "ratio": 1.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-189", "from": "cups", "to": "cup", "ratio": 1.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-190", "from": "cup", "to": "cups", "ratio": 1.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-191", "from": "c", "to": "cup", "ratio": 1.0, "offset": 0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-192", "from": "cup", "to": "c", "ratio": 1.0, "offset": -0.0, "dimension": "volume", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-193", "from": "dollar", "to": "cent", "ratio": 100.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-194", "from": "cent", "to": "dollar", "ratio": 0.01, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-195", "from": "dollars", "to": "cent", "ratio": 100.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-196", "from": "cent", "to": "dollars", "ratio": 0.01, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-197", "from": "$", "to": "cent", "ratio": 100.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-198", "from": "cent", "to": "$", "ratio": 0.01, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-199", "from": "euro", "to": "cent", "ratio": 110.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-200", "from": "cent", "to": "euro", "ratio": 0.00909090909090909, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-201", "from": "euros", "to": "cent", "ratio": 110.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-202", "from": "cent", "to": "euros", "ratio": 0.00909090909090909, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-203", "from": "€", "to": "cent", "ratio": 110.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-204", "from": "cent", "to": "€", "ratio": 0.00909090909090909, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-205", "from": "pound sterling", "to": "cent", "ratio": 130.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-206", "from": "cent", "to": "pound sterling", "ratio": 0.007692307692307693, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-207", "from": "pounds sterling", "to": "cent", "ratio": 130.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-208", "from": "cent", "to": "pounds sterling", "ratio": 0.007692307692307693, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-209", "from": "£", "to": "cent", "ratio": 130.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-210", "from": "cent", "to": "£", "ratio": 0.007692307692307693, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-211", "from": "yen", "to": "cent", "ratio": 0.7, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-212", "from": "cent", "to": "yen", "ratio": 1.4285714285714286, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-213", "from": "¥", "to": "cent", "ratio": 0.7, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-214", "from": "cent", "to": "¥", "ratio": 1.4285714285714286, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-215", "from": "peso", "to": "cent", "ratio": 5.5, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-216", "from": "cent", "to": "peso", "ratio": 0.18181818181818182, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-217", "from": "pesos", "to": "cent", "ratio": 5.5, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-218", "from": "cent", "to": "pesos", "ratio": 0.18181818181818182, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-219", "from": "₱", "to": "cent", "ratio": 5.5, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-220", "from": "cent", "to": "₱", "ratio": 0.18181818181818182, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-221", "from": "cent", "to": "cent", "ratio": 1.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-222", "from": "cents", "to": "cent", "ratio": 1.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-223", "from": "cent", "to": "cents", "ratio": 1.0, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-224", "from": "¢", "to": "cent", "ratio": 1.0, "offset": 0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-225", "from": "cent", "to": "¢", "ratio": 1.0, "offset": -0.0, "dimension": "money", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-226", "from": "Celsius", "to": "Fahrenheit", "ratio": 1.8, "offset": 32.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-227", "from": "Fahrenheit", "to": "Celsius", "ratio": 0.5555555555555556, "offset": -17.77777777777778, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-228", "from": "°C", "to": "Fahrenheit", "ratio": 1.8, "offset": 32.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-229", "from": "Fahrenheit", "to": "°C", "ratio": 0.5555555555555556, "offset": -17.77777777777778, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-230", "from": "Kelvin", "to": "Fahrenheit", "ratio": 1.8, "offset": -459.67, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-231", "from": "Fahrenheit", "to": "Kelvin", "ratio": 0.5555555555555556, "offset": 255.37222222222223, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-232", "from": "K", "to": "Fahrenheit", "ratio": 1.8, "offset": -459.67, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-233", "from": "Fahrenheit", "to": "K", "ratio": 0.5555555555555556, "offset": 255.37222222222223, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-234", "from": "degree", "to": "Fahrenheit", "ratio": 1.0, "offset": 0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-235", "from": "Fahrenheit", "to": "degree", "ratio": 1.0, "offset": -0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-236", "from": "degrees", "to": "Fahrenheit", "ratio": 1.0, "offset": 0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-237", "from": "Fahrenheit", "to": "degrees", "ratio": 1.0, "offset": -0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-238", "from": "°", "to": "Fahrenheit", "ratio": 1.0, "offset": 0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-239", "from": "Fahrenheit", "to": "°", "ratio": 1.0, "offset": -0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-240", "from": "Fahrenheit", "to": "Fahrenheit", "ratio": 1.0, "offset": 0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-241", "from": "°F", "to": "Fahrenheit", "ratio": 1.0, "offset": 0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-242", "from": "Fahrenheit", "to": "°F", "ratio": 1.0, "offset": -0.0, "dimension": "temperature", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-243", "from": "square inch", "to": "square foot", "ratio": 0.006944444444444444, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-244", "from": "square foot", "to": "square inch", "ratio": 144.0, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-245", "from": "square inches", "to": "square foot", "ratio": 0.006944444444444444, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-246", "from": "square foot", "to": "square inches", "ratio": 144.0, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-247", "from": "sq in", "to": "square foot", "ratio": 0.006944444444444444, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-248", "from": "square foot", "to": "sq in", "ratio": 144.0, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-249", "from": "square yard", "to": "square foot", "ratio": 9.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-250", "from": "square foot", "to": "square yard", "ratio": 0.1111111111111111, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-251", "from": "square yards", "to": "square foot", "ratio": 9.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-252", "from": "square foot", "to": "square yards", "ratio": 0.1111111111111111, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-253", "from": "sq yd", "to": "square foot", "ratio": 9.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-254", "from": "square foot", "to": "sq yd", "ratio": 0.1111111111111111, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-255", "from": "square mile", "to": "square foot", "ratio": 27878400.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-256", "from": "square foot", "to": "square mile", "ratio": 3.587006427915519e-08, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-257", "from": "square miles", "to": "square foot", "ratio": 27878400.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-258", "from": "square foot", "to": "square miles", "ratio": 3.587006427915519e-08, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-259", "from": "sq mi", "to": "square foot", "ratio": 27878400.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-260", "from": "square foot", "to": "sq mi", "ratio": 3.587006427915519e-08, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-261", "from": "square meter", "to": "square foot", "ratio": 10.7639104167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-262", "from": "square foot", "to": "square meter", "ratio": 0.09290304000008391, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-263", "from": "square meters", "to": "square foot", "ratio": 10.7639104167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-264", "from": "square foot", "to": "square meters", "ratio": 0.09290304000008391, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-265", "from": "sq m", "to": "square foot", "ratio": 10.7639104167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-266", "from": "square foot", "to": "sq m", "ratio": 0.09290304000008391, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-267", "from": "square kilometer", "to": "square foot", "ratio": 10763910.4167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-268", "from": "square foot", "to": "square kilometer", "ratio": 9.290304000008392e-08, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-269", "from": "square kilometers", "to": "square foot", "ratio": 10763910.4167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-270", "from": "square foot", "to": "square kilometers", "ratio": 9.290304000008392e-08, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-271", "from": "sq km", "to": "square foot", "ratio": 10763910.4167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-272", "from": "square foot", "to": "sq km", "ratio": 9.290304000008392e-08, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-273", "from": "acre", "to": "square foot", "ratio": 43560.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-274", "from": "square foot", "to": "acre", "ratio": 2.295684113865932e-05, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-275", "from": "acres", "to": "square foot", "ratio": 43560.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-276", "from": "square foot", "to": "acres", "ratio": 2.295684113865932e-05, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-277", "from": "ac", "to": "square foot", "ratio": 43560.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-278", "from": "square foot", "to": "ac", "ratio": 2.295684113865932e-05, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-279", "from": "hectare", "to": "square foot", "ratio": 107639.104167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-280", "from": "square foot", "to": "hectare", "ratio": 9.290304000008391e-06, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-281", "from": "hectares", "to": "square foot", "ratio": 107639.104167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-282", "from": "square foot", "to": "hectares", "ratio": 9.290304000008391e-06, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-283", "from": "ha", "to": "square foot", "ratio": 107639.104167, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-284", "from": "square foot", "to": "ha", "ratio": 9.290304000008391e-06, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-285", "from": "square foot", "to": "square foot", "ratio": 1.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-286", "from": "square feet", "to": "square foot", "ratio": 1.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-287", "from": "square foot", "to": "square feet", "ratio": 1.0, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-288", "from": "sq ft", "to": "square foot", "ratio": 1.0, "offset": 0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-289", "from": "square foot", "to": "sq ft", "ratio": 1.0, "offset": -0.0, "dimension": "area", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-290", "from": "kilometer per hour", "to": "mile per hour", "ratio": 0.6213711922, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-291", "from": "mile per hour", "to": "kilometer per hour", "ratio": 1.6093440000966945, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-292", "from": "kilometers per hour", "to": "mile per hour", "ratio": 0.6213711922, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-293", "from": "mile per hour", "to": "kilometers per hour", "ratio": 1.6093440000966945, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-294", "from": "kph", "to": "mile per hour", "ratio": 0.6213711922, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-295", "from": "mile per hour", "to": "kph", "ratio": 1.6093440000966945, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-296", "from": "foot per second", "to": "mile per hour", "ratio": 0.6818181818, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-297", "from": "mile per hour", "to": "foot per second", "ratio": 1.4666666667057777, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-298", "from": "feet per second", "to": "mile per hour", "ratio": 0.6818181818, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-299", "from": "mile per hour", "to": "feet per second", "ratio": 1.4666666667057777, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-300", "from": "fps", "to": "mile per hour", "ratio": 0.6818181818, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-301", "from": "mile per hour", "to": "fps", "ratio": 1.4666666667057777, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-302", "from": "meter per second", "to": "mile per hour", "ratio": 2.2369362921, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-303", "from": "mile per hour", "to": "meter per second", "ratio": 0.44703999999088756, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-304", "from": "meters per second", "to": "mile per hour", "ratio": 2.2369362921, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-305", "from": "mile per hour", "to": "meters per second", "ratio": 0.44703999999088756, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-306", "from": "mps", "to": "mile per hour", "ratio": 2.2369362921, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-307", "from": "mile per hour", "to": "mps", "ratio": 0.44703999999088756, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-308", "from": "mile per hour", "to": "mile per hour", "ratio": 1.0, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-309", "from": "miles per hour", "to": "mile per hour", "ratio": 1.0, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-310", "from": "mile per hour", "to": "miles per hour", "ratio": 1.0, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-311", "from": "mph", "to": "mile per hour", "ratio": 1.0, "offset": 0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-312", "from": "mile per hour", "to": "mph", "ratio": 1.0, "offset": -0.0, "dimension": "speed", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-313", "from": "gram per cubic centimeter", "to": "pound per cubic foot", "ratio": 62.42796, "offset": 0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-314", "from": "pound per cubic foot", "to": "gram per cubic centimeter", "ratio": 0.01601846352179376, "offset": -0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-315", "from": "grams per cubic centimeter", "to": "pound per cubic foot", "ratio": 62.42796, "offset": 0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-316", "from": "pound per cubic foot", "to": "grams per cubic centimeter", "ratio": 0.01601846352179376, "offset": -0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-317", "from": "g/cm³", "to": "pound per cubic foot", "ratio": 62.42796, "offset": 0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-318", "from": "pound per cubic foot", "to": "g/cm³", "ratio": 0.01601846352179376, "offset": -0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-319", "from": "pound per cubic foot", "to": "pound per cubic foot", "ratio": 1.0, "offset": 0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-320", "from": "pounds per cubic foot", "to": "pound per cubic foot", "ratio": 1.0, "offset": 0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-321", "from": "pound per cubic foot", "to": "pounds per cubic foot", "ratio": 1.0, "offset": -0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-322", "from": "lb/cu ft", "to": "pound per cubic foot", "ratio": 1.0, "offset": 0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-323", "from": "pound per cubic foot", "to": "lb/cu ft", "ratio": 1.0, "offset": -0.0, "dimension": "density", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-324", "from": "kilohertz", "to": "hertz", "ratio": 1000.0, "offset": 0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-325", "from": "hertz", "to": "kilohertz", "ratio": 0.001, "offset": -0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-326", "from": "kHz", "to": "hertz", "ratio": 1000.0, "offset": 0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-327", "from": "hertz", "to": "kHz", "ratio": 0.001, "offset": -0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-328", "from": "megahertz", "to": "hertz", "ratio": 1000000.0, "offset": 0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-329", "from": "hertz", "to": "megahertz", "ratio": 1e-06, "offset": -0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-330", "from": "MHz", "to": "hertz", "ratio": 1000000.0, "offset": 0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-331", "from": "hertz", "to": "MHz", "ratio": 1e-06, "offset": -0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-332", "from": "hertz", "to": "hertz", "ratio": 1.0, "offset": 0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-333", "from": "Hz", "to": "hertz", "ratio": 1.0, "offset": 0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-334", "from": "hertz", "to": "Hz", "ratio": 1.0, "offset": -0.0, "dimension": "frequency", "provenance_ids": ["nist-sp-811:2026-05-23"]} +{"edge_id": "en-units-conv-335", "from": "cent per hour", "to": "dollar per hour", "ratio": 0.01, "offset": 0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-336", "from": "dollar per hour", "to": "cent per hour", "ratio": 100.0, "offset": -0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-337", "from": "cents per hour", "to": "dollar per hour", "ratio": 0.01, "offset": 0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-338", "from": "dollar per hour", "to": "cents per hour", "ratio": 100.0, "offset": -0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-339", "from": "¢/hr", "to": "dollar per hour", "ratio": 0.01, "offset": 0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-340", "from": "dollar per hour", "to": "¢/hr", "ratio": 100.0, "offset": -0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-341", "from": "dollar per hour", "to": "dollar per hour", "ratio": 1.0, "offset": 0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-342", "from": "dollars per hour", "to": "dollar per hour", "ratio": 1.0, "offset": 0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-343", "from": "dollar per hour", "to": "dollars per hour", "ratio": 1.0, "offset": -0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-344", "from": "$/hr", "to": "dollar per hour", "ratio": 1.0, "offset": 0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-345", "from": "dollar per hour", "to": "$/hr", "ratio": 1.0, "offset": -0.0, "dimension": "wage", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-346", "from": "cent per item", "to": "dollar per item", "ratio": 0.01, "offset": 0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-347", "from": "dollar per item", "to": "cent per item", "ratio": 100.0, "offset": -0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-348", "from": "cents per item", "to": "dollar per item", "ratio": 0.01, "offset": 0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-349", "from": "dollar per item", "to": "cents per item", "ratio": 100.0, "offset": -0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-350", "from": "¢/item", "to": "dollar per item", "ratio": 0.01, "offset": 0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-351", "from": "dollar per item", "to": "¢/item", "ratio": 100.0, "offset": -0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-352", "from": "dollar per item", "to": "dollar per item", "ratio": 1.0, "offset": 0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-353", "from": "dollars per item", "to": "dollar per item", "ratio": 1.0, "offset": 0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-354", "from": "dollar per item", "to": "dollars per item", "ratio": 1.0, "offset": -0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-355", "from": "$/item", "to": "dollar per item", "ratio": 1.0, "offset": 0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-356", "from": "dollar per item", "to": "$/item", "ratio": 1.0, "offset": -0.0, "dimension": "unit_price", "provenance_ids": ["iso-4217:2026-05-23"]} +{"edge_id": "en-units-conv-357", "from": "child", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-358", "from": "item", "to": "child", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-359", "from": "children", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-360", "from": "item", "to": "children", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-361", "from": "person", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-362", "from": "item", "to": "person", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-363", "from": "people", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-364", "from": "item", "to": "people", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-365", "from": "mouse", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-366", "from": "item", "to": "mouse", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-367", "from": "mice", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-368", "from": "item", "to": "mice", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-369", "from": "goose", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-370", "from": "item", "to": "goose", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-371", "from": "geese", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-372", "from": "item", "to": "geese", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-373", "from": "fish", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-374", "from": "item", "to": "fish", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-375", "from": "sheep", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-376", "from": "item", "to": "sheep", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-377", "from": "deer", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-378", "from": "item", "to": "deer", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-379", "from": "woman", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-380", "from": "item", "to": "woman", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-381", "from": "women", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-382", "from": "item", "to": "women", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-383", "from": "man", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-384", "from": "item", "to": "man", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-385", "from": "men", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-386", "from": "item", "to": "men", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-387", "from": "leaf", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-388", "from": "item", "to": "leaf", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-389", "from": "leaves", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-390", "from": "item", "to": "leaves", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-391", "from": "knife", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-392", "from": "item", "to": "knife", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-393", "from": "knives", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-394", "from": "item", "to": "knives", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-395", "from": "life", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-396", "from": "item", "to": "life", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-397", "from": "lives", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-398", "from": "item", "to": "lives", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-399", "from": "item", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-400", "from": "items", "to": "item", "ratio": 1.0, "offset": 0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} +{"edge_id": "en-units-conv-401", "from": "item", "to": "items", "ratio": 1.0, "offset": -0.0, "dimension": "count", "provenance_ids": ["adr-0127:units_pack:2026-05-23"]} diff --git a/language_packs/data/en_units_v1/glosses.jsonl b/language_packs/data/en_units_v1/glosses.jsonl new file mode 100644 index 00000000..37ae9c29 --- /dev/null +++ b/language_packs/data/en_units_v1/glosses.jsonl @@ -0,0 +1,284 @@ +{"entry_id": "en-units-entry-001", "gloss": "The physical or economic dimension of count."} +{"entry_id": "en-units-entry-002", "gloss": "The physical or economic dimension of length."} +{"entry_id": "en-units-entry-003", "gloss": "The physical or economic dimension of time."} +{"entry_id": "en-units-entry-004", "gloss": "The physical or economic dimension of mass."} +{"entry_id": "en-units-entry-005", "gloss": "The physical or economic dimension of money."} +{"entry_id": "en-units-entry-006", "gloss": "The physical or economic dimension of temperature."} +{"entry_id": "en-units-entry-007", "gloss": "The physical or economic dimension of volume."} +{"entry_id": "en-units-entry-008", "gloss": "The physical or economic dimension of area."} +{"entry_id": "en-units-entry-009", "gloss": "The physical or economic dimension of speed."} +{"entry_id": "en-units-entry-010", "gloss": "The physical or economic dimension of density."} +{"entry_id": "en-units-entry-011", "gloss": "The physical or economic dimension of frequency."} +{"entry_id": "en-units-entry-012", "gloss": "The physical or economic dimension of wage."} +{"entry_id": "en-units-entry-013", "gloss": "The physical or economic dimension of unit_price."} +{"entry_id": "en-units-entry-014", "gloss": "The unit of measurement item representing item."} +{"entry_id": "en-units-entry-015", "gloss": "The unit of measurement items representing item."} +{"entry_id": "en-units-entry-016", "gloss": "The unit of measurement child representing child."} +{"entry_id": "en-units-entry-017", "gloss": "The unit of measurement children representing child."} +{"entry_id": "en-units-entry-018", "gloss": "The unit of measurement person representing person."} +{"entry_id": "en-units-entry-019", "gloss": "The unit of measurement people representing person."} +{"entry_id": "en-units-entry-020", "gloss": "The unit of measurement mouse representing mouse."} +{"entry_id": "en-units-entry-021", "gloss": "The unit of measurement mice representing mouse."} +{"entry_id": "en-units-entry-022", "gloss": "The unit of measurement goose representing goose."} +{"entry_id": "en-units-entry-023", "gloss": "The unit of measurement geese representing goose."} +{"entry_id": "en-units-entry-024", "gloss": "The unit of measurement fish representing fish."} +{"entry_id": "en-units-entry-025", "gloss": "The unit of measurement sheep representing sheep."} +{"entry_id": "en-units-entry-026", "gloss": "The unit of measurement deer representing deer."} +{"entry_id": "en-units-entry-027", "gloss": "The unit of measurement woman representing woman."} +{"entry_id": "en-units-entry-028", "gloss": "The unit of measurement women representing woman."} +{"entry_id": "en-units-entry-029", "gloss": "The unit of measurement man representing man."} +{"entry_id": "en-units-entry-030", "gloss": "The unit of measurement men representing man."} +{"entry_id": "en-units-entry-031", "gloss": "The unit of measurement leaf representing leaf."} +{"entry_id": "en-units-entry-032", "gloss": "The unit of measurement leaves representing leaf."} +{"entry_id": "en-units-entry-033", "gloss": "The unit of measurement knife representing knife."} +{"entry_id": "en-units-entry-034", "gloss": "The unit of measurement knives representing knife."} +{"entry_id": "en-units-entry-035", "gloss": "The unit of measurement life representing life."} +{"entry_id": "en-units-entry-036", "gloss": "The unit of measurement lives representing life."} +{"entry_id": "en-units-entry-037", "gloss": "The unit of measurement inch representing inch."} +{"entry_id": "en-units-entry-038", "gloss": "The unit of measurement inches representing inch."} +{"entry_id": "en-units-entry-039", "gloss": "The unit of measurement in representing inch."} +{"entry_id": "en-units-entry-040", "gloss": "The unit of measurement foot representing foot."} +{"entry_id": "en-units-entry-041", "gloss": "The unit of measurement feet representing foot."} +{"entry_id": "en-units-entry-042", "gloss": "The unit of measurement ft representing foot."} +{"entry_id": "en-units-entry-043", "gloss": "The unit of measurement yard representing yard."} +{"entry_id": "en-units-entry-044", "gloss": "The unit of measurement yards representing yard."} +{"entry_id": "en-units-entry-045", "gloss": "The unit of measurement yd representing yard."} +{"entry_id": "en-units-entry-046", "gloss": "The unit of measurement mile representing mile."} +{"entry_id": "en-units-entry-047", "gloss": "The unit of measurement miles representing mile."} +{"entry_id": "en-units-entry-048", "gloss": "The unit of measurement mi representing mile."} +{"entry_id": "en-units-entry-049", "gloss": "The unit of measurement millimeter representing millimeter."} +{"entry_id": "en-units-entry-050", "gloss": "The unit of measurement millimeters representing millimeter."} +{"entry_id": "en-units-entry-051", "gloss": "The unit of measurement mm representing millimeter."} +{"entry_id": "en-units-entry-052", "gloss": "The unit of measurement centimeter representing centimeter."} +{"entry_id": "en-units-entry-053", "gloss": "The unit of measurement centimeters representing centimeter."} +{"entry_id": "en-units-entry-054", "gloss": "The unit of measurement cm representing centimeter."} +{"entry_id": "en-units-entry-055", "gloss": "The unit of measurement meter representing meter."} +{"entry_id": "en-units-entry-056", "gloss": "The unit of measurement meters representing meter."} +{"entry_id": "en-units-entry-057", "gloss": "The unit of measurement m representing meter."} +{"entry_id": "en-units-entry-058", "gloss": "The unit of measurement kilometer representing kilometer."} +{"entry_id": "en-units-entry-059", "gloss": "The unit of measurement kilometers representing kilometer."} +{"entry_id": "en-units-entry-060", "gloss": "The unit of measurement km representing kilometer."} +{"entry_id": "en-units-entry-061", "gloss": "The unit of measurement second representing second."} +{"entry_id": "en-units-entry-062", "gloss": "The unit of measurement seconds representing second."} +{"entry_id": "en-units-entry-063", "gloss": "The unit of measurement sec representing second."} +{"entry_id": "en-units-entry-064", "gloss": "The unit of measurement minute representing minute."} +{"entry_id": "en-units-entry-065", "gloss": "The unit of measurement minutes representing minute."} +{"entry_id": "en-units-entry-066", "gloss": "The unit of measurement min representing minute."} +{"entry_id": "en-units-entry-067", "gloss": "The unit of measurement hour representing hour."} +{"entry_id": "en-units-entry-068", "gloss": "The unit of measurement hours representing hour."} +{"entry_id": "en-units-entry-069", "gloss": "The unit of measurement hr representing hour."} +{"entry_id": "en-units-entry-070", "gloss": "The unit of measurement day representing day."} +{"entry_id": "en-units-entry-071", "gloss": "The unit of measurement days representing day."} +{"entry_id": "en-units-entry-072", "gloss": "The unit of measurement d representing day."} +{"entry_id": "en-units-entry-073", "gloss": "The unit of measurement week representing week."} +{"entry_id": "en-units-entry-074", "gloss": "The unit of measurement weeks representing week."} +{"entry_id": "en-units-entry-075", "gloss": "The unit of measurement wk representing week."} +{"entry_id": "en-units-entry-076", "gloss": "The unit of measurement month representing month."} +{"entry_id": "en-units-entry-077", "gloss": "The unit of measurement months representing month."} +{"entry_id": "en-units-entry-078", "gloss": "The unit of measurement mo representing month."} +{"entry_id": "en-units-entry-079", "gloss": "The unit of measurement year representing year."} +{"entry_id": "en-units-entry-080", "gloss": "The unit of measurement years representing year."} +{"entry_id": "en-units-entry-081", "gloss": "The unit of measurement yr representing year."} +{"entry_id": "en-units-entry-082", "gloss": "The unit of measurement decade representing decade."} +{"entry_id": "en-units-entry-083", "gloss": "The unit of measurement decades representing decade."} +{"entry_id": "en-units-entry-084", "gloss": "The unit of measurement dec representing decade."} +{"entry_id": "en-units-entry-085", "gloss": "The unit of measurement century representing century."} +{"entry_id": "en-units-entry-086", "gloss": "The unit of measurement centuries representing century."} +{"entry_id": "en-units-entry-087", "gloss": "The unit of measurement millennium representing millennium."} +{"entry_id": "en-units-entry-088", "gloss": "The unit of measurement millennia representing millennium."} +{"entry_id": "en-units-entry-089", "gloss": "The unit of measurement mil representing millennium."} +{"entry_id": "en-units-entry-090", "gloss": "The unit of measurement ounce representing ounce."} +{"entry_id": "en-units-entry-091", "gloss": "The unit of measurement ounces representing ounce."} +{"entry_id": "en-units-entry-092", "gloss": "The unit of measurement oz representing ounce."} +{"entry_id": "en-units-entry-093", "gloss": "The unit of measurement pound representing pound."} +{"entry_id": "en-units-entry-094", "gloss": "The unit of measurement pounds representing pound."} +{"entry_id": "en-units-entry-095", "gloss": "The unit of measurement lb representing pound."} +{"entry_id": "en-units-entry-096", "gloss": "The unit of measurement ton representing ton."} +{"entry_id": "en-units-entry-097", "gloss": "The unit of measurement tons representing ton."} +{"entry_id": "en-units-entry-098", "gloss": "The unit of measurement t representing ton."} +{"entry_id": "en-units-entry-099", "gloss": "The unit of measurement gram representing gram."} +{"entry_id": "en-units-entry-100", "gloss": "The unit of measurement grams representing gram."} +{"entry_id": "en-units-entry-101", "gloss": "The unit of measurement g representing gram."} +{"entry_id": "en-units-entry-102", "gloss": "The unit of measurement kilogram representing kilogram."} +{"entry_id": "en-units-entry-103", "gloss": "The unit of measurement kilograms representing kilogram."} +{"entry_id": "en-units-entry-104", "gloss": "The unit of measurement kg representing kilogram."} +{"entry_id": "en-units-entry-105", "gloss": "The unit of measurement milligram representing milligram."} +{"entry_id": "en-units-entry-106", "gloss": "The unit of measurement milligrams representing milligram."} +{"entry_id": "en-units-entry-107", "gloss": "The unit of measurement mg representing milligram."} +{"entry_id": "en-units-entry-108", "gloss": "The unit of measurement tonne representing tonne."} +{"entry_id": "en-units-entry-109", "gloss": "The unit of measurement tonnes representing tonne."} +{"entry_id": "en-units-entry-110", "gloss": "The unit of measurement T representing tonne."} +{"entry_id": "en-units-entry-111", "gloss": "The unit of measurement teaspoon representing teaspoon."} +{"entry_id": "en-units-entry-112", "gloss": "The unit of measurement teaspoons representing teaspoon."} +{"entry_id": "en-units-entry-113", "gloss": "The unit of measurement tsp representing teaspoon."} +{"entry_id": "en-units-entry-114", "gloss": "The unit of measurement tablespoon representing tablespoon."} +{"entry_id": "en-units-entry-115", "gloss": "The unit of measurement tablespoons representing tablespoon."} +{"entry_id": "en-units-entry-116", "gloss": "The unit of measurement tbsp representing tablespoon."} +{"entry_id": "en-units-entry-117", "gloss": "The unit of measurement cup representing cup."} +{"entry_id": "en-units-entry-118", "gloss": "The unit of measurement cups representing cup."} +{"entry_id": "en-units-entry-119", "gloss": "The unit of measurement c representing cup."} +{"entry_id": "en-units-entry-120", "gloss": "The unit of measurement pint representing pint."} +{"entry_id": "en-units-entry-121", "gloss": "The unit of measurement pints representing pint."} +{"entry_id": "en-units-entry-122", "gloss": "The unit of measurement pt representing pint."} +{"entry_id": "en-units-entry-123", "gloss": "The unit of measurement quart representing quart."} +{"entry_id": "en-units-entry-124", "gloss": "The unit of measurement quarts representing quart."} +{"entry_id": "en-units-entry-125", "gloss": "The unit of measurement qt representing quart."} +{"entry_id": "en-units-entry-126", "gloss": "The unit of measurement gallon representing gallon."} +{"entry_id": "en-units-entry-127", "gloss": "The unit of measurement gallons representing gallon."} +{"entry_id": "en-units-entry-128", "gloss": "The unit of measurement gal representing gallon."} +{"entry_id": "en-units-entry-129", "gloss": "The unit of measurement milliliter representing milliliter."} +{"entry_id": "en-units-entry-130", "gloss": "The unit of measurement milliliters representing milliliter."} +{"entry_id": "en-units-entry-131", "gloss": "The unit of measurement mL representing milliliter."} +{"entry_id": "en-units-entry-132", "gloss": "The unit of measurement liter representing liter."} +{"entry_id": "en-units-entry-133", "gloss": "The unit of measurement liters representing liter."} +{"entry_id": "en-units-entry-134", "gloss": "The unit of measurement L representing liter."} +{"entry_id": "en-units-entry-135", "gloss": "The unit of measurement cent representing cent."} +{"entry_id": "en-units-entry-136", "gloss": "The unit of measurement cents representing cent."} +{"entry_id": "en-units-entry-137", "gloss": "The unit of measurement ¢ representing cent."} +{"entry_id": "en-units-entry-138", "gloss": "The unit of measurement dollar representing dollar."} +{"entry_id": "en-units-entry-139", "gloss": "The unit of measurement dollars representing dollar."} +{"entry_id": "en-units-entry-140", "gloss": "The unit of measurement $ representing dollar."} +{"entry_id": "en-units-entry-141", "gloss": "The unit of measurement euro representing euro."} +{"entry_id": "en-units-entry-142", "gloss": "The unit of measurement euros representing euro."} +{"entry_id": "en-units-entry-143", "gloss": "The unit of measurement € representing euro."} +{"entry_id": "en-units-entry-144", "gloss": "The unit of measurement pound sterling representing pound_sterling."} +{"entry_id": "en-units-entry-145", "gloss": "The unit of measurement pounds sterling representing pound_sterling."} +{"entry_id": "en-units-entry-146", "gloss": "The unit of measurement £ representing pound_sterling."} +{"entry_id": "en-units-entry-147", "gloss": "The unit of measurement yen representing yen."} +{"entry_id": "en-units-entry-148", "gloss": "The unit of measurement ¥ representing yen."} +{"entry_id": "en-units-entry-149", "gloss": "The unit of measurement peso representing peso."} +{"entry_id": "en-units-entry-150", "gloss": "The unit of measurement pesos representing peso."} +{"entry_id": "en-units-entry-151", "gloss": "The unit of measurement ₱ representing peso."} +{"entry_id": "en-units-entry-152", "gloss": "The unit of measurement degree representing degree."} +{"entry_id": "en-units-entry-153", "gloss": "The unit of measurement degrees representing degree."} +{"entry_id": "en-units-entry-154", "gloss": "The unit of measurement ° representing degree."} +{"entry_id": "en-units-entry-155", "gloss": "The unit of measurement Fahrenheit representing Fahrenheit."} +{"entry_id": "en-units-entry-156", "gloss": "The unit of measurement °F representing Fahrenheit."} +{"entry_id": "en-units-entry-157", "gloss": "The unit of measurement Celsius representing Celsius."} +{"entry_id": "en-units-entry-158", "gloss": "The unit of measurement °C representing Celsius."} +{"entry_id": "en-units-entry-159", "gloss": "The unit of measurement Kelvin representing Kelvin."} +{"entry_id": "en-units-entry-160", "gloss": "The unit of measurement K representing Kelvin."} +{"entry_id": "en-units-entry-161", "gloss": "The unit of measurement square inch representing square_inch."} +{"entry_id": "en-units-entry-162", "gloss": "The unit of measurement square inches representing square_inch."} +{"entry_id": "en-units-entry-163", "gloss": "The unit of measurement sq in representing square_inch."} +{"entry_id": "en-units-entry-164", "gloss": "The unit of measurement square foot representing square_foot."} +{"entry_id": "en-units-entry-165", "gloss": "The unit of measurement square feet representing square_foot."} +{"entry_id": "en-units-entry-166", "gloss": "The unit of measurement sq ft representing square_foot."} +{"entry_id": "en-units-entry-167", "gloss": "The unit of measurement square yard representing square_yard."} +{"entry_id": "en-units-entry-168", "gloss": "The unit of measurement square yards representing square_yard."} +{"entry_id": "en-units-entry-169", "gloss": "The unit of measurement sq yd representing square_yard."} +{"entry_id": "en-units-entry-170", "gloss": "The unit of measurement square mile representing square_mile."} +{"entry_id": "en-units-entry-171", "gloss": "The unit of measurement square miles representing square_mile."} +{"entry_id": "en-units-entry-172", "gloss": "The unit of measurement sq mi representing square_mile."} +{"entry_id": "en-units-entry-173", "gloss": "The unit of measurement square meter representing square_meter."} +{"entry_id": "en-units-entry-174", "gloss": "The unit of measurement square meters representing square_meter."} +{"entry_id": "en-units-entry-175", "gloss": "The unit of measurement sq m representing square_meter."} +{"entry_id": "en-units-entry-176", "gloss": "The unit of measurement square kilometer representing square_kilometer."} +{"entry_id": "en-units-entry-177", "gloss": "The unit of measurement square kilometers representing square_kilometer."} +{"entry_id": "en-units-entry-178", "gloss": "The unit of measurement sq km representing square_kilometer."} +{"entry_id": "en-units-entry-179", "gloss": "The unit of measurement acre representing acre."} +{"entry_id": "en-units-entry-180", "gloss": "The unit of measurement acres representing acre."} +{"entry_id": "en-units-entry-181", "gloss": "The unit of measurement ac representing acre."} +{"entry_id": "en-units-entry-182", "gloss": "The unit of measurement hectare representing hectare."} +{"entry_id": "en-units-entry-183", "gloss": "The unit of measurement hectares representing hectare."} +{"entry_id": "en-units-entry-184", "gloss": "The unit of measurement ha representing hectare."} +{"entry_id": "en-units-entry-185", "gloss": "The unit of measurement mile per hour representing mile_per_hour."} +{"entry_id": "en-units-entry-186", "gloss": "The unit of measurement miles per hour representing mile_per_hour."} +{"entry_id": "en-units-entry-187", "gloss": "The unit of measurement mph representing mile_per_hour."} +{"entry_id": "en-units-entry-188", "gloss": "The unit of measurement kilometer per hour representing kilometer_per_hour."} +{"entry_id": "en-units-entry-189", "gloss": "The unit of measurement kilometers per hour representing kilometer_per_hour."} +{"entry_id": "en-units-entry-190", "gloss": "The unit of measurement kph representing kilometer_per_hour."} +{"entry_id": "en-units-entry-191", "gloss": "The unit of measurement foot per second representing foot_per_second."} +{"entry_id": "en-units-entry-192", "gloss": "The unit of measurement feet per second representing foot_per_second."} +{"entry_id": "en-units-entry-193", "gloss": "The unit of measurement fps representing foot_per_second."} +{"entry_id": "en-units-entry-194", "gloss": "The unit of measurement meter per second representing meter_per_second."} +{"entry_id": "en-units-entry-195", "gloss": "The unit of measurement meters per second representing meter_per_second."} +{"entry_id": "en-units-entry-196", "gloss": "The unit of measurement mps representing meter_per_second."} +{"entry_id": "en-units-entry-197", "gloss": "The unit of measurement pound per cubic foot representing pound_per_cubic_foot."} +{"entry_id": "en-units-entry-198", "gloss": "The unit of measurement pounds per cubic foot representing pound_per_cubic_foot."} +{"entry_id": "en-units-entry-199", "gloss": "The unit of measurement lb/cu ft representing pound_per_cubic_foot."} +{"entry_id": "en-units-entry-200", "gloss": "The unit of measurement gram per cubic centimeter representing gram_per_cubic_centimeter."} +{"entry_id": "en-units-entry-201", "gloss": "The unit of measurement grams per cubic centimeter representing gram_per_cubic_centimeter."} +{"entry_id": "en-units-entry-202", "gloss": "The unit of measurement g/cm³ representing gram_per_cubic_centimeter."} +{"entry_id": "en-units-entry-203", "gloss": "The unit of measurement hertz representing hertz."} +{"entry_id": "en-units-entry-204", "gloss": "The unit of measurement Hz representing hertz."} +{"entry_id": "en-units-entry-205", "gloss": "The unit of measurement kilohertz representing kilohertz."} +{"entry_id": "en-units-entry-206", "gloss": "The unit of measurement kHz representing kilohertz."} +{"entry_id": "en-units-entry-207", "gloss": "The unit of measurement megahertz representing megahertz."} +{"entry_id": "en-units-entry-208", "gloss": "The unit of measurement MHz representing megahertz."} +{"entry_id": "en-units-entry-209", "gloss": "The unit of measurement dollar per hour representing dollar_per_hour."} +{"entry_id": "en-units-entry-210", "gloss": "The unit of measurement dollars per hour representing dollar_per_hour."} +{"entry_id": "en-units-entry-211", "gloss": "The unit of measurement $/hr representing dollar_per_hour."} +{"entry_id": "en-units-entry-212", "gloss": "The unit of measurement cent per hour representing cent_per_hour."} +{"entry_id": "en-units-entry-213", "gloss": "The unit of measurement cents per hour representing cent_per_hour."} +{"entry_id": "en-units-entry-214", "gloss": "The unit of measurement ¢/hr representing cent_per_hour."} +{"entry_id": "en-units-entry-215", "gloss": "The unit of measurement dollar per item representing dollar_per_item."} +{"entry_id": "en-units-entry-216", "gloss": "The unit of measurement dollars per item representing dollar_per_item."} +{"entry_id": "en-units-entry-217", "gloss": "The unit of measurement $/item representing dollar_per_item."} +{"entry_id": "en-units-entry-218", "gloss": "The unit of measurement cent per item representing cent_per_item."} +{"entry_id": "en-units-entry-219", "gloss": "The unit of measurement cents per item representing cent_per_item."} +{"entry_id": "en-units-entry-220", "gloss": "The unit of measurement ¢/item representing cent_per_item."} +{"entry_id": "en-units-entry-221", "gloss": "A container of type box."} +{"entry_id": "en-units-entry-222", "gloss": "A container of type boxes."} +{"entry_id": "en-units-entry-223", "gloss": "A container of type bag."} +{"entry_id": "en-units-entry-224", "gloss": "A container of type bags."} +{"entry_id": "en-units-entry-225", "gloss": "A container of type pack."} +{"entry_id": "en-units-entry-226", "gloss": "A container of type packs."} +{"entry_id": "en-units-entry-227", "gloss": "A container of type basket."} +{"entry_id": "en-units-entry-228", "gloss": "A container of type baskets."} +{"entry_id": "en-units-entry-229", "gloss": "A container of type batch."} +{"entry_id": "en-units-entry-230", "gloss": "A container of type batches."} +{"entry_id": "en-units-entry-231", "gloss": "A container of type dozen."} +{"entry_id": "en-units-entry-232", "gloss": "A container of type dozens."} +{"entry_id": "en-units-entry-233", "gloss": "A container of type group."} +{"entry_id": "en-units-entry-234", "gloss": "A container of type groups."} +{"entry_id": "en-units-entry-235", "gloss": "A container of type set."} +{"entry_id": "en-units-entry-236", "gloss": "A container of type sets."} +{"entry_id": "en-units-entry-237", "gloss": "A container of type case."} +{"entry_id": "en-units-entry-238", "gloss": "A container of type cases."} +{"entry_id": "en-units-entry-239", "gloss": "A container of type pair."} +{"entry_id": "en-units-entry-240", "gloss": "A container of type pairs."} +{"entry_id": "en-units-entry-241", "gloss": "A container of type pile."} +{"entry_id": "en-units-entry-242", "gloss": "A container of type piles."} +{"entry_id": "en-units-entry-243", "gloss": "A container of type stack."} +{"entry_id": "en-units-entry-244", "gloss": "A container of type stacks."} +{"entry_id": "en-units-entry-245", "gloss": "A container of type bunch."} +{"entry_id": "en-units-entry-246", "gloss": "A container of type bunches."} +{"entry_id": "en-units-entry-247", "gloss": "A container of type bundle."} +{"entry_id": "en-units-entry-248", "gloss": "A container of type bundles."} +{"entry_id": "en-units-entry-249", "gloss": "A container of type carton."} +{"entry_id": "en-units-entry-250", "gloss": "A container of type cartons."} +{"entry_id": "en-units-entry-251", "gloss": "A container of type crate."} +{"entry_id": "en-units-entry-252", "gloss": "A container of type crates."} +{"entry_id": "en-units-entry-253", "gloss": "A container of type jar."} +{"entry_id": "en-units-entry-254", "gloss": "A container of type jars."} +{"entry_id": "en-units-entry-255", "gloss": "A container of type can."} +{"entry_id": "en-units-entry-256", "gloss": "A container of type cans."} +{"entry_id": "en-units-entry-257", "gloss": "A container of type bottle."} +{"entry_id": "en-units-entry-258", "gloss": "A container of type bottles."} +{"entry_id": "en-units-entry-259", "gloss": "A container of type plate."} +{"entry_id": "en-units-entry-260", "gloss": "A container of type plates."} +{"entry_id": "en-units-entry-261", "gloss": "A container of type bowl."} +{"entry_id": "en-units-entry-262", "gloss": "A container of type bowls."} +{"entry_id": "en-units-entry-263", "gloss": "A container of type tray."} +{"entry_id": "en-units-entry-264", "gloss": "A container of type trays."} +{"entry_id": "en-units-entry-265", "gloss": "A container of type sack."} +{"entry_id": "en-units-entry-266", "gloss": "A container of type sacks."} +{"entry_id": "en-units-entry-267", "gloss": "A container of type container."} +{"entry_id": "en-units-entry-268", "gloss": "A container of type containers."} +{"entry_id": "en-units-entry-269", "gloss": "A container of type gross."} +{"entry_id": "en-units-entry-270", "gloss": "The rate connector per."} +{"entry_id": "en-units-entry-271", "gloss": "The rate connector an."} +{"entry_id": "en-units-entry-272", "gloss": "The rate connector every."} +{"entry_id": "en-units-entry-273", "gloss": "The rate connector each."} +{"entry_id": "en-units-entry-274", "gloss": "The rate connector by."} +{"entry_id": "en-units-entry-275", "gloss": "The symbol or affix %."} +{"entry_id": "en-units-entry-276", "gloss": "The symbol or affix ½."} +{"entry_id": "en-units-entry-277", "gloss": "The symbol or affix ¼."} +{"entry_id": "en-units-entry-278", "gloss": "The symbol or affix ¾."} +{"entry_id": "en-units-entry-279", "gloss": "The symbol or affix ⅓."} +{"entry_id": "en-units-entry-280", "gloss": "The symbol or affix ⅔."} +{"entry_id": "en-units-entry-281", "gloss": "The symbol or affix ⅛."} +{"entry_id": "en-units-entry-282", "gloss": "The symbol or affix ⅜."} +{"entry_id": "en-units-entry-283", "gloss": "The symbol or affix ⅝."} +{"entry_id": "en-units-entry-284", "gloss": "The symbol or affix ⅞."} diff --git a/language_packs/data/en_units_v1/lexicon.jsonl b/language_packs/data/en_units_v1/lexicon.jsonl new file mode 100644 index 00000000..4401dc68 --- /dev/null +++ b/language_packs/data/en_units_v1/lexicon.jsonl @@ -0,0 +1,284 @@ +{"entry_id": "en-units-entry-001", "surface": "count", "lemma": "count", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "item", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-002", "surface": "length", "lemma": "length", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "foot", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-003", "surface": "time", "lemma": "time", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "minute", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-004", "surface": "mass", "lemma": "mass", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "pound", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-005", "surface": "money", "lemma": "money", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "cent", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-006", "surface": "temperature", "lemma": "temperature", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "Fahrenheit", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-007", "surface": "volume", "lemma": "volume", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "cup", "is_derived": false, "formula": null} +{"entry_id": "en-units-entry-008", "surface": "area", "lemma": "area", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "square_foot", "is_derived": true, "formula": "length * length"} +{"entry_id": "en-units-entry-009", "surface": "speed", "lemma": "speed", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "mile_per_hour", "is_derived": true, "formula": "length / time"} +{"entry_id": "en-units-entry-010", "surface": "density", "lemma": "density", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "pound_per_cubic_foot", "is_derived": true, "formula": "mass / volume"} +{"entry_id": "en-units-entry-011", "surface": "frequency", "lemma": "frequency", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "hertz", "is_derived": true, "formula": "1 / time"} +{"entry_id": "en-units-entry-012", "surface": "wage", "lemma": "wage", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "dollar_per_hour", "is_derived": true, "formula": "money / time"} +{"entry_id": "en-units-entry-013", "surface": "unit_price", "lemma": "unit_price", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["dimension"], "semantic_domains": ["units.dimension"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "canonical_unit": "dollar_per_item", "is_derived": true, "formula": "money / count"} +{"entry_id": "en-units-entry-014", "surface": "item", "lemma": "item", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "item", "plural": "items", "symbol": "item", "is_canonical_for_dimension": true, "dimension": "count"} +{"entry_id": "en-units-entry-015", "surface": "items", "lemma": "item", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "item", "plural": "items", "symbol": "item", "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-016", "surface": "child", "lemma": "child", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "child", "plural": "children", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-017", "surface": "children", "lemma": "child", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "child", "plural": "children", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-018", "surface": "person", "lemma": "person", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "person", "plural": "people", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-019", "surface": "people", "lemma": "person", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "person", "plural": "people", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-020", "surface": "mouse", "lemma": "mouse", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "mouse", "plural": "mice", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-021", "surface": "mice", "lemma": "mouse", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "mouse", "plural": "mice", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-022", "surface": "goose", "lemma": "goose", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "goose", "plural": "geese", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-023", "surface": "geese", "lemma": "goose", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "goose", "plural": "geese", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-024", "surface": "fish", "lemma": "fish", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "fish", "plural": "fish", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-025", "surface": "sheep", "lemma": "sheep", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "sheep", "plural": "sheep", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-026", "surface": "deer", "lemma": "deer", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "deer", "plural": "deer", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-027", "surface": "woman", "lemma": "woman", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "woman", "plural": "women", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-028", "surface": "women", "lemma": "woman", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "woman", "plural": "women", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-029", "surface": "man", "lemma": "man", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "man", "plural": "men", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-030", "surface": "men", "lemma": "man", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "man", "plural": "men", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-031", "surface": "leaf", "lemma": "leaf", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "leaf", "plural": "leaves", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-032", "surface": "leaves", "lemma": "leaf", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "leaf", "plural": "leaves", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-033", "surface": "knife", "lemma": "knife", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "knife", "plural": "knives", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-034", "surface": "knives", "lemma": "knife", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "knife", "plural": "knives", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-035", "surface": "life", "lemma": "life", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "life", "plural": "lives", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-036", "surface": "lives", "lemma": "life", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.count"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "life", "plural": "lives", "symbol": null, "is_canonical_for_dimension": false, "dimension": "count"} +{"entry_id": "en-units-entry-037", "surface": "inch", "lemma": "inch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "inch", "plural": "inches", "symbol": "in", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-038", "surface": "inches", "lemma": "inch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "inch", "plural": "inches", "symbol": "in", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-039", "surface": "in", "lemma": "inch", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol", "rate_connector"], "semantic_domains": ["units.length", "units.rate"], "provenance_ids": ["nist-sp-811:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "inch", "plural": "inches", "symbol": "in", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-040", "surface": "foot", "lemma": "foot", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "foot", "plural": "feet", "symbol": "ft", "is_canonical_for_dimension": true, "dimension": "length"} +{"entry_id": "en-units-entry-041", "surface": "feet", "lemma": "foot", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "foot", "plural": "feet", "symbol": "ft", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-042", "surface": "ft", "lemma": "foot", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "foot", "plural": "feet", "symbol": "ft", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-043", "surface": "yard", "lemma": "yard", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "yard", "plural": "yards", "symbol": "yd", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-044", "surface": "yards", "lemma": "yard", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "yard", "plural": "yards", "symbol": "yd", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-045", "surface": "yd", "lemma": "yard", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "yard", "plural": "yards", "symbol": "yd", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-046", "surface": "mile", "lemma": "mile", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "mile", "plural": "miles", "symbol": "mi", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-047", "surface": "miles", "lemma": "mile", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "mile", "plural": "miles", "symbol": "mi", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-048", "surface": "mi", "lemma": "mile", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "mile", "plural": "miles", "symbol": "mi", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-049", "surface": "millimeter", "lemma": "millimeter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "millimeter", "plural": "millimeters", "symbol": "mm", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-050", "surface": "millimeters", "lemma": "millimeter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "millimeter", "plural": "millimeters", "symbol": "mm", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-051", "surface": "mm", "lemma": "millimeter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "millimeter", "plural": "millimeters", "symbol": "mm", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-052", "surface": "centimeter", "lemma": "centimeter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "centimeter", "plural": "centimeters", "symbol": "cm", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-053", "surface": "centimeters", "lemma": "centimeter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "centimeter", "plural": "centimeters", "symbol": "cm", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-054", "surface": "cm", "lemma": "centimeter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "centimeter", "plural": "centimeters", "symbol": "cm", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-055", "surface": "meter", "lemma": "meter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "meter", "plural": "meters", "symbol": "m", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-056", "surface": "meters", "lemma": "meter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "meter", "plural": "meters", "symbol": "m", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-057", "surface": "m", "lemma": "meter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "meter", "plural": "meters", "symbol": "m", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-058", "surface": "kilometer", "lemma": "kilometer", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilometer", "plural": "kilometers", "symbol": "km", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-059", "surface": "kilometers", "lemma": "kilometer", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilometer", "plural": "kilometers", "symbol": "km", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-060", "surface": "km", "lemma": "kilometer", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.length"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilometer", "plural": "kilometers", "symbol": "km", "is_canonical_for_dimension": false, "dimension": "length"} +{"entry_id": "en-units-entry-061", "surface": "second", "lemma": "second", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "second", "plural": "seconds", "symbol": "sec", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-062", "surface": "seconds", "lemma": "second", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "second", "plural": "seconds", "symbol": "sec", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-063", "surface": "sec", "lemma": "second", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "second", "plural": "seconds", "symbol": "sec", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-064", "surface": "minute", "lemma": "minute", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "minute", "plural": "minutes", "symbol": "min", "is_canonical_for_dimension": true, "dimension": "time"} +{"entry_id": "en-units-entry-065", "surface": "minutes", "lemma": "minute", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "minute", "plural": "minutes", "symbol": "min", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-066", "surface": "min", "lemma": "minute", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "minute", "plural": "minutes", "symbol": "min", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-067", "surface": "hour", "lemma": "hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hour", "plural": "hours", "symbol": "hr", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-068", "surface": "hours", "lemma": "hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hour", "plural": "hours", "symbol": "hr", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-069", "surface": "hr", "lemma": "hour", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hour", "plural": "hours", "symbol": "hr", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-070", "surface": "day", "lemma": "day", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "day", "plural": "days", "symbol": "d", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-071", "surface": "days", "lemma": "day", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "day", "plural": "days", "symbol": "d", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-072", "surface": "d", "lemma": "day", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "day", "plural": "days", "symbol": "d", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-073", "surface": "week", "lemma": "week", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "week", "plural": "weeks", "symbol": "wk", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-074", "surface": "weeks", "lemma": "week", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "week", "plural": "weeks", "symbol": "wk", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-075", "surface": "wk", "lemma": "week", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "week", "plural": "weeks", "symbol": "wk", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-076", "surface": "month", "lemma": "month", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "month", "plural": "months", "symbol": "mo", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-077", "surface": "months", "lemma": "month", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "month", "plural": "months", "symbol": "mo", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-078", "surface": "mo", "lemma": "month", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "month", "plural": "months", "symbol": "mo", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-079", "surface": "year", "lemma": "year", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "year", "plural": "years", "symbol": "yr", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-080", "surface": "years", "lemma": "year", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "year", "plural": "years", "symbol": "yr", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-081", "surface": "yr", "lemma": "year", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "year", "plural": "years", "symbol": "yr", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-082", "surface": "decade", "lemma": "decade", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "decade", "plural": "decades", "symbol": "dec", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-083", "surface": "decades", "lemma": "decade", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "decade", "plural": "decades", "symbol": "dec", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-084", "surface": "dec", "lemma": "decade", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "decade", "plural": "decades", "symbol": "dec", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-085", "surface": "century", "lemma": "century", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "century", "plural": "centuries", "symbol": null, "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-086", "surface": "centuries", "lemma": "century", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "century", "plural": "centuries", "symbol": null, "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-087", "surface": "millennium", "lemma": "millennium", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "millennium", "plural": "millennia", "symbol": "mil", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-088", "surface": "millennia", "lemma": "millennium", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "millennium", "plural": "millennia", "symbol": "mil", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-089", "surface": "mil", "lemma": "millennium", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.time"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "millennium", "plural": "millennia", "symbol": "mil", "is_canonical_for_dimension": false, "dimension": "time"} +{"entry_id": "en-units-entry-090", "surface": "ounce", "lemma": "ounce", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "ounce", "plural": "ounces", "symbol": "oz", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-091", "surface": "ounces", "lemma": "ounce", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "ounce", "plural": "ounces", "symbol": "oz", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-092", "surface": "oz", "lemma": "ounce", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "ounce", "plural": "ounces", "symbol": "oz", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-093", "surface": "pound", "lemma": "pound", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pound", "plural": "pounds", "symbol": "lb", "is_canonical_for_dimension": true, "dimension": "mass"} +{"entry_id": "en-units-entry-094", "surface": "pounds", "lemma": "pound", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pound", "plural": "pounds", "symbol": "lb", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-095", "surface": "lb", "lemma": "pound", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pound", "plural": "pounds", "symbol": "lb", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-096", "surface": "ton", "lemma": "ton", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "ton", "plural": "tons", "symbol": "t", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-097", "surface": "tons", "lemma": "ton", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "ton", "plural": "tons", "symbol": "t", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-098", "surface": "t", "lemma": "ton", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "ton", "plural": "tons", "symbol": "t", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-099", "surface": "gram", "lemma": "gram", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gram", "plural": "grams", "symbol": "g", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-100", "surface": "grams", "lemma": "gram", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gram", "plural": "grams", "symbol": "g", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-101", "surface": "g", "lemma": "gram", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gram", "plural": "grams", "symbol": "g", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-102", "surface": "kilogram", "lemma": "kilogram", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilogram", "plural": "kilograms", "symbol": "kg", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-103", "surface": "kilograms", "lemma": "kilogram", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilogram", "plural": "kilograms", "symbol": "kg", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-104", "surface": "kg", "lemma": "kilogram", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilogram", "plural": "kilograms", "symbol": "kg", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-105", "surface": "milligram", "lemma": "milligram", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "milligram", "plural": "milligrams", "symbol": "mg", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-106", "surface": "milligrams", "lemma": "milligram", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "milligram", "plural": "milligrams", "symbol": "mg", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-107", "surface": "mg", "lemma": "milligram", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "milligram", "plural": "milligrams", "symbol": "mg", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-108", "surface": "tonne", "lemma": "tonne", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "tonne", "plural": "tonnes", "symbol": "T", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-109", "surface": "tonnes", "lemma": "tonne", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "tonne", "plural": "tonnes", "symbol": "T", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-110", "surface": "T", "lemma": "tonne", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.mass"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "tonne", "plural": "tonnes", "symbol": "T", "is_canonical_for_dimension": false, "dimension": "mass"} +{"entry_id": "en-units-entry-111", "surface": "teaspoon", "lemma": "teaspoon", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "teaspoon", "plural": "teaspoons", "symbol": "tsp", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-112", "surface": "teaspoons", "lemma": "teaspoon", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "teaspoon", "plural": "teaspoons", "symbol": "tsp", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-113", "surface": "tsp", "lemma": "teaspoon", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "teaspoon", "plural": "teaspoons", "symbol": "tsp", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-114", "surface": "tablespoon", "lemma": "tablespoon", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "tablespoon", "plural": "tablespoons", "symbol": "tbsp", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-115", "surface": "tablespoons", "lemma": "tablespoon", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "tablespoon", "plural": "tablespoons", "symbol": "tbsp", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-116", "surface": "tbsp", "lemma": "tablespoon", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "tablespoon", "plural": "tablespoons", "symbol": "tbsp", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-117", "surface": "cup", "lemma": "cup", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit", "container"], "semantic_domains": ["units.volume", "units.container"], "provenance_ids": ["nist-sp-811:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "cup", "plural": "cups", "symbol": "c", "is_canonical_for_dimension": true, "dimension": "volume", "default_size": null} +{"entry_id": "en-units-entry-118", "surface": "cups", "lemma": "cup", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit", "container"], "semantic_domains": ["units.volume", "units.container"], "provenance_ids": ["nist-sp-811:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "cup", "plural": "cups", "symbol": "c", "is_canonical_for_dimension": false, "dimension": "volume", "default_size": null} +{"entry_id": "en-units-entry-119", "surface": "c", "lemma": "cup", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "cup", "plural": "cups", "symbol": "c", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-120", "surface": "pint", "lemma": "pint", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pint", "plural": "pints", "symbol": "pt", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-121", "surface": "pints", "lemma": "pint", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pint", "plural": "pints", "symbol": "pt", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-122", "surface": "pt", "lemma": "pint", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pint", "plural": "pints", "symbol": "pt", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-123", "surface": "quart", "lemma": "quart", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "quart", "plural": "quarts", "symbol": "qt", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-124", "surface": "quarts", "lemma": "quart", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "quart", "plural": "quarts", "symbol": "qt", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-125", "surface": "qt", "lemma": "quart", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "quart", "plural": "quarts", "symbol": "qt", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-126", "surface": "gallon", "lemma": "gallon", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gallon", "plural": "gallons", "symbol": "gal", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-127", "surface": "gallons", "lemma": "gallon", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gallon", "plural": "gallons", "symbol": "gal", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-128", "surface": "gal", "lemma": "gallon", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gallon", "plural": "gallons", "symbol": "gal", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-129", "surface": "milliliter", "lemma": "milliliter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "milliliter", "plural": "milliliters", "symbol": "mL", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-130", "surface": "milliliters", "lemma": "milliliter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "milliliter", "plural": "milliliters", "symbol": "mL", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-131", "surface": "mL", "lemma": "milliliter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "milliliter", "plural": "milliliters", "symbol": "mL", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-132", "surface": "liter", "lemma": "liter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "liter", "plural": "liters", "symbol": "L", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-133", "surface": "liters", "lemma": "liter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "liter", "plural": "liters", "symbol": "L", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-134", "surface": "L", "lemma": "liter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.volume"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "liter", "plural": "liters", "symbol": "L", "is_canonical_for_dimension": false, "dimension": "volume"} +{"entry_id": "en-units-entry-135", "surface": "cent", "lemma": "cent", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent", "plural": "cents", "symbol": "¢", "is_canonical_for_dimension": true, "dimension": "money"} +{"entry_id": "en-units-entry-136", "surface": "cents", "lemma": "cent", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent", "plural": "cents", "symbol": "¢", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-137", "surface": "¢", "lemma": "cent", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.money", "units.symbol"], "provenance_ids": ["iso-4217:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "cent", "plural": "cents", "symbol": "¢", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-138", "surface": "dollar", "lemma": "dollar", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar", "plural": "dollars", "symbol": "$", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-139", "surface": "dollars", "lemma": "dollar", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar", "plural": "dollars", "symbol": "$", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-140", "surface": "$", "lemma": "dollar", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.money", "units.symbol"], "provenance_ids": ["iso-4217:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar", "plural": "dollars", "symbol": "$", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-141", "surface": "euro", "lemma": "euro", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "euro", "plural": "euros", "symbol": "€", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-142", "surface": "euros", "lemma": "euro", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "euro", "plural": "euros", "symbol": "€", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-143", "surface": "€", "lemma": "euro", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "euro", "plural": "euros", "symbol": "€", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-144", "surface": "pound sterling", "lemma": "pound_sterling", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "pound sterling", "plural": "pounds sterling", "symbol": "£", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-145", "surface": "pounds sterling", "lemma": "pound_sterling", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "pound sterling", "plural": "pounds sterling", "symbol": "£", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-146", "surface": "£", "lemma": "pound_sterling", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "pound sterling", "plural": "pounds sterling", "symbol": "£", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-147", "surface": "yen", "lemma": "yen", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "yen", "plural": "yen", "symbol": "¥", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-148", "surface": "¥", "lemma": "yen", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "yen", "plural": "yen", "symbol": "¥", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-149", "surface": "peso", "lemma": "peso", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "peso", "plural": "pesos", "symbol": "₱", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-150", "surface": "pesos", "lemma": "peso", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "peso", "plural": "pesos", "symbol": "₱", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-151", "surface": "₱", "lemma": "peso", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.money"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "peso", "plural": "pesos", "symbol": "₱", "is_canonical_for_dimension": false, "dimension": "money"} +{"entry_id": "en-units-entry-152", "surface": "degree", "lemma": "degree", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.temperature"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "degree", "plural": "degrees", "symbol": "°", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-153", "surface": "degrees", "lemma": "degree", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.temperature"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "degree", "plural": "degrees", "symbol": "°", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-154", "surface": "°", "lemma": "degree", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.temperature", "units.symbol"], "provenance_ids": ["nist-sp-811:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "degree", "plural": "degrees", "symbol": "°", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-155", "surface": "Fahrenheit", "lemma": "Fahrenheit", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.temperature"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "Fahrenheit", "plural": "Fahrenheit", "symbol": "°F", "is_canonical_for_dimension": true, "dimension": "temperature"} +{"entry_id": "en-units-entry-156", "surface": "°F", "lemma": "Fahrenheit", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.temperature", "units.symbol"], "provenance_ids": ["nist-sp-811:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "Fahrenheit", "plural": "Fahrenheit", "symbol": "°F", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-157", "surface": "Celsius", "lemma": "Celsius", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.temperature"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "Celsius", "plural": "Celsius", "symbol": "°C", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-158", "surface": "°C", "lemma": "Celsius", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.temperature", "units.symbol"], "provenance_ids": ["nist-sp-811:2026-05-23", "adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "Celsius", "plural": "Celsius", "symbol": "°C", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-159", "surface": "Kelvin", "lemma": "Kelvin", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.temperature"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "Kelvin", "plural": "Kelvin", "symbol": "K", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-160", "surface": "K", "lemma": "Kelvin", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.temperature"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "Kelvin", "plural": "Kelvin", "symbol": "K", "is_canonical_for_dimension": false, "dimension": "temperature"} +{"entry_id": "en-units-entry-161", "surface": "square inch", "lemma": "square_inch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square inch", "plural": "square inches", "symbol": "sq in", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-162", "surface": "square inches", "lemma": "square_inch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square inch", "plural": "square inches", "symbol": "sq in", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-163", "surface": "sq in", "lemma": "square_inch", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square inch", "plural": "square inches", "symbol": "sq in", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-164", "surface": "square foot", "lemma": "square_foot", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square foot", "plural": "square feet", "symbol": "sq ft", "is_canonical_for_dimension": true, "dimension": "area"} +{"entry_id": "en-units-entry-165", "surface": "square feet", "lemma": "square_foot", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square foot", "plural": "square feet", "symbol": "sq ft", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-166", "surface": "sq ft", "lemma": "square_foot", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square foot", "plural": "square feet", "symbol": "sq ft", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-167", "surface": "square yard", "lemma": "square_yard", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square yard", "plural": "square yards", "symbol": "sq yd", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-168", "surface": "square yards", "lemma": "square_yard", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square yard", "plural": "square yards", "symbol": "sq yd", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-169", "surface": "sq yd", "lemma": "square_yard", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square yard", "plural": "square yards", "symbol": "sq yd", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-170", "surface": "square mile", "lemma": "square_mile", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square mile", "plural": "square miles", "symbol": "sq mi", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-171", "surface": "square miles", "lemma": "square_mile", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square mile", "plural": "square miles", "symbol": "sq mi", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-172", "surface": "sq mi", "lemma": "square_mile", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square mile", "plural": "square miles", "symbol": "sq mi", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-173", "surface": "square meter", "lemma": "square_meter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square meter", "plural": "square meters", "symbol": "sq m", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-174", "surface": "square meters", "lemma": "square_meter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square meter", "plural": "square meters", "symbol": "sq m", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-175", "surface": "sq m", "lemma": "square_meter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square meter", "plural": "square meters", "symbol": "sq m", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-176", "surface": "square kilometer", "lemma": "square_kilometer", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square kilometer", "plural": "square kilometers", "symbol": "sq km", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-177", "surface": "square kilometers", "lemma": "square_kilometer", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square kilometer", "plural": "square kilometers", "symbol": "sq km", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-178", "surface": "sq km", "lemma": "square_kilometer", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "square kilometer", "plural": "square kilometers", "symbol": "sq km", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-179", "surface": "acre", "lemma": "acre", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "acre", "plural": "acres", "symbol": "ac", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-180", "surface": "acres", "lemma": "acre", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "acre", "plural": "acres", "symbol": "ac", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-181", "surface": "ac", "lemma": "acre", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "acre", "plural": "acres", "symbol": "ac", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-182", "surface": "hectare", "lemma": "hectare", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hectare", "plural": "hectares", "symbol": "ha", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-183", "surface": "hectares", "lemma": "hectare", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hectare", "plural": "hectares", "symbol": "ha", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-184", "surface": "ha", "lemma": "hectare", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.area"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hectare", "plural": "hectares", "symbol": "ha", "is_canonical_for_dimension": false, "dimension": "area"} +{"entry_id": "en-units-entry-185", "surface": "mile per hour", "lemma": "mile_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "mile per hour", "plural": "miles per hour", "symbol": "mph", "is_canonical_for_dimension": true, "dimension": "speed"} +{"entry_id": "en-units-entry-186", "surface": "miles per hour", "lemma": "mile_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "mile per hour", "plural": "miles per hour", "symbol": "mph", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-187", "surface": "mph", "lemma": "mile_per_hour", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "mile per hour", "plural": "miles per hour", "symbol": "mph", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-188", "surface": "kilometer per hour", "lemma": "kilometer_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilometer per hour", "plural": "kilometers per hour", "symbol": "kph", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-189", "surface": "kilometers per hour", "lemma": "kilometer_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilometer per hour", "plural": "kilometers per hour", "symbol": "kph", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-190", "surface": "kph", "lemma": "kilometer_per_hour", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilometer per hour", "plural": "kilometers per hour", "symbol": "kph", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-191", "surface": "foot per second", "lemma": "foot_per_second", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "foot per second", "plural": "feet per second", "symbol": "fps", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-192", "surface": "feet per second", "lemma": "foot_per_second", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "foot per second", "plural": "feet per second", "symbol": "fps", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-193", "surface": "fps", "lemma": "foot_per_second", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "foot per second", "plural": "feet per second", "symbol": "fps", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-194", "surface": "meter per second", "lemma": "meter_per_second", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "meter per second", "plural": "meters per second", "symbol": "mps", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-195", "surface": "meters per second", "lemma": "meter_per_second", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "meter per second", "plural": "meters per second", "symbol": "mps", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-196", "surface": "mps", "lemma": "meter_per_second", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.speed"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "meter per second", "plural": "meters per second", "symbol": "mps", "is_canonical_for_dimension": false, "dimension": "speed"} +{"entry_id": "en-units-entry-197", "surface": "pound per cubic foot", "lemma": "pound_per_cubic_foot", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.density"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pound per cubic foot", "plural": "pounds per cubic foot", "symbol": "lb/cu ft", "is_canonical_for_dimension": true, "dimension": "density"} +{"entry_id": "en-units-entry-198", "surface": "pounds per cubic foot", "lemma": "pound_per_cubic_foot", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.density"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pound per cubic foot", "plural": "pounds per cubic foot", "symbol": "lb/cu ft", "is_canonical_for_dimension": false, "dimension": "density"} +{"entry_id": "en-units-entry-199", "surface": "lb/cu ft", "lemma": "pound_per_cubic_foot", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.density"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "pound per cubic foot", "plural": "pounds per cubic foot", "symbol": "lb/cu ft", "is_canonical_for_dimension": false, "dimension": "density"} +{"entry_id": "en-units-entry-200", "surface": "gram per cubic centimeter", "lemma": "gram_per_cubic_centimeter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.density"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gram per cubic centimeter", "plural": "grams per cubic centimeter", "symbol": "g/cm³", "is_canonical_for_dimension": false, "dimension": "density"} +{"entry_id": "en-units-entry-201", "surface": "grams per cubic centimeter", "lemma": "gram_per_cubic_centimeter", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.density"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gram per cubic centimeter", "plural": "grams per cubic centimeter", "symbol": "g/cm³", "is_canonical_for_dimension": false, "dimension": "density"} +{"entry_id": "en-units-entry-202", "surface": "g/cm³", "lemma": "gram_per_cubic_centimeter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.density"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "gram per cubic centimeter", "plural": "grams per cubic centimeter", "symbol": "g/cm³", "is_canonical_for_dimension": false, "dimension": "density"} +{"entry_id": "en-units-entry-203", "surface": "hertz", "lemma": "hertz", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.frequency"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hertz", "plural": "hertz", "symbol": "Hz", "is_canonical_for_dimension": true, "dimension": "frequency"} +{"entry_id": "en-units-entry-204", "surface": "Hz", "lemma": "hertz", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.frequency"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "hertz", "plural": "hertz", "symbol": "Hz", "is_canonical_for_dimension": false, "dimension": "frequency"} +{"entry_id": "en-units-entry-205", "surface": "kilohertz", "lemma": "kilohertz", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.frequency"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilohertz", "plural": "kilohertz", "symbol": "kHz", "is_canonical_for_dimension": false, "dimension": "frequency"} +{"entry_id": "en-units-entry-206", "surface": "kHz", "lemma": "kilohertz", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.frequency"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "kilohertz", "plural": "kilohertz", "symbol": "kHz", "is_canonical_for_dimension": false, "dimension": "frequency"} +{"entry_id": "en-units-entry-207", "surface": "megahertz", "lemma": "megahertz", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.frequency"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "megahertz", "plural": "megahertz", "symbol": "MHz", "is_canonical_for_dimension": false, "dimension": "frequency"} +{"entry_id": "en-units-entry-208", "surface": "MHz", "lemma": "megahertz", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.frequency"], "provenance_ids": ["nist-sp-811:2026-05-23"], "epistemic_status": "coherent", "singular": "megahertz", "plural": "megahertz", "symbol": "MHz", "is_canonical_for_dimension": false, "dimension": "frequency"} +{"entry_id": "en-units-entry-209", "surface": "dollar per hour", "lemma": "dollar_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.wage"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar per hour", "plural": "dollars per hour", "symbol": "$/hr", "is_canonical_for_dimension": true, "dimension": "wage"} +{"entry_id": "en-units-entry-210", "surface": "dollars per hour", "lemma": "dollar_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.wage"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar per hour", "plural": "dollars per hour", "symbol": "$/hr", "is_canonical_for_dimension": false, "dimension": "wage"} +{"entry_id": "en-units-entry-211", "surface": "$/hr", "lemma": "dollar_per_hour", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.wage"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar per hour", "plural": "dollars per hour", "symbol": "$/hr", "is_canonical_for_dimension": false, "dimension": "wage"} +{"entry_id": "en-units-entry-212", "surface": "cent per hour", "lemma": "cent_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.wage"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent per hour", "plural": "cents per hour", "symbol": "¢/hr", "is_canonical_for_dimension": false, "dimension": "wage"} +{"entry_id": "en-units-entry-213", "surface": "cents per hour", "lemma": "cent_per_hour", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.wage"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent per hour", "plural": "cents per hour", "symbol": "¢/hr", "is_canonical_for_dimension": false, "dimension": "wage"} +{"entry_id": "en-units-entry-214", "surface": "¢/hr", "lemma": "cent_per_hour", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.wage"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent per hour", "plural": "cents per hour", "symbol": "¢/hr", "is_canonical_for_dimension": false, "dimension": "wage"} +{"entry_id": "en-units-entry-215", "surface": "dollar per item", "lemma": "dollar_per_item", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.unit_price"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar per item", "plural": "dollars per item", "symbol": "$/item", "is_canonical_for_dimension": true, "dimension": "unit_price"} +{"entry_id": "en-units-entry-216", "surface": "dollars per item", "lemma": "dollar_per_item", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.unit_price"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar per item", "plural": "dollars per item", "symbol": "$/item", "is_canonical_for_dimension": false, "dimension": "unit_price"} +{"entry_id": "en-units-entry-217", "surface": "$/item", "lemma": "dollar_per_item", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.unit_price"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "dollar per item", "plural": "dollars per item", "symbol": "$/item", "is_canonical_for_dimension": false, "dimension": "unit_price"} +{"entry_id": "en-units-entry-218", "surface": "cent per item", "lemma": "cent_per_item", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.unit_price"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent per item", "plural": "cents per item", "symbol": "¢/item", "is_canonical_for_dimension": false, "dimension": "unit_price"} +{"entry_id": "en-units-entry-219", "surface": "cents per item", "lemma": "cent_per_item", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["unit"], "semantic_domains": ["units.unit_price"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent per item", "plural": "cents per item", "symbol": "¢/item", "is_canonical_for_dimension": false, "dimension": "unit_price"} +{"entry_id": "en-units-entry-220", "surface": "¢/item", "lemma": "cent_per_item", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["unit", "symbol"], "semantic_domains": ["units.unit_price"], "provenance_ids": ["iso-4217:2026-05-23"], "epistemic_status": "coherent", "singular": "cent per item", "plural": "cents per item", "symbol": "¢/item", "is_canonical_for_dimension": false, "dimension": "unit_price"} +{"entry_id": "en-units-entry-221", "surface": "box", "lemma": "box", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "box", "plural": "boxes", "default_size": null} +{"entry_id": "en-units-entry-222", "surface": "boxes", "lemma": "box", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "box", "plural": "boxes", "default_size": null} +{"entry_id": "en-units-entry-223", "surface": "bag", "lemma": "bag", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bag", "plural": "bags", "default_size": null} +{"entry_id": "en-units-entry-224", "surface": "bags", "lemma": "bag", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bag", "plural": "bags", "default_size": null} +{"entry_id": "en-units-entry-225", "surface": "pack", "lemma": "pack", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "pack", "plural": "packs", "default_size": null} +{"entry_id": "en-units-entry-226", "surface": "packs", "lemma": "pack", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "pack", "plural": "packs", "default_size": null} +{"entry_id": "en-units-entry-227", "surface": "basket", "lemma": "basket", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "basket", "plural": "baskets", "default_size": null} +{"entry_id": "en-units-entry-228", "surface": "baskets", "lemma": "basket", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "basket", "plural": "baskets", "default_size": null} +{"entry_id": "en-units-entry-229", "surface": "batch", "lemma": "batch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "batch", "plural": "batches", "default_size": null} +{"entry_id": "en-units-entry-230", "surface": "batches", "lemma": "batch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "batch", "plural": "batches", "default_size": null} +{"entry_id": "en-units-entry-231", "surface": "dozen", "lemma": "dozen", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "dozen", "plural": "dozens", "default_size": 12} +{"entry_id": "en-units-entry-232", "surface": "dozens", "lemma": "dozen", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "dozen", "plural": "dozens", "default_size": 12} +{"entry_id": "en-units-entry-233", "surface": "group", "lemma": "group", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "group", "plural": "groups", "default_size": null} +{"entry_id": "en-units-entry-234", "surface": "groups", "lemma": "group", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "group", "plural": "groups", "default_size": null} +{"entry_id": "en-units-entry-235", "surface": "set", "lemma": "set", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "set", "plural": "sets", "default_size": null} +{"entry_id": "en-units-entry-236", "surface": "sets", "lemma": "set", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "set", "plural": "sets", "default_size": null} +{"entry_id": "en-units-entry-237", "surface": "case", "lemma": "case", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "case", "plural": "cases", "default_size": null} +{"entry_id": "en-units-entry-238", "surface": "cases", "lemma": "case", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "case", "plural": "cases", "default_size": null} +{"entry_id": "en-units-entry-239", "surface": "pair", "lemma": "pair", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "pair", "plural": "pairs", "default_size": 2} +{"entry_id": "en-units-entry-240", "surface": "pairs", "lemma": "pair", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "pair", "plural": "pairs", "default_size": 2} +{"entry_id": "en-units-entry-241", "surface": "pile", "lemma": "pile", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "pile", "plural": "piles", "default_size": null} +{"entry_id": "en-units-entry-242", "surface": "piles", "lemma": "pile", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "pile", "plural": "piles", "default_size": null} +{"entry_id": "en-units-entry-243", "surface": "stack", "lemma": "stack", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "stack", "plural": "stacks", "default_size": null} +{"entry_id": "en-units-entry-244", "surface": "stacks", "lemma": "stack", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "stack", "plural": "stacks", "default_size": null} +{"entry_id": "en-units-entry-245", "surface": "bunch", "lemma": "bunch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bunch", "plural": "bunches", "default_size": null} +{"entry_id": "en-units-entry-246", "surface": "bunches", "lemma": "bunch", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bunch", "plural": "bunches", "default_size": null} +{"entry_id": "en-units-entry-247", "surface": "bundle", "lemma": "bundle", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bundle", "plural": "bundles", "default_size": null} +{"entry_id": "en-units-entry-248", "surface": "bundles", "lemma": "bundle", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bundle", "plural": "bundles", "default_size": null} +{"entry_id": "en-units-entry-249", "surface": "carton", "lemma": "carton", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "carton", "plural": "cartons", "default_size": null} +{"entry_id": "en-units-entry-250", "surface": "cartons", "lemma": "carton", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "carton", "plural": "cartons", "default_size": null} +{"entry_id": "en-units-entry-251", "surface": "crate", "lemma": "crate", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "crate", "plural": "crates", "default_size": null} +{"entry_id": "en-units-entry-252", "surface": "crates", "lemma": "crate", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "crate", "plural": "crates", "default_size": null} +{"entry_id": "en-units-entry-253", "surface": "jar", "lemma": "jar", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "jar", "plural": "jars", "default_size": null} +{"entry_id": "en-units-entry-254", "surface": "jars", "lemma": "jar", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "jar", "plural": "jars", "default_size": null} +{"entry_id": "en-units-entry-255", "surface": "can", "lemma": "can", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "can", "plural": "cans", "default_size": null} +{"entry_id": "en-units-entry-256", "surface": "cans", "lemma": "can", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "can", "plural": "cans", "default_size": null} +{"entry_id": "en-units-entry-257", "surface": "bottle", "lemma": "bottle", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bottle", "plural": "bottles", "default_size": null} +{"entry_id": "en-units-entry-258", "surface": "bottles", "lemma": "bottle", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bottle", "plural": "bottles", "default_size": null} +{"entry_id": "en-units-entry-259", "surface": "plate", "lemma": "plate", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "plate", "plural": "plates", "default_size": null} +{"entry_id": "en-units-entry-260", "surface": "plates", "lemma": "plate", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "plate", "plural": "plates", "default_size": null} +{"entry_id": "en-units-entry-261", "surface": "bowl", "lemma": "bowl", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bowl", "plural": "bowls", "default_size": null} +{"entry_id": "en-units-entry-262", "surface": "bowls", "lemma": "bowl", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "bowl", "plural": "bowls", "default_size": null} +{"entry_id": "en-units-entry-263", "surface": "tray", "lemma": "tray", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "tray", "plural": "trays", "default_size": null} +{"entry_id": "en-units-entry-264", "surface": "trays", "lemma": "tray", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "tray", "plural": "trays", "default_size": null} +{"entry_id": "en-units-entry-265", "surface": "sack", "lemma": "sack", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "sack", "plural": "sacks", "default_size": null} +{"entry_id": "en-units-entry-266", "surface": "sacks", "lemma": "sack", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "sack", "plural": "sacks", "default_size": null} +{"entry_id": "en-units-entry-267", "surface": "container", "lemma": "container", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "container", "plural": "containers", "default_size": null} +{"entry_id": "en-units-entry-268", "surface": "containers", "lemma": "container", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "container", "plural": "containers", "default_size": null} +{"entry_id": "en-units-entry-269", "surface": "gross", "lemma": "gross", "language": "en", "pos": "NOUN", "part_of_speech": "NOUN", "morphology_tags": ["container"], "semantic_domains": ["units.container"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent", "singular": "gross", "plural": "gross", "default_size": 144} +{"entry_id": "en-units-entry-270", "surface": "per", "lemma": "per", "language": "en", "pos": "ADP", "part_of_speech": "ADP", "morphology_tags": ["rate_connector"], "semantic_domains": ["units.rate"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-271", "surface": "an", "lemma": "an", "language": "en", "pos": "ADP", "part_of_speech": "ADP", "morphology_tags": ["rate_connector"], "semantic_domains": ["units.rate"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-272", "surface": "every", "lemma": "every", "language": "en", "pos": "ADP", "part_of_speech": "ADP", "morphology_tags": ["rate_connector"], "semantic_domains": ["units.rate"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-273", "surface": "each", "lemma": "each", "language": "en", "pos": "ADP", "part_of_speech": "ADP", "morphology_tags": ["rate_connector"], "semantic_domains": ["units.rate"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-274", "surface": "by", "lemma": "by", "language": "en", "pos": "ADP", "part_of_speech": "ADP", "morphology_tags": ["rate_connector"], "semantic_domains": ["units.rate"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-275", "surface": "%", "lemma": "percent", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-276", "surface": "½", "lemma": "half", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-277", "surface": "¼", "lemma": "quarter", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-278", "surface": "¾", "lemma": "three_quarters", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-279", "surface": "⅓", "lemma": "one_third", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-280", "surface": "⅔", "lemma": "two_thirds", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-281", "surface": "⅛", "lemma": "one_eighth", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-282", "surface": "⅜", "lemma": "three_eighths", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-283", "surface": "⅝", "lemma": "five_eighths", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} +{"entry_id": "en-units-entry-284", "surface": "⅞", "lemma": "seven_eighths", "language": "en", "pos": "SYM", "part_of_speech": "SYM", "morphology_tags": ["symbol"], "semantic_domains": ["units.symbol"], "provenance_ids": ["adr-0127:units_pack:2026-05-23"], "epistemic_status": "coherent"} diff --git a/language_packs/data/en_units_v1/manifest.json b/language_packs/data/en_units_v1/manifest.json new file mode 100644 index 00000000..32b478dc --- /dev/null +++ b/language_packs/data/en_units_v1/manifest.json @@ -0,0 +1,17 @@ +{ + "pack_id": "en_units_v1", + "language": "en", + "role": "operational_base", + "script": "Latin", + "normalization_policy": "unitize_versor", + "source_manifest": "en_units_v1.lexicon.jsonl", + "determinism_class": "D0", + "checksum": "06216713d356dd88c8a45e70575310d15af5f0b9e943e008f22ab4515cd268bd", + "version": "1.0.0", + "gate_engaged": true, + "oov_policy": "tagged_fallback", + "glosses_checksum": "4e08e6996eb7a7e38d254ba8a662a1d4fc21c04bdc3ac8666df1306f41fcbd65", + "conversions_checksum": "714a8e67fd1b1d1fa9de52676e61ac12c08b1d11e72decc1fe083bdc49c7da24", + "definitional_layer": false, + "provenance": "adr-0127:units_pack:2026-05-23" +} \ No newline at end of file diff --git a/language_packs/loader.py b/language_packs/loader.py new file mode 100644 index 00000000..ffca3e92 --- /dev/null +++ b/language_packs/loader.py @@ -0,0 +1,290 @@ +from __future__ import annotations + +import json +from dataclasses import dataclass +from pathlib import Path + +# Dataclass definitions as required by the contract +@dataclass(frozen=True, slots=True) +class UnitEntry: + surface: str + singular: str + plural: str + symbol: str | None + dimension: str + is_canonical_for_dimension: bool + provenance_ids: list[str] + +@dataclass(frozen=True, slots=True) +class ContainerEntry: + surface: str + singular: str + plural: str + default_size: int | None + provenance_ids: list[str] + +@dataclass(frozen=True, slots=True) +class DimensionEntry: + name: str + canonical_unit: str + is_derived: bool + formula: str | None + provenance_ids: list[str] + +@dataclass(frozen=True, slots=True) +class ConversionEdge: + edge_id: str + from_unit: str + to_unit: str + ratio: float + offset: float + dimension: str + provenance_ids: list[str] + +@dataclass(frozen=True, slots=True) +class ConversionGraph: + edges: list[ConversionEdge] + + +# Private cache variables +_UNITS_MAP: dict[str, UnitEntry] = {} +_CONTAINERS_MAP: dict[str, ContainerEntry] = {} +_DIMENSIONS_MAP: dict[str, DimensionEntry] = {} +_CONVERSIONS_BY_DIM: dict[str, list[ConversionEdge]] = {} +_LOADED = False + +ADR_PROVENANCE = "adr-0127:units_pack:2026-05-23" + +def _ensure_loaded() -> None: + global _LOADED + if _LOADED: + return + + data_dir = Path(__file__).parent / "data" / "en_units_v1" + lexicon_path = data_dir / "lexicon.jsonl" + conversions_path = data_dir / "conversions.jsonl" + + if not lexicon_path.exists(): + raise FileNotFoundError(f"lexicon.jsonl missing at {lexicon_path}") + + # Load lexicon + unit_entries = [] + canonical_lemmas = set() + + with lexicon_path.open("r", encoding="utf-8") as f: + for line in f: + if not line.strip(): + continue + entry = json.loads(line) + tags = entry.get("morphology_tags", []) + surface = entry["surface"].lower() + + if "dimension" in tags: + _DIMENSIONS_MAP[surface] = DimensionEntry( + name=entry["surface"], + canonical_unit=entry["canonical_unit"], + is_derived=entry["is_derived"], + formula=entry["formula"], + provenance_ids=list(entry.get("provenance_ids", [])) + ) + elif "unit" in tags: + unit_entries.append(entry) + if entry.get("is_canonical_for_dimension"): + canonical_lemmas.add(entry["lemma"].lower()) + elif "container" in tags: + _CONTAINERS_MAP[surface] = ContainerEntry( + surface=entry["surface"], + singular=entry["singular"], + plural=entry["plural"], + default_size=entry.get("default_size"), + provenance_ids=list(entry.get("provenance_ids", [])) + ) + + for entry in unit_entries: + surface = entry["surface"].lower() + lemma = entry["lemma"].lower() + is_canon = (lemma in canonical_lemmas) + + ue = UnitEntry( + surface=entry["surface"], + singular=entry["singular"], + plural=entry["plural"], + symbol=entry.get("symbol"), + dimension=entry["dimension"], + is_canonical_for_dimension=is_canon, + provenance_ids=list(entry.get("provenance_ids", [])) + ) + _UNITS_MAP[surface] = ue + _UNITS_MAP[lemma] = ue + + # Load conversions + if conversions_path.exists(): + with conversions_path.open("r", encoding="utf-8") as f: + for line in f: + if not line.strip(): + continue + edge = json.loads(line) + c_edge = ConversionEdge( + edge_id=edge["edge_id"], + from_unit=edge["from"], + to_unit=edge["to"], + ratio=float(edge["ratio"]), + offset=float(edge.get("offset", 0.0)), + dimension=edge["dimension"], + provenance_ids=list(edge.get("provenance_ids", [])) + ) + _CONVERSIONS_BY_DIM.setdefault(c_edge.dimension.lower(), []).append(c_edge) + + _LOADED = True + + +# Public API functions + +def lookup_unit(token: str) -> UnitEntry | None: + """Look up unit by singular, plural, symbol surface, or dynamic composition.""" + _ensure_loaded() + token_clean = token.strip().lower() + + # 1. Direct Lookup + if token_clean in _UNITS_MAP: + return _UNITS_MAP[token_clean] + + # 2. Composition Rules + # Rule A: per + if " per " in token_clean: + parts = token_clean.split(" per ") + if len(parts) == 2: + left_str, right_str = parts[0], parts[1] + left_unit = lookup_unit(left_str) + right_unit = lookup_unit(right_str) + + if left_unit: + # Wage / Unit Price: money per time / count + if left_unit.dimension == "money": + if right_unit and right_unit.dimension == "time": + singular = f"{left_unit.singular} per {right_unit.singular}" + plural = f"{left_unit.plural} per {right_unit.singular}" + is_canon = (left_unit.singular == "dollar" and right_unit.singular == "hour") + return UnitEntry( + surface=token, + singular=singular, + plural=plural, + symbol=f"{left_unit.symbol or '$'}/{right_unit.symbol or 'hr'}", + dimension="wage", + is_canonical_for_dimension=is_canon, + provenance_ids=left_unit.provenance_ids + (right_unit.provenance_ids if right_unit else [ADR_PROVENANCE]) + ) + else: + r_sing = right_unit.singular if right_unit else right_str + singular = f"{left_unit.singular} per {r_sing}" + plural = f"{left_unit.plural} per {r_sing}" + is_canon = (left_unit.singular == "dollar" and r_sing == "item") + return UnitEntry( + surface=token, + singular=singular, + plural=plural, + symbol=f"{left_unit.symbol or '$'}/{r_sing}", + dimension="unit_price", + is_canonical_for_dimension=is_canon, + provenance_ids=left_unit.provenance_ids + (right_unit.provenance_ids if right_unit else [ADR_PROVENANCE]) + ) + + # Speed: length per time + elif left_unit.dimension == "length" and right_unit and right_unit.dimension == "time": + singular = f"{left_unit.singular} per {right_unit.singular}" + plural = f"{left_unit.plural} per {right_unit.singular}" + is_canon = (left_unit.singular == "mile" and right_unit.singular == "hour") + return UnitEntry( + surface=token, + singular=singular, + plural=plural, + symbol="mph" if is_canon else f"{left_unit.symbol or 'ft'}/{right_unit.symbol or 's'}", + dimension="speed", + is_canonical_for_dimension=is_canon, + provenance_ids=left_unit.provenance_ids + right_unit.provenance_ids + ) + + # Density: mass per volume + elif left_unit.dimension == "mass" and right_unit and right_unit.dimension == "volume": + singular = f"{left_unit.singular} per {right_unit.singular}" + plural = f"{left_unit.plural} per {right_unit.singular}" + is_canon = (left_unit.singular == "pound" and right_unit.surface == "cubic foot") + return UnitEntry( + surface=token, + singular=singular, + plural=plural, + symbol=f"{left_unit.symbol or 'lb'}/{right_unit.symbol or 'cu ft'}", + dimension="density", + is_canonical_for_dimension=is_canon, + provenance_ids=left_unit.provenance_ids + right_unit.provenance_ids + ) + + # Rule B: square + if token_clean.startswith("square "): + sub_str = token_clean[7:] + sub_unit = lookup_unit(sub_str) + if sub_unit and sub_unit.dimension == "length": + singular = f"square {sub_unit.singular}" + plural = f"square {sub_unit.plural}" + is_canon = (sub_unit.singular == "foot") + return UnitEntry( + surface=token, + singular=singular, + plural=plural, + symbol=f"sq {sub_unit.symbol or 'ft'}", + dimension="area", + is_canonical_for_dimension=is_canon, + provenance_ids=sub_unit.provenance_ids + ) + + # Rule C: cubic + if token_clean.startswith("cubic "): + sub_str = token_clean[6:] + sub_unit = lookup_unit(sub_str) + if sub_unit and sub_unit.dimension == "length": + singular = f"cubic {sub_unit.singular}" + plural = f"cubic {sub_unit.plural}" + return UnitEntry( + surface=token, + singular=singular, + plural=plural, + symbol=f"cu {sub_unit.symbol or 'ft'}", + dimension="volume", + is_canonical_for_dimension=False, + provenance_ids=sub_unit.provenance_ids + ) + + return None + + +def lookup_container(token: str) -> ContainerEntry | None: + """Look up container by singular or plural surface.""" + _ensure_loaded() + return _CONTAINERS_MAP.get(token.strip().lower()) + + +def lookup_dimension(name: str) -> DimensionEntry | None: + """Look up dimension by name.""" + _ensure_loaded() + return _DIMENSIONS_MAP.get(name.strip().lower()) + + +def get_conversion_graph(dimension: str) -> ConversionGraph: + """Get the conversions subgraph for a given dimension.""" + _ensure_loaded() + edges = _CONVERSIONS_BY_DIM.get(dimension.strip().lower(), []) + return ConversionGraph(edges=list(edges)) + + +def canonical_unit_for(dimension: str) -> str: + """Get the canonical unit name for a given dimension.""" + _ensure_loaded() + dim = _DIMENSIONS_MAP.get(dimension.strip().lower()) + if not dim: + raise ValueError(f"Unknown dimension: {dimension}") + # Return the singular surface form of the canonical unit if registered, + # otherwise fallback to dim.canonical_unit. + unit = lookup_unit(dim.canonical_unit) + if unit: + return unit.singular + return dim.canonical_unit diff --git a/tests/test_adr_0127_loader.py b/tests/test_adr_0127_loader.py new file mode 100644 index 00000000..d4cf9a51 --- /dev/null +++ b/tests/test_adr_0127_loader.py @@ -0,0 +1,157 @@ +from __future__ import annotations + +import pytest +from language_packs.loader import ( + lookup_unit, + lookup_container, + lookup_dimension, + get_conversion_graph, + canonical_unit_for, + UnitEntry, + ContainerEntry, + DimensionEntry, +) + +def test_lookup_unit_happy_path() -> None: + # Singular + u_foot = lookup_unit("foot") + assert isinstance(u_foot, UnitEntry) + assert u_foot.singular == "foot" + assert u_foot.plural == "feet" + assert u_foot.symbol == "ft" + assert u_foot.dimension == "length" + assert u_foot.is_canonical_for_dimension is True + + # Plural + u_feet = lookup_unit("feet") + assert isinstance(u_feet, UnitEntry) + assert u_feet.singular == "foot" + assert u_feet.plural == "feet" + + # Symbol + u_ft = lookup_unit("ft") + assert isinstance(u_ft, UnitEntry) + assert u_ft.singular == "foot" + assert u_ft.plural == "feet" + + +def test_lookup_unit_missing_returns_none() -> None: + assert lookup_unit("not_a_unit") is None + assert lookup_unit("") is None + + +def test_lookup_container() -> None: + # Singular + c_box = lookup_container("box") + assert isinstance(c_box, ContainerEntry) + assert c_box.singular == "box" + assert c_box.plural == "boxes" + assert c_box.default_size is None + + # Plural + c_boxes = lookup_container("boxes") + assert isinstance(c_boxes, ContainerEntry) + assert c_boxes.singular == "box" + + # Container with default size + c_dozen = lookup_container("dozen") + assert c_dozen.default_size == 12 + + c_pair = lookup_container("pair") + assert c_pair.default_size == 2 + + c_gross = lookup_container("gross") + assert c_gross.default_size == 144 + + # Missing + assert lookup_container("not_a_container") is None + + +def test_lookup_dimension() -> None: + d_length = lookup_dimension("length") + assert isinstance(d_length, DimensionEntry) + assert d_length.name == "length" + assert d_length.canonical_unit == "foot" + assert d_length.is_derived is False + + d_area = lookup_dimension("area") + assert isinstance(d_area, DimensionEntry) + assert d_area.name == "area" + assert d_area.canonical_unit == "square_foot" + assert d_area.is_derived is True + assert d_area.formula == "length * length" + + # Missing + assert lookup_dimension("not_a_dimension") is None + + +def test_canonical_unit_for() -> None: + assert canonical_unit_for("length") == "foot" + assert canonical_unit_for("time") == "minute" + with pytest.raises(ValueError, match="Unknown dimension"): + canonical_unit_for("not_a_dimension") + + +def test_multi_word_composition_area_volume() -> None: + # Area + u_sq_in = lookup_unit("square inch") + assert isinstance(u_sq_in, UnitEntry) + assert u_sq_in.dimension == "area" + assert u_sq_in.singular == "square inch" + assert u_sq_in.plural == "square inches" + assert u_sq_in.is_canonical_for_dimension is False + + u_sq_ft = lookup_unit("square feet") + assert isinstance(u_sq_ft, UnitEntry) + assert u_sq_ft.dimension == "area" + assert u_sq_ft.is_canonical_for_dimension is True + + # Volume (cubic length-unit) + u_cu_m = lookup_unit("cubic meter") + assert isinstance(u_cu_m, UnitEntry) + assert u_cu_m.dimension == "volume" + assert u_cu_m.singular == "cubic meter" + assert u_cu_m.plural == "cubic meters" + assert u_cu_m.is_canonical_for_dimension is False + + +def test_multi_word_composition_speed_density() -> None: + # Speed + u_mps = lookup_unit("meters per second") + assert isinstance(u_mps, UnitEntry) + assert u_mps.dimension == "speed" + assert u_mps.singular == "meter per second" + assert u_mps.plural == "meters per second" + assert u_mps.is_canonical_for_dimension is False + + u_mph = lookup_unit("miles per hour") + assert isinstance(u_mph, UnitEntry) + assert u_mph.dimension == "speed" + assert u_mph.is_canonical_for_dimension is True + + # Density + u_dens = lookup_unit("pounds per cubic foot") + assert isinstance(u_dens, UnitEntry) + assert u_dens.dimension == "density" + assert u_dens.singular == "pound per cubic foot" + assert u_dens.is_canonical_for_dimension is True + + +def test_multi_word_composition_wage_unit_price() -> None: + # Wage (money per time) + u_wage = lookup_unit("dollars per hour") + assert isinstance(u_wage, UnitEntry) + assert u_wage.dimension == "wage" + assert u_wage.singular == "dollar per hour" + assert u_wage.plural == "dollars per hour" + + # Unit price (money per count/token) + u_price = lookup_unit("dollars per item") + assert isinstance(u_price, UnitEntry) + assert u_price.dimension == "unit_price" + assert u_price.singular == "dollar per item" + + u_price_apple = lookup_unit("cents per apple") + assert isinstance(u_price_apple, UnitEntry) + assert u_price_apple.dimension == "unit_price" + assert u_price_apple.singular == "cent per apple" diff --git a/tests/test_adr_0127_pack_ratification.py b/tests/test_adr_0127_pack_ratification.py new file mode 100644 index 00000000..b49a5954 --- /dev/null +++ b/tests/test_adr_0127_pack_ratification.py @@ -0,0 +1,261 @@ +from __future__ import annotations + +import json +from pathlib import Path +from collections import deque +from language_packs.loader import ( + lookup_unit, + lookup_dimension, + get_conversion_graph, + canonical_unit_for, + UnitEntry, +) + +DATA_DIR = Path(__file__).parent.parent / "language_packs" / "data" / "en_units_v1" + +def _load_raw_lexicon(): + lexicon_path = DATA_DIR / "lexicon.jsonl" + entries = [] + with lexicon_path.open("r", encoding="utf-8") as f: + for line in f: + if line.strip(): + entries.append(json.loads(line)) + return entries + +def _load_raw_conversions(): + conversions_path = DATA_DIR / "conversions.jsonl" + entries = [] + with conversions_path.open("r", encoding="utf-8") as f: + for line in f: + if line.strip(): + entries.append(json.loads(line)) + return entries + + +class TestGraphRatificationInvariants: + """Ratification tests for the en_units_v1 pack.""" + + def test_round_trip_identity(self) -> None: + """Invariant 1: for every edge (A, B, r, offset), there must exist (B, A, 1/r, -offset/r) within 1e-9.""" + edges = _load_raw_conversions() + + # Build an easy lookup map for (from_unit, to_unit) -> edge + edge_map = {} + for edge in edges: + edge_map[(edge["from"], edge["to"])] = edge + + for edge in edges: + u_from = edge["from"] + u_to = edge["to"] + ratio = edge["ratio"] + offset = edge.get("offset", 0.0) + + # Retrieve reverse edge + rev_key = (u_to, u_from) + assert rev_key in edge_map, f"Missing reverse conversion edge from {u_to} to {u_from}" + rev_edge = edge_map[rev_key] + + expected_ratio_rev = 1.0 / ratio + expected_offset_rev = -offset / ratio + + assert abs(rev_edge["ratio"] - expected_ratio_rev) < 1e-9, ( + f"Ratio mismatch on reverse edge {u_to} -> {u_from}: " + f"got {rev_edge['ratio']}, expected {expected_ratio_rev}" + ) + assert abs(rev_edge.get("offset", 0.0) - expected_offset_rev) < 1e-9, ( + f"Offset mismatch on reverse edge {u_to} -> {u_from}: " + f"got {rev_edge.get('offset', 0.0)}, expected {expected_offset_rev}" + ) + + def test_per_dimension_connectivity(self) -> None: + """Invariant 2: within each dimension, the induced subgraph must be fully connected.""" + lexicon = _load_raw_lexicon() + conversions = _load_raw_conversions() + + # Group unit surfaces by dimension + dim_units = {} + for entry in lexicon: + if "unit" in entry.get("morphology_tags", []): + dim = entry["dimension"] + dim_units.setdefault(dim, set()).add(entry["surface"]) + + # Check connectivity for each dimension + for dim, units in dim_units.items(): + if not units: + continue + + # Filter conversion edges for this dimension + dim_edges = [e for e in conversions if e["dimension"] == dim] + + # Build adjacency list + adj = {u: set() for u in units} + for edge in dim_edges: + u_from = edge["from"] + u_to = edge["to"] + if u_from in adj and u_to in adj: + adj[u_from].add(u_to) + adj[u_to].add(u_from) + + # BFS from an arbitrary starting unit + start_unit = next(iter(units)) + visited = {start_unit} + queue = deque([start_unit]) + + while queue: + curr = queue.popleft() + for neighbor in adj[curr]: + if neighbor not in visited: + visited.add(neighbor) + queue.append(neighbor) + + missing = units - visited + assert not missing, f"Dimension '{dim}' conversion subgraph is disconnected. Unreachable units: {missing}" + + def test_path_consistency(self) -> None: + """Invariant 3: all shortest paths between any two units in the same dimension yield the same ratio & offset.""" + lexicon = _load_raw_lexicon() + conversions = _load_raw_conversions() + + dim_units = {} + for entry in lexicon: + if "unit" in entry.get("morphology_tags", []): + dim = entry["dimension"] + dim_units.setdefault(dim, set()).add(entry["surface"]) + + # For each dimension, we compute paths to the canonical unit and check that every edge is consistent + for dim, units in dim_units.items(): + if not units: + continue + + dim_edges = [e for e in conversions if e["dimension"] == dim] + + # Find the canonical unit + canonical_unit = canonical_unit_for(dim) + assert canonical_unit in units, f"Canonical unit '{canonical_unit}' for dimension '{dim}' not in units" + + # BFS to find the shortest path from each node to the canonical unit + # We construct adj dictionary + adj = {u: [] for u in units} + for edge in dim_edges: + adj[edge["from"]].append(edge) + + # canonical_conversions[X] = (ratio_to_canon, offset_to_canon) + # where canon = ratio * X + offset + canonical_conversions = {canonical_unit: (1.0, 0.0)} + queue = deque([canonical_unit]) + visited = {canonical_unit} + + # BFS backwards from canonical (since graph is fully connected and bidirectional, we can traverse) + # We want to convert from X to canon, which means canon = r * X + o. + # If canon = r_to * to_unit + o_to, and to_unit = r_edge * X + o_edge, + # then canon = r_to * (r_edge * X + o_edge) + o_to = (r_to * r_edge) * X + (r_to * o_edge + o_to). + while queue: + curr = queue.popleft() + r_curr, o_curr = canonical_conversions[curr] + + # Find all edges pointing TO curr + for edge in dim_edges: + if edge["to"] == curr: + parent = edge["from"] + if parent not in visited: + visited.add(parent) + # parent -> curr edge: curr = edge_ratio * parent + edge_offset + r_parent = r_curr * edge["ratio"] + o_parent = r_curr * edge.get("offset", 0.0) + o_curr + canonical_conversions[parent] = (r_parent, o_parent) + queue.append(parent) + + # Check that every edge is consistent with the computed canonical conversions + # If B = r_edge * A + o_edge, + # then canon_B = r_B * B + o_B = r_B * (r_edge * A + o_edge) + o_B = (r_B * r_edge) * A + (r_B * o_edge + o_B). + # This must equal canon_A = r_A * A + o_A. + for edge in dim_edges: + u_from = edge["from"] + u_to = edge["to"] + r_edge = edge["ratio"] + o_edge = edge.get("offset", 0.0) + + r_A, o_A = canonical_conversions[u_from] + r_B, o_B = canonical_conversions[u_to] + + expected_r_A = r_B * r_edge + expected_o_A = r_B * o_edge + o_B + + assert abs(r_A - expected_r_A) < 1e-9, ( + f"Path inconsistency in edge {u_from} -> {u_to}: " + f"r_A={r_A}, expected={expected_r_A}" + ) + assert abs(o_A - expected_o_A) < 1e-9, ( + f"Path inconsistency in edge {u_from} -> {u_to}: " + f"o_A={o_A}, expected={expected_o_A}" + ) + + def test_canonical_unit_per_dimension(self) -> None: + """Invariant 4: each dimension declares exactly one canonical unit.""" + lexicon = _load_raw_lexicon() + + # Collect unit entries grouped by dimension + dim_units = {} + for entry in lexicon: + if "unit" in entry.get("morphology_tags", []): + dim = entry["dimension"] + dim_units.setdefault(dim, []).append(entry) + + for dim, entries in dim_units.items(): + canonicals = [e for e in entries if e.get("is_canonical_for_dimension") is True] + assert len(canonicals) == 1, ( + f"Dimension '{dim}' must have exactly one canonical unit, " + f"found {len(canonicals)}: {[c['surface'] for c in canonicals]}" + ) + + def test_exhaustive_coverage_gate(self) -> None: + """Invariant 5: every unit lemma in UNITS is represented in the conversions graph.""" + lexicon = _load_raw_lexicon() + conversions = _load_raw_conversions() + + unit_surfaces = { + entry["surface"] for entry in lexicon + if "unit" in entry.get("morphology_tags", []) + } + + # Collect all units mentioned in conversions graph + conversion_units = set() + for edge in conversions: + conversion_units.add(edge["from"]) + conversion_units.add(edge["to"]) + + missing = unit_surfaces - conversion_units + assert not missing, f"Exhaustive coverage failed. Units missing from conversions graph: {missing}" + + def test_nist_iso_provenance(self) -> None: + """Invariant 6: every conversion ratio cites a valid NIST or ISO provenance ID.""" + conversions = _load_raw_conversions() + + for edge in conversions: + prov_ids = edge.get("provenance_ids", []) + assert prov_ids, f"Edge {edge['edge_id']} ({edge['from']} -> {edge['to']}) has no provenance_ids" + + for prov in prov_ids: + assert any( + prov.startswith(prefix) + for prefix in ("nist-sp-811:", "iso-4217:", "adr-0127:") + ), f"Edge {edge['edge_id']} has invalid provenance source '{prov}'" + + def test_dimension_algebra_closure(self) -> None: + """Invariant 7: derived dimensions have their base dimensions/units present.""" + lexicon = _load_raw_lexicon() + dimensions = { + entry["surface"]: entry for entry in lexicon + if "dimension" in entry.get("morphology_tags", []) + } + + for name, dim in dimensions.items(): + if dim.get("is_derived"): + formula = dim.get("formula") + assert formula, f"Derived dimension '{name}' is missing formula" + + # Check that base components (like length, time, mass, volume, count, money) are present + # Simple token parsing of formula: split by operator symbols + components = [c.strip() for c in formula.replace("*", " ").replace("/", " ").split() if c.strip().replace("1", "")] + for comp in components: + assert comp in dimensions, f"Derived dimension '{name}' depends on missing base dimension '{comp}'"