@instruments/taxonomy 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2753,8 +2753,8 @@ var MATERIAL_EVERYDAY_TERMS = [
2753
2753
  "A transparent, impact-resistant thermoplastic polymer family supplied as sheet or moulding.",
2754
2754
  wikidata3("Q62246", "polycarbonate")
2755
2755
  ),
2756
- broaderSlug: "polymer",
2757
- reviewedAt: COMPOSITION_REVIEW_DATE
2756
+ broaderSlug: "plastic",
2757
+ reviewedAt: "2026-10-14"
2758
2758
  },
2759
2759
  {
2760
2760
  ...reviewed3(
@@ -4271,6 +4271,8 @@ var fibreNames2 = (name, extra = []) => [
4271
4271
  ...extra
4272
4272
  ];
4273
4273
  var POLYMER_SLUG2 = "polymer";
4274
+ var PLASTIC_SLUG = "plastic";
4275
+ var PLASTIC_DATE = "2026-10-14";
4274
4276
  var MATERIAL_POLYMERS_TERMS = [
4275
4277
  compositionTerm(
4276
4278
  POLYMER_SLUG2,
@@ -4279,6 +4281,47 @@ var MATERIAL_POLYMERS_TERMS = [
4279
4281
  STANDARD_ISO_472
4280
4282
  ),
4281
4283
  // Families.
4284
+ //
4285
+ // PLASTIC IS A BROAD TERM FOR A SOURCE THAT SAYS "PLASTIC" AND NO MORE (TAX-60). Material Bank's
4286
+ // material tag Plastic sits on 5,467 catalogue rows and descriptions say "plastic bottles".
4287
+ // ISO 472:2013 defines a plastic as a material with a high polymer as an essential ingredient
4288
+ // that can be shaped by flow at some stage of processing, and notes that elastomers are not
4289
+ // plastics. A polymer is the wider class, so `plastic` sits beneath `polymer`.
4290
+ //
4291
+ // WHICH CHILDREN OF `polymer` MOVE BENEATH IT. A term moves only when every instance of it is a
4292
+ // plastic, because a parent must hold every instance of its children (ADR 0001). Four move:
4293
+ // `abs`, `polycarbonate`, `polyvinyl-chloride` and `polystyrene` are each defined as a
4294
+ // thermoplastic polymer (PVC is also made as a fibre, chlorofibre, but no term here defines it so;
4295
+ // add one and PVC fails this test). Every other direct child of `polymer` stays where it is:
4296
+ // - `rubber` (and `latex`, `natural-rubber`) are elastomers, which ISO 472 excludes.
4297
+ // - `acrylic`, `polyolefin`, `polyamide`, `polyester` and `polyurethane` are families that
4298
+ // also cover fibres (acrylic, olefin, nylon, polyester and elastane fibre; ISO 2076), and a
4299
+ // term has one broader edge, so they cannot sit beneath both. Their plastic members (PMMA,
4300
+ // polyethylene, polypropylene, PET, PBT) stay beneath the family, and TPU, an elastomer,
4301
+ // is not a plastic by ISO 472.
4302
+ // - `resin` is defined against bulk engineering plastic: it is a binder, coating or cast solid.
4303
+ // - `eva` ranges from a flexible thermoplastic to a rubber-like material, `ptfe` is also a
4304
+ // fibre (fluorofibre) and `silicone` covers elastomers and fluids, so none is only plastic.
4305
+ // - The man-made cellulosics are defined as a fibre family.
4306
+ // A search for `plastic` therefore reaches ABS, polycarbonate, PVC and polystyrene, and a source
4307
+ // that names a family or grade keeps the narrower term. This is not a claim that the stayers are
4308
+ // not plastics in some products; it records that the term would be false for some of its
4309
+ // instances.
4310
+ {
4311
+ altLabels: ["plastics"],
4312
+ broaderSlug: POLYMER_SLUG2,
4313
+ definition: "A material that contains a high polymer as an essential ingredient and that can be shaped by flow at some stage of its processing into finished products.",
4314
+ introducedAt: PLASTIC_DATE,
4315
+ label: "Plastic",
4316
+ note: "Use when a source says plastic without naming which; use a narrower term when it names one. Added on 2026-10-14 beneath Polymer. Elastomers are polymers that ISO 472 does not count as plastics, and the fibre families are polymers named by their own terms, so Rubber, Resin and the fibre families are not beneath it. A source saying only plastic does not establish a polymer family, a grade, a thermoplastic or thermosetting behaviour, or recycled content.",
4317
+ provenance: {
4318
+ basis: "referenced",
4319
+ snapshot: PLASTIC_DATE,
4320
+ source: "ISO 472:2013 Plastics: Vocabulary; the same wording in the Bureau de normalisation du Qu\xE9bec entry, https://vitrinelinguistique.oqlf.gouv.qc.ca/fiche-gdt/fiche/8355296/plastique; TAX-60 review of Material Bank's Plastic tag"
4321
+ },
4322
+ reviewedAt: PLASTIC_DATE,
4323
+ slug: PLASTIC_SLUG
4324
+ },
4282
4325
  compositionTerm(
4283
4326
  "polyamide",
4284
4327
  "Polyamide",
@@ -4344,14 +4387,15 @@ var MATERIAL_POLYMERS_TERMS = [
4344
4387
  STANDARD_ISO_1043_1,
4345
4388
  {
4346
4389
  altLabels: ["Acrylonitrile butadiene styrene"],
4347
- broaderSlug: POLYMER_SLUG2,
4390
+ broaderSlug: PLASTIC_SLUG,
4348
4391
  external: [
4349
4392
  externalMapping(
4350
4393
  ISO_1043_12,
4351
4394
  "ABS",
4352
4395
  "acrylonitrile-butadiene-styrene plastic"
4353
4396
  )
4354
- ]
4397
+ ],
4398
+ reviewedAt: PLASTIC_DATE
4355
4399
  }
4356
4400
  ),
4357
4401
  compositionTerm(
@@ -4639,11 +4683,12 @@ var MATERIAL_POLYMERS_TERMS = [
4639
4683
  STANDARD_ISO_1043_1,
4640
4684
  {
4641
4685
  altLabels: ["PVC", "poly(vinyl chloride)"],
4642
- broaderSlug: POLYMER_SLUG2,
4686
+ broaderSlug: PLASTIC_SLUG,
4643
4687
  external: [
4644
4688
  externalMapping(ISO_1043_12, "PVC", "poly(vinyl chloride)"),
4645
4689
  externalMapping("cas", "9002-86-2", "Poly(vinyl chloride)")
4646
- ]
4690
+ ],
4691
+ reviewedAt: PLASTIC_DATE
4647
4692
  }
4648
4693
  ),
4649
4694
  compositionTerm(
@@ -4652,8 +4697,9 @@ var MATERIAL_POLYMERS_TERMS = [
4652
4697
  "A thermoplastic polymer of styrene monomer.",
4653
4698
  STANDARD_ISO_1043_1,
4654
4699
  {
4655
- broaderSlug: POLYMER_SLUG2,
4700
+ broaderSlug: PLASTIC_SLUG,
4656
4701
  external: [externalMapping(ISO_1043_12, "PS", "polystyrene")],
4702
+ reviewedAt: PLASTIC_DATE,
4657
4703
  seenAs: ["Poly Styrene"]
4658
4704
  }
4659
4705
  ),
@@ -5455,8 +5501,10 @@ var MATERIAL_TERMS = [
5455
5501
  "Natural fibre",
5456
5502
  "A fibre obtained directly from a plant or animal without chemical regeneration."
5457
5503
  ),
5504
+ altLabels: ["natural fiber"],
5458
5505
  broaderSlug: NATURAL_ORGANIC_SLUG2,
5459
- reviewedAt: COMPOSITION_REVIEW_DATE
5506
+ note: "Use when a source says natural fibre without naming which; use Plant fibre, Animal fibre or the named fibre when it does. Gained the American spelling on 2026-10-14 (TAX-60).",
5507
+ reviewedAt: "2026-10-14"
5460
5508
  },
5461
5509
  reparented(
5462
5510
  crossoverTerm(
@@ -5827,15 +5875,17 @@ var MATERIAL_TERMS = [
5827
5875
  "mineral"
5828
5876
  )
5829
5877
  ),
5830
- reparented(
5831
- crossoverTerm(
5878
+ {
5879
+ ...crossoverTerm(
5832
5880
  "terracotta",
5833
5881
  "Terracotta",
5834
5882
  "A coarse porous earthenware of fired clay.",
5835
5883
  `${CROSSOVER_DEFINITION_SOURCES.terracotta}; ${ASTM_C2422}`,
5836
5884
  "earthenware"
5837
- )
5838
- ),
5885
+ ),
5886
+ altLabels: ["terra cotta"],
5887
+ reviewedAt: "2026-10-14"
5888
+ },
5839
5889
  crossoverTerm(
5840
5890
  "denim",
5841
5891
  "Denim",
@@ -12039,7 +12089,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
12039
12089
  // src/v1.ts
12040
12090
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
12041
12091
  var TAXONOMY_SNAPSHOT = "2026-10-02";
12042
- var TAXONOMY_VERSION = "2.1.0";
12092
+ var TAXONOMY_VERSION = "2.2.1";
12043
12093
  var PUBLISHED_V1_BASELINE = "2026-08-30";
12044
12094
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
12045
12095
  var LIMESTONE_INTRODUCED = "2026-09-01";
@@ -12371,6 +12421,12 @@ var REVIEW_LIFECYCLE = {
12371
12421
  status: "active"
12372
12422
  };
12373
12423
  var REVIEW_SOURCE9 = "everyday-interiors vocabulary review";
12424
+ var TERRA_COTTA_DATE = "2026-10-14";
12425
+ var TERRA_COTTA_LIFECYCLE = {
12426
+ introducedAt: TERRA_COTTA_DATE,
12427
+ reviewedAt: TERRA_COTTA_DATE,
12428
+ status: "active"
12429
+ };
12374
12430
  var COLORSCOPE_INSTALLED = "@instruments/colorscope 9.4.0 data/reference/v1/taxonomy.json";
12375
12431
  var reviewedTaxonomy = (path) => ({
12376
12432
  authority: "taxonomy",
@@ -12753,6 +12809,29 @@ var AUTHORED_PHRASE_ENTRIES = [
12753
12809
  "Terracotta can name a fired-clay material or a ColorScope named color; firing and composition do not establish orange appearance.",
12754
12810
  crossoverSource("terracotta")
12755
12811
  ),
12812
+ // TAX-60: Material Bank writes the material tag Terra Cotta (1,600 catalogue rows). It is the same
12813
+ // word as terracotta, so it keeps both readings and no default, as the one-word spelling does.
12814
+ {
12815
+ explanation: "Terra cotta, written as two words, is a spelling of terracotta: it can name a fired-clay material or a ColorScope named color, and firing and composition do not establish orange appearance.",
12816
+ governance: lexicalGovernance(
12817
+ AMBIGUITY_GOVERNANCE,
12818
+ {
12819
+ basis: "evidenced",
12820
+ snapshot: TERRA_COTTA_DATE,
12821
+ source: `${crossoverSource("terracotta")}; TAX-60 review of Material Bank's Terra Cotta tag`
12822
+ },
12823
+ TERRA_COTTA_LIFECYCLE
12824
+ ),
12825
+ meanings: [
12826
+ {
12827
+ authority: "taxonomy",
12828
+ uri: `${TAXONOMY_BASE_URI}/id/material/terracotta`
12829
+ },
12830
+ colorScope("terracotta", NAMED_COLOR_REFERENCE_KIND)
12831
+ ],
12832
+ outcome: "ambiguous",
12833
+ phrase: "terra cotta"
12834
+ },
12756
12835
  {
12757
12836
  explanation: "Brick can name fired clay masonry material or a ColorScope named color; the material need not be red and the color is not a substance.",
12758
12837
  governance: lexicalGovernance(
package/dist/v1.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { ElementPlacement, ExternalMapping, ExternalScheme, PeriodSpan, Rel
3
3
  export type { FacetHolds } from "./axes/index.js";
4
4
  export declare const TAXONOMY_BASE_URI: "https://taxonomy.materialinstruments.com";
5
5
  export declare const TAXONOMY_SNAPSHOT: "2026-10-02";
6
- export declare const TAXONOMY_VERSION: "2.1.0";
6
+ export declare const TAXONOMY_VERSION: "2.2.1";
7
7
  export type CanonicalConceptUri = `${typeof TAXONOMY_BASE_URI}/id/${string}`;
8
8
  export type LifecycleStatus = "active" | "deprecated";
9
9
  export interface Lifecycle {
@@ -142,5 +142,5 @@ export declare const TAXONOMY_CORPUS_METADATA: {
142
142
  readonly phraseEntryCount: number;
143
143
  readonly revision: string;
144
144
  readonly snapshot: "2026-10-02";
145
- readonly version: "2.1.0";
145
+ readonly version: "2.2.1";
146
146
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instruments/taxonomy",
3
- "version": "2.1.0",
3
+ "version": "2.2.1",
4
4
  "description": "Canonical data-only interiors and architecture knowledge graph and lexical corpus.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {