@instruments/taxonomy 2.1.0 → 2.2.0

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,45 @@ 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. Every other direct child of `polymer` stays where it is:
4295
+ // - `rubber` (and `latex`, `natural-rubber`) are elastomers, which ISO 472 excludes.
4296
+ // - `acrylic`, `polyolefin`, `polyamide`, `polyester` and `polyurethane` are families that
4297
+ // also cover fibres (acrylic, olefin, nylon, polyester and elastane fibre; ISO 2076), and a
4298
+ // term has one broader edge, so they cannot sit beneath both. Their moulding and sheet
4299
+ // members (PMMA, polyethylene, polypropylene, PET, PBT, TPU) stay beneath the family.
4300
+ // - `resin` is defined against bulk engineering plastic: it is a binder, coating or cast solid.
4301
+ // - `eva` ranges from a flexible thermoplastic to a rubber-like material, `ptfe` is also a
4302
+ // fibre (fluorofibre) and `silicone` covers elastomers and fluids, so none is only plastic.
4303
+ // - The man-made cellulosics are fibres, films and plastics alike.
4304
+ // A search for `plastic` therefore reaches ABS, polycarbonate, PVC and polystyrene, and a source
4305
+ // that names a family or grade keeps the narrower term. This is not a claim that the stayers are
4306
+ // not plastics in some products; it records that the term would be false for some of its
4307
+ // instances.
4308
+ {
4309
+ altLabels: ["plastics"],
4310
+ broaderSlug: POLYMER_SLUG2,
4311
+ 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.",
4312
+ introducedAt: PLASTIC_DATE,
4313
+ label: "Plastic",
4314
+ 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 fibres and coatings 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.",
4315
+ provenance: {
4316
+ basis: "referenced",
4317
+ snapshot: PLASTIC_DATE,
4318
+ 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"
4319
+ },
4320
+ reviewedAt: PLASTIC_DATE,
4321
+ slug: PLASTIC_SLUG
4322
+ },
4282
4323
  compositionTerm(
4283
4324
  "polyamide",
4284
4325
  "Polyamide",
@@ -4344,14 +4385,15 @@ var MATERIAL_POLYMERS_TERMS = [
4344
4385
  STANDARD_ISO_1043_1,
4345
4386
  {
4346
4387
  altLabels: ["Acrylonitrile butadiene styrene"],
4347
- broaderSlug: POLYMER_SLUG2,
4388
+ broaderSlug: PLASTIC_SLUG,
4348
4389
  external: [
4349
4390
  externalMapping(
4350
4391
  ISO_1043_12,
4351
4392
  "ABS",
4352
4393
  "acrylonitrile-butadiene-styrene plastic"
4353
4394
  )
4354
- ]
4395
+ ],
4396
+ reviewedAt: PLASTIC_DATE
4355
4397
  }
4356
4398
  ),
4357
4399
  compositionTerm(
@@ -4639,11 +4681,12 @@ var MATERIAL_POLYMERS_TERMS = [
4639
4681
  STANDARD_ISO_1043_1,
4640
4682
  {
4641
4683
  altLabels: ["PVC", "poly(vinyl chloride)"],
4642
- broaderSlug: POLYMER_SLUG2,
4684
+ broaderSlug: PLASTIC_SLUG,
4643
4685
  external: [
4644
4686
  externalMapping(ISO_1043_12, "PVC", "poly(vinyl chloride)"),
4645
4687
  externalMapping("cas", "9002-86-2", "Poly(vinyl chloride)")
4646
- ]
4688
+ ],
4689
+ reviewedAt: PLASTIC_DATE
4647
4690
  }
4648
4691
  ),
4649
4692
  compositionTerm(
@@ -4652,8 +4695,9 @@ var MATERIAL_POLYMERS_TERMS = [
4652
4695
  "A thermoplastic polymer of styrene monomer.",
4653
4696
  STANDARD_ISO_1043_1,
4654
4697
  {
4655
- broaderSlug: POLYMER_SLUG2,
4698
+ broaderSlug: PLASTIC_SLUG,
4656
4699
  external: [externalMapping(ISO_1043_12, "PS", "polystyrene")],
4700
+ reviewedAt: PLASTIC_DATE,
4657
4701
  seenAs: ["Poly Styrene"]
4658
4702
  }
4659
4703
  ),
@@ -5455,8 +5499,10 @@ var MATERIAL_TERMS = [
5455
5499
  "Natural fibre",
5456
5500
  "A fibre obtained directly from a plant or animal without chemical regeneration."
5457
5501
  ),
5502
+ altLabels: ["natural fiber"],
5458
5503
  broaderSlug: NATURAL_ORGANIC_SLUG2,
5459
- reviewedAt: COMPOSITION_REVIEW_DATE
5504
+ 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).",
5505
+ reviewedAt: "2026-10-14"
5460
5506
  },
5461
5507
  reparented(
5462
5508
  crossoverTerm(
@@ -5827,15 +5873,17 @@ var MATERIAL_TERMS = [
5827
5873
  "mineral"
5828
5874
  )
5829
5875
  ),
5830
- reparented(
5831
- crossoverTerm(
5876
+ {
5877
+ ...crossoverTerm(
5832
5878
  "terracotta",
5833
5879
  "Terracotta",
5834
5880
  "A coarse porous earthenware of fired clay.",
5835
5881
  `${CROSSOVER_DEFINITION_SOURCES.terracotta}; ${ASTM_C2422}`,
5836
5882
  "earthenware"
5837
- )
5838
- ),
5883
+ ),
5884
+ altLabels: ["terra cotta"],
5885
+ reviewedAt: "2026-10-14"
5886
+ },
5839
5887
  crossoverTerm(
5840
5888
  "denim",
5841
5889
  "Denim",
@@ -12039,7 +12087,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
12039
12087
  // src/v1.ts
12040
12088
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
12041
12089
  var TAXONOMY_SNAPSHOT = "2026-10-02";
12042
- var TAXONOMY_VERSION = "2.1.0";
12090
+ var TAXONOMY_VERSION = "2.2.0";
12043
12091
  var PUBLISHED_V1_BASELINE = "2026-08-30";
12044
12092
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
12045
12093
  var LIMESTONE_INTRODUCED = "2026-09-01";
@@ -12371,6 +12419,12 @@ var REVIEW_LIFECYCLE = {
12371
12419
  status: "active"
12372
12420
  };
12373
12421
  var REVIEW_SOURCE9 = "everyday-interiors vocabulary review";
12422
+ var TERRA_COTTA_DATE = "2026-10-14";
12423
+ var TERRA_COTTA_LIFECYCLE = {
12424
+ introducedAt: TERRA_COTTA_DATE,
12425
+ reviewedAt: TERRA_COTTA_DATE,
12426
+ status: "active"
12427
+ };
12374
12428
  var COLORSCOPE_INSTALLED = "@instruments/colorscope 9.4.0 data/reference/v1/taxonomy.json";
12375
12429
  var reviewedTaxonomy = (path) => ({
12376
12430
  authority: "taxonomy",
@@ -12753,6 +12807,29 @@ var AUTHORED_PHRASE_ENTRIES = [
12753
12807
  "Terracotta can name a fired-clay material or a ColorScope named color; firing and composition do not establish orange appearance.",
12754
12808
  crossoverSource("terracotta")
12755
12809
  ),
12810
+ // TAX-60: Material Bank writes the material tag Terra Cotta (1,600 catalogue rows). It is the same
12811
+ // word as terracotta, so it keeps both readings and no default, as the one-word spelling does.
12812
+ {
12813
+ 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.",
12814
+ governance: lexicalGovernance(
12815
+ AMBIGUITY_GOVERNANCE,
12816
+ {
12817
+ basis: "evidenced",
12818
+ snapshot: TERRA_COTTA_DATE,
12819
+ source: `${crossoverSource("terracotta")}; TAX-60 review of Material Bank's Terra Cotta tag`
12820
+ },
12821
+ TERRA_COTTA_LIFECYCLE
12822
+ ),
12823
+ meanings: [
12824
+ {
12825
+ authority: "taxonomy",
12826
+ uri: `${TAXONOMY_BASE_URI}/id/material/terracotta`
12827
+ },
12828
+ colorScope("terracotta", NAMED_COLOR_REFERENCE_KIND)
12829
+ ],
12830
+ outcome: "ambiguous",
12831
+ phrase: "terra cotta"
12832
+ },
12756
12833
  {
12757
12834
  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
12835
  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.0";
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.0";
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.0",
4
4
  "description": "Canonical data-only interiors and architecture knowledge graph and lexical corpus.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {