@instruments/taxonomy 1.0.0 → 1.1.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.d.ts +6 -4
- package/dist/index.js +961 -39
- package/package.json +11 -11
package/dist/index.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ type SourceBasis =
|
|
|
33
33
|
| "authored"
|
|
34
34
|
/** Written here, but derived from measured usage in a named corpus. */
|
|
35
35
|
| "evidenced"
|
|
36
|
+
/** Written here from one or more named authoritative references, without adopting their term. */
|
|
37
|
+
| "referenced"
|
|
36
38
|
/** Adopted from a published external standard, with its identifier carried. */
|
|
37
39
|
| "standard";
|
|
38
40
|
interface TermProvenance {
|
|
@@ -199,8 +201,8 @@ type RelationPredicate =
|
|
|
199
201
|
| "related-to";
|
|
200
202
|
|
|
201
203
|
declare const TAXONOMY_BASE_URI: "https://taxonomy.materialinstruments.com";
|
|
202
|
-
declare const TAXONOMY_SNAPSHOT: "2026-08-
|
|
203
|
-
declare const TAXONOMY_VERSION: "1.
|
|
204
|
+
declare const TAXONOMY_SNAPSHOT: "2026-08-31";
|
|
205
|
+
declare const TAXONOMY_VERSION: "1.1.1";
|
|
204
206
|
type CanonicalConceptUri = `${typeof TAXONOMY_BASE_URI}/id/${string}`;
|
|
205
207
|
type LifecycleStatus = "active" | "deprecated";
|
|
206
208
|
interface Lifecycle {
|
|
@@ -333,8 +335,8 @@ declare const TAXONOMY_CORPUS_METADATA: {
|
|
|
333
335
|
readonly lexicalEntryCount: number;
|
|
334
336
|
readonly nodeCount: number;
|
|
335
337
|
readonly revision: string;
|
|
336
|
-
readonly snapshot: "2026-08-
|
|
337
|
-
readonly version: "1.
|
|
338
|
+
readonly snapshot: "2026-08-31";
|
|
339
|
+
readonly version: "1.1.1";
|
|
338
340
|
};
|
|
339
341
|
|
|
340
342
|
export { type AxisNode, COLOR_SCOPE_REFERENCE_KINDS, type CanonicalConceptUri, type ColorScopeReferenceKind, type ColorScopeTarget, type ConceptNode, type ExternalReference, type FacetNode, type Governance, type GraphPredicate, KNOWLEDGE_GRAPH, type KnowledgeGraph, type KnowledgeGraphEdge, type KnowledgeGraphNode, LEXICAL_ENTRIES, type LexicalContext, type LexicalEntry, type LexicalTarget, type Lifecycle, type LifecycleStatus, type PeriodSpan, type SearchedWithout, type StyleKind, TAXONOMY_BASE_URI, TAXONOMY_CORPUS_METADATA, TAXONOMY_CORPUS_REVISION, TAXONOMY_SNAPSHOT, TAXONOMY_VERSION, type TaxonomyTarget, type TermProvenance, type TermUsage, type UsageWithheld };
|
package/dist/index.js
CHANGED
|
@@ -982,9 +982,64 @@ var ELEMENT_TERMS = [
|
|
|
982
982
|
...ELEMENT_FITOUT_TERMS
|
|
983
983
|
];
|
|
984
984
|
|
|
985
|
+
// src/materialgraph-crossover-sources.ts
|
|
986
|
+
var MATERIALGRAPH_CROSSOVER_SOURCE = "materialgraph@b55d7ad33807d9653bd4838b7908fb1d100440a8:packages/products/src/search/colour-material-lexicon.ts:46-102";
|
|
987
|
+
var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@c0662caabe7cd8604241a8a7b2608fa5bc71de51:packages/core/data/reference/v1/taxonomy.json";
|
|
988
|
+
var BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
|
|
989
|
+
var BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
|
|
990
|
+
var NICKEL_MATERIAL_SOURCE = "https://nickelinstitute.org/en/nickel-applications/";
|
|
991
|
+
var NICKEL_FINISH_SOURCE = "https://nickelinstitute.org/en/nickel-applications/plating";
|
|
992
|
+
var WOOD_HANDBOOK_SOURCE = "https://research.fs.usda.gov/download/treesearch/37440.pdf";
|
|
993
|
+
var FAO_NATURAL_FIBRES_SOURCE = "https://www.fao.org/docrep/pdf/012/i0987e/i0987e00.pdf";
|
|
994
|
+
var CROSSOVER_DEFINITION_SOURCES = {
|
|
995
|
+
alabaster: "https://webapps.bgs.ac.uk/memoirs/docs/B06070.html",
|
|
996
|
+
brass: `${BRASS_MATERIAL_SOURCE}; ${BRASS_FINISH_SOURCE}`,
|
|
997
|
+
bronze: "https://archive.copper.org/applications/industrial/DesignGuide/terms.php; https://archive.copper.org/applications/architecture/arch_dhb/technical-discussion/copper_alloys/",
|
|
998
|
+
cherry: WOOD_HANDBOOK_SOURCE,
|
|
999
|
+
chestnut: WOOD_HANDBOOK_SOURCE,
|
|
1000
|
+
chrome: "ISO 1456:2009, https://www.iso.org/standard/50237.html; ISO 6158:2018, https://www.iso.org/standard/72269.html",
|
|
1001
|
+
clay: "https://pubs.usgs.gov/info/clays/",
|
|
1002
|
+
concrete: "https://www.concrete.org/frequentlyaskedquestions.aspx?faqid=640",
|
|
1003
|
+
copper: "https://archive.copper.org/applications/industrial/DesignGuide/selection/elect02.php",
|
|
1004
|
+
cork: "https://apcor.pt/en/what-it-is",
|
|
1005
|
+
cotton: FAO_NATURAL_FIBRES_SOURCE,
|
|
1006
|
+
denim: "https://cottonworks.com/encyclopedia-item/denim/",
|
|
1007
|
+
ebony: WOOD_HANDBOOK_SOURCE,
|
|
1008
|
+
gold: "https://www.usgs.gov/centers/national-minerals-information-center/gold-statistics-and-information",
|
|
1009
|
+
gunmetal: "https://live.copper.org/applications/marine/cuni/alloys/pub-206-copper-alloys-for-marine-environments.pdf",
|
|
1010
|
+
iron: "https://www.usgs.gov/centers/national-minerals-information-center/iron-and-steel-statistics-and-information",
|
|
1011
|
+
jade: "https://www.gia.edu/jade-description",
|
|
1012
|
+
jute: "https://www.fao.org/markets-and-trade/commodities-overview/fibres/jute-and-hard-fibres/",
|
|
1013
|
+
leather: "ISO 15115, https://www.iso.org/obp/ui?_escaped_fragment_=iso%3Astd%3Aiso%3A15115%3Aed-1%3Av1%3Aen",
|
|
1014
|
+
linen: "https://allianceflaxlinenhemp.eu/en/document_resources/35/download",
|
|
1015
|
+
mahogany: WOOD_HANDBOOK_SOURCE,
|
|
1016
|
+
marble: "https://www.naturalstoneinstitute.org/designprofessionals/varieties/definition/; ASTM C503 via https://www.naturalstoneinstitute.org/stoneprofessionals/astm/",
|
|
1017
|
+
nickel: `${NICKEL_MATERIAL_SOURCE}; ${NICKEL_FINISH_SOURCE}`,
|
|
1018
|
+
oak: WOOD_HANDBOOK_SOURCE,
|
|
1019
|
+
obsidian: "https://www.usgs.gov/glossary/volcano-hazards-program-glossary",
|
|
1020
|
+
onyx: "https://www.naturalstoneinstitute.org/consumers/varieties/marble/",
|
|
1021
|
+
pewter: "Getty AAT 300010979, https://www.getty.edu/vow/AATFullDisplay?find=&logic=AND¬e=&page=1&subjectid=300010979",
|
|
1022
|
+
platinum: "https://www.usgs.gov/centers/national-minerals-information-center/platinum-group-metals-statistics-and-information",
|
|
1023
|
+
rosewood: WOOD_HANDBOOK_SOURCE,
|
|
1024
|
+
silver: "https://silverinstitute.org/silver-element-essentials/",
|
|
1025
|
+
sisal: FAO_NATURAL_FIBRES_SOURCE,
|
|
1026
|
+
slate: "ASTM C629 via https://www.naturalstoneinstitute.org/stoneprofessionals/astm/",
|
|
1027
|
+
steel: "https://worldsteel.org/about-steel/what-is-steel/",
|
|
1028
|
+
stone: "https://www.naturalstoneinstitute.org/about/sponsorship-and-advertising/sponsored-content-guidelines/",
|
|
1029
|
+
suede: "ISO 15115, https://www.iso.org/obp/ui?_escaped_fragment_=iso%3Astd%3Aiso%3A15115%3Aed-1%3Av1%3Aen",
|
|
1030
|
+
teak: WOOD_HANDBOOK_SOURCE,
|
|
1031
|
+
terracotta: "Getty AAT 300047296, https://www.getty.edu/vow/AATFullDisplay?find=building&logic=AND¬e=&subjectid=300047296",
|
|
1032
|
+
travertine: "https://www.naturalstoneinstitute.org/about/sponsorship-and-advertising/sponsored-content-guidelines/",
|
|
1033
|
+
walnut: "https://research.fs.usda.gov/treesearch/32210",
|
|
1034
|
+
wood: WOOD_HANDBOOK_SOURCE,
|
|
1035
|
+
wool: FAO_NATURAL_FIBRES_SOURCE
|
|
1036
|
+
};
|
|
1037
|
+
var crossoverSource = (phrase) => `${MATERIALGRAPH_CROSSOVER_SOURCE}; ${CROSSOVER_DEFINITION_SOURCES[phrase]}; ${COLORSCOPE_CROSSOVER_SOURCE}`;
|
|
1038
|
+
|
|
985
1039
|
// src/axes/finish.ts
|
|
986
1040
|
var ESTATE = "DesignShop frozen estate finish vocabulary";
|
|
987
1041
|
var ESTATE_SNAPSHOT = "2026-08-25";
|
|
1042
|
+
var CROSSOVER_SNAPSHOT = "2026-08-30";
|
|
988
1043
|
var MG_SHEEN = "materialgraph ms_sheen";
|
|
989
1044
|
var MG_TEXTURE = "materialgraph ms_texture";
|
|
990
1045
|
var MG_SNAPSHOT = "2026-08-27";
|
|
@@ -1013,6 +1068,26 @@ var repaired = (slug, label, definition, band, note) => ({
|
|
|
1013
1068
|
usage: { band, corpus: CORPUS, snapshot: CORPUS_SNAPSHOT }
|
|
1014
1069
|
});
|
|
1015
1070
|
var FINISH_TREATMENT_TERMS = [
|
|
1071
|
+
{
|
|
1072
|
+
definition: "An exposed brass final surface applied over nickel-plated underlayers; it does not establish that the substrate or bulk material is brass.",
|
|
1073
|
+
label: "Brass",
|
|
1074
|
+
provenance: {
|
|
1075
|
+
basis: "referenced",
|
|
1076
|
+
snapshot: CROSSOVER_SNAPSHOT,
|
|
1077
|
+
source: BRASS_FINISH_SOURCE
|
|
1078
|
+
},
|
|
1079
|
+
slug: "brass"
|
|
1080
|
+
},
|
|
1081
|
+
{
|
|
1082
|
+
definition: "An electrodeposited chromium finish used in decorative nickel-plus-chromium coating systems or as an engineering-purpose chromium coating; it does not normalize the source word to chromium as a substance.",
|
|
1083
|
+
label: "Chrome",
|
|
1084
|
+
provenance: {
|
|
1085
|
+
basis: "standard",
|
|
1086
|
+
snapshot: CROSSOVER_SNAPSHOT,
|
|
1087
|
+
source: CROSSOVER_DEFINITION_SOURCES.chrome
|
|
1088
|
+
},
|
|
1089
|
+
slug: "chrome"
|
|
1090
|
+
},
|
|
1016
1091
|
term2("glazed", "Glazed", "Covered by a fused vitreous surface layer."),
|
|
1017
1092
|
term2(
|
|
1018
1093
|
"honed",
|
|
@@ -1024,6 +1099,16 @@ var FINISH_TREATMENT_TERMS = [
|
|
|
1024
1099
|
"Natural",
|
|
1025
1100
|
"Left close to the material's formed or worked state without an appearance-changing top finish."
|
|
1026
1101
|
),
|
|
1102
|
+
{
|
|
1103
|
+
definition: "An electrodeposited nickel coating; bright, satin, pearl, and black appearances require qualifiers, and the coating does not establish the substrate or bulk material.",
|
|
1104
|
+
label: "Nickel",
|
|
1105
|
+
provenance: {
|
|
1106
|
+
basis: "referenced",
|
|
1107
|
+
snapshot: CROSSOVER_SNAPSHOT,
|
|
1108
|
+
source: NICKEL_FINISH_SOURCE
|
|
1109
|
+
},
|
|
1110
|
+
slug: "nickel"
|
|
1111
|
+
},
|
|
1027
1112
|
term2(
|
|
1028
1113
|
"polished",
|
|
1029
1114
|
"Polished",
|
|
@@ -1166,14 +1251,28 @@ var FINISH_TERMS = [
|
|
|
1166
1251
|
...FINISH_TEXTURE_TERMS
|
|
1167
1252
|
];
|
|
1168
1253
|
|
|
1254
|
+
// src/search-corpus-source.ts
|
|
1255
|
+
var MATERIALGRAPH_SEARCH_CORPUS_COMMIT = "53df40868bfb09bfe69bc66c455c051e34005ae1";
|
|
1256
|
+
var MATERIALGRAPH_SEARCH_CORPUS_PATH = "packages/products/src/benchmark/fixtures/benchmark-cases-2026-07-31.1.json";
|
|
1257
|
+
var MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT = "2026-07-31";
|
|
1258
|
+
var MATERIALGRAPH_SEARCH_CORPUS = `materialgraph@${MATERIALGRAPH_SEARCH_CORPUS_COMMIT}:${MATERIALGRAPH_SEARCH_CORPUS_PATH}`;
|
|
1259
|
+
var searchCorpusEvidence = (phrases) => `${MATERIALGRAPH_SEARCH_CORPUS} (244-query external search corpus; phrase and admission evidence: ${phrases}; canonical boundary authored by Taxonomy)`;
|
|
1260
|
+
|
|
1169
1261
|
// src/axes/format.ts
|
|
1170
1262
|
var SOURCE2 = "DesignShop frozen estate format vocabulary";
|
|
1171
1263
|
var SNAPSHOT2 = "2026-08-25";
|
|
1172
|
-
var
|
|
1264
|
+
var SEARCH_REVIEW_DATE = "2026-08-31";
|
|
1265
|
+
var searchCorpusProvenance = (evidence) => ({
|
|
1266
|
+
basis: "evidenced",
|
|
1267
|
+
snapshot: MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
|
|
1268
|
+
source: searchCorpusEvidence(evidence)
|
|
1269
|
+
});
|
|
1270
|
+
var term3 = (slug, label, definition, extra = {}) => ({
|
|
1173
1271
|
definition,
|
|
1174
1272
|
label,
|
|
1175
1273
|
provenance: { basis: "evidenced", snapshot: SNAPSHOT2, source: SOURCE2 },
|
|
1176
|
-
slug
|
|
1274
|
+
slug,
|
|
1275
|
+
...extra
|
|
1177
1276
|
});
|
|
1178
1277
|
var FORMAT_TERMS = [
|
|
1179
1278
|
term3("area-rug", "Area rug", "A bounded loose-laid textile floor covering."),
|
|
@@ -1197,6 +1296,16 @@ var FORMAT_TERMS = [
|
|
|
1197
1296
|
"Mural",
|
|
1198
1297
|
"Supplied as a multi-panel image composed into one continuous scene."
|
|
1199
1298
|
),
|
|
1299
|
+
term3(
|
|
1300
|
+
"mosaic",
|
|
1301
|
+
"Mosaic",
|
|
1302
|
+
"Supplied as small pieces assembled or mounted together to install as one composed field, independent of material and visible motif.",
|
|
1303
|
+
{
|
|
1304
|
+
introducedAt: SEARCH_REVIEW_DATE,
|
|
1305
|
+
provenance: searchCorpusProvenance("mosaic"),
|
|
1306
|
+
reviewedAt: SEARCH_REVIEW_DATE
|
|
1307
|
+
}
|
|
1308
|
+
),
|
|
1200
1309
|
term3(
|
|
1201
1310
|
"panel",
|
|
1202
1311
|
"Panel",
|
|
@@ -1218,6 +1327,28 @@ var FORMAT_TERMS = [
|
|
|
1218
1327
|
"A large rigid sheet intended to minimise joints or be fabricated to shape."
|
|
1219
1328
|
),
|
|
1220
1329
|
term3("tile", "Tile", "A discrete modular surface unit."),
|
|
1330
|
+
term3(
|
|
1331
|
+
"penny-round",
|
|
1332
|
+
"Penny round",
|
|
1333
|
+
"A small round tile unit supplied for installation as a field, independent of its material and the layout made from it.",
|
|
1334
|
+
{
|
|
1335
|
+
altLabels: ["penny tile"],
|
|
1336
|
+
broaderSlug: "tile",
|
|
1337
|
+
introducedAt: SEARCH_REVIEW_DATE,
|
|
1338
|
+
provenance: searchCorpusProvenance("penny-tile"),
|
|
1339
|
+
reviewedAt: SEARCH_REVIEW_DATE
|
|
1340
|
+
}
|
|
1341
|
+
),
|
|
1342
|
+
term3(
|
|
1343
|
+
"veneer",
|
|
1344
|
+
"Veneer",
|
|
1345
|
+
"A thin facing layer supplied to be bonded or fixed to a substrate, independent of the material from which the facing is made.",
|
|
1346
|
+
{
|
|
1347
|
+
introducedAt: SEARCH_REVIEW_DATE,
|
|
1348
|
+
provenance: searchCorpusProvenance("veneer"),
|
|
1349
|
+
reviewedAt: SEARCH_REVIEW_DATE
|
|
1350
|
+
}
|
|
1351
|
+
),
|
|
1221
1352
|
term3(
|
|
1222
1353
|
"wide-plank",
|
|
1223
1354
|
"Wide plank",
|
|
@@ -1228,13 +1359,60 @@ var FORMAT_TERMS = [
|
|
|
1228
1359
|
// src/axes/material.ts
|
|
1229
1360
|
var SOURCE3 = "DesignShop frozen estate and Material Instruments material vocabularies";
|
|
1230
1361
|
var SNAPSHOT3 = "2026-08-25";
|
|
1362
|
+
var CROSSOVER_SNAPSHOT2 = "2026-08-30";
|
|
1363
|
+
var NATURAL_FIBRE_SLUG = "natural-fibre";
|
|
1364
|
+
var STONE_SLUG = "stone";
|
|
1231
1365
|
var term4 = (slug, label, definition) => ({
|
|
1232
1366
|
definition,
|
|
1233
1367
|
label,
|
|
1234
1368
|
provenance: { basis: "evidenced", snapshot: SNAPSHOT3, source: SOURCE3 },
|
|
1235
1369
|
slug
|
|
1236
1370
|
});
|
|
1371
|
+
var crossoverTerm = (slug, label, definition, source, broaderSlug) => ({
|
|
1372
|
+
...broaderSlug === void 0 ? {} : { broaderSlug },
|
|
1373
|
+
definition,
|
|
1374
|
+
label,
|
|
1375
|
+
provenance: {
|
|
1376
|
+
basis: "referenced",
|
|
1377
|
+
snapshot: CROSSOVER_SNAPSHOT2,
|
|
1378
|
+
source
|
|
1379
|
+
},
|
|
1380
|
+
slug
|
|
1381
|
+
});
|
|
1382
|
+
var standardCrossoverTerm = (slug, label, definition, source) => ({
|
|
1383
|
+
...crossoverTerm(slug, label, definition, source),
|
|
1384
|
+
provenance: {
|
|
1385
|
+
basis: "standard",
|
|
1386
|
+
snapshot: CROSSOVER_SNAPSHOT2,
|
|
1387
|
+
source
|
|
1388
|
+
}
|
|
1389
|
+
});
|
|
1390
|
+
var searchCorpusMaterial = (slug, label, definition, broaderSlug, referenceSource) => ({
|
|
1391
|
+
broaderSlug,
|
|
1392
|
+
definition,
|
|
1393
|
+
introducedAt: "2026-08-31",
|
|
1394
|
+
label,
|
|
1395
|
+
provenance: {
|
|
1396
|
+
basis: "evidenced",
|
|
1397
|
+
snapshot: MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
|
|
1398
|
+
source: `${searchCorpusEvidence(label)}; ${referenceSource}`
|
|
1399
|
+
},
|
|
1400
|
+
reviewedAt: "2026-08-31",
|
|
1401
|
+
slug
|
|
1402
|
+
});
|
|
1237
1403
|
var MATERIAL_TERMS = [
|
|
1404
|
+
crossoverTerm(
|
|
1405
|
+
"brass",
|
|
1406
|
+
"Brass",
|
|
1407
|
+
"A copper alloy whose principal alloying element is zinc.",
|
|
1408
|
+
BRASS_MATERIAL_SOURCE
|
|
1409
|
+
),
|
|
1410
|
+
crossoverTerm(
|
|
1411
|
+
"bronze",
|
|
1412
|
+
"Bronze",
|
|
1413
|
+
"A copper-alloy family historically associated with copper and tin; unmodified bronze does not identify a specific modern composition.",
|
|
1414
|
+
CROSSOVER_DEFINITION_SOURCES.bronze
|
|
1415
|
+
),
|
|
1238
1416
|
term4(
|
|
1239
1417
|
"ceramic",
|
|
1240
1418
|
"Ceramic",
|
|
@@ -1250,16 +1428,28 @@ var MATERIAL_TERMS = [
|
|
|
1250
1428
|
"Composite",
|
|
1251
1429
|
"An engineered material whose performance comes from two or more bound constituents."
|
|
1252
1430
|
),
|
|
1431
|
+
crossoverTerm(
|
|
1432
|
+
"copper",
|
|
1433
|
+
"Copper",
|
|
1434
|
+
"A metal with a designated minimum copper content of 99.3 percent in the UNS wrought-copper designation system.",
|
|
1435
|
+
CROSSOVER_DEFINITION_SOURCES.copper
|
|
1436
|
+
),
|
|
1253
1437
|
term4(
|
|
1254
1438
|
"laminate",
|
|
1255
1439
|
"Laminate",
|
|
1256
1440
|
"A layered sheet material consolidated around a decorative or protective face."
|
|
1257
1441
|
),
|
|
1258
1442
|
term4(
|
|
1259
|
-
|
|
1443
|
+
NATURAL_FIBRE_SLUG,
|
|
1260
1444
|
"Natural fibre",
|
|
1261
1445
|
"A material whose visible fibre is plant- or animal-derived."
|
|
1262
1446
|
),
|
|
1447
|
+
crossoverTerm(
|
|
1448
|
+
"nickel",
|
|
1449
|
+
"Nickel",
|
|
1450
|
+
"The metallic chemical element Ni used in solid metals and alloys; the bare term does not establish alloy, grade, or bulk composition.",
|
|
1451
|
+
NICKEL_MATERIAL_SOURCE
|
|
1452
|
+
),
|
|
1263
1453
|
term4(
|
|
1264
1454
|
"paper",
|
|
1265
1455
|
"Paper",
|
|
@@ -1270,24 +1460,257 @@ var MATERIAL_TERMS = [
|
|
|
1270
1460
|
"Solid surface",
|
|
1271
1461
|
"A homogeneous or near-homogeneous cast sheet made from resin and mineral filler."
|
|
1272
1462
|
),
|
|
1273
|
-
|
|
1274
|
-
"
|
|
1463
|
+
crossoverTerm(
|
|
1464
|
+
"silver",
|
|
1465
|
+
"Silver",
|
|
1466
|
+
"The metallic chemical element Ag, atomic number 47.",
|
|
1467
|
+
CROSSOVER_DEFINITION_SOURCES.silver
|
|
1468
|
+
),
|
|
1469
|
+
crossoverTerm(
|
|
1470
|
+
"slate",
|
|
1471
|
+
"Slate",
|
|
1472
|
+
"A commercial dimension-stone group separately specified for use as slate dimension stone.",
|
|
1473
|
+
CROSSOVER_DEFINITION_SOURCES.slate,
|
|
1474
|
+
STONE_SLUG
|
|
1475
|
+
),
|
|
1476
|
+
crossoverTerm(
|
|
1477
|
+
STONE_SLUG,
|
|
1275
1478
|
"Stone",
|
|
1276
|
-
"Naturally occurring rock quarried and worked for use as a finish or component."
|
|
1479
|
+
"Naturally occurring rock quarried and worked for use as a finish or component.",
|
|
1480
|
+
CROSSOVER_DEFINITION_SOURCES.stone
|
|
1277
1481
|
),
|
|
1278
|
-
|
|
1482
|
+
crossoverTerm(
|
|
1483
|
+
"marble",
|
|
1484
|
+
"Marble",
|
|
1485
|
+
"A commercial dimension-stone group that includes stone worked and sold as marble, including some dense or partially metamorphosed limestone.",
|
|
1486
|
+
CROSSOVER_DEFINITION_SOURCES.marble,
|
|
1487
|
+
STONE_SLUG
|
|
1488
|
+
),
|
|
1489
|
+
crossoverTerm(
|
|
1490
|
+
"steel",
|
|
1491
|
+
"Steel",
|
|
1492
|
+
"An iron-carbon alloy family spanning many grades rather than one uniform product.",
|
|
1493
|
+
CROSSOVER_DEFINITION_SOURCES.steel
|
|
1494
|
+
),
|
|
1495
|
+
searchCorpusMaterial(
|
|
1496
|
+
"stainless-steel",
|
|
1497
|
+
"Stainless steel",
|
|
1498
|
+
"A corrosion-resistant steel alloy family containing sufficient chromium to form a protective passive layer, named as a bulk material rather than a surface finish or colour.",
|
|
1499
|
+
"steel",
|
|
1500
|
+
CROSSOVER_DEFINITION_SOURCES.steel
|
|
1501
|
+
),
|
|
1502
|
+
crossoverTerm(
|
|
1279
1503
|
"wood",
|
|
1280
1504
|
"Wood",
|
|
1281
|
-
"Lignocellulosic material obtained from the trunk or branches of a tree or shrub."
|
|
1505
|
+
"Lignocellulosic material obtained from the trunk or branches of a tree or shrub.",
|
|
1506
|
+
CROSSOVER_DEFINITION_SOURCES.wood
|
|
1507
|
+
),
|
|
1508
|
+
crossoverTerm(
|
|
1509
|
+
"oak",
|
|
1510
|
+
"Oak",
|
|
1511
|
+
"Wood from trees in the Quercus genus, including distinct red-oak and white-oak species groups.",
|
|
1512
|
+
CROSSOVER_DEFINITION_SOURCES.oak,
|
|
1513
|
+
"wood"
|
|
1514
|
+
),
|
|
1515
|
+
searchCorpusMaterial(
|
|
1516
|
+
"white-oak",
|
|
1517
|
+
"White oak",
|
|
1518
|
+
"Timber from the white-oak species group within the genus Quercus, named as a wood material rather than a colour or surface finish.",
|
|
1519
|
+
"oak",
|
|
1520
|
+
CROSSOVER_DEFINITION_SOURCES.oak
|
|
1521
|
+
),
|
|
1522
|
+
crossoverTerm(
|
|
1523
|
+
"teak",
|
|
1524
|
+
"Teak",
|
|
1525
|
+
"Wood from Tectona grandis, named as timber rather than as a colour or surface treatment.",
|
|
1526
|
+
CROSSOVER_DEFINITION_SOURCES.teak,
|
|
1527
|
+
"wood"
|
|
1282
1528
|
),
|
|
1283
1529
|
{
|
|
1284
|
-
...
|
|
1530
|
+
...crossoverTerm(
|
|
1285
1531
|
"walnut",
|
|
1286
1532
|
"Walnut",
|
|
1287
|
-
"Wood obtained from a tree in the genus Juglans, named as a material rather than as a colour."
|
|
1533
|
+
"Wood obtained from a tree in the genus Juglans, named as a material rather than as a colour.",
|
|
1534
|
+
CROSSOVER_DEFINITION_SOURCES.walnut
|
|
1288
1535
|
),
|
|
1289
1536
|
broaderSlug: "wood"
|
|
1290
1537
|
},
|
|
1538
|
+
crossoverTerm(
|
|
1539
|
+
"clay",
|
|
1540
|
+
"Clay",
|
|
1541
|
+
"A naturally occurring fine-grained earthy material composed largely of clay minerals; the bare term does not mean fired ceramic.",
|
|
1542
|
+
CROSSOVER_DEFINITION_SOURCES.clay
|
|
1543
|
+
),
|
|
1544
|
+
crossoverTerm(
|
|
1545
|
+
"cotton",
|
|
1546
|
+
"Cotton",
|
|
1547
|
+
"A natural seed-hair textile fibre; the fibre identity does not establish weave, blend, dye, or finish.",
|
|
1548
|
+
CROSSOVER_DEFINITION_SOURCES.cotton,
|
|
1549
|
+
NATURAL_FIBRE_SLUG
|
|
1550
|
+
),
|
|
1551
|
+
standardCrossoverTerm(
|
|
1552
|
+
"leather",
|
|
1553
|
+
"Leather",
|
|
1554
|
+
"Tanned animal hide or skin that retains its fibrous structure; animal, layer, tanning, coating, and finish remain unspecified.",
|
|
1555
|
+
CROSSOVER_DEFINITION_SOURCES.leather
|
|
1556
|
+
),
|
|
1557
|
+
crossoverTerm(
|
|
1558
|
+
"linen",
|
|
1559
|
+
"Linen",
|
|
1560
|
+
"A flax-derived yarn or fabric material; fibre, yarn, and finished fabric are distinct forms.",
|
|
1561
|
+
CROSSOVER_DEFINITION_SOURCES.linen,
|
|
1562
|
+
NATURAL_FIBRE_SLUG
|
|
1563
|
+
),
|
|
1564
|
+
crossoverTerm(
|
|
1565
|
+
"jute",
|
|
1566
|
+
"Jute",
|
|
1567
|
+
"A plant bast fibre used as a textile and industrial fibre; the word does not establish construction, blend, treatment, or colour.",
|
|
1568
|
+
CROSSOVER_DEFINITION_SOURCES.jute,
|
|
1569
|
+
NATURAL_FIBRE_SLUG
|
|
1570
|
+
),
|
|
1571
|
+
crossoverTerm(
|
|
1572
|
+
"sisal",
|
|
1573
|
+
"Sisal",
|
|
1574
|
+
"A natural leaf fibre, distinct from a floorcovering or other product made from it.",
|
|
1575
|
+
CROSSOVER_DEFINITION_SOURCES.sisal,
|
|
1576
|
+
NATURAL_FIBRE_SLUG
|
|
1577
|
+
),
|
|
1578
|
+
crossoverTerm(
|
|
1579
|
+
"cork",
|
|
1580
|
+
"Cork",
|
|
1581
|
+
"Bark of the cork oak, Quercus suber; natural cork, agglomerate, backing, veneer, and cork-look appearance remain distinct.",
|
|
1582
|
+
CROSSOVER_DEFINITION_SOURCES.cork
|
|
1583
|
+
),
|
|
1584
|
+
crossoverTerm(
|
|
1585
|
+
"wool",
|
|
1586
|
+
"Wool",
|
|
1587
|
+
"A natural animal fibre; species, grade, blend, textile construction, and finish remain unspecified.",
|
|
1588
|
+
CROSSOVER_DEFINITION_SOURCES.wool,
|
|
1589
|
+
NATURAL_FIBRE_SLUG
|
|
1590
|
+
),
|
|
1591
|
+
standardCrossoverTerm(
|
|
1592
|
+
"suede",
|
|
1593
|
+
"Suede",
|
|
1594
|
+
"Leather or split leather whose wearing surface is mechanically finished to a velvet-like nap.",
|
|
1595
|
+
CROSSOVER_DEFINITION_SOURCES.suede
|
|
1596
|
+
),
|
|
1597
|
+
crossoverTerm(
|
|
1598
|
+
"concrete",
|
|
1599
|
+
"Concrete",
|
|
1600
|
+
"A composite of hydraulic cement, aggregates, water, and optional additions; mix, reinforcement, coating, polish, and imitation remain distinct.",
|
|
1601
|
+
CROSSOVER_DEFINITION_SOURCES.concrete
|
|
1602
|
+
),
|
|
1603
|
+
crossoverTerm(
|
|
1604
|
+
"mahogany",
|
|
1605
|
+
"Mahogany",
|
|
1606
|
+
"A commercially named wood represented by more than one botanical group; the bare name does not establish species or construction.",
|
|
1607
|
+
CROSSOVER_DEFINITION_SOURCES.mahogany,
|
|
1608
|
+
"wood"
|
|
1609
|
+
),
|
|
1610
|
+
crossoverTerm(
|
|
1611
|
+
"ebony",
|
|
1612
|
+
"Ebony",
|
|
1613
|
+
"Wood traded under ebony names across Diospyros species; the trade name is not a botanical identity or proof of black colour.",
|
|
1614
|
+
CROSSOVER_DEFINITION_SOURCES.ebony,
|
|
1615
|
+
"wood"
|
|
1616
|
+
),
|
|
1617
|
+
crossoverTerm(
|
|
1618
|
+
"cherry",
|
|
1619
|
+
"Cherry",
|
|
1620
|
+
"A timber reading that includes black cherry, Prunus serotina, in the North American trade; the common name alone does not establish species.",
|
|
1621
|
+
CROSSOVER_DEFINITION_SOURCES.cherry,
|
|
1622
|
+
"wood"
|
|
1623
|
+
),
|
|
1624
|
+
crossoverTerm(
|
|
1625
|
+
"chestnut",
|
|
1626
|
+
"Chestnut",
|
|
1627
|
+
"A timber reading that includes American chestnut, Castanea dentata; the common name does not establish species or construction.",
|
|
1628
|
+
CROSSOVER_DEFINITION_SOURCES.chestnut,
|
|
1629
|
+
"wood"
|
|
1630
|
+
),
|
|
1631
|
+
crossoverTerm(
|
|
1632
|
+
"rosewood",
|
|
1633
|
+
"Rosewood",
|
|
1634
|
+
"A trade-name wood reading spanning distinct Dalbergia timbers; species and trade substitution require separate evidence.",
|
|
1635
|
+
CROSSOVER_DEFINITION_SOURCES.rosewood,
|
|
1636
|
+
"wood"
|
|
1637
|
+
),
|
|
1638
|
+
crossoverTerm(
|
|
1639
|
+
"gold",
|
|
1640
|
+
"Gold",
|
|
1641
|
+
"The metallic chemical element Au; solid metal, alloy, leaf, plating, coating, and gold-coloured appearance are not interchangeable.",
|
|
1642
|
+
CROSSOVER_DEFINITION_SOURCES.gold
|
|
1643
|
+
),
|
|
1644
|
+
crossoverTerm(
|
|
1645
|
+
"pewter",
|
|
1646
|
+
"Pewter",
|
|
1647
|
+
"A tin-alloy family with historically variable lead, antimony, and copper content; the bare term does not identify a finish.",
|
|
1648
|
+
CROSSOVER_DEFINITION_SOURCES.pewter
|
|
1649
|
+
),
|
|
1650
|
+
crossoverTerm(
|
|
1651
|
+
"iron",
|
|
1652
|
+
"Iron",
|
|
1653
|
+
"The metallic chemical element Fe; bare usage may instead denote cast iron, wrought iron, steel, oxide, or an iron-look finish.",
|
|
1654
|
+
CROSSOVER_DEFINITION_SOURCES.iron
|
|
1655
|
+
),
|
|
1656
|
+
crossoverTerm(
|
|
1657
|
+
"gunmetal",
|
|
1658
|
+
"Gunmetal",
|
|
1659
|
+
"A copper-tin-zinc casting-alloy family with grade-dependent composition.",
|
|
1660
|
+
CROSSOVER_DEFINITION_SOURCES.gunmetal
|
|
1661
|
+
),
|
|
1662
|
+
crossoverTerm(
|
|
1663
|
+
"platinum",
|
|
1664
|
+
"Platinum",
|
|
1665
|
+
"A platinum-group metal; solid metal, alloy, plating, and platinum-coloured appearance require separate evidence.",
|
|
1666
|
+
CROSSOVER_DEFINITION_SOURCES.platinum
|
|
1667
|
+
),
|
|
1668
|
+
crossoverTerm(
|
|
1669
|
+
"onyx",
|
|
1670
|
+
"Onyx",
|
|
1671
|
+
"A commercial architectural stone, commonly translucent and distinct from commercial marble; the name does not settle every mineralogical use.",
|
|
1672
|
+
CROSSOVER_DEFINITION_SOURCES.onyx,
|
|
1673
|
+
STONE_SLUG
|
|
1674
|
+
),
|
|
1675
|
+
crossoverTerm(
|
|
1676
|
+
"travertine",
|
|
1677
|
+
"Travertine",
|
|
1678
|
+
"A named natural dimension-stone material; quarry, grade, fill, cut, and surface treatment remain unspecified.",
|
|
1679
|
+
CROSSOVER_DEFINITION_SOURCES.travertine,
|
|
1680
|
+
STONE_SLUG
|
|
1681
|
+
),
|
|
1682
|
+
crossoverTerm(
|
|
1683
|
+
"alabaster",
|
|
1684
|
+
"Alabaster",
|
|
1685
|
+
"A fine-grained, often translucent gypsum used as decorative stone; historical oriental alabaster can denote carbonate stone.",
|
|
1686
|
+
CROSSOVER_DEFINITION_SOURCES.alabaster,
|
|
1687
|
+
STONE_SLUG
|
|
1688
|
+
),
|
|
1689
|
+
crossoverTerm(
|
|
1690
|
+
"jade",
|
|
1691
|
+
"Jade",
|
|
1692
|
+
"An umbrella gem-material term for nephrite, jadeite, and, under defined conditions, green omphacite; it is not one mineral.",
|
|
1693
|
+
CROSSOVER_DEFINITION_SOURCES.jade
|
|
1694
|
+
),
|
|
1695
|
+
crossoverTerm(
|
|
1696
|
+
"obsidian",
|
|
1697
|
+
"Obsidian",
|
|
1698
|
+
"Naturally occurring dense volcanic glass, usually rhyolitic and typically but not necessarily black.",
|
|
1699
|
+
CROSSOVER_DEFINITION_SOURCES.obsidian
|
|
1700
|
+
),
|
|
1701
|
+
crossoverTerm(
|
|
1702
|
+
"terracotta",
|
|
1703
|
+
"Terracotta",
|
|
1704
|
+
"A coarse porous fired-clay material; raw clay, fired body, glaze, object type, and colour remain distinct.",
|
|
1705
|
+
CROSSOVER_DEFINITION_SOURCES.terracotta,
|
|
1706
|
+
"ceramic"
|
|
1707
|
+
),
|
|
1708
|
+
crossoverTerm(
|
|
1709
|
+
"denim",
|
|
1710
|
+
"Denim",
|
|
1711
|
+
"A woven fabric conventionally made with indigo-dyed warp and undyed filling yarns in a twill construction; blends and non-blue denim exist.",
|
|
1712
|
+
CROSSOVER_DEFINITION_SOURCES.denim
|
|
1713
|
+
),
|
|
1291
1714
|
term4(
|
|
1292
1715
|
"vinyl",
|
|
1293
1716
|
"Vinyl",
|
|
@@ -1447,7 +1870,7 @@ var PALETTE_HUE_TERMS = [
|
|
|
1447
1870
|
slug: "black"
|
|
1448
1871
|
},
|
|
1449
1872
|
{
|
|
1450
|
-
altLabels: ["warm neutral", "sand"
|
|
1873
|
+
altLabels: ["warm neutral", "sand"],
|
|
1451
1874
|
label: "Beige",
|
|
1452
1875
|
slug: "beige"
|
|
1453
1876
|
},
|
|
@@ -1467,12 +1890,12 @@ var PALETTE_HUE_TERMS = [
|
|
|
1467
1890
|
slug: "red"
|
|
1468
1891
|
},
|
|
1469
1892
|
{
|
|
1470
|
-
altLabels: ["
|
|
1893
|
+
altLabels: ["rust"],
|
|
1471
1894
|
label: "Orange",
|
|
1472
1895
|
slug: "orange"
|
|
1473
1896
|
},
|
|
1474
1897
|
{
|
|
1475
|
-
altLabels: ["
|
|
1898
|
+
altLabels: ["mustard", "ochre"],
|
|
1476
1899
|
label: "Yellow",
|
|
1477
1900
|
slug: "yellow"
|
|
1478
1901
|
},
|
|
@@ -2323,8 +2746,8 @@ var uniclass2 = (slug, label, match) => ({
|
|
|
2323
2746
|
match,
|
|
2324
2747
|
scheme: "uniclass"
|
|
2325
2748
|
});
|
|
2326
|
-
var searchedUniclass = (query) => ({
|
|
2327
|
-
date
|
|
2749
|
+
var searchedUniclass = (query, date = "2026-08-27") => ({
|
|
2750
|
+
date,
|
|
2328
2751
|
query,
|
|
2329
2752
|
scheme: "uniclass",
|
|
2330
2753
|
via: "uniclass.thenbs.com/taxon, Pr table walked from Pr_20 to Pr_90"
|
|
@@ -2333,6 +2756,7 @@ var ESTATE2 = "DesignShop frozen estate and Material Instruments product vocabul
|
|
|
2333
2756
|
var ESTATE_SNAPSHOT2 = "2026-08-25";
|
|
2334
2757
|
var CORPUS2 = "Material Bank catalogue, us_hierarchy_category_v2 level-2 rollup";
|
|
2335
2758
|
var CORPUS_SNAPSHOT2 = "2026-08-27";
|
|
2759
|
+
var SEARCH_REVIEW_DATE2 = "2026-08-31";
|
|
2336
2760
|
var term6 = (slug, label, definition, extra = {}) => ({
|
|
2337
2761
|
definition,
|
|
2338
2762
|
label,
|
|
@@ -2347,6 +2771,19 @@ var fromCorpus = (slug, label, definition, extra = {}) => ({
|
|
|
2347
2771
|
slug,
|
|
2348
2772
|
...extra
|
|
2349
2773
|
});
|
|
2774
|
+
var fromSearchCorpus = (slug, label, definition, extra = {}) => ({
|
|
2775
|
+
definition,
|
|
2776
|
+
introducedAt: SEARCH_REVIEW_DATE2,
|
|
2777
|
+
label,
|
|
2778
|
+
provenance: {
|
|
2779
|
+
basis: "evidenced",
|
|
2780
|
+
snapshot: MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
|
|
2781
|
+
source: searchCorpusEvidence(label)
|
|
2782
|
+
},
|
|
2783
|
+
reviewedAt: SEARCH_REVIEW_DATE2,
|
|
2784
|
+
slug,
|
|
2785
|
+
...extra
|
|
2786
|
+
});
|
|
2350
2787
|
var PRODUCT_CATEGORY_TERMS = [
|
|
2351
2788
|
term6(
|
|
2352
2789
|
"tile",
|
|
@@ -2361,13 +2798,16 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
2361
2798
|
"Carpet and rug",
|
|
2362
2799
|
"A textile floor covering, fixed or loose laid.",
|
|
2363
2800
|
{
|
|
2801
|
+
altLabels: ["carpet", "rug"],
|
|
2364
2802
|
external: [
|
|
2365
2803
|
uniclass2(
|
|
2366
2804
|
"Pr_35_57_11",
|
|
2367
2805
|
"Carpets, carpet tiles, coverings, underlays and mats",
|
|
2368
2806
|
"exact"
|
|
2369
2807
|
)
|
|
2370
|
-
]
|
|
2808
|
+
],
|
|
2809
|
+
introducedAt: "2026-08-30",
|
|
2810
|
+
reviewedAt: "2026-08-31"
|
|
2371
2811
|
}
|
|
2372
2812
|
),
|
|
2373
2813
|
term6(
|
|
@@ -2536,6 +2976,113 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
2536
2976
|
"Ceiling system",
|
|
2537
2977
|
"A suspended or applied ceiling product supplied with its own grid, carrier or fixing method.",
|
|
2538
2978
|
{ external: [uniclass2("Pr_35_93_13", "Ceiling infill units", "close")] }
|
|
2979
|
+
),
|
|
2980
|
+
fromSearchCorpus(
|
|
2981
|
+
"sconce",
|
|
2982
|
+
"Sconce",
|
|
2983
|
+
"A wall-mounted luminaire supplied as a complete light fitting, not the wall it mounts to or the light effect it produces.",
|
|
2984
|
+
{
|
|
2985
|
+
altLabels: ["wall sconce", "wall light"],
|
|
2986
|
+
broaderSlug: "luminaire",
|
|
2987
|
+
searchedWithout: [
|
|
2988
|
+
searchedUniclass("sconce, wall sconce, wall light", SEARCH_REVIEW_DATE2)
|
|
2989
|
+
]
|
|
2990
|
+
}
|
|
2991
|
+
),
|
|
2992
|
+
fromSearchCorpus(
|
|
2993
|
+
"chandelier",
|
|
2994
|
+
"Chandelier",
|
|
2995
|
+
"A suspended decorative luminaire with multiple arms, branches or light sources, independent of the ceiling system supporting it.",
|
|
2996
|
+
{
|
|
2997
|
+
broaderSlug: "luminaire",
|
|
2998
|
+
external: [uniclass2("Pr_70_70_48_13", "Chandeliers", "exact")]
|
|
2999
|
+
}
|
|
3000
|
+
),
|
|
3001
|
+
fromSearchCorpus(
|
|
3002
|
+
"pendant-luminaire",
|
|
3003
|
+
"Pendant luminaire",
|
|
3004
|
+
"A luminaire suspended from above as an individual fitting, distinct from its cable, track or ceiling support.",
|
|
3005
|
+
{
|
|
3006
|
+
altLabels: ["pendant", "pendant light"],
|
|
3007
|
+
broaderSlug: "luminaire",
|
|
3008
|
+
external: [uniclass2("Pr_70_70_48_62", "Pendant luminaires", "exact")]
|
|
3009
|
+
}
|
|
3010
|
+
),
|
|
3011
|
+
fromSearchCorpus(
|
|
3012
|
+
"track-luminaire",
|
|
3013
|
+
"Track luminaire",
|
|
3014
|
+
"A luminaire made to attach to and draw power from a lighting track, distinct from the track and its electrical accessories.",
|
|
3015
|
+
{
|
|
3016
|
+
altLabels: ["track lighting", "track light"],
|
|
3017
|
+
broaderSlug: "luminaire",
|
|
3018
|
+
searchedWithout: [
|
|
3019
|
+
searchedUniclass("track luminaire, track light", SEARCH_REVIEW_DATE2)
|
|
3020
|
+
]
|
|
3021
|
+
}
|
|
3022
|
+
),
|
|
3023
|
+
fromSearchCorpus(
|
|
3024
|
+
"sofa",
|
|
3025
|
+
"Sofa",
|
|
3026
|
+
"An upholstered seating product for two or more people, independent of its upholstery material or room placement.",
|
|
3027
|
+
{
|
|
3028
|
+
altLabels: ["couch"],
|
|
3029
|
+
broaderSlug: "seating",
|
|
3030
|
+
external: [uniclass2("Pr_40_50_12_81", "Sofas", "exact")]
|
|
3031
|
+
}
|
|
3032
|
+
),
|
|
3033
|
+
fromSearchCorpus(
|
|
3034
|
+
"mosaic-tile",
|
|
3035
|
+
"Mosaic tile",
|
|
3036
|
+
"A tile product composed of small tesserae supplied loose or mounted for installation as a field, independent of their material or visible motif.",
|
|
3037
|
+
{
|
|
3038
|
+
altLabels: ["mosaic"],
|
|
3039
|
+
broaderSlug: "tile",
|
|
3040
|
+
external: [uniclass2("Pr_35_93_96_53", "Mosaic tiles", "exact")]
|
|
3041
|
+
}
|
|
3042
|
+
),
|
|
3043
|
+
fromSearchCorpus(
|
|
3044
|
+
"wall-panel",
|
|
3045
|
+
"Wall panel",
|
|
3046
|
+
"A panel product supplied to form or cover the visible face of a wall, independent of the panel material and the wall element behind it.",
|
|
3047
|
+
{
|
|
3048
|
+
altLabels: ["wall panelling", "wall paneling"],
|
|
3049
|
+
broaderSlug: "wallcovering",
|
|
3050
|
+
searchedWithout: [
|
|
3051
|
+
searchedUniclass(
|
|
3052
|
+
"wall panel, wall panelling, wall paneling",
|
|
3053
|
+
SEARCH_REVIEW_DATE2
|
|
3054
|
+
)
|
|
3055
|
+
]
|
|
3056
|
+
}
|
|
3057
|
+
),
|
|
3058
|
+
fromSearchCorpus(
|
|
3059
|
+
"acoustic-ceiling-system",
|
|
3060
|
+
"Acoustic ceiling system",
|
|
3061
|
+
"A ceiling system specified to absorb or control sound, independent of the material, module format or space in which it is installed.",
|
|
3062
|
+
{
|
|
3063
|
+
altLabels: ["acoustic ceiling"],
|
|
3064
|
+
broaderSlug: "ceiling-system",
|
|
3065
|
+
searchedWithout: [
|
|
3066
|
+
searchedUniclass(
|
|
3067
|
+
"acoustic ceiling system, acoustic ceiling",
|
|
3068
|
+
SEARCH_REVIEW_DATE2
|
|
3069
|
+
)
|
|
3070
|
+
]
|
|
3071
|
+
}
|
|
3072
|
+
),
|
|
3073
|
+
fromSearchCorpus(
|
|
3074
|
+
"upholstery-textile",
|
|
3075
|
+
"Upholstery textile",
|
|
3076
|
+
"A textile product supplied for covering furniture, distinct from the furniture, the upholstery application and the fibre or hide material.",
|
|
3077
|
+
{
|
|
3078
|
+
broaderSlug: "textile",
|
|
3079
|
+
searchedWithout: [
|
|
3080
|
+
searchedUniclass(
|
|
3081
|
+
"upholstery textile, upholstery fabric",
|
|
3082
|
+
SEARCH_REVIEW_DATE2
|
|
3083
|
+
)
|
|
3084
|
+
]
|
|
3085
|
+
}
|
|
2539
3086
|
)
|
|
2540
3087
|
];
|
|
2541
3088
|
|
|
@@ -6566,8 +7113,9 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
|
|
|
6566
7113
|
|
|
6567
7114
|
// src/v1.ts
|
|
6568
7115
|
var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
|
|
6569
|
-
var TAXONOMY_SNAPSHOT = "2026-08-
|
|
6570
|
-
var TAXONOMY_VERSION = "1.
|
|
7116
|
+
var TAXONOMY_SNAPSHOT = "2026-08-31";
|
|
7117
|
+
var TAXONOMY_VERSION = "1.1.1";
|
|
7118
|
+
var PUBLISHED_V1_BASELINE = "2026-08-30";
|
|
6571
7119
|
var compareText = (left, right) => {
|
|
6572
7120
|
if (left < right) {
|
|
6573
7121
|
return -1;
|
|
@@ -6602,8 +7150,8 @@ var lifecycleFor = (term8) => {
|
|
|
6602
7150
|
successorAxis.facets.length > 1 || successorAxis.facets[0]?.slug !== successorAxis.slug
|
|
6603
7151
|
);
|
|
6604
7152
|
return {
|
|
6605
|
-
introducedAt:
|
|
6606
|
-
reviewedAt:
|
|
7153
|
+
introducedAt: term8?.introducedAt ?? PUBLISHED_V1_BASELINE,
|
|
7154
|
+
reviewedAt: term8?.reviewedAt ?? term8?.introducedAt ?? PUBLISHED_V1_BASELINE,
|
|
6607
7155
|
status: term8?.status ?? "active",
|
|
6608
7156
|
...supersededBy === void 0 ? {} : { supersededBy }
|
|
6609
7157
|
};
|
|
@@ -6813,17 +7361,18 @@ var buildKnowledgeGraph = () => {
|
|
|
6813
7361
|
};
|
|
6814
7362
|
var KNOWLEDGE_GRAPH = buildKnowledgeGraph();
|
|
6815
7363
|
var COLOR_FAMILY_REFERENCE_KIND = "color-family";
|
|
7364
|
+
var NAMED_COLOR_REFERENCE_KIND = "named-color";
|
|
6816
7365
|
var COLOR_SCOPE_REFERENCE_KINDS = [
|
|
6817
7366
|
"chroma-level",
|
|
6818
7367
|
COLOR_FAMILY_REFERENCE_KIND,
|
|
6819
7368
|
"lightness-level",
|
|
6820
|
-
|
|
7369
|
+
NAMED_COLOR_REFERENCE_KIND,
|
|
6821
7370
|
"palette-mood",
|
|
6822
7371
|
"temperature-level"
|
|
6823
7372
|
];
|
|
6824
|
-
var lexicalGovernance = (explanation, provenance) => ({
|
|
7373
|
+
var lexicalGovernance = (explanation, provenance, lifecycle = lifecycleFor()) => ({
|
|
6825
7374
|
explanation,
|
|
6826
|
-
lifecycle
|
|
7375
|
+
lifecycle,
|
|
6827
7376
|
provenance,
|
|
6828
7377
|
steward: "@instruments/taxonomy"
|
|
6829
7378
|
});
|
|
@@ -6839,17 +7388,88 @@ var WALNUT_MATERIAL = {
|
|
|
6839
7388
|
uri: `${TAXONOMY_BASE_URI}/id/material/walnut`
|
|
6840
7389
|
};
|
|
6841
7390
|
var WALNUT_COLOUR = {
|
|
6842
|
-
...colorScope("brown-grayish-walnut",
|
|
7391
|
+
...colorScope("brown-grayish-walnut", NAMED_COLOR_REFERENCE_KIND),
|
|
6843
7392
|
role: "secondary"
|
|
6844
7393
|
};
|
|
7394
|
+
var crossoverAmbiguity = (phrase, taxonomyUri, colorScopeIdentifier, explanation, source, additionalTaxonomyUris = []) => ({
|
|
7395
|
+
explanation,
|
|
7396
|
+
governance: lexicalGovernance(
|
|
7397
|
+
"Taxonomy preserves the evidenced readings without assigning a default, role, contextual preference, or consumer route.",
|
|
7398
|
+
{
|
|
7399
|
+
basis: "evidenced",
|
|
7400
|
+
snapshot: PUBLISHED_V1_BASELINE,
|
|
7401
|
+
source
|
|
7402
|
+
}
|
|
7403
|
+
),
|
|
7404
|
+
outcome: "ambiguous",
|
|
7405
|
+
phrase,
|
|
7406
|
+
readings: [
|
|
7407
|
+
{ authority: "taxonomy", uri: taxonomyUri },
|
|
7408
|
+
colorScope(colorScopeIdentifier, NAMED_COLOR_REFERENCE_KIND),
|
|
7409
|
+
...additionalTaxonomyUris.map((uri) => ({
|
|
7410
|
+
authority: "taxonomy",
|
|
7411
|
+
uri
|
|
7412
|
+
}))
|
|
7413
|
+
]
|
|
7414
|
+
});
|
|
7415
|
+
var crossoverEquivalent = (phrase, taxonomyUri, explanation, source) => ({
|
|
7416
|
+
explanation,
|
|
7417
|
+
governance: lexicalGovernance(
|
|
7418
|
+
"Taxonomy records the evidenced material reading without assigning a consumer route.",
|
|
7419
|
+
{
|
|
7420
|
+
basis: "evidenced",
|
|
7421
|
+
snapshot: PUBLISHED_V1_BASELINE,
|
|
7422
|
+
source
|
|
7423
|
+
}
|
|
7424
|
+
),
|
|
7425
|
+
outcome: "equivalent",
|
|
7426
|
+
phrase,
|
|
7427
|
+
target: { authority: "taxonomy", uri: taxonomyUri }
|
|
7428
|
+
});
|
|
7429
|
+
var crossoverTaxonomyAmbiguity = (phrase, readings, explanation, source, snapshot = PUBLISHED_V1_BASELINE, lifecycle = lifecycleFor()) => {
|
|
7430
|
+
const [first, second] = readings;
|
|
7431
|
+
return {
|
|
7432
|
+
explanation,
|
|
7433
|
+
governance: lexicalGovernance(
|
|
7434
|
+
"Taxonomy preserves the evidenced readings without assigning a default, role, contextual preference, or consumer route.",
|
|
7435
|
+
{
|
|
7436
|
+
basis: "evidenced",
|
|
7437
|
+
snapshot,
|
|
7438
|
+
source
|
|
7439
|
+
},
|
|
7440
|
+
lifecycle
|
|
7441
|
+
),
|
|
7442
|
+
outcome: "ambiguous",
|
|
7443
|
+
phrase,
|
|
7444
|
+
readings: [
|
|
7445
|
+
{ authority: "taxonomy", uri: first },
|
|
7446
|
+
{ authority: "taxonomy", uri: second }
|
|
7447
|
+
]
|
|
7448
|
+
};
|
|
7449
|
+
};
|
|
6845
7450
|
var AUTHORED_LEXICAL_ENTRIES = [
|
|
7451
|
+
crossoverTaxonomyAmbiguity(
|
|
7452
|
+
"mosaic",
|
|
7453
|
+
[
|
|
7454
|
+
`${TAXONOMY_BASE_URI}/id/product-category/mosaic-tile`,
|
|
7455
|
+
`${TAXONOMY_BASE_URI}/id/format/mosaic`
|
|
7456
|
+
],
|
|
7457
|
+
"Mosaic can name a purchasable mosaic-tile product or the small-piece supply format; it is neither inherently a pattern nor a substance. Consumers must union any exact ColorScope named-paint reading with these domain readings rather than let an exact Taxonomy phrase shadow the external identity.",
|
|
7458
|
+
`${searchCorpusEvidence("mosaic")}; Uniclass Pr_35_93_96_53 Mosaic tiles; consumer authority-union boundary reviewed 2026-08-31`,
|
|
7459
|
+
MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT,
|
|
7460
|
+
{
|
|
7461
|
+
introducedAt: TAXONOMY_SNAPSHOT,
|
|
7462
|
+
reviewedAt: TAXONOMY_SNAPSHOT,
|
|
7463
|
+
status: "active"
|
|
7464
|
+
}
|
|
7465
|
+
),
|
|
6846
7466
|
{
|
|
6847
7467
|
explanation: "Blue is a ColorScope colour-family reading; Taxonomy references that authority rather than minting a rival colour identity.",
|
|
6848
7468
|
governance: lexicalGovernance(
|
|
6849
7469
|
"The ColorScope family is the single governed reading of the unqualified colour word.",
|
|
6850
7470
|
{
|
|
6851
7471
|
basis: "vendored",
|
|
6852
|
-
snapshot:
|
|
7472
|
+
snapshot: PUBLISHED_V1_BASELINE,
|
|
6853
7473
|
source: "@instruments/colorscope COLOR_FAMILIES"
|
|
6854
7474
|
}
|
|
6855
7475
|
),
|
|
@@ -6857,6 +7477,285 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
6857
7477
|
phrase: "blue",
|
|
6858
7478
|
target: colorScope("blue", COLOR_FAMILY_REFERENCE_KIND)
|
|
6859
7479
|
},
|
|
7480
|
+
crossoverAmbiguity(
|
|
7481
|
+
"alabaster",
|
|
7482
|
+
`${TAXONOMY_BASE_URI}/id/material/alabaster`,
|
|
7483
|
+
"cream-soft-cream-white",
|
|
7484
|
+
"Alabaster can name decorative gypsum stone or an explicit ColorScope alias for Cream White; neither reading establishes the other.",
|
|
7485
|
+
crossoverSource("alabaster")
|
|
7486
|
+
),
|
|
7487
|
+
crossoverAmbiguity(
|
|
7488
|
+
"brass",
|
|
7489
|
+
`${TAXONOMY_BASE_URI}/id/material/brass`,
|
|
7490
|
+
"yellow-warm-brass",
|
|
7491
|
+
"Brass can name a copper-zinc alloy, an exposed applied brass finish, or a ColorScope named colour; none establishes either of the others.",
|
|
7492
|
+
crossoverSource("brass"),
|
|
7493
|
+
[`${TAXONOMY_BASE_URI}/id/finish/treatment/brass`]
|
|
7494
|
+
),
|
|
7495
|
+
crossoverAmbiguity(
|
|
7496
|
+
"bronze",
|
|
7497
|
+
`${TAXONOMY_BASE_URI}/id/material/bronze`,
|
|
7498
|
+
"brown-mid-bronze",
|
|
7499
|
+
"Bronze can name a copper-alloy family or a ColorScope named colour; the unmodified word does not identify a specific composition.",
|
|
7500
|
+
crossoverSource("bronze")
|
|
7501
|
+
),
|
|
7502
|
+
crossoverAmbiguity(
|
|
7503
|
+
"chrome",
|
|
7504
|
+
`${TAXONOMY_BASE_URI}/id/finish/treatment/chrome`,
|
|
7505
|
+
"gray-pale-chrome",
|
|
7506
|
+
"Chrome can name a metallic chromium coating or a ColorScope named colour; it is not silently normalized to chromium as a material.",
|
|
7507
|
+
crossoverSource("chrome")
|
|
7508
|
+
),
|
|
7509
|
+
crossoverAmbiguity(
|
|
7510
|
+
"cherry",
|
|
7511
|
+
`${TAXONOMY_BASE_URI}/id/material/cherry`,
|
|
7512
|
+
"red-warm-cherry-red",
|
|
7513
|
+
"Cherry can name timber or an explicit ColorScope alias for Cherry Red; the common name does not prove species or colour.",
|
|
7514
|
+
crossoverSource("cherry")
|
|
7515
|
+
),
|
|
7516
|
+
crossoverAmbiguity(
|
|
7517
|
+
"chestnut",
|
|
7518
|
+
`${TAXONOMY_BASE_URI}/id/material/chestnut`,
|
|
7519
|
+
"brown-warm-chestnut",
|
|
7520
|
+
"Chestnut can name timber or a ColorScope named colour; neither reading proves species, construction, or appearance.",
|
|
7521
|
+
crossoverSource("chestnut")
|
|
7522
|
+
),
|
|
7523
|
+
crossoverAmbiguity(
|
|
7524
|
+
"clay",
|
|
7525
|
+
`${TAXONOMY_BASE_URI}/id/material/clay`,
|
|
7526
|
+
"orange-warm-clay",
|
|
7527
|
+
"Clay can name a fine-grained earthy material or a ColorScope named colour; the word alone proves neither firing nor appearance.",
|
|
7528
|
+
crossoverSource("clay")
|
|
7529
|
+
),
|
|
7530
|
+
crossoverAmbiguity(
|
|
7531
|
+
"copper",
|
|
7532
|
+
`${TAXONOMY_BASE_URI}/id/material/copper`,
|
|
7533
|
+
"brown-mid-copper",
|
|
7534
|
+
"Copper can name a metal or a ColorScope named colour; colour resemblance does not establish copper content.",
|
|
7535
|
+
crossoverSource("copper")
|
|
7536
|
+
),
|
|
7537
|
+
crossoverAmbiguity(
|
|
7538
|
+
"denim",
|
|
7539
|
+
`${TAXONOMY_BASE_URI}/id/material/denim`,
|
|
7540
|
+
"blue-vivid-denim",
|
|
7541
|
+
"Denim can name a woven fabric construction or a ColorScope named colour; denim need not be blue.",
|
|
7542
|
+
crossoverSource("denim")
|
|
7543
|
+
),
|
|
7544
|
+
crossoverAmbiguity(
|
|
7545
|
+
"ebony",
|
|
7546
|
+
`${TAXONOMY_BASE_URI}/id/material/ebony`,
|
|
7547
|
+
"black-warm-ebony",
|
|
7548
|
+
"Ebony can name traded timber or a ColorScope named colour; the trade name does not prove botanical identity or black colour.",
|
|
7549
|
+
crossoverSource("ebony")
|
|
7550
|
+
),
|
|
7551
|
+
crossoverAmbiguity(
|
|
7552
|
+
"gold",
|
|
7553
|
+
`${TAXONOMY_BASE_URI}/id/material/gold`,
|
|
7554
|
+
"yellow-bright-gold",
|
|
7555
|
+
"Gold can name the metallic element or a ColorScope named colour; appearance does not establish composition or coating.",
|
|
7556
|
+
crossoverSource("gold")
|
|
7557
|
+
),
|
|
7558
|
+
crossoverAmbiguity(
|
|
7559
|
+
"gunmetal",
|
|
7560
|
+
`${TAXONOMY_BASE_URI}/id/material/gunmetal`,
|
|
7561
|
+
"gray-muted-gunmetal",
|
|
7562
|
+
"Gunmetal can name a casting-alloy family or a ColorScope named colour; grade and appearance remain separate claims.",
|
|
7563
|
+
crossoverSource("gunmetal")
|
|
7564
|
+
),
|
|
7565
|
+
crossoverAmbiguity(
|
|
7566
|
+
"iron",
|
|
7567
|
+
`${TAXONOMY_BASE_URI}/id/material/iron`,
|
|
7568
|
+
"gray-dark-iron",
|
|
7569
|
+
"Iron can name the metallic element or a ColorScope named colour; the bare word does not settle material form or appearance.",
|
|
7570
|
+
crossoverSource("iron")
|
|
7571
|
+
),
|
|
7572
|
+
crossoverAmbiguity(
|
|
7573
|
+
"jade",
|
|
7574
|
+
`${TAXONOMY_BASE_URI}/id/material/jade`,
|
|
7575
|
+
"green-mid-jade",
|
|
7576
|
+
"Jade can name an umbrella gem material or a ColorScope named colour; jade is not one mineral and need not be green.",
|
|
7577
|
+
crossoverSource("jade")
|
|
7578
|
+
),
|
|
7579
|
+
crossoverAmbiguity(
|
|
7580
|
+
"linen",
|
|
7581
|
+
`${TAXONOMY_BASE_URI}/id/material/linen`,
|
|
7582
|
+
"cream-pale-linen",
|
|
7583
|
+
"Linen can name a flax-derived material or a ColorScope named colour; colour does not establish fibre composition.",
|
|
7584
|
+
crossoverSource("linen")
|
|
7585
|
+
),
|
|
7586
|
+
crossoverAmbiguity(
|
|
7587
|
+
"mahogany",
|
|
7588
|
+
`${TAXONOMY_BASE_URI}/id/material/mahogany`,
|
|
7589
|
+
"brown-dark-mahogany",
|
|
7590
|
+
"Mahogany can name commercially grouped timber or a ColorScope named colour; neither reading proves species or appearance.",
|
|
7591
|
+
crossoverSource("mahogany")
|
|
7592
|
+
),
|
|
7593
|
+
crossoverAmbiguity(
|
|
7594
|
+
"nickel",
|
|
7595
|
+
`${TAXONOMY_BASE_URI}/id/material/nickel`,
|
|
7596
|
+
"gray-muted-nickel",
|
|
7597
|
+
"Nickel can name a bulk metallic material, an electrodeposited finish, or a ColorScope named colour; the bare word does not select among them.",
|
|
7598
|
+
crossoverSource("nickel"),
|
|
7599
|
+
[`${TAXONOMY_BASE_URI}/id/finish/treatment/nickel`]
|
|
7600
|
+
),
|
|
7601
|
+
crossoverAmbiguity(
|
|
7602
|
+
"obsidian",
|
|
7603
|
+
`${TAXONOMY_BASE_URI}/id/material/obsidian`,
|
|
7604
|
+
"black-cool-obsidian",
|
|
7605
|
+
"Obsidian can name volcanic glass or a ColorScope named colour; the material is not necessarily black.",
|
|
7606
|
+
crossoverSource("obsidian")
|
|
7607
|
+
),
|
|
7608
|
+
crossoverAmbiguity(
|
|
7609
|
+
"onyx",
|
|
7610
|
+
`${TAXONOMY_BASE_URI}/id/material/onyx`,
|
|
7611
|
+
"black-warm-onyx",
|
|
7612
|
+
"Onyx can name commercial architectural stone or a ColorScope named colour; architectural onyx is not necessarily black.",
|
|
7613
|
+
crossoverSource("onyx")
|
|
7614
|
+
),
|
|
7615
|
+
crossoverAmbiguity(
|
|
7616
|
+
"pewter",
|
|
7617
|
+
`${TAXONOMY_BASE_URI}/id/material/pewter`,
|
|
7618
|
+
"gray-soft-pewter",
|
|
7619
|
+
"Pewter can name a variable tin-alloy family or a ColorScope named colour; composition and appearance remain separate.",
|
|
7620
|
+
crossoverSource("pewter")
|
|
7621
|
+
),
|
|
7622
|
+
crossoverAmbiguity(
|
|
7623
|
+
"platinum",
|
|
7624
|
+
`${TAXONOMY_BASE_URI}/id/material/platinum`,
|
|
7625
|
+
"gray-light-platinum",
|
|
7626
|
+
"Platinum can name a metal or a ColorScope named colour; solid metal, plating, and appearance require separate evidence.",
|
|
7627
|
+
crossoverSource("platinum")
|
|
7628
|
+
),
|
|
7629
|
+
crossoverAmbiguity(
|
|
7630
|
+
"rosewood",
|
|
7631
|
+
`${TAXONOMY_BASE_URI}/id/material/rosewood`,
|
|
7632
|
+
"red-dark-rosewood",
|
|
7633
|
+
"Rosewood can name traded timber or a ColorScope named colour; species and appearance remain separate claims.",
|
|
7634
|
+
crossoverSource("rosewood")
|
|
7635
|
+
),
|
|
7636
|
+
crossoverAmbiguity(
|
|
7637
|
+
"silver",
|
|
7638
|
+
`${TAXONOMY_BASE_URI}/id/material/silver`,
|
|
7639
|
+
"gray-light-silver",
|
|
7640
|
+
"Silver can name the metallic element or a ColorScope named colour; appearance does not establish elemental silver.",
|
|
7641
|
+
crossoverSource("silver")
|
|
7642
|
+
),
|
|
7643
|
+
crossoverAmbiguity(
|
|
7644
|
+
"slate",
|
|
7645
|
+
`${TAXONOMY_BASE_URI}/id/material/slate`,
|
|
7646
|
+
"gray-muted-slate",
|
|
7647
|
+
"Slate can name dimension stone or a ColorScope named colour; neither reading implies the other.",
|
|
7648
|
+
crossoverSource("slate")
|
|
7649
|
+
),
|
|
7650
|
+
crossoverAmbiguity(
|
|
7651
|
+
"steel",
|
|
7652
|
+
`${TAXONOMY_BASE_URI}/id/material/steel`,
|
|
7653
|
+
"gray-cool-steel",
|
|
7654
|
+
"Steel can name an iron-carbon alloy family or a ColorScope named colour; appearance does not identify a steel grade.",
|
|
7655
|
+
crossoverSource("steel")
|
|
7656
|
+
),
|
|
7657
|
+
crossoverAmbiguity(
|
|
7658
|
+
"stone",
|
|
7659
|
+
`${TAXONOMY_BASE_URI}/id/material/stone`,
|
|
7660
|
+
"taupe-warm-stone",
|
|
7661
|
+
"Stone can name a specific building material, a retrieval-oriented material family, or a ColorScope named colour; none is a consumer route.",
|
|
7662
|
+
crossoverSource("stone"),
|
|
7663
|
+
[`${TAXONOMY_BASE_URI}/id/material-family/stone`]
|
|
7664
|
+
),
|
|
7665
|
+
crossoverAmbiguity(
|
|
7666
|
+
"terracotta",
|
|
7667
|
+
`${TAXONOMY_BASE_URI}/id/material/terracotta`,
|
|
7668
|
+
"orange-mid-terracotta",
|
|
7669
|
+
"Terracotta can name a fired-clay material or a ColorScope named colour; firing and composition do not establish orange appearance.",
|
|
7670
|
+
crossoverSource("terracotta")
|
|
7671
|
+
),
|
|
7672
|
+
crossoverEquivalent(
|
|
7673
|
+
"cotton",
|
|
7674
|
+
`${TAXONOMY_BASE_URI}/id/material/cotton`,
|
|
7675
|
+
"Cotton has one governed material reading in this corpus; fibre identity does not establish weave, blend, dye, or finish, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7676
|
+
crossoverSource("cotton")
|
|
7677
|
+
),
|
|
7678
|
+
crossoverTaxonomyAmbiguity(
|
|
7679
|
+
"leather",
|
|
7680
|
+
[
|
|
7681
|
+
`${TAXONOMY_BASE_URI}/id/material-family/leather`,
|
|
7682
|
+
`${TAXONOMY_BASE_URI}/id/material/leather`
|
|
7683
|
+
],
|
|
7684
|
+
"Leather names both a retrieval-oriented material family and a specific hide-derived material; neither reading establishes animal, layer, tanning, coating, or finish, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7685
|
+
crossoverSource("leather")
|
|
7686
|
+
),
|
|
7687
|
+
crossoverTaxonomyAmbiguity(
|
|
7688
|
+
"wood",
|
|
7689
|
+
[
|
|
7690
|
+
`${TAXONOMY_BASE_URI}/id/material-family/wood`,
|
|
7691
|
+
`${TAXONOMY_BASE_URI}/id/material/wood`
|
|
7692
|
+
],
|
|
7693
|
+
"Wood names both a retrieval-oriented material family and a specific lignocellulosic material; neither reading establishes species, construction, stain, oil, or coating, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7694
|
+
crossoverSource("wood")
|
|
7695
|
+
),
|
|
7696
|
+
crossoverEquivalent(
|
|
7697
|
+
"jute",
|
|
7698
|
+
`${TAXONOMY_BASE_URI}/id/material/jute`,
|
|
7699
|
+
"Jute has one governed material reading in this corpus; construction, blend, treatment, and colour remain unspecified, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7700
|
+
crossoverSource("jute")
|
|
7701
|
+
),
|
|
7702
|
+
crossoverEquivalent(
|
|
7703
|
+
"sisal",
|
|
7704
|
+
`${TAXONOMY_BASE_URI}/id/material/sisal`,
|
|
7705
|
+
"Sisal has one governed material reading in this corpus; fibre and products made from it remain distinct, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7706
|
+
crossoverSource("sisal")
|
|
7707
|
+
),
|
|
7708
|
+
crossoverEquivalent(
|
|
7709
|
+
"cork",
|
|
7710
|
+
`${TAXONOMY_BASE_URI}/id/material/cork`,
|
|
7711
|
+
"Cork has one governed material reading in this corpus; natural cork, agglomerate, backing, veneer, and cork-look appearance remain distinct, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7712
|
+
crossoverSource("cork")
|
|
7713
|
+
),
|
|
7714
|
+
crossoverEquivalent(
|
|
7715
|
+
"wool",
|
|
7716
|
+
`${TAXONOMY_BASE_URI}/id/material/wool`,
|
|
7717
|
+
"Wool has one governed material reading in this corpus; species, grade, blend, construction, and finish remain unspecified, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7718
|
+
crossoverSource("wool")
|
|
7719
|
+
),
|
|
7720
|
+
crossoverEquivalent(
|
|
7721
|
+
"suede",
|
|
7722
|
+
`${TAXONOMY_BASE_URI}/id/material/suede`,
|
|
7723
|
+
"Suede has one governed leather-material reading in this corpus; it does not establish a suede-look finish on another substrate, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7724
|
+
crossoverSource("suede")
|
|
7725
|
+
),
|
|
7726
|
+
crossoverTaxonomyAmbiguity(
|
|
7727
|
+
"concrete",
|
|
7728
|
+
[
|
|
7729
|
+
`${TAXONOMY_BASE_URI}/id/material-family/concrete`,
|
|
7730
|
+
`${TAXONOMY_BASE_URI}/id/material/concrete`
|
|
7731
|
+
],
|
|
7732
|
+
"Concrete names both a retrieval-oriented material family and a specific cement-and-aggregate composite; neither reading establishes mix, reinforcement, coating, polish, or imitation, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7733
|
+
crossoverSource("concrete")
|
|
7734
|
+
),
|
|
7735
|
+
crossoverEquivalent(
|
|
7736
|
+
"travertine",
|
|
7737
|
+
`${TAXONOMY_BASE_URI}/id/material/travertine`,
|
|
7738
|
+
"Travertine has one governed dimension-stone reading in this corpus; quarry, grade, fill, cut, and surface treatment remain unspecified, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7739
|
+
crossoverSource("travertine")
|
|
7740
|
+
),
|
|
7741
|
+
crossoverEquivalent(
|
|
7742
|
+
"marble",
|
|
7743
|
+
`${TAXONOMY_BASE_URI}/id/material/marble`,
|
|
7744
|
+
"Marble has one governed commercial dimension-stone reading in this corpus; its scientific and commercial boundaries remain explicit, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7745
|
+
crossoverSource("marble")
|
|
7746
|
+
),
|
|
7747
|
+
crossoverEquivalent(
|
|
7748
|
+
"oak",
|
|
7749
|
+
`${TAXONOMY_BASE_URI}/id/material/oak`,
|
|
7750
|
+
"Oak has one governed timber reading in this corpus; species group, cut, stain, coating, and appearance remain distinct, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7751
|
+
crossoverSource("oak")
|
|
7752
|
+
),
|
|
7753
|
+
crossoverEquivalent(
|
|
7754
|
+
"teak",
|
|
7755
|
+
`${TAXONOMY_BASE_URI}/id/material/teak`,
|
|
7756
|
+
"Teak has one governed timber reading in this corpus; timber, finish, and colour remain distinct, and ColorScope 7.3 has no exact named-colour identity.",
|
|
7757
|
+
crossoverSource("teak")
|
|
7758
|
+
),
|
|
6860
7759
|
{
|
|
6861
7760
|
contextualPreferences: [
|
|
6862
7761
|
{ context: "material", target: WALNUT_MATERIAL },
|
|
@@ -6868,8 +7767,8 @@ var AUTHORED_LEXICAL_ENTRIES = [
|
|
|
6868
7767
|
"The two readings are deliberately separate and context may select only the preference declared here.",
|
|
6869
7768
|
{
|
|
6870
7769
|
basis: "evidenced",
|
|
6871
|
-
snapshot:
|
|
6872
|
-
source: "
|
|
7770
|
+
snapshot: PUBLISHED_V1_BASELINE,
|
|
7771
|
+
source: crossoverSource("walnut")
|
|
6873
7772
|
}
|
|
6874
7773
|
),
|
|
6875
7774
|
outcome: "ambiguous",
|
|
@@ -6910,6 +7809,17 @@ var lexicalPhrases = (term8) => [term8.slug, term8.label, ...term8.altLabels ??
|
|
|
6910
7809
|
(phrase, index, phrases) => phrase.length > 0 && phrases.indexOf(phrase) === index
|
|
6911
7810
|
);
|
|
6912
7811
|
var targetKey = (target) => target.authority === "taxonomy" ? `taxonomy:${target.uri}` : `colorscope:${target.referenceKind}:${target.identifier}`;
|
|
7812
|
+
var inferredLifecycle = (readings) => {
|
|
7813
|
+
const terms = readings.flatMap((reading) => reading.terms);
|
|
7814
|
+
const [introducedAt] = terms.map((term8) => term8.introducedAt ?? PUBLISHED_V1_BASELINE).toSorted(compareText);
|
|
7815
|
+
const reviewedAt = terms.map(
|
|
7816
|
+
(term8) => term8.reviewedAt ?? term8.introducedAt ?? PUBLISHED_V1_BASELINE
|
|
7817
|
+
).toSorted(compareText).at(-1);
|
|
7818
|
+
if (introducedAt === void 0 || reviewedAt === void 0) {
|
|
7819
|
+
throw new Error("Inferred lexical reading has no source term lifecycle.");
|
|
7820
|
+
}
|
|
7821
|
+
return { introducedAt, reviewedAt, status: "active" };
|
|
7822
|
+
};
|
|
6913
7823
|
var inferredLexicalEntries = () => {
|
|
6914
7824
|
const authored = new Set(
|
|
6915
7825
|
AUTHORED_LEXICAL_ENTRIES.map((entry) => entry.phrase)
|
|
@@ -6918,18 +7828,24 @@ var inferredLexicalEntries = () => {
|
|
|
6918
7828
|
for (const location of AUTHORING_LOCATIONS) {
|
|
6919
7829
|
const target = targetForLocation(location);
|
|
6920
7830
|
for (const phrase of lexicalPhrases(location.term)) {
|
|
6921
|
-
const
|
|
6922
|
-
|
|
6923
|
-
|
|
7831
|
+
const readings = targetsByPhrase.get(phrase) ?? [];
|
|
7832
|
+
const existing = readings.find(
|
|
7833
|
+
(candidate) => targetKey(candidate.target) === targetKey(target)
|
|
7834
|
+
);
|
|
7835
|
+
if (existing === void 0) {
|
|
7836
|
+
readings.push({ target, terms: [location.term] });
|
|
7837
|
+
} else {
|
|
7838
|
+
existing.terms.push(location.term);
|
|
6924
7839
|
}
|
|
6925
|
-
targetsByPhrase.set(phrase,
|
|
7840
|
+
targetsByPhrase.set(phrase, readings);
|
|
6926
7841
|
}
|
|
6927
7842
|
}
|
|
6928
|
-
return [...targetsByPhrase].filter(([phrase]) => !authored.has(phrase)).map(([phrase,
|
|
6929
|
-
const [first, second, ...rest] =
|
|
7843
|
+
return [...targetsByPhrase].filter(([phrase]) => !authored.has(phrase)).map(([phrase, readings]) => {
|
|
7844
|
+
const [first, second, ...rest] = readings;
|
|
6930
7845
|
if (first === void 0) {
|
|
6931
7846
|
throw new Error(`Lexical phrase "${phrase}" has no reading.`);
|
|
6932
7847
|
}
|
|
7848
|
+
const lifecycle = inferredLifecycle(readings);
|
|
6933
7849
|
if (second === void 0) {
|
|
6934
7850
|
return {
|
|
6935
7851
|
explanation: `The published spelling \u201C${phrase}\u201D has one governed reading.`,
|
|
@@ -6937,13 +7853,14 @@ var inferredLexicalEntries = () => {
|
|
|
6937
7853
|
"The reading is derived from a canonical label, slug, alternate label, or observed source spelling.",
|
|
6938
7854
|
{
|
|
6939
7855
|
basis: "evidenced",
|
|
6940
|
-
snapshot:
|
|
7856
|
+
snapshot: lifecycle.reviewedAt,
|
|
6941
7857
|
source: "Taxonomy V1 authored term dictionaries"
|
|
6942
|
-
}
|
|
7858
|
+
},
|
|
7859
|
+
lifecycle
|
|
6943
7860
|
),
|
|
6944
7861
|
outcome: "equivalent",
|
|
6945
7862
|
phrase,
|
|
6946
|
-
target: first
|
|
7863
|
+
target: first.target
|
|
6947
7864
|
};
|
|
6948
7865
|
}
|
|
6949
7866
|
return {
|
|
@@ -6952,13 +7869,18 @@ var inferredLexicalEntries = () => {
|
|
|
6952
7869
|
"No context-independent primary reading has been governed.",
|
|
6953
7870
|
{
|
|
6954
7871
|
basis: "evidenced",
|
|
6955
|
-
snapshot:
|
|
7872
|
+
snapshot: lifecycle.reviewedAt,
|
|
6956
7873
|
source: "Colliding Taxonomy V1 authored term spellings"
|
|
6957
|
-
}
|
|
7874
|
+
},
|
|
7875
|
+
lifecycle
|
|
6958
7876
|
),
|
|
6959
7877
|
outcome: "ambiguous",
|
|
6960
7878
|
phrase,
|
|
6961
|
-
readings: [
|
|
7879
|
+
readings: [
|
|
7880
|
+
first.target,
|
|
7881
|
+
second.target,
|
|
7882
|
+
...rest.map(({ target }) => target)
|
|
7883
|
+
]
|
|
6962
7884
|
};
|
|
6963
7885
|
});
|
|
6964
7886
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instruments/taxonomy",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.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": {
|
|
@@ -23,20 +23,20 @@
|
|
|
23
23
|
"publishConfig": {
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"build": "rm -rf dist && tsup",
|
|
28
|
-
"lint": "howells-check .",
|
|
29
|
-
"prepare": "[ -d dist ] || pnpm build",
|
|
30
|
-
"sync:colorscope": "vitest run src/colorscope-sync.test.ts",
|
|
31
|
-
"test": "vitest run",
|
|
32
|
-
"typecheck": "tsc --noEmit"
|
|
33
|
-
},
|
|
34
26
|
"devDependencies": {
|
|
35
27
|
"@howells/lint": "^1.0.0",
|
|
36
|
-
"@instruments/colorscope": "
|
|
28
|
+
"@instruments/colorscope": "7.3.0",
|
|
37
29
|
"@types/node": "^24.0.0",
|
|
38
30
|
"tsup": "^8.5.1",
|
|
39
31
|
"typescript": "^5.7.0",
|
|
40
32
|
"vitest": "^4.0.0"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "rm -rf dist && tsup",
|
|
36
|
+
"lint": "howells-check .",
|
|
37
|
+
"smoke:packed": "node --experimental-strip-types scripts/smoke-packed-core.ts",
|
|
38
|
+
"sync:colorscope": "vitest run src/colorscope-sync.test.ts",
|
|
39
|
+
"test": "vitest run",
|
|
40
|
+
"typecheck": "tsc --noEmit"
|
|
41
41
|
}
|
|
42
|
-
}
|
|
42
|
+
}
|