@instruments/taxonomy 1.6.0 → 1.8.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/authoring.d.ts +1 -1
- package/dist/axes/index.d.ts +1 -1
- package/dist/axes/pattern.d.ts +7 -0
- package/dist/index.js +551 -15
- package/dist/v1.d.ts +4 -4
- package/package.json +5 -5
package/dist/authoring.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { KNOWLEDGE_GRAPH, LEXICAL_ENTRIES, TAXONOMY_BASE_URI, type AxisNode, typ
|
|
|
23
23
|
export declare const MATERIAL_FAMILIES: readonly ["paint", "wall-finish", "wallcovering", "textile", "upholstery", "carpet", "wood", "stone", "tile", "terrazzo", "metal", "glass", "resilient-flooring", "composite", "concrete", "leather", "other"];
|
|
24
24
|
export type MaterialFamily = (typeof MATERIAL_FAMILIES)[number];
|
|
25
25
|
export declare const isMaterialFamily: (value: string) => value is MaterialFamily;
|
|
26
|
-
export declare const SECTORS: readonly ["hospitality", "healthcare", "workplace", "residential", "retail", "education", "civic", "mixed-use", "transportation", "other", "commercial", "industrial"];
|
|
26
|
+
export declare const SECTORS: readonly ["hospitality", "healthcare", "workplace", "residential", "retail", "education", "civic", "mixed-use", "transportation", "other", "commercial", "industrial", "senior-living", "government", "science-technology", "cultural", "sports-recreation", "marine"];
|
|
27
27
|
export type Sector = (typeof SECTORS)[number];
|
|
28
28
|
export declare const isSector: (value: string) => value is Sector;
|
|
29
29
|
export declare const APPLICATIONS: readonly ["wall", "flooring", "ceiling", "bath", "kitchen", "furniture", "lighting", "door", "window", "facade", "countertop", "fireplace", "stair-elevator", "bedding", "decor", "vertically-hanging", "transportation", "pool-fountain", "paving-deck", "partition", "millwork", "cabinetry", "masonry", "roof", "garage", "bar", "awning-umbrella", "recreation-sport", "ornamentation", "aquatic-environments", "upholstery", "trim", "wall-backsplash", "wall-upholstered", "wall-wet-shower", "flooring-wet-area", "flooring-entrance", "flooring-radiant-heat", "flooring-or-lab", "flooring-anti-fatigue", "flooring-esd", "flooring-safety-slip", "flooring-raised-access", "flooring-rigid-core", "flooring-dining-area", "flooring-subject-oil", "flooring-walk-in-freezer", "flooring-ramps-inclines", "furniture-seating", "furniture-headboard", "furniture-slipcover", "furniture-systems", "furniture-tackboard", "furniture-throw-pillow", "fireplace-firebox", "fireplace-hearth", "fireplace-mantel", "fireplace-surround", "bedding-bed-scarf", "bedding-sheets", "bedding-skirt", "bedding-bedspread", "bedding-box-spring-cover", "stair-riser", "stair-tread", "stair-railing", "stair-elevator-cladding", "vh-drapery", "vh-privacy-curtain", "vh-shower-curtain", "vh-theatrical-curtain", "vh-window-shade", "transportation-automotive", "transportation-aviation", "transportation-marine", "pool-coping", "pool-decking", "pool-lining", "paving-covered-areas", "paving-patio", "partition-toilet", "masonry-structural", "masonry-veneer", "recreation-gymnasium", "recreation-playground", "recreation-weightlifting", "awning", "tensile-structure", "umbrella", "countertop-chemical-resistant"];
|
package/dist/axes/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export { FORMAT_TERMS } from "./format.js";
|
|
|
13
13
|
export { INSTALLATION_LAYOUT_TERMS } from "./installation-layout.js";
|
|
14
14
|
export { MATERIAL_TERMS } from "./material.js";
|
|
15
15
|
export { MOOD_TERMS } from "./mood.js";
|
|
16
|
-
export { PATTERN_TERMS } from "./pattern.js";
|
|
16
|
+
export { PATTERN_FIGURE_TERMS, PATTERN_TERMS } from "./pattern.js";
|
|
17
17
|
export { PRODUCT_CATEGORY_TERMS } from "./product-category.js";
|
|
18
18
|
export { REQUIREMENT_TERMS } from "./requirement.js";
|
|
19
19
|
export { SEASON_TERMS } from "./season.js";
|
package/dist/axes/pattern.d.ts
CHANGED
|
@@ -9,5 +9,12 @@ export declare const PATTERN_DENSITY_TERMS: readonly Term[];
|
|
|
9
9
|
export declare const PATTERN_REGULARITY_TERMS: readonly Term[];
|
|
10
10
|
/** Which way the pattern runs. Unordered: see the header on why this is not a ladder. */
|
|
11
11
|
export declare const PATTERN_DIRECTIONALITY_TERMS: readonly Term[];
|
|
12
|
+
/**
|
|
13
|
+
* The natural variation of a stone, stone-effect or timber surface, independent of motif. See
|
|
14
|
+
* ADR 0008. Unranked, for the reason type is: veined is not more figured than speckled, only
|
|
15
|
+
* differently so. Evidenced from the Material Bank PIM's surface-figure column (non-Samplize
|
|
16
|
+
* SKUs, 2026-09-26); the PIM's own spelling is preserved in `seenAs`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const PATTERN_FIGURE_TERMS: readonly Term[];
|
|
12
19
|
/** Kept for consumers importing the axis as one list; prefer the facets. */
|
|
13
20
|
export declare const PATTERN_TERMS: readonly Term[];
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,12 @@ var AUTHORED_SECTOR = {
|
|
|
10
10
|
basis: "authored",
|
|
11
11
|
source: "@instruments/taxonomy - umbrella authored over the vendored sector dictionary, against the local `commercial` and `industrial` extension in a materials-retrieval system (src-05), 2026-09-19"
|
|
12
12
|
};
|
|
13
|
+
var MARKETPLACE_SECTOR = {
|
|
14
|
+
basis: "evidenced",
|
|
15
|
+
snapshot: "2026-09-20",
|
|
16
|
+
source: "the industry_sector column in a materials-marketplace catalogue (src-04)"
|
|
17
|
+
};
|
|
18
|
+
var MARKETPLACE_SECTOR_REVIEW = "2026-09-23";
|
|
13
19
|
var MATERIAL_FAMILY_TERMS = [
|
|
14
20
|
{ label: "Paint", slug: "paint" },
|
|
15
21
|
{
|
|
@@ -78,6 +84,82 @@ var SECTOR_TERMS = [
|
|
|
78
84
|
note: "The market, never the idiom. `style.industrial` is the aesthetic a converted mill lends a flat, and the corpus publishes the spelling as ambiguous between the two rather than merging them.",
|
|
79
85
|
provenance: AUTHORED_SECTOR,
|
|
80
86
|
slug: "industrial"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
// EVIDENCED, and a ROOT. The largest sector value the marketplace catalogue carries that had
|
|
90
|
+
// no term here; a consumer had been filing it under `residential`, which is true of independent
|
|
91
|
+
// living and false of memory care.
|
|
92
|
+
definition: "A project housing older adults with services or care on site: independent living, assisted living, memory care and continuing-care communities.",
|
|
93
|
+
introducedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
94
|
+
label: "Senior Living",
|
|
95
|
+
note: "Under neither `residential` nor `healthcare`. Independent living is a home with services and not a care setting; memory care is a care setting and not an ordinary home; so an ISA edge to either parent is true of one end of the market and false of the other. A project that is also plainly one of those carries both terms. A hospital's geriatric ward is healthcare, not this.",
|
|
96
|
+
provenance: MARKETPLACE_SECTOR,
|
|
97
|
+
reviewedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
98
|
+
seenAs: ["Senior Living"],
|
|
99
|
+
slug: "senior-living"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
// EVIDENCED, and the one new term that takes a vendored parent's name for its own ISA edge:
|
|
103
|
+
// every government project is a civic one. The reverse is not true, which is why `civic` is
|
|
104
|
+
// not relabelled: a community centre or a public square is civic and has no public authority
|
|
105
|
+
// for a client.
|
|
106
|
+
broaderSlug: "civic",
|
|
107
|
+
definition: "A project for a public authority's own premises: legislatures, courthouses, town and city halls, government offices, embassies, and police and fire stations.",
|
|
108
|
+
introducedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
109
|
+
label: "Government",
|
|
110
|
+
note: "Beneath `civic`, which also covers public buildings with no authority as client. Defence estate is not named here; nothing in the evidence asked for it. `typology.civic-building` is the building, this is the market, and a council office in a converted warehouse is government whatever the building was.",
|
|
111
|
+
provenance: MARKETPLACE_SECTOR,
|
|
112
|
+
reviewedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
113
|
+
seenAs: ["Government"],
|
|
114
|
+
slug: "government"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
// EVIDENCED, and a ROOT. A consumer had been filing it under `other`.
|
|
118
|
+
definition: "A project whose premises exist for research, development and testing: laboratories, research institutes, cleanrooms and research-and-development buildings.",
|
|
119
|
+
introducedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
120
|
+
label: "Science & Technology",
|
|
121
|
+
note: "Not under `commercial`: a university or state research institute is not let or run as revenue-earning premises. A teaching laboratory in a school is `education` and a hospital's pathology laboratory is `healthcare`; a building that exists for research carries this term whoever owns it, and may carry either of those as well.",
|
|
122
|
+
provenance: MARKETPLACE_SECTOR,
|
|
123
|
+
reviewedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
124
|
+
seenAs: ["Science + Technology"],
|
|
125
|
+
slug: "science-technology"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
// EVIDENCED, and a ROOT rather than a child of `civic`, which is where a consumer had been
|
|
129
|
+
// filing it.
|
|
130
|
+
definition: "A project for keeping, showing or performing culture: museums, galleries, libraries, archives, theatres and concert halls.",
|
|
131
|
+
introducedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
132
|
+
label: "Cultural",
|
|
133
|
+
note: "Not beneath `civic`. A civic museum or a public library is both and carries both terms, but a commercial gallery or a privately run theatre is cultural and not civic, so the ISA edge would be false of part of the market. The building types are `typology.museum`, `typology.gallery`, `typology.library` and `typology.theatre`; this is the market they serve.",
|
|
134
|
+
provenance: MARKETPLACE_SECTOR,
|
|
135
|
+
reviewedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
136
|
+
seenAs: ["Cultural"],
|
|
137
|
+
slug: "cultural"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
// EVIDENCED, and a ROOT. A consumer had been filing it under `other`.
|
|
141
|
+
definition: "A project for sport, fitness and active recreation: stadiums, arenas, sports and leisure centres, gyms, pools and clubhouses.",
|
|
142
|
+
introducedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
143
|
+
label: "Sports & Recreation",
|
|
144
|
+
note: "The market. `application.recreation-sport` is the product-facing claim that a material may be specified for a sports use, and `typology.gym` and `typology.stadium` are the buildings. Not under `commercial`: a municipal leisure centre or a school sports hall is not run as revenue-earning premises. A hotel gym is `hospitality`.",
|
|
145
|
+
provenance: MARKETPLACE_SECTOR,
|
|
146
|
+
reviewedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
147
|
+
seenAs: ["Sports + Recreation"],
|
|
148
|
+
slug: "sports-recreation"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
// EVIDENCED, and beneath the vendored `transportation`, whose vehicle sense the APPLICATION
|
|
152
|
+
// axis already spells out as automotive, aviation and marine. A consumer had been filing it
|
|
153
|
+
// under `other`.
|
|
154
|
+
broaderSlug: "transportation",
|
|
155
|
+
definition: "A project fitting out a vessel: yachts, cruise ships, ferries and other boats, their interiors and exposed decks.",
|
|
156
|
+
introducedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
157
|
+
label: "Marine",
|
|
158
|
+
note: "Beneath `transportation`, which covers the vehicle as well as the station. `application.transportation-marine` is the product-facing claim under the same word, and the corpus publishes the spelling as ambiguous between the two rather than merging them. A cruise ship's hotel decks may carry `hospitality` as well. A waterfront building is not marine: it takes the sector of what it is.",
|
|
159
|
+
provenance: MARKETPLACE_SECTOR,
|
|
160
|
+
reviewedAt: MARKETPLACE_SECTOR_REVIEW,
|
|
161
|
+
seenAs: ["Marine"],
|
|
162
|
+
slug: "marine"
|
|
81
163
|
}
|
|
82
164
|
];
|
|
83
165
|
var APPLICATION_TERMS = [
|
|
@@ -398,6 +480,16 @@ var term = (slug, label, definition) => ({
|
|
|
398
480
|
provenance: { basis: "evidenced", snapshot: SNAPSHOT, source: SOURCE },
|
|
399
481
|
slug
|
|
400
482
|
});
|
|
483
|
+
var TAX57_DATE = "2026-09-26";
|
|
484
|
+
var reviewedTax57 = (slug, label, definition, source, extra = {}) => ({
|
|
485
|
+
definition,
|
|
486
|
+
introducedAt: TAX57_DATE,
|
|
487
|
+
label,
|
|
488
|
+
provenance: { basis: "referenced", snapshot: TAX57_DATE, source },
|
|
489
|
+
reviewedAt: TAX57_DATE,
|
|
490
|
+
slug,
|
|
491
|
+
...extra
|
|
492
|
+
});
|
|
401
493
|
var CONSTRUCTION_TERMS = [
|
|
402
494
|
term(
|
|
403
495
|
"encaustic",
|
|
@@ -562,6 +654,61 @@ var CONSTRUCTION_TERMS = [
|
|
|
562
654
|
"Chenille",
|
|
563
655
|
"A fabric woven from chenille yarn, a fuzzy pile yarn cut from a leno-woven strip; fibre and backing remain unspecified.",
|
|
564
656
|
wikidata("Q1070065", "chenille")
|
|
657
|
+
),
|
|
658
|
+
// TAX-57 pile family. `cut-pile` is loop pile's sibling rather than its parent: both sit directly
|
|
659
|
+
// under the same distinction (whether the loop was cut), and neither loop pile nor cut pile is a
|
|
660
|
+
// kind of the other.
|
|
661
|
+
reviewedTax57(
|
|
662
|
+
"cut-pile",
|
|
663
|
+
"Cut pile",
|
|
664
|
+
"A textile or carpet pile construction whose loops have been cut or shorn, so the yarn ends stand free rather than remaining looped.",
|
|
665
|
+
wikidata("Q64160809", "cut pile")
|
|
666
|
+
),
|
|
667
|
+
reviewedTax57(
|
|
668
|
+
"plush",
|
|
669
|
+
"Plush",
|
|
670
|
+
"A dense cut-pile fabric with a pile longer than velvet's.",
|
|
671
|
+
wikidata("Q1057522", "plush"),
|
|
672
|
+
{ broaderSlug: "cut-pile" }
|
|
673
|
+
),
|
|
674
|
+
// Velour is not velvet: velvet is woven only, and velour is shorter and denser than plush.
|
|
675
|
+
reviewedTax57(
|
|
676
|
+
"velour",
|
|
677
|
+
"Velour",
|
|
678
|
+
"A knitted or woven cut-pile fabric with a shorter, denser pile than plush; distinct from velvet, which is woven only.",
|
|
679
|
+
wikidata("Q621044", "velour"),
|
|
680
|
+
{ broaderSlug: "cut-pile" }
|
|
681
|
+
),
|
|
682
|
+
reviewedTax57(
|
|
683
|
+
"corduroy",
|
|
684
|
+
"Corduroy",
|
|
685
|
+
"A cut-pile fabric whose pile stands in parallel ridges, called wales, running the length of the cloth.",
|
|
686
|
+
wikidata("Q1132110", "corduroy"),
|
|
687
|
+
{ broaderSlug: "cut-pile" }
|
|
688
|
+
),
|
|
689
|
+
reviewedTax57(
|
|
690
|
+
"tweed",
|
|
691
|
+
"Tweed",
|
|
692
|
+
"A rough-surfaced woven fabric made from mixed-colour yarns, traditionally wool.",
|
|
693
|
+
wikidata("Q40601", "tweed"),
|
|
694
|
+
{ broaderSlug: "woven" }
|
|
695
|
+
),
|
|
696
|
+
reviewedTax57(
|
|
697
|
+
"grasscloth",
|
|
698
|
+
"Grasscloth",
|
|
699
|
+
"A wallcovering woven from natural grass or plant-fibre strands and laminated to a paper backing; the fibre itself is a separate material claim.",
|
|
700
|
+
wikidata("Q106946072", "grass cloth"),
|
|
701
|
+
{ related: [{ predicate: "related-to", target: "material.grass" }] }
|
|
702
|
+
),
|
|
703
|
+
// Jacquard is a woven figure, narrower than `woven`: every jacquard is woven, and the mechanism
|
|
704
|
+
// (independently controlled warps) is what makes complex figured repeats possible on a loom that
|
|
705
|
+
// a simple shed cannot produce.
|
|
706
|
+
reviewedTax57(
|
|
707
|
+
"jacquard",
|
|
708
|
+
"Jacquard",
|
|
709
|
+
"A woven figure produced on a loom that raises each warp thread under individual mechanical control, rather than through a single repeating shed.",
|
|
710
|
+
wikidata("Q589613", "Jacquard weaving"),
|
|
711
|
+
{ broaderSlug: "woven" }
|
|
565
712
|
)
|
|
566
713
|
];
|
|
567
714
|
|
|
@@ -1314,6 +1461,8 @@ var CORPUS_SNAPSHOT = "2026-08-27";
|
|
|
1314
1461
|
var DROPPED = "Restored 2026-08-27. Dropped in normalisation.";
|
|
1315
1462
|
var REVIEW_DATE3 = "2026-09-11";
|
|
1316
1463
|
var REVIEW_SOURCE2 = "everyday-interiors vocabulary review";
|
|
1464
|
+
var TAX57_DATE2 = "2026-09-26";
|
|
1465
|
+
var TAX57_SOURCE = "Linear TAX-57 visual-vocabulary review";
|
|
1317
1466
|
var wikidata2 = (id, label) => `Wikidata ${id} ${label}, https://www.wikidata.org/wiki/${id}`;
|
|
1318
1467
|
var reviewed2 = (slug, label, definition, source, extra = {}) => ({
|
|
1319
1468
|
definition,
|
|
@@ -1575,7 +1724,27 @@ var FINISH_TEXTURE_TERMS = [
|
|
|
1575
1724
|
"heavily-reliefed",
|
|
1576
1725
|
"Heavily reliefed",
|
|
1577
1726
|
"Deep, strongly modelled relief."
|
|
1578
|
-
)
|
|
1727
|
+
),
|
|
1728
|
+
// TAX-57: Material Bank PIM leather-finish textures, non-Samplize SKUs, measured 2026-09-26.
|
|
1729
|
+
{
|
|
1730
|
+
broaderSlug: "embossed",
|
|
1731
|
+
definition: "A fine, uniform cross-hatch grain embossed into leather to increase scratch resistance and give a formal, structured surface.",
|
|
1732
|
+
introducedAt: TAX57_DATE2,
|
|
1733
|
+
label: "Saffiano",
|
|
1734
|
+
// AUTHORED. No Wikidata item for saffiano leather on the review date.
|
|
1735
|
+
provenance: { basis: "authored", source: TAX57_SOURCE },
|
|
1736
|
+
reviewedAt: TAX57_DATE2,
|
|
1737
|
+
slug: "saffiano"
|
|
1738
|
+
},
|
|
1739
|
+
// AUTHORED. No Wikidata item for hair-on hide on the review date.
|
|
1740
|
+
{
|
|
1741
|
+
definition: "A hide finished with the hair left on rather than removed in tanning.",
|
|
1742
|
+
introducedAt: TAX57_DATE2,
|
|
1743
|
+
label: "Hair-on",
|
|
1744
|
+
provenance: { basis: "authored", source: TAX57_SOURCE },
|
|
1745
|
+
reviewedAt: TAX57_DATE2,
|
|
1746
|
+
slug: "hair-on"
|
|
1747
|
+
}
|
|
1579
1748
|
];
|
|
1580
1749
|
var FINISH_TERMS = [
|
|
1581
1750
|
...FINISH_TREATMENT_TERMS,
|
|
@@ -4763,6 +4932,7 @@ var MATERIAL_TIMBERS_TERMS = [
|
|
|
4763
4932
|
var SOURCE3 = "material vocabularies in a furnishings retailer (src-03) and in-house";
|
|
4764
4933
|
var SNAPSHOT3 = "2026-08-25";
|
|
4765
4934
|
var CROSSOVER_SNAPSHOT2 = "2026-08-30";
|
|
4935
|
+
var TAX57_REVIEW_DATE = "2026-09-26";
|
|
4766
4936
|
var NATURAL_FIBRE_SLUG2 = "natural-fibre";
|
|
4767
4937
|
var STONE_SLUG2 = "stone";
|
|
4768
4938
|
var HARDWOOD_SLUG2 = "hardwood";
|
|
@@ -5124,6 +5294,21 @@ var MATERIAL_TERMS = [
|
|
|
5124
5294
|
broaderSlug: "leather",
|
|
5125
5295
|
reviewedAt: COMPOSITION_REVIEW_DATE
|
|
5126
5296
|
},
|
|
5297
|
+
// TAX-57. Nubuck sits beside suede: both are a leather surface mechanically finished to a nap,
|
|
5298
|
+
// told apart by which side of the hide carries it.
|
|
5299
|
+
{
|
|
5300
|
+
broaderSlug: "leather",
|
|
5301
|
+
definition: "Top-grain leather whose grain side is sanded or buffed to a short nap of protein fibres, producing a velvet-like surface distinct from suede's flesh-side nap.",
|
|
5302
|
+
introducedAt: TAX57_REVIEW_DATE,
|
|
5303
|
+
label: "Nubuck",
|
|
5304
|
+
provenance: {
|
|
5305
|
+
basis: "referenced",
|
|
5306
|
+
snapshot: TAX57_REVIEW_DATE,
|
|
5307
|
+
source: `Wikidata Q28864 nubuck, https://www.wikidata.org/wiki/Q28864; ${CROSSOVER_DEFINITION_SOURCES.suede}`
|
|
5308
|
+
},
|
|
5309
|
+
reviewedAt: TAX57_REVIEW_DATE,
|
|
5310
|
+
slug: "nubuck"
|
|
5311
|
+
},
|
|
5127
5312
|
reparented(
|
|
5128
5313
|
crossoverTerm(
|
|
5129
5314
|
"concrete",
|
|
@@ -5640,6 +5825,30 @@ var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
|
|
|
5640
5825
|
var REVIEW_DATE7 = "2026-09-11";
|
|
5641
5826
|
var REVIEW_SOURCE6 = "everyday-interiors vocabulary review";
|
|
5642
5827
|
var GEOMETRY_EVIDENCE_SOURCE = "Linear TAX-45 reviewed implementation contract; herringbone and chevron product-language audit in a materials-retrieval system (src-05)";
|
|
5828
|
+
var TAX57_DATE3 = "2026-09-26";
|
|
5829
|
+
var TAX57_SOURCE2 = "Linear TAX-57 visual-vocabulary review";
|
|
5830
|
+
var PIM_MOTIF_SOURCE = "the pattern-motif column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
|
|
5831
|
+
var PIM_FIGURE_SOURCE = "the surface-figure column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
|
|
5832
|
+
var ANIMAL_PRINT_SLUG = "animal-print";
|
|
5833
|
+
var pimTerm = (slug, label, definition, source, extra = {}) => ({
|
|
5834
|
+
definition,
|
|
5835
|
+
introducedAt: TAX57_DATE3,
|
|
5836
|
+
label,
|
|
5837
|
+
provenance: { basis: "evidenced", snapshot: TAX57_DATE3, source },
|
|
5838
|
+
reviewedAt: TAX57_DATE3,
|
|
5839
|
+
slug,
|
|
5840
|
+
...extra
|
|
5841
|
+
});
|
|
5842
|
+
var authoredTax57 = (slug, label, definition, extra = {}) => ({
|
|
5843
|
+
definition,
|
|
5844
|
+
introducedAt: TAX57_DATE3,
|
|
5845
|
+
label,
|
|
5846
|
+
provenance: { basis: "authored", source: TAX57_SOURCE2 },
|
|
5847
|
+
reviewedAt: TAX57_DATE3,
|
|
5848
|
+
slug,
|
|
5849
|
+
...extra
|
|
5850
|
+
});
|
|
5851
|
+
var wikidata4 = (id, label) => `Wikidata ${id} ${label}, https://www.wikidata.org/wiki/${id}`;
|
|
5643
5852
|
var term7 = (slug, label, definition, extra = {}) => ({
|
|
5644
5853
|
definition,
|
|
5645
5854
|
label,
|
|
@@ -5666,14 +5875,84 @@ var PATTERN_TYPE_TERMS = [
|
|
|
5666
5875
|
"Non-representational marks organised with irregular or biomorphic movement."
|
|
5667
5876
|
),
|
|
5668
5877
|
term7(
|
|
5669
|
-
|
|
5878
|
+
ANIMAL_PRINT_SLUG,
|
|
5670
5879
|
"Animal print",
|
|
5671
5880
|
"A motif derived from animal markings or skins."
|
|
5672
5881
|
),
|
|
5882
|
+
// Faux Crocodile, Faux Snake Skin, Faux Ostrich, Leopard, Zebra and Faux Lizard in the Material
|
|
5883
|
+
// Bank PIM (non-Samplize SKUs, 2026-09-26) name six distinct skin or hide motifs the single
|
|
5884
|
+
// `animal-print` concept could not distinguish. Narrower rather than a rename: every one of these
|
|
5885
|
+
// is still an animal print.
|
|
5886
|
+
pimTerm(
|
|
5887
|
+
"crocodile",
|
|
5888
|
+
"Crocodile",
|
|
5889
|
+
"A motif derived from crocodile or alligator skin's raised, roughly rectangular scale blocks.",
|
|
5890
|
+
PIM_MOTIF_SOURCE,
|
|
5891
|
+
{ broaderSlug: ANIMAL_PRINT_SLUG, seenAs: ["Faux Crocodile"] }
|
|
5892
|
+
),
|
|
5893
|
+
pimTerm(
|
|
5894
|
+
"snakeskin",
|
|
5895
|
+
"Snakeskin",
|
|
5896
|
+
"A motif derived from snake skin's overlapping diamond or lozenge-shaped scales.",
|
|
5897
|
+
PIM_MOTIF_SOURCE,
|
|
5898
|
+
{ broaderSlug: ANIMAL_PRINT_SLUG, seenAs: ["Faux Snake Skin"] }
|
|
5899
|
+
),
|
|
5900
|
+
pimTerm(
|
|
5901
|
+
"ostrich",
|
|
5902
|
+
"Ostrich",
|
|
5903
|
+
"A motif derived from ostrich skin's raised quill-follicle bumps.",
|
|
5904
|
+
PIM_MOTIF_SOURCE,
|
|
5905
|
+
{ broaderSlug: ANIMAL_PRINT_SLUG, seenAs: ["Faux Ostrich"] }
|
|
5906
|
+
),
|
|
5907
|
+
pimTerm(
|
|
5908
|
+
"lizard",
|
|
5909
|
+
"Lizard",
|
|
5910
|
+
"A motif derived from lizard skin's small, irregular, close-set scales.",
|
|
5911
|
+
PIM_MOTIF_SOURCE,
|
|
5912
|
+
{ broaderSlug: ANIMAL_PRINT_SLUG, seenAs: ["Faux Lizard"] }
|
|
5913
|
+
),
|
|
5914
|
+
pimTerm(
|
|
5915
|
+
"leopard",
|
|
5916
|
+
"Leopard",
|
|
5917
|
+
"A motif derived from leopard fur's dark, irregular rosette markings on a tawny ground.",
|
|
5918
|
+
PIM_MOTIF_SOURCE,
|
|
5919
|
+
{ broaderSlug: ANIMAL_PRINT_SLUG }
|
|
5920
|
+
),
|
|
5921
|
+
pimTerm(
|
|
5922
|
+
"zebra",
|
|
5923
|
+
"Zebra",
|
|
5924
|
+
"A motif derived from zebra hide's alternating dark and pale parallel stripes.",
|
|
5925
|
+
PIM_MOTIF_SOURCE,
|
|
5926
|
+
{ broaderSlug: ANIMAL_PRINT_SLUG }
|
|
5927
|
+
),
|
|
5673
5928
|
term7(
|
|
5674
5929
|
"botanical",
|
|
5675
5930
|
"Botanical",
|
|
5676
|
-
"A representational motif of plants, flowers, foliage or fruit."
|
|
5931
|
+
"A representational motif of plants, flowers, foliage or fruit.",
|
|
5932
|
+
// Botanical's definition already reaches flowers; floral is an observed spelling of the same
|
|
5933
|
+
// concept rather than a second correct name for it, so it is `seenAs`, not an alt label.
|
|
5934
|
+
{ seenAs: ["floral"] }
|
|
5935
|
+
),
|
|
5936
|
+
// Heather in the trade names the same mixed-colour-yarn effect Wikidata records; melange, marled
|
|
5937
|
+
// and heathered are its correct names, none more canonical than another.
|
|
5938
|
+
{
|
|
5939
|
+
altLabels: ["heathered", "marled"],
|
|
5940
|
+
definition: "A mixed-colour yarn effect that gives the surface a flecked, uneven tone rather than one solid colour.",
|
|
5941
|
+
introducedAt: TAX57_DATE3,
|
|
5942
|
+
label: "Melange",
|
|
5943
|
+
provenance: {
|
|
5944
|
+
basis: "referenced",
|
|
5945
|
+
snapshot: TAX57_DATE3,
|
|
5946
|
+
source: wikidata4("Q5693696", "heather (fabric)")
|
|
5947
|
+
},
|
|
5948
|
+
reviewedAt: TAX57_DATE3,
|
|
5949
|
+
slug: "melange"
|
|
5950
|
+
},
|
|
5951
|
+
// AUTHORED. No Wikidata item for strie as a fabric or surface pattern on the review date.
|
|
5952
|
+
authoredTax57(
|
|
5953
|
+
"strie",
|
|
5954
|
+
"Strie",
|
|
5955
|
+
"Fine, irregular streaks running in one direction across the surface."
|
|
5677
5956
|
),
|
|
5678
5957
|
term7(
|
|
5679
5958
|
"damask",
|
|
@@ -5759,7 +6038,8 @@ var PATTERN_TYPE_TERMS = [
|
|
|
5759
6038
|
term7(
|
|
5760
6039
|
"marbleised",
|
|
5761
6040
|
"Marbleised",
|
|
5762
|
-
"Veining or clouding arranged to evoke marble."
|
|
6041
|
+
"Veining or clouding arranged to evoke marble.",
|
|
6042
|
+
{ altLabels: ["marbleized"] }
|
|
5763
6043
|
),
|
|
5764
6044
|
term7(
|
|
5765
6045
|
"metal-effect",
|
|
@@ -5991,12 +6271,133 @@ var PATTERN_DIRECTIONALITY_TERMS = [
|
|
|
5991
6271
|
"Two axes of equal weight, so the material reads correctly either way up."
|
|
5992
6272
|
)
|
|
5993
6273
|
];
|
|
6274
|
+
var PATTERN_FIGURE_TERMS = [
|
|
6275
|
+
pimTerm(
|
|
6276
|
+
"unvaried",
|
|
6277
|
+
"Unvaried",
|
|
6278
|
+
"No visible natural variation across the surface.",
|
|
6279
|
+
PIM_FIGURE_SOURCE,
|
|
6280
|
+
{ seenAs: ["No Variation"] }
|
|
6281
|
+
),
|
|
6282
|
+
pimTerm(
|
|
6283
|
+
"speckled",
|
|
6284
|
+
"Speckled",
|
|
6285
|
+
"Fine flecks and speckles scattered across the surface.",
|
|
6286
|
+
PIM_FIGURE_SOURCE,
|
|
6287
|
+
{ seenAs: ["Flecks & Speckles"] }
|
|
6288
|
+
),
|
|
6289
|
+
pimTerm(
|
|
6290
|
+
"linear-veining",
|
|
6291
|
+
"Linear veining",
|
|
6292
|
+
"Veining running in one consistent direction across the surface.",
|
|
6293
|
+
PIM_FIGURE_SOURCE,
|
|
6294
|
+
{ seenAs: ["Linear Veins"] }
|
|
6295
|
+
),
|
|
6296
|
+
pimTerm(
|
|
6297
|
+
"multi-directional-veining",
|
|
6298
|
+
"Multi-directional veining",
|
|
6299
|
+
"Veining running in more than one direction across the surface, with no single dominant axis.",
|
|
6300
|
+
PIM_FIGURE_SOURCE,
|
|
6301
|
+
{ seenAs: ["Multi-Directional Veins"] }
|
|
6302
|
+
),
|
|
6303
|
+
pimTerm(
|
|
6304
|
+
"mottled",
|
|
6305
|
+
"Mottled",
|
|
6306
|
+
"Uneven patches or blotches of tone breaking up an otherwise even surface.",
|
|
6307
|
+
PIM_FIGURE_SOURCE
|
|
6308
|
+
),
|
|
6309
|
+
pimTerm(
|
|
6310
|
+
"cloudy",
|
|
6311
|
+
"Cloudy",
|
|
6312
|
+
"Soft, diffuse variation in tone with no distinct veins or edges, reading as drifting cloud.",
|
|
6313
|
+
PIM_FIGURE_SOURCE
|
|
6314
|
+
),
|
|
6315
|
+
pimTerm(
|
|
6316
|
+
"breccia",
|
|
6317
|
+
"Breccia",
|
|
6318
|
+
"Angular fragments of stone bound within a contrasting matrix.",
|
|
6319
|
+
`${PIM_FIGURE_SOURCE}; ${wikidata4("Q191250", "breccia")}`,
|
|
6320
|
+
{ seenAs: ["Angular Fragments"] }
|
|
6321
|
+
),
|
|
6322
|
+
pimTerm(
|
|
6323
|
+
"swirling",
|
|
6324
|
+
"Swirling",
|
|
6325
|
+
"Variation that curls and eddies across the surface rather than running in straight lines or veins.",
|
|
6326
|
+
PIM_FIGURE_SOURCE
|
|
6327
|
+
),
|
|
6328
|
+
pimTerm(
|
|
6329
|
+
"fossiliferous",
|
|
6330
|
+
"Fossil",
|
|
6331
|
+
"Visible shells or fossil forms embedded in the surface.",
|
|
6332
|
+
PIM_FIGURE_SOURCE,
|
|
6333
|
+
{ seenAs: ["Shells & Fossils"] }
|
|
6334
|
+
),
|
|
6335
|
+
pimTerm(
|
|
6336
|
+
"pitted",
|
|
6337
|
+
"Pitted",
|
|
6338
|
+
"Surface holes and pitting left unfilled, as in unfilled travertine.",
|
|
6339
|
+
PIM_FIGURE_SOURCE,
|
|
6340
|
+
{ seenAs: ["Holes & Pitting"] }
|
|
6341
|
+
),
|
|
6342
|
+
pimTerm(
|
|
6343
|
+
"brindled",
|
|
6344
|
+
"Brindled",
|
|
6345
|
+
"Irregular streaky variation running through the surface, as in a brindled coat.",
|
|
6346
|
+
PIM_FIGURE_SOURCE,
|
|
6347
|
+
{ seenAs: ["Brindle"] }
|
|
6348
|
+
),
|
|
6349
|
+
pimTerm(
|
|
6350
|
+
"mineral-inclusions",
|
|
6351
|
+
"Mineral inclusions",
|
|
6352
|
+
"Visible mineral deposits embedded within the surface.",
|
|
6353
|
+
PIM_FIGURE_SOURCE,
|
|
6354
|
+
{ seenAs: ["Mineral Deposits"] }
|
|
6355
|
+
),
|
|
6356
|
+
// `rustic` is deliberately not an alt label: it names a style, and prominent knots do not make a
|
|
6357
|
+
// timber rustic in the style sense, so treating the words as interchangeable would smuggle a
|
|
6358
|
+
// STYLE claim into a FIGURE one.
|
|
6359
|
+
pimTerm(
|
|
6360
|
+
"knotty",
|
|
6361
|
+
"Knotty",
|
|
6362
|
+
"Timber figure carrying prominent, frequent knots.",
|
|
6363
|
+
PIM_FIGURE_SOURCE,
|
|
6364
|
+
{ seenAs: ["Knots"] }
|
|
6365
|
+
),
|
|
6366
|
+
// AUTHORED. No Material Bank PIM column value names the absence of figure; clear grain is the
|
|
6367
|
+
// un-figured baseline that gives knotty, burl, fiddleback and bird's-eye something to contrast
|
|
6368
|
+
// against. It is not their parent: figure is unranked and unordered, and a plain surface is not
|
|
6369
|
+
// a kind of knotty one, only its absence.
|
|
6370
|
+
authoredTax57(
|
|
6371
|
+
"clear-grain",
|
|
6372
|
+
"Clear grain",
|
|
6373
|
+
"Timber figure free of knots, with an even, minimally figured grain."
|
|
6374
|
+
),
|
|
6375
|
+
pimTerm(
|
|
6376
|
+
"burl",
|
|
6377
|
+
"Burl",
|
|
6378
|
+
"A swirling, densely clustered grain figure cut from a tree's burl growth.",
|
|
6379
|
+
`${PIM_FIGURE_SOURCE}; ${wikidata4("Q1483529", "burl")}`
|
|
6380
|
+
),
|
|
6381
|
+
// AUTHORED. No Wikidata item for fiddleback figure on the review date.
|
|
6382
|
+
authoredTax57(
|
|
6383
|
+
"fiddleback",
|
|
6384
|
+
"Fiddleback",
|
|
6385
|
+
"A tight, uniform rippled figure running across the grain, historically prized for violin backs."
|
|
6386
|
+
),
|
|
6387
|
+
pimTerm(
|
|
6388
|
+
"birds-eye",
|
|
6389
|
+
"Bird's eye",
|
|
6390
|
+
"Small, round, eye-like figure dots scattered through the grain, as in bird's-eye maple.",
|
|
6391
|
+
`${PIM_FIGURE_SOURCE}; ${wikidata4("Q164973", "bird's eye figure")}`
|
|
6392
|
+
)
|
|
6393
|
+
];
|
|
5994
6394
|
var PATTERN_TERMS = [
|
|
5995
6395
|
...PATTERN_TYPE_TERMS,
|
|
5996
6396
|
...PATTERN_SCALE_TERMS,
|
|
5997
6397
|
...PATTERN_DENSITY_TERMS,
|
|
5998
6398
|
...PATTERN_REGULARITY_TERMS,
|
|
5999
|
-
...PATTERN_DIRECTIONALITY_TERMS
|
|
6399
|
+
...PATTERN_DIRECTIONALITY_TERMS,
|
|
6400
|
+
...PATTERN_FIGURE_TERMS
|
|
6000
6401
|
];
|
|
6001
6402
|
|
|
6002
6403
|
// src/axes/period.ts
|
|
@@ -6885,7 +7286,7 @@ var AUTHORED5 = {
|
|
|
6885
7286
|
basis: "authored",
|
|
6886
7287
|
source: "@instruments/taxonomy ADR 0006"
|
|
6887
7288
|
};
|
|
6888
|
-
var
|
|
7289
|
+
var wikidata5 = (identifier, label) => ({
|
|
6889
7290
|
identifier,
|
|
6890
7291
|
label,
|
|
6891
7292
|
match: "exact",
|
|
@@ -6905,25 +7306,25 @@ var SEASON_TERMS = [
|
|
|
6905
7306
|
"spring",
|
|
6906
7307
|
"Spring",
|
|
6907
7308
|
"The temperate season between winter and summer, when the days lengthen.",
|
|
6908
|
-
{ external: [
|
|
7309
|
+
{ external: [wikidata5("Q1312", "spring")] }
|
|
6909
7310
|
),
|
|
6910
7311
|
term10(
|
|
6911
7312
|
"summer",
|
|
6912
7313
|
"Summer",
|
|
6913
7314
|
"The temperate season between spring and autumn, when the days are longest.",
|
|
6914
|
-
{ external: [
|
|
7315
|
+
{ external: [wikidata5("Q1313", "summer")] }
|
|
6915
7316
|
),
|
|
6916
7317
|
term10(
|
|
6917
7318
|
"autumn",
|
|
6918
7319
|
"Autumn",
|
|
6919
7320
|
"The temperate season between summer and winter, when the days shorten.",
|
|
6920
|
-
{ altLabels: ["fall"], external: [
|
|
7321
|
+
{ altLabels: ["fall"], external: [wikidata5("Q1314", "autumn")] }
|
|
6921
7322
|
),
|
|
6922
7323
|
term10(
|
|
6923
7324
|
"winter",
|
|
6924
7325
|
"Winter",
|
|
6925
7326
|
"The temperate season between autumn and spring, when the days are shortest.",
|
|
6926
|
-
{ external: [
|
|
7327
|
+
{ external: [wikidata5("Q1311", "winter")] }
|
|
6927
7328
|
)
|
|
6928
7329
|
];
|
|
6929
7330
|
|
|
@@ -10840,7 +11241,8 @@ var AXES = [
|
|
|
10840
11241
|
label: "Directionality",
|
|
10841
11242
|
slug: "directionality",
|
|
10842
11243
|
terms: PATTERN_DIRECTIONALITY_TERMS
|
|
10843
|
-
}
|
|
11244
|
+
},
|
|
11245
|
+
{ label: "Figure", slug: "figure", terms: PATTERN_FIGURE_TERMS }
|
|
10844
11246
|
],
|
|
10845
11247
|
label: "Pattern",
|
|
10846
11248
|
question: "What motif or surface organisation does it carry?",
|
|
@@ -11120,8 +11522,8 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
|
|
|
11120
11522
|
|
|
11121
11523
|
// src/v1.ts
|
|
11122
11524
|
var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
|
|
11123
|
-
var TAXONOMY_SNAPSHOT = "2026-09-
|
|
11124
|
-
var TAXONOMY_VERSION = "1.
|
|
11525
|
+
var TAXONOMY_SNAPSHOT = "2026-09-26";
|
|
11526
|
+
var TAXONOMY_VERSION = "1.8.0";
|
|
11125
11527
|
var PUBLISHED_V1_BASELINE = "2026-08-30";
|
|
11126
11528
|
var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
|
|
11127
11529
|
var LIMESTONE_INTRODUCED = "2026-09-01";
|
|
@@ -11424,6 +11826,15 @@ var HIERARCHY_REVIEW_LIFECYCLE = {
|
|
|
11424
11826
|
status: "active"
|
|
11425
11827
|
};
|
|
11426
11828
|
var AMBIGUITY_GOVERNANCE = "Taxonomy preserves the governed readings without assigning a default, role, contextual preference, or consumer route.";
|
|
11829
|
+
var ORDERED_READING_GOVERNANCE = "The two readings are deliberately separate; the default records trade usage and does not merge the concepts.";
|
|
11830
|
+
var TAX57_DATE4 = "2026-09-26";
|
|
11831
|
+
var TAX57_LIFECYCLE = {
|
|
11832
|
+
introducedAt: TAX57_DATE4,
|
|
11833
|
+
reviewedAt: TAX57_DATE4,
|
|
11834
|
+
status: "active"
|
|
11835
|
+
};
|
|
11836
|
+
var TAX57_SHAPE_SOURCE = "the tile-shape column in a materials-marketplace catalogue (src-04), non-Samplize SKUs";
|
|
11837
|
+
var TAX57_REVIEW_SOURCE = "Linear TAX-57 visual-vocabulary review";
|
|
11427
11838
|
var REVIEW_DATE12 = "2026-09-11";
|
|
11428
11839
|
var REVIEW_LIFECYCLE = {
|
|
11429
11840
|
introducedAt: REVIEW_DATE12,
|
|
@@ -11845,7 +12256,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
11845
12256
|
defaultTarget: ENGINEERED_QUARTZ_SURFACING,
|
|
11846
12257
|
explanation: "Quartz can name the engineered quartz surfacing sold for worktops or the mineral silicon dioxide; the trade means the surfacing first, and neither is a child of the other.",
|
|
11847
12258
|
governance: lexicalGovernance(
|
|
11848
|
-
|
|
12259
|
+
ORDERED_READING_GOVERNANCE,
|
|
11849
12260
|
{
|
|
11850
12261
|
basis: "evidenced",
|
|
11851
12262
|
snapshot: HIERARCHY_REVIEW_DATE,
|
|
@@ -11861,7 +12272,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
11861
12272
|
defaultTarget: MELAMINE_BOARD,
|
|
11862
12273
|
explanation: "Melamine can name melamine-faced board, the panel, or melamine-formaldehyde resin, the polymer its facing is made of; joinery and retail mean the board first.",
|
|
11863
12274
|
governance: lexicalGovernance(
|
|
11864
|
-
|
|
12275
|
+
ORDERED_READING_GOVERNANCE,
|
|
11865
12276
|
{
|
|
11866
12277
|
basis: "evidenced",
|
|
11867
12278
|
snapshot: HIERARCHY_REVIEW_DATE,
|
|
@@ -12040,6 +12451,131 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
12040
12451
|
reviewedTaxonomy("product-category/countertop")
|
|
12041
12452
|
]
|
|
12042
12453
|
},
|
|
12454
|
+
// TAX-57 unit-shape compounds. Each names two governed shapes in one phrase, which the current
|
|
12455
|
+
// lexical contract cannot express as a single multi-target reading, so the alternatives are kept
|
|
12456
|
+
// as an explicit ambiguity or, where one alternative is already an alt label of the other, an
|
|
12457
|
+
// equivalent - never a silently chosen shape.
|
|
12458
|
+
{
|
|
12459
|
+
defaultTarget: {
|
|
12460
|
+
authority: "taxonomy",
|
|
12461
|
+
role: "primary",
|
|
12462
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/arabesque`
|
|
12463
|
+
},
|
|
12464
|
+
explanation: "Arabesque can name the taxonomy's bilaterally organised ornamental unit shape or, in Material Bank PIM usage, the star and cross units of a Moroccan tile assortment; the bare word does not settle which.",
|
|
12465
|
+
governance: lexicalGovernance(
|
|
12466
|
+
"The default records the taxonomy's own governed shape; the PIM-evidenced star and cross readings are recorded as secondary rather than merged into one multi-concept reading.",
|
|
12467
|
+
{ basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
|
|
12468
|
+
TAX57_LIFECYCLE
|
|
12469
|
+
),
|
|
12470
|
+
outcome: "ambiguous",
|
|
12471
|
+
phrase: "arabesque",
|
|
12472
|
+
readings: [
|
|
12473
|
+
{
|
|
12474
|
+
authority: "taxonomy",
|
|
12475
|
+
role: "primary",
|
|
12476
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/arabesque`
|
|
12477
|
+
},
|
|
12478
|
+
{
|
|
12479
|
+
authority: "taxonomy",
|
|
12480
|
+
role: "secondary",
|
|
12481
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/star`
|
|
12482
|
+
},
|
|
12483
|
+
{
|
|
12484
|
+
authority: "taxonomy",
|
|
12485
|
+
role: "secondary",
|
|
12486
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/cross`
|
|
12487
|
+
}
|
|
12488
|
+
]
|
|
12489
|
+
},
|
|
12490
|
+
...["round & oval", "round and oval"].map(
|
|
12491
|
+
(phrase) => ({
|
|
12492
|
+
explanation: "The compound phrase does not settle whether a round or an oval unit is meant.",
|
|
12493
|
+
governance: lexicalGovernance(
|
|
12494
|
+
AMBIGUITY_GOVERNANCE,
|
|
12495
|
+
{
|
|
12496
|
+
basis: "evidenced",
|
|
12497
|
+
snapshot: TAX57_DATE4,
|
|
12498
|
+
source: TAX57_SHAPE_SOURCE
|
|
12499
|
+
},
|
|
12500
|
+
TAX57_LIFECYCLE
|
|
12501
|
+
),
|
|
12502
|
+
outcome: "ambiguous",
|
|
12503
|
+
phrase,
|
|
12504
|
+
readings: [
|
|
12505
|
+
{
|
|
12506
|
+
authority: "taxonomy",
|
|
12507
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/circle`
|
|
12508
|
+
},
|
|
12509
|
+
{
|
|
12510
|
+
authority: "taxonomy",
|
|
12511
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/oval`
|
|
12512
|
+
}
|
|
12513
|
+
]
|
|
12514
|
+
})
|
|
12515
|
+
),
|
|
12516
|
+
{
|
|
12517
|
+
explanation: "The compound phrase names one shape: rhombus, for which diamond is already a governed alt label.",
|
|
12518
|
+
governance: lexicalGovernance(
|
|
12519
|
+
"Taxonomy records the evidenced compound phrase without assigning a consumer route.",
|
|
12520
|
+
{ basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
|
|
12521
|
+
TAX57_LIFECYCLE
|
|
12522
|
+
),
|
|
12523
|
+
outcome: "equivalent",
|
|
12524
|
+
phrase: "diamond & rhombus",
|
|
12525
|
+
target: {
|
|
12526
|
+
authority: "taxonomy",
|
|
12527
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/rhombus`
|
|
12528
|
+
}
|
|
12529
|
+
},
|
|
12530
|
+
{
|
|
12531
|
+
explanation: "The compound phrase does not settle whether a parallelogram unit or a genuine chevron unit is meant.",
|
|
12532
|
+
governance: lexicalGovernance(
|
|
12533
|
+
AMBIGUITY_GOVERNANCE,
|
|
12534
|
+
{ basis: "evidenced", snapshot: TAX57_DATE4, source: TAX57_SHAPE_SOURCE },
|
|
12535
|
+
TAX57_LIFECYCLE
|
|
12536
|
+
),
|
|
12537
|
+
outcome: "ambiguous",
|
|
12538
|
+
phrase: "parallelogram & chevron",
|
|
12539
|
+
readings: [
|
|
12540
|
+
{
|
|
12541
|
+
authority: "taxonomy",
|
|
12542
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/parallelogram`
|
|
12543
|
+
},
|
|
12544
|
+
{
|
|
12545
|
+
authority: "taxonomy",
|
|
12546
|
+
uri: `${TAXONOMY_BASE_URI}/id/unit-shape/chevron`
|
|
12547
|
+
}
|
|
12548
|
+
]
|
|
12549
|
+
},
|
|
12550
|
+
// TAX-57 ordered reading. Paint and tile makers use "velvet" as a finish name for a soft-touch,
|
|
12551
|
+
// light-absorbing surface; the trade means the woven cut-pile construction first.
|
|
12552
|
+
{
|
|
12553
|
+
defaultTarget: {
|
|
12554
|
+
authority: "taxonomy",
|
|
12555
|
+
role: "primary",
|
|
12556
|
+
uri: `${TAXONOMY_BASE_URI}/id/construction/velvet`
|
|
12557
|
+
},
|
|
12558
|
+
explanation: "Velvet can name the woven cut-pile construction or a finish name paint and tile makers use for a soft-touch surface; the trade means the construction first.",
|
|
12559
|
+
governance: lexicalGovernance(
|
|
12560
|
+
ORDERED_READING_GOVERNANCE,
|
|
12561
|
+
{ basis: "authored", source: TAX57_REVIEW_SOURCE },
|
|
12562
|
+
TAX57_LIFECYCLE
|
|
12563
|
+
),
|
|
12564
|
+
outcome: "ambiguous",
|
|
12565
|
+
phrase: "velvet",
|
|
12566
|
+
readings: [
|
|
12567
|
+
{
|
|
12568
|
+
authority: "taxonomy",
|
|
12569
|
+
role: "primary",
|
|
12570
|
+
uri: `${TAXONOMY_BASE_URI}/id/construction/velvet`
|
|
12571
|
+
},
|
|
12572
|
+
{
|
|
12573
|
+
authority: "taxonomy",
|
|
12574
|
+
role: "secondary",
|
|
12575
|
+
uri: `${TAXONOMY_BASE_URI}/id/finish/texture/velvety`
|
|
12576
|
+
}
|
|
12577
|
+
]
|
|
12578
|
+
},
|
|
12043
12579
|
{
|
|
12044
12580
|
explanation: "The phrase makes an environmental performance claim that needs product evidence, not a terminology-only mapping.",
|
|
12045
12581
|
governance: lexicalGovernance(
|
package/dist/v1.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ElementPlacement, ExternalMapping, ExternalScheme, PeriodSpan, RelationPredicate, SearchedWithout, StyleKind, TermProvenance, TermUsage, UsageWithheld } from "./term.js";
|
|
2
2
|
export declare const TAXONOMY_BASE_URI: "https://taxonomy.materialinstruments.com";
|
|
3
|
-
export declare const TAXONOMY_SNAPSHOT: "2026-09-
|
|
4
|
-
export declare const TAXONOMY_VERSION: "1.
|
|
3
|
+
export declare const TAXONOMY_SNAPSHOT: "2026-09-26";
|
|
4
|
+
export declare const TAXONOMY_VERSION: "1.8.0";
|
|
5
5
|
export type CanonicalConceptUri = `${typeof TAXONOMY_BASE_URI}/id/${string}`;
|
|
6
6
|
export type LifecycleStatus = "active" | "deprecated";
|
|
7
7
|
export interface Lifecycle {
|
|
@@ -135,7 +135,7 @@ export declare const TAXONOMY_CORPUS_METADATA: {
|
|
|
135
135
|
readonly lexicalEntryCount: number;
|
|
136
136
|
readonly nodeCount: number;
|
|
137
137
|
readonly revision: string;
|
|
138
|
-
readonly snapshot: "2026-09-
|
|
139
|
-
readonly version: "1.
|
|
138
|
+
readonly snapshot: "2026-09-26";
|
|
139
|
+
readonly version: "1.8.0";
|
|
140
140
|
};
|
|
141
141
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instruments/taxonomy",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.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": {
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@howells/lint": "^
|
|
28
|
-
"@instruments/colorscope": "7.
|
|
27
|
+
"@howells/lint": "^3.5.1",
|
|
28
|
+
"@instruments/colorscope": "7.8.0",
|
|
29
29
|
"@taxonomy/lint-policy": "npm:@howells/lint@1.0.0",
|
|
30
|
-
"@types/node": "^26.
|
|
30
|
+
"@types/node": "^26.6.2",
|
|
31
31
|
"tsup": "^8.5.1",
|
|
32
32
|
"typescript": "^7.0.2",
|
|
33
|
-
"vitest": "^5.0.
|
|
33
|
+
"vitest": "^5.0.1"
|
|
34
34
|
},
|
|
35
35
|
"scripts": {
|
|
36
36
|
"build": "tsup && tsc -p tsconfig.build.json && node ../../scripts/finalize-declarations.mjs dist",
|