@instruments/taxonomy 1.7.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/axes/index.d.ts +1 -1
- package/dist/axes/pattern.d.ts +7 -0
- package/dist/index.js +469 -15
- package/dist/v1.d.ts +4 -4
- package/package.json +5 -5
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
|
@@ -480,6 +480,16 @@ var term = (slug, label, definition) => ({
|
|
|
480
480
|
provenance: { basis: "evidenced", snapshot: SNAPSHOT, source: SOURCE },
|
|
481
481
|
slug
|
|
482
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
|
+
});
|
|
483
493
|
var CONSTRUCTION_TERMS = [
|
|
484
494
|
term(
|
|
485
495
|
"encaustic",
|
|
@@ -644,6 +654,61 @@ var CONSTRUCTION_TERMS = [
|
|
|
644
654
|
"Chenille",
|
|
645
655
|
"A fabric woven from chenille yarn, a fuzzy pile yarn cut from a leno-woven strip; fibre and backing remain unspecified.",
|
|
646
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" }
|
|
647
712
|
)
|
|
648
713
|
];
|
|
649
714
|
|
|
@@ -1396,6 +1461,8 @@ var CORPUS_SNAPSHOT = "2026-08-27";
|
|
|
1396
1461
|
var DROPPED = "Restored 2026-08-27. Dropped in normalisation.";
|
|
1397
1462
|
var REVIEW_DATE3 = "2026-09-11";
|
|
1398
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";
|
|
1399
1466
|
var wikidata2 = (id, label) => `Wikidata ${id} ${label}, https://www.wikidata.org/wiki/${id}`;
|
|
1400
1467
|
var reviewed2 = (slug, label, definition, source, extra = {}) => ({
|
|
1401
1468
|
definition,
|
|
@@ -1657,7 +1724,27 @@ var FINISH_TEXTURE_TERMS = [
|
|
|
1657
1724
|
"heavily-reliefed",
|
|
1658
1725
|
"Heavily reliefed",
|
|
1659
1726
|
"Deep, strongly modelled relief."
|
|
1660
|
-
)
|
|
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
|
+
}
|
|
1661
1748
|
];
|
|
1662
1749
|
var FINISH_TERMS = [
|
|
1663
1750
|
...FINISH_TREATMENT_TERMS,
|
|
@@ -4845,6 +4932,7 @@ var MATERIAL_TIMBERS_TERMS = [
|
|
|
4845
4932
|
var SOURCE3 = "material vocabularies in a furnishings retailer (src-03) and in-house";
|
|
4846
4933
|
var SNAPSHOT3 = "2026-08-25";
|
|
4847
4934
|
var CROSSOVER_SNAPSHOT2 = "2026-08-30";
|
|
4935
|
+
var TAX57_REVIEW_DATE = "2026-09-26";
|
|
4848
4936
|
var NATURAL_FIBRE_SLUG2 = "natural-fibre";
|
|
4849
4937
|
var STONE_SLUG2 = "stone";
|
|
4850
4938
|
var HARDWOOD_SLUG2 = "hardwood";
|
|
@@ -5206,6 +5294,21 @@ var MATERIAL_TERMS = [
|
|
|
5206
5294
|
broaderSlug: "leather",
|
|
5207
5295
|
reviewedAt: COMPOSITION_REVIEW_DATE
|
|
5208
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
|
+
},
|
|
5209
5312
|
reparented(
|
|
5210
5313
|
crossoverTerm(
|
|
5211
5314
|
"concrete",
|
|
@@ -5722,6 +5825,30 @@ var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
|
|
|
5722
5825
|
var REVIEW_DATE7 = "2026-09-11";
|
|
5723
5826
|
var REVIEW_SOURCE6 = "everyday-interiors vocabulary review";
|
|
5724
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}`;
|
|
5725
5852
|
var term7 = (slug, label, definition, extra = {}) => ({
|
|
5726
5853
|
definition,
|
|
5727
5854
|
label,
|
|
@@ -5748,14 +5875,84 @@ var PATTERN_TYPE_TERMS = [
|
|
|
5748
5875
|
"Non-representational marks organised with irregular or biomorphic movement."
|
|
5749
5876
|
),
|
|
5750
5877
|
term7(
|
|
5751
|
-
|
|
5878
|
+
ANIMAL_PRINT_SLUG,
|
|
5752
5879
|
"Animal print",
|
|
5753
5880
|
"A motif derived from animal markings or skins."
|
|
5754
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
|
+
),
|
|
5755
5928
|
term7(
|
|
5756
5929
|
"botanical",
|
|
5757
5930
|
"Botanical",
|
|
5758
|
-
"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."
|
|
5759
5956
|
),
|
|
5760
5957
|
term7(
|
|
5761
5958
|
"damask",
|
|
@@ -5841,7 +6038,8 @@ var PATTERN_TYPE_TERMS = [
|
|
|
5841
6038
|
term7(
|
|
5842
6039
|
"marbleised",
|
|
5843
6040
|
"Marbleised",
|
|
5844
|
-
"Veining or clouding arranged to evoke marble."
|
|
6041
|
+
"Veining or clouding arranged to evoke marble.",
|
|
6042
|
+
{ altLabels: ["marbleized"] }
|
|
5845
6043
|
),
|
|
5846
6044
|
term7(
|
|
5847
6045
|
"metal-effect",
|
|
@@ -6073,12 +6271,133 @@ var PATTERN_DIRECTIONALITY_TERMS = [
|
|
|
6073
6271
|
"Two axes of equal weight, so the material reads correctly either way up."
|
|
6074
6272
|
)
|
|
6075
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
|
+
];
|
|
6076
6394
|
var PATTERN_TERMS = [
|
|
6077
6395
|
...PATTERN_TYPE_TERMS,
|
|
6078
6396
|
...PATTERN_SCALE_TERMS,
|
|
6079
6397
|
...PATTERN_DENSITY_TERMS,
|
|
6080
6398
|
...PATTERN_REGULARITY_TERMS,
|
|
6081
|
-
...PATTERN_DIRECTIONALITY_TERMS
|
|
6399
|
+
...PATTERN_DIRECTIONALITY_TERMS,
|
|
6400
|
+
...PATTERN_FIGURE_TERMS
|
|
6082
6401
|
];
|
|
6083
6402
|
|
|
6084
6403
|
// src/axes/period.ts
|
|
@@ -6967,7 +7286,7 @@ var AUTHORED5 = {
|
|
|
6967
7286
|
basis: "authored",
|
|
6968
7287
|
source: "@instruments/taxonomy ADR 0006"
|
|
6969
7288
|
};
|
|
6970
|
-
var
|
|
7289
|
+
var wikidata5 = (identifier, label) => ({
|
|
6971
7290
|
identifier,
|
|
6972
7291
|
label,
|
|
6973
7292
|
match: "exact",
|
|
@@ -6987,25 +7306,25 @@ var SEASON_TERMS = [
|
|
|
6987
7306
|
"spring",
|
|
6988
7307
|
"Spring",
|
|
6989
7308
|
"The temperate season between winter and summer, when the days lengthen.",
|
|
6990
|
-
{ external: [
|
|
7309
|
+
{ external: [wikidata5("Q1312", "spring")] }
|
|
6991
7310
|
),
|
|
6992
7311
|
term10(
|
|
6993
7312
|
"summer",
|
|
6994
7313
|
"Summer",
|
|
6995
7314
|
"The temperate season between spring and autumn, when the days are longest.",
|
|
6996
|
-
{ external: [
|
|
7315
|
+
{ external: [wikidata5("Q1313", "summer")] }
|
|
6997
7316
|
),
|
|
6998
7317
|
term10(
|
|
6999
7318
|
"autumn",
|
|
7000
7319
|
"Autumn",
|
|
7001
7320
|
"The temperate season between summer and winter, when the days shorten.",
|
|
7002
|
-
{ altLabels: ["fall"], external: [
|
|
7321
|
+
{ altLabels: ["fall"], external: [wikidata5("Q1314", "autumn")] }
|
|
7003
7322
|
),
|
|
7004
7323
|
term10(
|
|
7005
7324
|
"winter",
|
|
7006
7325
|
"Winter",
|
|
7007
7326
|
"The temperate season between autumn and spring, when the days are shortest.",
|
|
7008
|
-
{ external: [
|
|
7327
|
+
{ external: [wikidata5("Q1311", "winter")] }
|
|
7009
7328
|
)
|
|
7010
7329
|
];
|
|
7011
7330
|
|
|
@@ -10922,7 +11241,8 @@ var AXES = [
|
|
|
10922
11241
|
label: "Directionality",
|
|
10923
11242
|
slug: "directionality",
|
|
10924
11243
|
terms: PATTERN_DIRECTIONALITY_TERMS
|
|
10925
|
-
}
|
|
11244
|
+
},
|
|
11245
|
+
{ label: "Figure", slug: "figure", terms: PATTERN_FIGURE_TERMS }
|
|
10926
11246
|
],
|
|
10927
11247
|
label: "Pattern",
|
|
10928
11248
|
question: "What motif or surface organisation does it carry?",
|
|
@@ -11202,8 +11522,8 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
|
|
|
11202
11522
|
|
|
11203
11523
|
// src/v1.ts
|
|
11204
11524
|
var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
|
|
11205
|
-
var TAXONOMY_SNAPSHOT = "2026-09-
|
|
11206
|
-
var TAXONOMY_VERSION = "1.
|
|
11525
|
+
var TAXONOMY_SNAPSHOT = "2026-09-26";
|
|
11526
|
+
var TAXONOMY_VERSION = "1.8.0";
|
|
11207
11527
|
var PUBLISHED_V1_BASELINE = "2026-08-30";
|
|
11208
11528
|
var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
|
|
11209
11529
|
var LIMESTONE_INTRODUCED = "2026-09-01";
|
|
@@ -11506,6 +11826,15 @@ var HIERARCHY_REVIEW_LIFECYCLE = {
|
|
|
11506
11826
|
status: "active"
|
|
11507
11827
|
};
|
|
11508
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";
|
|
11509
11838
|
var REVIEW_DATE12 = "2026-09-11";
|
|
11510
11839
|
var REVIEW_LIFECYCLE = {
|
|
11511
11840
|
introducedAt: REVIEW_DATE12,
|
|
@@ -11927,7 +12256,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
11927
12256
|
defaultTarget: ENGINEERED_QUARTZ_SURFACING,
|
|
11928
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.",
|
|
11929
12258
|
governance: lexicalGovernance(
|
|
11930
|
-
|
|
12259
|
+
ORDERED_READING_GOVERNANCE,
|
|
11931
12260
|
{
|
|
11932
12261
|
basis: "evidenced",
|
|
11933
12262
|
snapshot: HIERARCHY_REVIEW_DATE,
|
|
@@ -11943,7 +12272,7 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
11943
12272
|
defaultTarget: MELAMINE_BOARD,
|
|
11944
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.",
|
|
11945
12274
|
governance: lexicalGovernance(
|
|
11946
|
-
|
|
12275
|
+
ORDERED_READING_GOVERNANCE,
|
|
11947
12276
|
{
|
|
11948
12277
|
basis: "evidenced",
|
|
11949
12278
|
snapshot: HIERARCHY_REVIEW_DATE,
|
|
@@ -12122,6 +12451,131 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
12122
12451
|
reviewedTaxonomy("product-category/countertop")
|
|
12123
12452
|
]
|
|
12124
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
|
+
},
|
|
12125
12579
|
{
|
|
12126
12580
|
explanation: "The phrase makes an environmental performance claim that needs product evidence, not a terminology-only mapping.",
|
|
12127
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",
|