@instruments/taxonomy 2.5.0 → 2.7.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/README.md +2 -2
- package/dist/assessment-policy.d.ts +2 -2
- package/dist/authoring.d.ts +1 -1
- package/dist/axes/axis.d.ts +5 -1
- package/dist/axes/certification.d.ts +3 -0
- package/dist/axes/coverage-review.d.ts +15 -0
- package/dist/axes/external-search.d.ts +4 -0
- package/dist/axes/gaps-axes.d.ts +4 -0
- package/dist/axes/gaps-shared.d.ts +15 -0
- package/dist/axes/index.d.ts +1 -1
- package/dist/axes/intervention.d.ts +3 -0
- package/dist/axes/palette.d.ts +54 -3
- package/dist/axes/palette.generated.d.ts +232 -0
- package/dist/axes/pattern-motifs.d.ts +2 -0
- package/dist/axes/product-category-furniture.d.ts +2 -0
- package/dist/axes/product-category-shared.d.ts +5 -0
- package/dist/axes/time-of-day.d.ts +5 -0
- package/dist/crossover-sources.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2082 -549
- package/dist/term.d.ts +21 -4
- package/dist/v1.d.ts +26 -8
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -7,6 +7,8 @@ import { createHash } from "crypto";
|
|
|
7
7
|
// src/axes/external-search.ts
|
|
8
8
|
var SEARCHED_ON = "2026-10-21";
|
|
9
9
|
var SEARCHED_ON_TAX66 = "2026-10-22";
|
|
10
|
+
var SEARCHED_ON_TAX66_COVERAGE = "2026-10-23";
|
|
11
|
+
var SEARCHED_ON_TAX66_GAPS = "2026-10-23";
|
|
10
12
|
var WIKIDATA_SEARCH = "https://www.wikidata.org/w/api.php?action=wbsearchentities";
|
|
11
13
|
var GETTY_SPARQL = "https://vocab.getty.edu/sparql";
|
|
12
14
|
var UNICLASS_SEARCH = "https://uniclass.thenbs.com/search";
|
|
@@ -1772,6 +1774,45 @@ var single = (slug, label, terms, governance, holds) => [
|
|
|
1772
1774
|
}
|
|
1773
1775
|
];
|
|
1774
1776
|
|
|
1777
|
+
// src/axes/gaps-shared.ts
|
|
1778
|
+
var GAPS_DATE = SEARCHED_ON_TAX66_GAPS;
|
|
1779
|
+
var GAPS_PROVENANCE = {
|
|
1780
|
+
basis: "authored",
|
|
1781
|
+
source: "TAX-66 vocabulary gaps"
|
|
1782
|
+
};
|
|
1783
|
+
var GAPS_LIFECYCLE = {
|
|
1784
|
+
introducedAt: GAPS_DATE,
|
|
1785
|
+
provenance: GAPS_PROVENANCE,
|
|
1786
|
+
reviewedAt: GAPS_DATE
|
|
1787
|
+
};
|
|
1788
|
+
var gapsTerm = (slug, label, definition, extra = {}) => ({
|
|
1789
|
+
definition,
|
|
1790
|
+
label,
|
|
1791
|
+
slug,
|
|
1792
|
+
...GAPS_LIFECYCLE,
|
|
1793
|
+
...extra
|
|
1794
|
+
});
|
|
1795
|
+
var mapping = (scheme, identifier, label, match) => ({ identifier, label, match, scheme });
|
|
1796
|
+
var UNICLASS_TABLES = "July 2026 NBS Ac v1.27, Co v1.22, EF v1.16, En v1.34, Ma v1.1, PC v1.3, PM v1.30, Pr v1.43, SL v1.36 and Ss v1.43 published tables, title search: ";
|
|
1797
|
+
var gapsSearchedUniclass = (query) => ({
|
|
1798
|
+
date: GAPS_DATE,
|
|
1799
|
+
query: `${UNICLASS_TABLES}${query}`,
|
|
1800
|
+
scheme: "uniclass",
|
|
1801
|
+
via: UNICLASS_DOWNLOAD
|
|
1802
|
+
});
|
|
1803
|
+
var gapsSearchedAat = (query) => ({
|
|
1804
|
+
date: GAPS_DATE,
|
|
1805
|
+
query,
|
|
1806
|
+
scheme: "aat",
|
|
1807
|
+
via: `${GETTY_SPARQL}; luc:term search, AAT preferred labels and English scope notes read`
|
|
1808
|
+
});
|
|
1809
|
+
var gapsSearchedWikidata = (query) => ({
|
|
1810
|
+
date: GAPS_DATE,
|
|
1811
|
+
query,
|
|
1812
|
+
scheme: "wikidata",
|
|
1813
|
+
via: `${WIKIDATA_SEARCH}&language=en&format=json; labels and descriptions read`
|
|
1814
|
+
});
|
|
1815
|
+
|
|
1775
1816
|
// src/axes/pattern-tax57.ts
|
|
1776
1817
|
var relatedTo4 = (target) => ({
|
|
1777
1818
|
predicate: "related-to",
|
|
@@ -2387,7 +2428,24 @@ var CONSTRUCTION_TERMS = [
|
|
|
2387
2428
|
}
|
|
2388
2429
|
],
|
|
2389
2430
|
searchedWithout: [searchedUniclass3(JACQUARD_WEAVING)]
|
|
2390
|
-
}
|
|
2431
|
+
},
|
|
2432
|
+
// TAX-66. A construction and not a material: it names how the sheet is made, slit and stretched
|
|
2433
|
+
// into a diamond mesh without waste, the way `woven` and `sintered` name a process. The metal is
|
|
2434
|
+
// a separate meaning on the material axis. Uniclass lists it only as products, so that mapping
|
|
2435
|
+
// is `close` rather than exact.
|
|
2436
|
+
gapsTerm(
|
|
2437
|
+
"expanded-metal",
|
|
2438
|
+
"Expanded metal",
|
|
2439
|
+
"Metal sheet slit and stretched in one operation into an open mesh of diamond-shaped openings, without cutting away or joining any material.",
|
|
2440
|
+
{
|
|
2441
|
+
external: [
|
|
2442
|
+
mapping("aat", "300011061", "expanded metal", "close"),
|
|
2443
|
+
mapping("uniclass", "Pr_25_57_56_27", "Expanded metal mesh", "close"),
|
|
2444
|
+
mapping("wikidata", "Q1424107", "expanded metal", "close")
|
|
2445
|
+
],
|
|
2446
|
+
related: relatedTo5("material.metal")
|
|
2447
|
+
}
|
|
2448
|
+
)
|
|
2391
2449
|
];
|
|
2392
2450
|
|
|
2393
2451
|
// src/axes/element-shared.ts
|
|
@@ -2813,6 +2871,31 @@ var ELEMENT_FABRIC_TERMS = [
|
|
|
2813
2871
|
provenance: AUTHORED2,
|
|
2814
2872
|
slug: "pitched-roof"
|
|
2815
2873
|
},
|
|
2874
|
+
// TAX-66. A kind of roof, since every green roof is a roof whatever its fall; flat and pitched
|
|
2875
|
+
// are the slope, this is the covering. AAT has no green roof concept, only the roof garden it
|
|
2876
|
+
// overlaps, which is a garden people use and so `related` rather than a match.
|
|
2877
|
+
{
|
|
2878
|
+
altLabels: ["living roof", "vegetated roof"],
|
|
2879
|
+
broaderSlug: "roof",
|
|
2880
|
+
definition: "A roof whose waterproofing carries a growing medium and living vegetation as its covering, in place of lapped units or a sheet.",
|
|
2881
|
+
external: [
|
|
2882
|
+
aat4("300008131", "roof gardens", "related"),
|
|
2883
|
+
uniclass4("Ss_45_40_47", "Living roof systems", "close"),
|
|
2884
|
+
{
|
|
2885
|
+
identifier: "Q48741",
|
|
2886
|
+
label: "green roof",
|
|
2887
|
+
match: "close",
|
|
2888
|
+
scheme: "wikidata"
|
|
2889
|
+
}
|
|
2890
|
+
],
|
|
2891
|
+
introducedAt: GAPS_DATE,
|
|
2892
|
+
label: "Green Roof",
|
|
2893
|
+
placement: "overhead",
|
|
2894
|
+
provenance: GAPS_PROVENANCE,
|
|
2895
|
+
reviewedAt: GAPS_DATE,
|
|
2896
|
+
searchedWithout: [gapsSearchedAat("green roof | living roof | sod roof")],
|
|
2897
|
+
slug: "green-roof"
|
|
2898
|
+
},
|
|
2816
2899
|
{
|
|
2817
2900
|
altLabels: ["skylight", "roof light"],
|
|
2818
2901
|
definition: "A glazed opening in a roof plane, admitting daylight from above rather than from a wall.",
|
|
@@ -3337,7 +3420,7 @@ var ELEMENT_TERMS = [
|
|
|
3337
3420
|
|
|
3338
3421
|
// src/crossover-sources.ts
|
|
3339
3422
|
var RETRIEVAL_LEXICON_SOURCE = "color-material lexicon in a materials-retrieval system (src-05)";
|
|
3340
|
-
var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@
|
|
3423
|
+
var COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@3f490d3cdf26d3af77841a55f0c94cb5e24bb891:packages/core/data/reference/v1/taxonomy.json";
|
|
3341
3424
|
var BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
|
|
3342
3425
|
var BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
|
|
3343
3426
|
var NICKEL_MATERIAL_SOURCE = "https://nickelinstitute.org/en/nickel-applications/";
|
|
@@ -3691,6 +3774,7 @@ var FINISH_TEXTURE_TERMS = [
|
|
|
3691
3774
|
var TEXTURED_TARGET = "finish.texture.textured";
|
|
3692
3775
|
var TUMBLE_FINISHING = "tumble finishing";
|
|
3693
3776
|
var ABRASIVE_BLASTING = "abrasive blasting";
|
|
3777
|
+
var POWDER_COATING = "powder coating";
|
|
3694
3778
|
var CROSSOVER_SNAPSHOT = "2026-08-30";
|
|
3695
3779
|
var RETRIEVAL_SHEEN = "ms_sheen, a sheen dictionary in a materials-retrieval system (src-05)";
|
|
3696
3780
|
var MG2435_DATE = "2026-10-02";
|
|
@@ -4042,7 +4126,24 @@ var FINISH_TREATMENT_TERMS = [
|
|
|
4042
4126
|
}
|
|
4043
4127
|
],
|
|
4044
4128
|
searchedWithout: [searchedUniclass3("distressing")]
|
|
4045
|
-
}
|
|
4129
|
+
},
|
|
4130
|
+
// TAX-66. A coating applied, like chrome and nickel above, so it is a treatment; the colour and
|
|
4131
|
+
// sheen of the cured film are separate meanings made on the palette and sheen facets. Every
|
|
4132
|
+
// mapping is `close` because AAT narrows the powder to thermosetting plastic and Wikidata and
|
|
4133
|
+
// Uniclass describe the process and the product rather than the finished surface.
|
|
4134
|
+
gapsTerm(
|
|
4135
|
+
"powder-coat",
|
|
4136
|
+
"Powder coat",
|
|
4137
|
+
"A dry powder of thermoplastic or thermosetting polymer applied electrostatically to a metal surface and cured under heat into a continuous hard film; it names the coating, not the substrate, colour or sheen.",
|
|
4138
|
+
{
|
|
4139
|
+
altLabels: [POWDER_COATING, "powder-coated"],
|
|
4140
|
+
external: [
|
|
4141
|
+
mapping("aat", "300133167", POWDER_COATING, "close"),
|
|
4142
|
+
mapping("uniclass", "Pr_35_31_68_66", "Powder coatings", "close"),
|
|
4143
|
+
mapping("wikidata", "Q445063", POWDER_COATING, "close")
|
|
4144
|
+
]
|
|
4145
|
+
}
|
|
4146
|
+
)
|
|
4046
4147
|
];
|
|
4047
4148
|
var FINISH_SHEEN_TERMS = [
|
|
4048
4149
|
{
|
|
@@ -4454,6 +4555,522 @@ var FORMAT_TERMS = [
|
|
|
4454
4555
|
}
|
|
4455
4556
|
];
|
|
4456
4557
|
|
|
4558
|
+
// src/axes/certification.ts
|
|
4559
|
+
var EMBODIED_CARBON = "embodied-carbon";
|
|
4560
|
+
var INDOOR_AIR = "indoor-air-quality";
|
|
4561
|
+
var SOURCING = "responsible-sourcing";
|
|
4562
|
+
var WELL_NAME = "WELL Building Standard";
|
|
4563
|
+
var evidences = (...needs) => needs.map((need) => ({
|
|
4564
|
+
predicate: "related-to",
|
|
4565
|
+
target: `requirement.${need}`
|
|
4566
|
+
}));
|
|
4567
|
+
var noAat = (query) => gapsSearchedAat(query);
|
|
4568
|
+
var noUniclass = (query) => gapsSearchedUniclass(query);
|
|
4569
|
+
var CERTIFICATION_TERMS = [
|
|
4570
|
+
gapsTerm(
|
|
4571
|
+
"fsc",
|
|
4572
|
+
"FSC",
|
|
4573
|
+
"A product-level certification, run by the Forest Stewardship Council, that timber and paper products come from forests managed to its standard, with chain-of-custody tracing from forest to product.",
|
|
4574
|
+
{
|
|
4575
|
+
altLabels: ["Forest Stewardship Council"],
|
|
4576
|
+
external: [
|
|
4577
|
+
mapping("wikidata", "Q748367", "Forest Stewardship Council", "close")
|
|
4578
|
+
],
|
|
4579
|
+
related: evidences(SOURCING),
|
|
4580
|
+
searchedWithout: [
|
|
4581
|
+
noAat("Forest Stewardship Council | forest certification"),
|
|
4582
|
+
noUniclass("FSC | Forest Stewardship Council")
|
|
4583
|
+
]
|
|
4584
|
+
}
|
|
4585
|
+
),
|
|
4586
|
+
gapsTerm(
|
|
4587
|
+
"pefc",
|
|
4588
|
+
"PEFC",
|
|
4589
|
+
"A product-level certification, run by the Programme for the Endorsement of Forest Certification, that timber and paper products come from forests managed to a nationally endorsed standard, with chain-of-custody tracing.",
|
|
4590
|
+
{
|
|
4591
|
+
altLabels: ["Programme for the Endorsement of Forest Certification"],
|
|
4592
|
+
external: [
|
|
4593
|
+
mapping(
|
|
4594
|
+
"wikidata",
|
|
4595
|
+
"Q2112204",
|
|
4596
|
+
"Programme for the Endorsement of Forest Certification",
|
|
4597
|
+
"close"
|
|
4598
|
+
)
|
|
4599
|
+
],
|
|
4600
|
+
related: evidences(SOURCING),
|
|
4601
|
+
searchedWithout: [
|
|
4602
|
+
noAat(
|
|
4603
|
+
"Programme for the Endorsement of Forest Certification | forest certification"
|
|
4604
|
+
),
|
|
4605
|
+
noUniclass(
|
|
4606
|
+
"PEFC | Programme for the Endorsement of Forest Certification"
|
|
4607
|
+
)
|
|
4608
|
+
]
|
|
4609
|
+
}
|
|
4610
|
+
),
|
|
4611
|
+
gapsTerm(
|
|
4612
|
+
"breeam",
|
|
4613
|
+
"BREEAM",
|
|
4614
|
+
"A building-level sustainability assessment and certification scheme, run by BRE, that rates a building across categories such as energy, materials, health and wellbeing, from Pass to Outstanding.",
|
|
4615
|
+
{
|
|
4616
|
+
altLabels: [
|
|
4617
|
+
"Building Research Establishment Environmental Assessment Method"
|
|
4618
|
+
],
|
|
4619
|
+
external: [
|
|
4620
|
+
mapping(
|
|
4621
|
+
"uniclass",
|
|
4622
|
+
"PM_70_25_10",
|
|
4623
|
+
"BREEAM (Building Research Establishment Environmental Assessment Method) certificate",
|
|
4624
|
+
"close"
|
|
4625
|
+
),
|
|
4626
|
+
mapping(
|
|
4627
|
+
"uniclass",
|
|
4628
|
+
"PM_35_40_10",
|
|
4629
|
+
"BREEAM (Building Research Establishment Environmental Assessment Method) requirements",
|
|
4630
|
+
"related"
|
|
4631
|
+
),
|
|
4632
|
+
mapping("wikidata", "Q2620135", "BREEAM", "close")
|
|
4633
|
+
],
|
|
4634
|
+
related: evidences(EMBODIED_CARBON, INDOOR_AIR, SOURCING),
|
|
4635
|
+
searchedWithout: [noAat("BREEAM")]
|
|
4636
|
+
}
|
|
4637
|
+
),
|
|
4638
|
+
gapsTerm(
|
|
4639
|
+
"leed",
|
|
4640
|
+
"LEED",
|
|
4641
|
+
"A building-level green building rating system, run by the US Green Building Council, that awards points across categories such as materials, energy and indoor environmental quality towards Certified, Silver, Gold or Platinum.",
|
|
4642
|
+
{
|
|
4643
|
+
altLabels: ["Leadership in Energy and Environmental Design"],
|
|
4644
|
+
external: [
|
|
4645
|
+
mapping(
|
|
4646
|
+
"uniclass",
|
|
4647
|
+
"PM_70_25_45",
|
|
4648
|
+
"LEED (Leadership in Energy and Environmental Design) certificate",
|
|
4649
|
+
"close"
|
|
4650
|
+
),
|
|
4651
|
+
mapping(
|
|
4652
|
+
"uniclass",
|
|
4653
|
+
"PM_35_40_45",
|
|
4654
|
+
"LEED (Leadership in Energy and Environmental Design) requirements",
|
|
4655
|
+
"related"
|
|
4656
|
+
),
|
|
4657
|
+
mapping(
|
|
4658
|
+
"wikidata",
|
|
4659
|
+
"Q1521623",
|
|
4660
|
+
"Leadership in Energy and Environmental Design",
|
|
4661
|
+
"close"
|
|
4662
|
+
)
|
|
4663
|
+
],
|
|
4664
|
+
related: evidences(EMBODIED_CARBON, INDOOR_AIR, SOURCING),
|
|
4665
|
+
searchedWithout: [
|
|
4666
|
+
noAat("LEED | Leadership in Energy and Environmental Design")
|
|
4667
|
+
]
|
|
4668
|
+
}
|
|
4669
|
+
),
|
|
4670
|
+
gapsTerm(
|
|
4671
|
+
"well-building-standard",
|
|
4672
|
+
WELL_NAME,
|
|
4673
|
+
"A building-level standard and certification, run by the International WELL Building Institute, for how a building's air, water, light and comfort features support the health and wellbeing of its occupants.",
|
|
4674
|
+
{
|
|
4675
|
+
altLabels: ["WELL certification"],
|
|
4676
|
+
external: [
|
|
4677
|
+
mapping(
|
|
4678
|
+
"uniclass",
|
|
4679
|
+
"PM_70_25_96",
|
|
4680
|
+
"WELL environment certificate",
|
|
4681
|
+
"close"
|
|
4682
|
+
),
|
|
4683
|
+
mapping(
|
|
4684
|
+
"uniclass",
|
|
4685
|
+
"PM_35_40_96",
|
|
4686
|
+
"WELL environment requirements",
|
|
4687
|
+
"related"
|
|
4688
|
+
),
|
|
4689
|
+
mapping("wikidata", "Q113253484", WELL_NAME, "close")
|
|
4690
|
+
],
|
|
4691
|
+
related: evidences(INDOOR_AIR),
|
|
4692
|
+
searchedWithout: [noAat(WELL_NAME)]
|
|
4693
|
+
}
|
|
4694
|
+
),
|
|
4695
|
+
gapsTerm(
|
|
4696
|
+
"greenguard",
|
|
4697
|
+
"GREENGUARD",
|
|
4698
|
+
"A product-level certification, now run by UL Solutions, that a product's chemical emissions into indoor air stay within stated limits; its Gold level sets stricter limits.",
|
|
4699
|
+
{
|
|
4700
|
+
altLabels: ["UL GREENGUARD"],
|
|
4701
|
+
external: [
|
|
4702
|
+
mapping(
|
|
4703
|
+
"wikidata",
|
|
4704
|
+
"Q5604067",
|
|
4705
|
+
"Greenguard Environmental Institute",
|
|
4706
|
+
"related"
|
|
4707
|
+
)
|
|
4708
|
+
],
|
|
4709
|
+
note: "The Wikidata item is the institute that first ran the scheme and not the scheme, so the match is only related.",
|
|
4710
|
+
related: evidences(INDOOR_AIR),
|
|
4711
|
+
searchedWithout: [noAat("GREENGUARD"), noUniclass("GREENGUARD")]
|
|
4712
|
+
}
|
|
4713
|
+
),
|
|
4714
|
+
gapsTerm(
|
|
4715
|
+
"cradle-to-cradle",
|
|
4716
|
+
"Cradle to Cradle Certified",
|
|
4717
|
+
"A product-level certification, run by the Cradle to Cradle Products Innovation Institute, that assesses a product on material health, product circularity, clean air and climate protection, water and soil stewardship and social fairness, at Bronze to Platinum levels.",
|
|
4718
|
+
{
|
|
4719
|
+
altLabels: ["C2C", "Cradle to Cradle"],
|
|
4720
|
+
external: [
|
|
4721
|
+
mapping(
|
|
4722
|
+
"wikidata",
|
|
4723
|
+
"Q116149235",
|
|
4724
|
+
"Cradle to Cradle Certified",
|
|
4725
|
+
"close"
|
|
4726
|
+
)
|
|
4727
|
+
],
|
|
4728
|
+
related: evidences(EMBODIED_CARBON),
|
|
4729
|
+
searchedWithout: [
|
|
4730
|
+
noAat("Cradle to Cradle"),
|
|
4731
|
+
noUniclass("Cradle to Cradle | C2C")
|
|
4732
|
+
]
|
|
4733
|
+
}
|
|
4734
|
+
),
|
|
4735
|
+
gapsTerm(
|
|
4736
|
+
"epd",
|
|
4737
|
+
"Environmental product declaration",
|
|
4738
|
+
"A third-party-verified declaration of a product's life-cycle environmental impacts, such as its embodied carbon, reported to a product-category standard such as ISO 14025 and EN 15804; it states the impacts and sets no threshold.",
|
|
4739
|
+
{
|
|
4740
|
+
altLabels: ["EPD"],
|
|
4741
|
+
external: [
|
|
4742
|
+
mapping(
|
|
4743
|
+
"uniclass",
|
|
4744
|
+
"PC_10_65_26",
|
|
4745
|
+
"Environmental product declaration (EPD)",
|
|
4746
|
+
"close"
|
|
4747
|
+
),
|
|
4748
|
+
mapping(
|
|
4749
|
+
"wikidata",
|
|
4750
|
+
"Q1345906",
|
|
4751
|
+
"Environmental product declaration",
|
|
4752
|
+
"close"
|
|
4753
|
+
)
|
|
4754
|
+
],
|
|
4755
|
+
related: evidences(EMBODIED_CARBON),
|
|
4756
|
+
searchedWithout: [
|
|
4757
|
+
noAat("environmental product declaration | life cycle assessment")
|
|
4758
|
+
]
|
|
4759
|
+
}
|
|
4760
|
+
)
|
|
4761
|
+
];
|
|
4762
|
+
|
|
4763
|
+
// src/axes/intervention.ts
|
|
4764
|
+
var relatedTo7 = (...targets) => targets.map((target) => ({ predicate: "related-to", target }));
|
|
4765
|
+
var REFURBISHMENT = "intervention.refurbishment";
|
|
4766
|
+
var INTERVENTION_TERMS = [
|
|
4767
|
+
gapsTerm(
|
|
4768
|
+
"new-build",
|
|
4769
|
+
"New build",
|
|
4770
|
+
"Construction of a building from the ground up on a cleared or undeveloped site, rather than work to a building that already stands.",
|
|
4771
|
+
{
|
|
4772
|
+
altLabels: ["new construction", "ground-up construction"],
|
|
4773
|
+
external: [
|
|
4774
|
+
mapping("uniclass", "PC_20_30_56", "New-build", "close"),
|
|
4775
|
+
mapping("wikidata", "Q2202145", "new construction", "close")
|
|
4776
|
+
],
|
|
4777
|
+
searchedWithout: [
|
|
4778
|
+
gapsSearchedAat("new build | new construction | new building")
|
|
4779
|
+
]
|
|
4780
|
+
}
|
|
4781
|
+
),
|
|
4782
|
+
gapsTerm(
|
|
4783
|
+
"refurbishment",
|
|
4784
|
+
"Refurbishment",
|
|
4785
|
+
"Work that renews and updates the fabric, finishes and services of a building that already stands, without changing what it is used for or how large it is.",
|
|
4786
|
+
{
|
|
4787
|
+
altLabels: ["renovation"],
|
|
4788
|
+
external: [
|
|
4789
|
+
mapping("aat", "300389648", "refurbishment", "close"),
|
|
4790
|
+
mapping("aat", "300077781", "renovation (process)", "close"),
|
|
4791
|
+
mapping("uniclass", "Ac_10_70_70", "Renovation", "close"),
|
|
4792
|
+
mapping("wikidata", "Q2144402", "renovation", "close")
|
|
4793
|
+
]
|
|
4794
|
+
}
|
|
4795
|
+
),
|
|
4796
|
+
gapsTerm(
|
|
4797
|
+
"retrofit",
|
|
4798
|
+
"Retrofit",
|
|
4799
|
+
"Work that adds new equipment, systems or fabric performance, most often for energy, comfort or safety, to a building that already stands, without redefining what it is for.",
|
|
4800
|
+
{
|
|
4801
|
+
altLabels: ["retrofitting"],
|
|
4802
|
+
external: [
|
|
4803
|
+
mapping("aat", "300109756", "retrofitting", "close"),
|
|
4804
|
+
mapping(
|
|
4805
|
+
"uniclass",
|
|
4806
|
+
"PM_35_40_70",
|
|
4807
|
+
"Retrofit energy requirements",
|
|
4808
|
+
"related"
|
|
4809
|
+
),
|
|
4810
|
+
mapping("wikidata", "Q24662", "retrofitting", "close")
|
|
4811
|
+
],
|
|
4812
|
+
related: [...relatedTo7(REFURBISHMENT, "requirement.net-zero")]
|
|
4813
|
+
}
|
|
4814
|
+
),
|
|
4815
|
+
gapsTerm(
|
|
4816
|
+
"adaptive-reuse",
|
|
4817
|
+
"Adaptive reuse",
|
|
4818
|
+
"Conversion of an existing building to a use other than the one it was built for, keeping its structure and as much of its character as the new use allows.",
|
|
4819
|
+
{
|
|
4820
|
+
altLabels: ["building conversion"],
|
|
4821
|
+
external: [
|
|
4822
|
+
mapping("aat", "300056392", "adaptive reuse", "close"),
|
|
4823
|
+
mapping("wikidata", "Q2086116", "adaptive reuse", "close")
|
|
4824
|
+
],
|
|
4825
|
+
related: [...relatedTo7(REFURBISHMENT, "requirement.embodied-carbon")],
|
|
4826
|
+
searchedWithout: [
|
|
4827
|
+
gapsSearchedUniclass("Adaptive reuse | conversion | change of use")
|
|
4828
|
+
]
|
|
4829
|
+
}
|
|
4830
|
+
),
|
|
4831
|
+
gapsTerm(
|
|
4832
|
+
"historic-preservation",
|
|
4833
|
+
"Historic preservation",
|
|
4834
|
+
"Work to protect a building of historic or cultural value and keep it in use, by maintaining, repairing, restoring or adapting it with its significance as the constraint.",
|
|
4835
|
+
{
|
|
4836
|
+
altLabels: ["heritage conservation"],
|
|
4837
|
+
external: [
|
|
4838
|
+
mapping("aat", "300054166", "historic preservation", "close"),
|
|
4839
|
+
mapping(
|
|
4840
|
+
"uniclass",
|
|
4841
|
+
"Ac_30_60_16",
|
|
4842
|
+
"Conservation activities",
|
|
4843
|
+
"related"
|
|
4844
|
+
),
|
|
4845
|
+
mapping("wikidata", "Q914856", "historic preservation", "close")
|
|
4846
|
+
]
|
|
4847
|
+
}
|
|
4848
|
+
),
|
|
4849
|
+
gapsTerm(
|
|
4850
|
+
"restoration",
|
|
4851
|
+
"Restoration",
|
|
4852
|
+
"Work that returns a building, or part of one, to its form at a chosen earlier period by removing later additions and replacing lost fabric.",
|
|
4853
|
+
{
|
|
4854
|
+
external: [
|
|
4855
|
+
mapping("aat", "300053742", "restoration (process)", "close"),
|
|
4856
|
+
mapping("uniclass", "Ac_30_60_71", "Restoration activities", "close")
|
|
4857
|
+
],
|
|
4858
|
+
related: relatedTo7("intervention.historic-preservation"),
|
|
4859
|
+
searchedWithout: [
|
|
4860
|
+
gapsSearchedWikidata(
|
|
4861
|
+
"building restoration | architectural restoration"
|
|
4862
|
+
)
|
|
4863
|
+
]
|
|
4864
|
+
}
|
|
4865
|
+
),
|
|
4866
|
+
gapsTerm(
|
|
4867
|
+
"extension",
|
|
4868
|
+
"Extension",
|
|
4869
|
+
"Work that adds floor area or volume to a building that already stands, attached to it, rather than altering what is already there.",
|
|
4870
|
+
{
|
|
4871
|
+
altLabels: ["building extension", "addition"],
|
|
4872
|
+
external: [
|
|
4873
|
+
mapping(
|
|
4874
|
+
"aat",
|
|
4875
|
+
"300445666",
|
|
4876
|
+
"additions (built work divisions)",
|
|
4877
|
+
"close"
|
|
4878
|
+
),
|
|
4879
|
+
mapping("wikidata", "Q112228551", "building extension", "close")
|
|
4880
|
+
],
|
|
4881
|
+
searchedWithout: [gapsSearchedUniclass("Extension | building extension")]
|
|
4882
|
+
}
|
|
4883
|
+
),
|
|
4884
|
+
gapsTerm(
|
|
4885
|
+
"fit-out",
|
|
4886
|
+
"Fit-out",
|
|
4887
|
+
"Work that finishes and equips the interior of an existing shell or base-build space for its occupier: partitions, finishes, services terminals, joinery and furniture.",
|
|
4888
|
+
{
|
|
4889
|
+
altLabels: ["fitting out", "interior fit-out", "fitout"],
|
|
4890
|
+
external: [
|
|
4891
|
+
mapping("uniclass", "Ac_10_40_41", "Internal fitting out", "close")
|
|
4892
|
+
],
|
|
4893
|
+
searchedWithout: [
|
|
4894
|
+
gapsSearchedAat("fit-out | fitting out | interior fit"),
|
|
4895
|
+
gapsSearchedWikidata("fit-out | interior fit out")
|
|
4896
|
+
]
|
|
4897
|
+
}
|
|
4898
|
+
)
|
|
4899
|
+
];
|
|
4900
|
+
|
|
4901
|
+
// src/axes/time-of-day.ts
|
|
4902
|
+
var MOODY = "mood.moody";
|
|
4903
|
+
var relatedTo8 = (...targets) => targets.map((target) => ({ predicate: "related-to", target }));
|
|
4904
|
+
var TIME_OF_DAY_HOUR_TERMS = [
|
|
4905
|
+
gapsTerm(
|
|
4906
|
+
"dawn",
|
|
4907
|
+
"Dawn",
|
|
4908
|
+
"The first light before sunrise, when the sky brightens and the sun is not yet up.",
|
|
4909
|
+
{
|
|
4910
|
+
external: [
|
|
4911
|
+
mapping("aat", "300343621", "dawn (time of day)", "close"),
|
|
4912
|
+
mapping("wikidata", "Q11326182", "dawn", "close")
|
|
4913
|
+
],
|
|
4914
|
+
related: relatedTo8("mood.soft"),
|
|
4915
|
+
searchedWithout: [gapsSearchedUniclass("Dawn")]
|
|
4916
|
+
}
|
|
4917
|
+
),
|
|
4918
|
+
gapsTerm(
|
|
4919
|
+
"morning",
|
|
4920
|
+
"Morning",
|
|
4921
|
+
"The hours from sunrise towards noon, with the light arriving low from the east and rising.",
|
|
4922
|
+
{
|
|
4923
|
+
altLabels: ["morning light"],
|
|
4924
|
+
external: [
|
|
4925
|
+
mapping("aat", "300343630", "morning", "close"),
|
|
4926
|
+
mapping("wikidata", "Q7722", "morning", "close")
|
|
4927
|
+
],
|
|
4928
|
+
related: relatedTo8("daylight.aspect.east-facing"),
|
|
4929
|
+
searchedWithout: [gapsSearchedUniclass("Morning | morning light")]
|
|
4930
|
+
}
|
|
4931
|
+
),
|
|
4932
|
+
gapsTerm(
|
|
4933
|
+
"golden-hour",
|
|
4934
|
+
"Golden hour",
|
|
4935
|
+
"The first and last hour of sunlight in the day, when the sun is low and the light is warm, directional and soft.",
|
|
4936
|
+
{
|
|
4937
|
+
altLabels: ["magic hour"],
|
|
4938
|
+
external: [mapping("wikidata", "Q3238843", "golden hour", "exact")],
|
|
4939
|
+
related: relatedTo8("mood.soft"),
|
|
4940
|
+
searchedWithout: [
|
|
4941
|
+
gapsSearchedAat("golden hour | magic hour"),
|
|
4942
|
+
gapsSearchedUniclass("Golden hour | magic hour")
|
|
4943
|
+
]
|
|
4944
|
+
}
|
|
4945
|
+
),
|
|
4946
|
+
gapsTerm(
|
|
4947
|
+
"dusk",
|
|
4948
|
+
"Dusk",
|
|
4949
|
+
"The time after sunset but before full dark, when the sky still holds light and a room's own lamps begin to count.",
|
|
4950
|
+
{
|
|
4951
|
+
external: [
|
|
4952
|
+
mapping("aat", "300343622", "dusk", "close"),
|
|
4953
|
+
mapping("wikidata", "Q11288132", "dusk", "close")
|
|
4954
|
+
],
|
|
4955
|
+
related: relatedTo8(MOODY),
|
|
4956
|
+
searchedWithout: [gapsSearchedUniclass("Dusk | twilight")]
|
|
4957
|
+
}
|
|
4958
|
+
),
|
|
4959
|
+
gapsTerm(
|
|
4960
|
+
"evening",
|
|
4961
|
+
"Evening",
|
|
4962
|
+
"The latter part of the day, from about sunset until bedtime, when daylight gives way to lamps.",
|
|
4963
|
+
{
|
|
4964
|
+
altLabels: ["evening light"],
|
|
4965
|
+
external: [
|
|
4966
|
+
mapping("aat", "300343633", "evening", "close"),
|
|
4967
|
+
mapping("wikidata", "Q7725", "evening", "close")
|
|
4968
|
+
],
|
|
4969
|
+
related: relatedTo8("daylight.aspect.west-facing"),
|
|
4970
|
+
searchedWithout: [gapsSearchedUniclass("Evening | evening light")]
|
|
4971
|
+
}
|
|
4972
|
+
),
|
|
4973
|
+
gapsTerm(
|
|
4974
|
+
"night",
|
|
4975
|
+
"Night",
|
|
4976
|
+
"The hours between sunset and sunrise, when a room is seen by artificial light or none and the windows are dark.",
|
|
4977
|
+
{
|
|
4978
|
+
external: [
|
|
4979
|
+
mapping("aat", "300133095", "night", "close"),
|
|
4980
|
+
mapping("wikidata", "Q575", "night", "close")
|
|
4981
|
+
],
|
|
4982
|
+
related: relatedTo8(MOODY),
|
|
4983
|
+
searchedWithout: [gapsSearchedUniclass("Night")]
|
|
4984
|
+
}
|
|
4985
|
+
)
|
|
4986
|
+
];
|
|
4987
|
+
var TIME_OF_DAY_LIT_BY_TERMS = [
|
|
4988
|
+
gapsTerm(
|
|
4989
|
+
"lamplit",
|
|
4990
|
+
"Lamplit",
|
|
4991
|
+
"Seen by the pools of light from table lamps, floor lamps and wall lights, rather than by one overhead source or by daylight.",
|
|
4992
|
+
{
|
|
4993
|
+
altLabels: ["lamplight", "lamp-lit"],
|
|
4994
|
+
related: relatedTo8("element.luminaire", "mood.sheltering"),
|
|
4995
|
+
searchedWithout: [
|
|
4996
|
+
gapsSearchedAat("lamplight | lamp-lit"),
|
|
4997
|
+
gapsSearchedUniclass("Lamplight | lamplit"),
|
|
4998
|
+
gapsSearchedWikidata("lamplight")
|
|
4999
|
+
]
|
|
5000
|
+
}
|
|
5001
|
+
),
|
|
5002
|
+
gapsTerm(
|
|
5003
|
+
"candlelit",
|
|
5004
|
+
"Candlelit",
|
|
5005
|
+
"Seen by the light of candles or open flame: low, warm and unsteady, with deep shadow beyond it.",
|
|
5006
|
+
{
|
|
5007
|
+
altLabels: ["candlelight", "candle-lit"],
|
|
5008
|
+
related: relatedTo8(MOODY),
|
|
5009
|
+
searchedWithout: [
|
|
5010
|
+
gapsSearchedAat("candlelight | candle-lit"),
|
|
5011
|
+
gapsSearchedUniclass("Candlelight | candlelit"),
|
|
5012
|
+
gapsSearchedWikidata("candlelight")
|
|
5013
|
+
]
|
|
5014
|
+
}
|
|
5015
|
+
)
|
|
5016
|
+
];
|
|
5017
|
+
|
|
5018
|
+
// src/axes/gaps-axes.ts
|
|
5019
|
+
var CERTIFICATION_AXIS = {
|
|
5020
|
+
boundary: "Certification is the named scheme or declaration that evidences a requirement: FSC for responsible sourcing, GREENGUARD for indoor air quality, an environmental product declaration for embodied carbon. Requirement is the need a project states and may be met by a different scheme or a test report; a scheme is never a kind of requirement, so the two are linked with related-to and never nested. It is not Procurement, which is how a thing is bought, and not Tier, which is where it sits in a market. Holding a certificate is a claim for a source system to evidence, as it is for Requirement.",
|
|
5021
|
+
facets: single(
|
|
5022
|
+
"certification",
|
|
5023
|
+
"Certification",
|
|
5024
|
+
CERTIFICATION_TERMS,
|
|
5025
|
+
GAPS_LIFECYCLE
|
|
5026
|
+
),
|
|
5027
|
+
governance: GAPS_LIFECYCLE,
|
|
5028
|
+
label: "Certification",
|
|
5029
|
+
question: "What scheme or declaration evidences it?",
|
|
5030
|
+
slug: "certification",
|
|
5031
|
+
status: "authored"
|
|
5032
|
+
};
|
|
5033
|
+
var INTERVENTION_AXIS = {
|
|
5034
|
+
boundary: "Intervention is what a project does to a building: build it new, renew it, convert it, extend it, restore it or fit out its interior. It is not Sector, which is whom the building serves, not Typology, which is what it is, and not Period, which is when it was made: a warehouse converted to flats keeps its typology and carries the intervention adaptive reuse. It is not Strategy, which is what the design sets out to achieve, and not the trade doing the work. A project may carry several, such as a conversion with an extension.",
|
|
5035
|
+
facets: single(
|
|
5036
|
+
"intervention",
|
|
5037
|
+
"Intervention",
|
|
5038
|
+
INTERVENTION_TERMS,
|
|
5039
|
+
GAPS_LIFECYCLE
|
|
5040
|
+
),
|
|
5041
|
+
governance: GAPS_LIFECYCLE,
|
|
5042
|
+
label: "Intervention",
|
|
5043
|
+
question: "What is being done to the building?",
|
|
5044
|
+
slug: "intervention",
|
|
5045
|
+
status: "authored"
|
|
5046
|
+
};
|
|
5047
|
+
var BRIEF_AXES = [
|
|
5048
|
+
CERTIFICATION_AXIS,
|
|
5049
|
+
INTERVENTION_AXIS
|
|
5050
|
+
];
|
|
5051
|
+
var TIME_OF_DAY_AXIS = {
|
|
5052
|
+
boundary: "Time of day is the hour a scheme is designed for or evokes, and the kind of light it is seen by after dark, reached by `evokes` like Season, Place and Period are. It is not Season, which is the time of year and which an hour composes with; not Daylight, which records the natural light a room receives and the way it faces, a fact about the room and not about a scheme; and not Mood, where calm and moody are outcomes rather than hours. Lit by names a kind of source and nothing more: luminaires are Element terms, and no lighting design is recorded on any axis.",
|
|
5053
|
+
facets: [
|
|
5054
|
+
{
|
|
5055
|
+
governance: GAPS_LIFECYCLE,
|
|
5056
|
+
label: "Hour",
|
|
5057
|
+
slug: "hour",
|
|
5058
|
+
terms: TIME_OF_DAY_HOUR_TERMS
|
|
5059
|
+
},
|
|
5060
|
+
{
|
|
5061
|
+
governance: GAPS_LIFECYCLE,
|
|
5062
|
+
label: "Lit by",
|
|
5063
|
+
slug: "lit-by",
|
|
5064
|
+
terms: TIME_OF_DAY_LIT_BY_TERMS
|
|
5065
|
+
}
|
|
5066
|
+
],
|
|
5067
|
+
governance: GAPS_LIFECYCLE,
|
|
5068
|
+
label: "Time of day",
|
|
5069
|
+
question: "Which hour is it meant for, and what is it lit by?",
|
|
5070
|
+
slug: "time-of-day",
|
|
5071
|
+
status: "authored"
|
|
5072
|
+
};
|
|
5073
|
+
|
|
4457
5074
|
// src/axes/installation-layout.ts
|
|
4458
5075
|
var REVIEW_DATE5 = "2026-08-31";
|
|
4459
5076
|
var REVIEW_SOURCE4 = "@instruments/taxonomy TAX-45 reviewed implementation contract";
|
|
@@ -4483,7 +5100,7 @@ var mgLayoutTerm = (slug, label, definition, extra = {}) => ({
|
|
|
4483
5100
|
...extra
|
|
4484
5101
|
});
|
|
4485
5102
|
var RUNNING_BOND = "installation-layout.running-bond";
|
|
4486
|
-
var
|
|
5103
|
+
var relatedTo9 = (...targets) => targets.map((target) => ({ predicate: "related-to", target }));
|
|
4487
5104
|
var INSTALLATION_LAYOUT_TERMS = [
|
|
4488
5105
|
{
|
|
4489
5106
|
...term5(
|
|
@@ -4491,7 +5108,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4491
5108
|
"Stack bond",
|
|
4492
5109
|
"Equal units align in straight rows and columns with joints continuing across both directions."
|
|
4493
5110
|
),
|
|
4494
|
-
related:
|
|
5111
|
+
related: relatedTo9(RUNNING_BOND),
|
|
4495
5112
|
searchedWithout: [searchedUniclass3("stack bond")]
|
|
4496
5113
|
},
|
|
4497
5114
|
{
|
|
@@ -4508,7 +5125,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4508
5125
|
"Offset grid",
|
|
4509
5126
|
"Units occupy a repeated grid whose adjacent rows or columns are displaced, without the directional course identity of running bond."
|
|
4510
5127
|
),
|
|
4511
|
-
related:
|
|
5128
|
+
related: relatedTo9(RUNNING_BOND),
|
|
4512
5129
|
searchedWithout: [searchedUniclass3("Offset grid flooring")]
|
|
4513
5130
|
},
|
|
4514
5131
|
{
|
|
@@ -4539,7 +5156,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4539
5156
|
}
|
|
4540
5157
|
}
|
|
4541
5158
|
),
|
|
4542
|
-
related:
|
|
5159
|
+
related: relatedTo9("installation-layout.herringbone"),
|
|
4543
5160
|
searchedWithout: [searchedUniclass3("chevron flooring")]
|
|
4544
5161
|
},
|
|
4545
5162
|
{
|
|
@@ -4556,7 +5173,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4556
5173
|
"Pinwheel",
|
|
4557
5174
|
"Units rotate around repeated centres, commonly with a smaller central unit."
|
|
4558
5175
|
),
|
|
4559
|
-
related:
|
|
5176
|
+
related: relatedTo9("installation-layout.multi-size-modular"),
|
|
4560
5177
|
searchedWithout: [searchedUniclass3("Pinwheel flooring")]
|
|
4561
5178
|
},
|
|
4562
5179
|
{
|
|
@@ -4565,7 +5182,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4565
5182
|
"Multi-size modular",
|
|
4566
5183
|
"Two or more unit sizes repeat as one governed modular installation sequence."
|
|
4567
5184
|
),
|
|
4568
|
-
related:
|
|
5185
|
+
related: relatedTo9("installation-layout.periodic-multi-shape"),
|
|
4569
5186
|
searchedWithout: [searchedUniclass3("Multi-size modular flooring")]
|
|
4570
5187
|
},
|
|
4571
5188
|
{
|
|
@@ -4574,7 +5191,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4574
5191
|
"Ashlar",
|
|
4575
5192
|
"Rectangular units of varied lengths or sizes form coursed horizontal joints with controlled vertical-joint displacement."
|
|
4576
5193
|
),
|
|
4577
|
-
related:
|
|
5194
|
+
related: relatedTo9(RUNNING_BOND),
|
|
4578
5195
|
searchedWithout: [searchedUniclass3("ashlar masonry")]
|
|
4579
5196
|
},
|
|
4580
5197
|
{
|
|
@@ -4583,7 +5200,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4583
5200
|
"Random stagger",
|
|
4584
5201
|
"Elongated units form courses whose end joints vary without a stable repeating offset."
|
|
4585
5202
|
),
|
|
4586
|
-
related:
|
|
5203
|
+
related: relatedTo9(RUNNING_BOND),
|
|
4587
5204
|
searchedWithout: [searchedUniclass3("Random stagger flooring")]
|
|
4588
5205
|
},
|
|
4589
5206
|
{
|
|
@@ -4619,7 +5236,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4619
5236
|
"Versailles parquet",
|
|
4620
5237
|
"Framed square panels, each filled with an interlocking diagonal basketweave lattice, repeat across the surface."
|
|
4621
5238
|
),
|
|
4622
|
-
related:
|
|
5239
|
+
related: relatedTo9("installation-layout.basketweave"),
|
|
4623
5240
|
searchedWithout: [searchedUniclass3("Versailles parquet")]
|
|
4624
5241
|
},
|
|
4625
5242
|
{
|
|
@@ -4628,7 +5245,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4628
5245
|
"Chantilly parquet",
|
|
4629
5246
|
"Framed square panels, each filled with an interlaced lattice of diamond or cross-shaped units, repeat across the surface."
|
|
4630
5247
|
),
|
|
4631
|
-
related:
|
|
5248
|
+
related: relatedTo9("installation-layout.versailles"),
|
|
4632
5249
|
searchedWithout: [searchedUniclass3("Chantilly parquet")]
|
|
4633
5250
|
},
|
|
4634
5251
|
// MG-2218. Narrower than herringbone: every double herringbone installation is also a broken
|
|
@@ -4650,7 +5267,7 @@ var INSTALLATION_LAYOUT_TERMS = [
|
|
|
4650
5267
|
"Hexagonal parquet block",
|
|
4651
5268
|
"Elongated units arranged radially in groups of six form repeating hexagonal parquet blocks across the surface."
|
|
4652
5269
|
),
|
|
4653
|
-
related:
|
|
5270
|
+
related: relatedTo9("installation-layout.versailles"),
|
|
4654
5271
|
searchedWithout: [searchedUniclass3("Hexagonal parquet block flooring")]
|
|
4655
5272
|
}
|
|
4656
5273
|
];
|
|
@@ -4888,6 +5505,8 @@ var EN_14080 = "EN 14080:2013";
|
|
|
4888
5505
|
var EN_16351 = "EN 16351:2021";
|
|
4889
5506
|
var EN_14374 = "EN 14374:2004";
|
|
4890
5507
|
var ENGINEERED_WOOD_SLUG = "engineered-wood";
|
|
5508
|
+
var MASS_TIMBER_SLUG = "mass-timber";
|
|
5509
|
+
var CROSS_LAMINATED_TIMBER = "cross-laminated timber";
|
|
4891
5510
|
var MATERIAL_ENGINEERED_WOOD_TERMS = [
|
|
4892
5511
|
// Families.
|
|
4893
5512
|
compositionTerm(
|
|
@@ -4938,16 +5557,14 @@ var MATERIAL_ENGINEERED_WOOD_TERMS = [
|
|
|
4938
5557
|
"A structural timber product manufactured from layers of timber boards stacked and bonded together with the grain of each layer rotated orthogonally to the adjacent layers.",
|
|
4939
5558
|
EN_16351,
|
|
4940
5559
|
{
|
|
4941
|
-
altLabels: [
|
|
4942
|
-
broaderSlug:
|
|
5560
|
+
altLabels: [CROSS_LAMINATED_TIMBER],
|
|
5561
|
+
broaderSlug: MASS_TIMBER_SLUG,
|
|
4943
5562
|
external: [
|
|
4944
|
-
externalMapping(
|
|
4945
|
-
|
|
4946
|
-
"Q911043",
|
|
4947
|
-
"cross-laminated timber",
|
|
4948
|
-
"close"
|
|
4949
|
-
)
|
|
5563
|
+
externalMapping("wikidata", "Q911043", CROSS_LAMINATED_TIMBER, "close"),
|
|
5564
|
+
externalMapping("aat", "300444008", CROSS_LAMINATED_TIMBER, "close")
|
|
4950
5565
|
],
|
|
5566
|
+
// Re-parented beneath `mass-timber` on the date that term was added.
|
|
5567
|
+
reviewedAt: GAPS_DATE,
|
|
4951
5568
|
searchedWithout: searchedUniclass5("CLT | cross-laminated timber | clt"),
|
|
4952
5569
|
seenAs: ["cross laminated timber"]
|
|
4953
5570
|
}
|
|
@@ -4988,15 +5605,18 @@ var MATERIAL_ENGINEERED_WOOD_TERMS = [
|
|
|
4988
5605
|
EN_14080,
|
|
4989
5606
|
{
|
|
4990
5607
|
altLabels: ["glued laminated timber", "glue-laminated timber"],
|
|
4991
|
-
broaderSlug:
|
|
5608
|
+
broaderSlug: MASS_TIMBER_SLUG,
|
|
4992
5609
|
external: [
|
|
4993
5610
|
externalMapping(
|
|
4994
5611
|
"wikidata",
|
|
4995
5612
|
"Q643449",
|
|
4996
5613
|
"glued laminated timber",
|
|
4997
5614
|
"close"
|
|
4998
|
-
)
|
|
5615
|
+
),
|
|
5616
|
+
externalMapping("aat", "300390588", "glue-laminated timber", "close")
|
|
4999
5617
|
],
|
|
5618
|
+
// Re-parented beneath `mass-timber` on the date that term was added.
|
|
5619
|
+
reviewedAt: GAPS_DATE,
|
|
5000
5620
|
searchedWithout: searchedUniclass5(
|
|
5001
5621
|
"Glulam | glued laminated timber | glue-laminated timber | glulam"
|
|
5002
5622
|
)
|
|
@@ -5021,6 +5641,26 @@ var MATERIAL_ENGINEERED_WOOD_TERMS = [
|
|
|
5021
5641
|
searchedWithout: searchedUniclass5("LVL | laminated veneer lumber | lvl")
|
|
5022
5642
|
}
|
|
5023
5643
|
),
|
|
5644
|
+
// The structural class CLT and glulam sit in. Every CLT and every glulam member is mass timber,
|
|
5645
|
+
// so both nest here; LVL does not, because it is built up from veneers and not from large solid
|
|
5646
|
+
// elements. Added for TAX-66, and no outside vocabulary has it: AAT and Uniclass name the
|
|
5647
|
+
// products and not the class.
|
|
5648
|
+
authoredTerm(
|
|
5649
|
+
MASS_TIMBER_SLUG,
|
|
5650
|
+
"Mass timber",
|
|
5651
|
+
"Structural engineered wood made from large solid timber elements bonded into load-bearing panels, beams and columns, such as cross-laminated timber and glued laminated timber, rather than from small sections or fibre.",
|
|
5652
|
+
{
|
|
5653
|
+
broaderSlug: ENGINEERED_WOOD_SLUG,
|
|
5654
|
+
introducedAt: GAPS_DATE,
|
|
5655
|
+
provenance: GAPS_PROVENANCE,
|
|
5656
|
+
reviewedAt: GAPS_DATE,
|
|
5657
|
+
searchedWithout: [
|
|
5658
|
+
gapsSearchedUniclass("Mass timber | massive timber"),
|
|
5659
|
+
gapsSearchedAat("mass timber"),
|
|
5660
|
+
gapsSearchedWikidata("mass timber")
|
|
5661
|
+
]
|
|
5662
|
+
}
|
|
5663
|
+
),
|
|
5024
5664
|
compositionTerm(
|
|
5025
5665
|
"osb",
|
|
5026
5666
|
"OSB",
|
|
@@ -7230,6 +7870,29 @@ var MATERIAL_MINERALS_TERMS = [
|
|
|
7230
7870
|
externalMapping("wikidata", "Q6549153", "lime plaster", "close")
|
|
7231
7871
|
]
|
|
7232
7872
|
}
|
|
7873
|
+
),
|
|
7874
|
+
// Added for TAX-66. AAT and Uniclass both name it as a material (Uniclass by its French word,
|
|
7875
|
+
// Pisé), where Wikidata names the building technique, hence `close` on every mapping. Beneath
|
|
7876
|
+
// `mineral` because the body is subsoil, which is mineral whatever it is stabilised with. Not
|
|
7877
|
+
// filed under a material family: stabilised earth is cement-bound only in part, so no shelf holds
|
|
7878
|
+
// for every instance.
|
|
7879
|
+
authoredTerm(
|
|
7880
|
+
"rammed-earth",
|
|
7881
|
+
"Rammed earth",
|
|
7882
|
+
"Subsoil of sand, gravel and clay compacted in layers within formwork to form a monolithic wall or floor, with or without a cement or lime stabiliser.",
|
|
7883
|
+
{
|
|
7884
|
+
altLabels: ["pis\xE9", "pis\xE9 de terre"],
|
|
7885
|
+
broaderSlug: MINERAL_SLUG2,
|
|
7886
|
+
external: [
|
|
7887
|
+
externalMapping("aat", "300014365", "rammed earth", "close"),
|
|
7888
|
+
externalMapping("uniclass", "Ma_20_64", "Pis\xE9", "close"),
|
|
7889
|
+
externalMapping("wikidata", "Q1363009", "rammed earth", "close")
|
|
7890
|
+
],
|
|
7891
|
+
introducedAt: GAPS_DATE,
|
|
7892
|
+
provenance: GAPS_PROVENANCE,
|
|
7893
|
+
related: [{ predicate: "related-to", target: "material.clay" }],
|
|
7894
|
+
reviewedAt: GAPS_DATE
|
|
7895
|
+
}
|
|
7233
7896
|
)
|
|
7234
7897
|
];
|
|
7235
7898
|
|
|
@@ -10810,7 +11473,7 @@ var SNAPSHOT4 = "2026-08-21";
|
|
|
10810
11473
|
var MS_MOOD = "ms_mood, a mood dictionary in a materials-retrieval system (src-05)";
|
|
10811
11474
|
var ADR = "@instruments/taxonomy ADR 0001";
|
|
10812
11475
|
var aat5 = (identifier, label, match) => ({ identifier, label, match, scheme: "aat" });
|
|
10813
|
-
var
|
|
11476
|
+
var relatedTo10 = (target) => ({
|
|
10814
11477
|
predicate: "related-to",
|
|
10815
11478
|
target
|
|
10816
11479
|
});
|
|
@@ -10862,7 +11525,7 @@ var MOOD_TERMS = [
|
|
|
10862
11525
|
definition: "Sharp edges and clean contrast; the opposite meaning to soft.",
|
|
10863
11526
|
label: "Crisp",
|
|
10864
11527
|
provenance: { basis: "vendored", snapshot: SNAPSHOT4, source: MS_MOOD },
|
|
10865
|
-
related: [
|
|
11528
|
+
related: [relatedTo10("mood.soft")],
|
|
10866
11529
|
searchedWithout: [
|
|
10867
11530
|
{
|
|
10868
11531
|
date: SEARCHED_ON,
|
|
@@ -10877,7 +11540,7 @@ var MOOD_TERMS = [
|
|
|
10877
11540
|
definition: "Dark, low-lit and enclosing, without necessarily being theatrical.",
|
|
10878
11541
|
label: "Moody",
|
|
10879
11542
|
provenance: { basis: "vendored", snapshot: SNAPSHOT4, source: MS_MOOD },
|
|
10880
|
-
related: [
|
|
11543
|
+
related: [relatedTo10("mood.dramatic")],
|
|
10881
11544
|
searchedWithout: [
|
|
10882
11545
|
{
|
|
10883
11546
|
date: SEARCHED_ON,
|
|
@@ -10936,7 +11599,7 @@ var MOOD_TERMS = [
|
|
|
10936
11599
|
definition: "Sober and unplayful; the room signals that consequential things happen in it.",
|
|
10937
11600
|
label: "Serious",
|
|
10938
11601
|
provenance: { basis: "vendored", snapshot: SNAPSHOT4, source: MS_MOOD },
|
|
10939
|
-
related: [
|
|
11602
|
+
related: [relatedTo10("mood.playful")],
|
|
10940
11603
|
searchedWithout: [
|
|
10941
11604
|
{
|
|
10942
11605
|
date: SEARCHED_ON,
|
|
@@ -10953,7 +11616,7 @@ var MOOD_TERMS = [
|
|
|
10953
11616
|
label: "Austere",
|
|
10954
11617
|
note: "Authored here. Two estate vocabularies carry a monastic register (a rendering pipeline's `tactile-monastic`, a materials-retrieval system's `monastic`) that no ms_mood term reaches: `calm` and `serious` both understate it, and neither carries the renunciation.",
|
|
10955
11618
|
provenance: { basis: "authored", source: ADR },
|
|
10956
|
-
related: [
|
|
11619
|
+
related: [relatedTo10("mood.calm"), relatedTo10("mood.serious")],
|
|
10957
11620
|
searchedWithout: [
|
|
10958
11621
|
{
|
|
10959
11622
|
date: SEARCHED_ON,
|
|
@@ -11006,7 +11669,7 @@ var MOOD_TERMS = [
|
|
|
11006
11669
|
],
|
|
11007
11670
|
label: "Quiet Luxury",
|
|
11008
11671
|
provenance: { basis: "vendored", snapshot: SNAPSHOT4, source: MS_MOOD },
|
|
11009
|
-
related: [
|
|
11672
|
+
related: [relatedTo10("mood.luxurious")],
|
|
11010
11673
|
searchedWithout: [
|
|
11011
11674
|
{
|
|
11012
11675
|
date: SEARCHED_ON,
|
|
@@ -11070,361 +11733,398 @@ var MOOD_TERMS = [
|
|
|
11070
11733
|
}
|
|
11071
11734
|
];
|
|
11072
11735
|
|
|
11736
|
+
// src/axes/palette.generated.ts
|
|
11737
|
+
var COLORSCOPE_VERSION = "10.4.0";
|
|
11738
|
+
var COLOUR_LAYER = {
|
|
11739
|
+
"basic-tone": [
|
|
11740
|
+
{
|
|
11741
|
+
altLabels: [],
|
|
11742
|
+
definition: "High-lightness colors inside a family.",
|
|
11743
|
+
hex: null,
|
|
11744
|
+
id: "light",
|
|
11745
|
+
label: "Light",
|
|
11746
|
+
uri: "https://colorscope.materialinstruments.com/id/basic-tone/light"
|
|
11747
|
+
},
|
|
11748
|
+
{
|
|
11749
|
+
altLabels: [],
|
|
11750
|
+
definition: "Canonical product-facing colors inside a family.",
|
|
11751
|
+
hex: null,
|
|
11752
|
+
id: "mid",
|
|
11753
|
+
label: "Medium",
|
|
11754
|
+
uri: "https://colorscope.materialinstruments.com/id/basic-tone/mid"
|
|
11755
|
+
},
|
|
11756
|
+
{
|
|
11757
|
+
altLabels: [],
|
|
11758
|
+
definition: "Low-lightness colors inside a family.",
|
|
11759
|
+
hex: null,
|
|
11760
|
+
id: "dark",
|
|
11761
|
+
label: "Dark",
|
|
11762
|
+
uri: "https://colorscope.materialinstruments.com/id/basic-tone/dark"
|
|
11763
|
+
},
|
|
11764
|
+
{
|
|
11765
|
+
altLabels: [],
|
|
11766
|
+
definition: "Lower-chroma colors inside a family.",
|
|
11767
|
+
hex: null,
|
|
11768
|
+
id: "muted",
|
|
11769
|
+
label: "Muted",
|
|
11770
|
+
uri: "https://colorscope.materialinstruments.com/id/basic-tone/muted"
|
|
11771
|
+
},
|
|
11772
|
+
{
|
|
11773
|
+
altLabels: [],
|
|
11774
|
+
definition: "Higher-chroma colors inside a family.",
|
|
11775
|
+
hex: null,
|
|
11776
|
+
id: "vivid",
|
|
11777
|
+
label: "Vivid",
|
|
11778
|
+
uri: "https://colorscope.materialinstruments.com/id/basic-tone/vivid"
|
|
11779
|
+
}
|
|
11780
|
+
],
|
|
11781
|
+
family: [
|
|
11782
|
+
{
|
|
11783
|
+
altLabels: [],
|
|
11784
|
+
definition: "Light neutral colors spanning crisp whites, cool whites, soft chalks, and paper-like off-whites.",
|
|
11785
|
+
hex: "#f3efe6",
|
|
11786
|
+
id: "white",
|
|
11787
|
+
label: "White",
|
|
11788
|
+
uri: "https://colorscope.materialinstruments.com/id/family/white"
|
|
11789
|
+
},
|
|
11790
|
+
{
|
|
11791
|
+
altLabels: [],
|
|
11792
|
+
definition: "Warm white and pale cream colors spanning ivory, linen white, vanilla, eggshell, and softened cream tones.",
|
|
11793
|
+
hex: "#f3ead8",
|
|
11794
|
+
id: "cream",
|
|
11795
|
+
label: "Cream",
|
|
11796
|
+
uri: "https://colorscope.materialinstruments.com/id/family/cream"
|
|
11797
|
+
},
|
|
11798
|
+
{
|
|
11799
|
+
altLabels: ["Grey"],
|
|
11800
|
+
definition: "Cool and warm grays spanning mist, stone, slate, pewter, and architectural neutrals.",
|
|
11801
|
+
hex: "#8c8d8f",
|
|
11802
|
+
id: "gray",
|
|
11803
|
+
label: "Gray",
|
|
11804
|
+
uri: "https://colorscope.materialinstruments.com/id/family/gray"
|
|
11805
|
+
},
|
|
11806
|
+
{
|
|
11807
|
+
altLabels: [],
|
|
11808
|
+
definition: "Near-black and black-led colors with mineral, ink, soot, and shadow character.",
|
|
11809
|
+
hex: "#232425",
|
|
11810
|
+
id: "black",
|
|
11811
|
+
label: "Black",
|
|
11812
|
+
uri: "https://colorscope.materialinstruments.com/id/family/black"
|
|
11813
|
+
},
|
|
11814
|
+
{
|
|
11815
|
+
altLabels: [],
|
|
11816
|
+
definition: "Light warm neutrals built from sand, linen, oat, ecru, and mellow mineral undertones.",
|
|
11817
|
+
hex: "#d1c2a5",
|
|
11818
|
+
id: "beige",
|
|
11819
|
+
label: "Beige",
|
|
11820
|
+
uri: "https://colorscope.materialinstruments.com/id/family/beige"
|
|
11821
|
+
},
|
|
11822
|
+
{
|
|
11823
|
+
altLabels: [],
|
|
11824
|
+
definition: "Grey-brown and mushroom neutrals sitting between beige, brown, and grey.",
|
|
11825
|
+
hex: "#8b7d6b",
|
|
11826
|
+
id: "taupe",
|
|
11827
|
+
label: "Taupe",
|
|
11828
|
+
uri: "https://colorscope.materialinstruments.com/id/family/taupe"
|
|
11829
|
+
},
|
|
11830
|
+
{
|
|
11831
|
+
altLabels: [],
|
|
11832
|
+
definition: "Earth and wood colors spanning bark, spice, soil, cocoa, leather, and dark timber tones.",
|
|
11833
|
+
hex: "#7b5738",
|
|
11834
|
+
id: "brown",
|
|
11835
|
+
label: "Brown",
|
|
11836
|
+
uri: "https://colorscope.materialinstruments.com/id/family/brown"
|
|
11837
|
+
},
|
|
11838
|
+
{
|
|
11839
|
+
altLabels: [],
|
|
11840
|
+
definition: "Red-led colors spanning crimson, vermilion, tomato, signal red, and deep wine hues.",
|
|
11841
|
+
hex: "#b4403f",
|
|
11842
|
+
id: "red",
|
|
11843
|
+
label: "Red",
|
|
11844
|
+
uri: "https://colorscope.materialinstruments.com/id/family/red"
|
|
11845
|
+
},
|
|
11846
|
+
{
|
|
11847
|
+
altLabels: [],
|
|
11848
|
+
definition: "Orange-led colors spanning terracotta, rust, clay, amber, spice, and peel-bright hues.",
|
|
11849
|
+
hex: "#c77448",
|
|
11850
|
+
id: "orange",
|
|
11851
|
+
label: "Orange",
|
|
11852
|
+
uri: "https://colorscope.materialinstruments.com/id/family/orange"
|
|
11853
|
+
},
|
|
11854
|
+
{
|
|
11855
|
+
altLabels: [],
|
|
11856
|
+
definition: "Yellow-led colors ranging from straw and butter tones through gold, citrus, and saffron.",
|
|
11857
|
+
hex: "#d5b468",
|
|
11858
|
+
id: "yellow",
|
|
11859
|
+
label: "Yellow",
|
|
11860
|
+
uri: "https://colorscope.materialinstruments.com/id/family/yellow"
|
|
11861
|
+
},
|
|
11862
|
+
{
|
|
11863
|
+
altLabels: [],
|
|
11864
|
+
definition: "Green-led colors spanning sage, herb, leaf, forest, mint, and botanical families.",
|
|
11865
|
+
hex: "#5c8a57",
|
|
11866
|
+
id: "green",
|
|
11867
|
+
label: "Green",
|
|
11868
|
+
uri: "https://colorscope.materialinstruments.com/id/family/green"
|
|
11869
|
+
},
|
|
11870
|
+
{
|
|
11871
|
+
altLabels: ["Blue Green", "Blue-Green"],
|
|
11872
|
+
definition: "Blue-green colors spanning aqua, lagoon, patina, seafoam, and mineral teal tones.",
|
|
11873
|
+
hex: "#4e8e8e",
|
|
11874
|
+
id: "teal",
|
|
11875
|
+
label: "Teal",
|
|
11876
|
+
uri: "https://colorscope.materialinstruments.com/id/family/teal"
|
|
11877
|
+
},
|
|
11878
|
+
{
|
|
11879
|
+
altLabels: [],
|
|
11880
|
+
definition: "Blue-led colors spanning sky, sea, teal-leaning, ink, navy, and mineral blue families.",
|
|
11881
|
+
hex: "#4a6e8e",
|
|
11882
|
+
id: "blue",
|
|
11883
|
+
label: "Blue",
|
|
11884
|
+
uri: "https://colorscope.materialinstruments.com/id/family/blue"
|
|
11885
|
+
},
|
|
11886
|
+
{
|
|
11887
|
+
altLabels: [],
|
|
11888
|
+
definition: "Purple-led colors covering lavender, mauve, plum, indigo, and smoke-violet concepts.",
|
|
11889
|
+
hex: "#7a5a88",
|
|
11890
|
+
id: "purple",
|
|
11891
|
+
label: "Purple",
|
|
11892
|
+
uri: "https://colorscope.materialinstruments.com/id/family/purple"
|
|
11893
|
+
},
|
|
11894
|
+
{
|
|
11895
|
+
altLabels: [],
|
|
11896
|
+
definition: "Pink-led colors spanning powder, rose, salmon, blossom, and berry-pink concepts.",
|
|
11897
|
+
hex: "#c98da0",
|
|
11898
|
+
id: "pink",
|
|
11899
|
+
label: "Pink",
|
|
11900
|
+
uri: "https://colorscope.materialinstruments.com/id/family/pink"
|
|
11901
|
+
}
|
|
11902
|
+
],
|
|
11903
|
+
palette: [
|
|
11904
|
+
{
|
|
11905
|
+
altLabels: [],
|
|
11906
|
+
definition: "A palette of high vibrancy that does not spread across three or more distinct hues.",
|
|
11907
|
+
hex: null,
|
|
11908
|
+
id: "vibrant",
|
|
11909
|
+
label: "Vibrant",
|
|
11910
|
+
uri: "https://colorscope.materialinstruments.com/id/palette/vibrant"
|
|
11911
|
+
},
|
|
11912
|
+
{
|
|
11913
|
+
altLabels: [],
|
|
11914
|
+
definition: "A palette of low vibrancy and middle lightness: the default when no other composition applies.",
|
|
11915
|
+
hex: null,
|
|
11916
|
+
id: "muted",
|
|
11917
|
+
label: "Muted",
|
|
11918
|
+
uri: "https://colorscope.materialinstruments.com/id/palette/muted"
|
|
11919
|
+
},
|
|
11920
|
+
{
|
|
11921
|
+
altLabels: [],
|
|
11922
|
+
definition: "A palette whose proportion-weighted lightness is low, and which is neither monochrome nor vibrant.",
|
|
11923
|
+
hex: null,
|
|
11924
|
+
id: "dark",
|
|
11925
|
+
label: "Dark",
|
|
11926
|
+
uri: "https://colorscope.materialinstruments.com/id/palette/dark"
|
|
11927
|
+
},
|
|
11928
|
+
{
|
|
11929
|
+
altLabels: [],
|
|
11930
|
+
definition: "A palette whose proportion-weighted lightness is high, and which is neither monochrome nor vibrant.",
|
|
11931
|
+
hex: null,
|
|
11932
|
+
id: "light",
|
|
11933
|
+
label: "Light",
|
|
11934
|
+
uri: "https://colorscope.materialinstruments.com/id/palette/light"
|
|
11935
|
+
},
|
|
11936
|
+
{
|
|
11937
|
+
altLabels: [],
|
|
11938
|
+
definition: "A palette built from a single hue with little variety between its colors.",
|
|
11939
|
+
hex: null,
|
|
11940
|
+
id: "monochrome",
|
|
11941
|
+
label: "Monochrome",
|
|
11942
|
+
uri: "https://colorscope.materialinstruments.com/id/palette/monochrome"
|
|
11943
|
+
},
|
|
11944
|
+
{
|
|
11945
|
+
altLabels: [],
|
|
11946
|
+
definition: "A palette of high vibrancy spread across three or more distinct hues.",
|
|
11947
|
+
hex: null,
|
|
11948
|
+
id: "colorful",
|
|
11949
|
+
label: "Colorful",
|
|
11950
|
+
uri: "https://colorscope.materialinstruments.com/id/palette/colorful"
|
|
11951
|
+
}
|
|
11952
|
+
],
|
|
11953
|
+
temperature: [
|
|
11954
|
+
{
|
|
11955
|
+
altLabels: [],
|
|
11956
|
+
definition: "The strongest cool reading: a highly chromatic color in the cyan to blue-violet hues.",
|
|
11957
|
+
hex: null,
|
|
11958
|
+
id: "cold",
|
|
11959
|
+
label: "Cold",
|
|
11960
|
+
uri: "https://colorscope.materialinstruments.com/id/temperature/cold"
|
|
11961
|
+
},
|
|
11962
|
+
{
|
|
11963
|
+
altLabels: [],
|
|
11964
|
+
definition: "A color that reads cool: blue-green to violet hues at modest chroma, and strongly chromatic greens and magentas.",
|
|
11965
|
+
hex: null,
|
|
11966
|
+
id: "cool",
|
|
11967
|
+
label: "Cool",
|
|
11968
|
+
uri: "https://colorscope.materialinstruments.com/id/temperature/cool"
|
|
11969
|
+
},
|
|
11970
|
+
{
|
|
11971
|
+
altLabels: [],
|
|
11972
|
+
definition: "Neither warm nor cool: achromatic colors, and weakly chromatic ones in the yellow-green, green and magenta hues.",
|
|
11973
|
+
hex: null,
|
|
11974
|
+
id: "neutral",
|
|
11975
|
+
label: "Neutral",
|
|
11976
|
+
uri: "https://colorscope.materialinstruments.com/id/temperature/neutral"
|
|
11977
|
+
},
|
|
11978
|
+
{
|
|
11979
|
+
altLabels: [],
|
|
11980
|
+
definition: "A color that reads warm: red, orange and yellow hues at modest chroma, and strongly chromatic yellow-greens.",
|
|
11981
|
+
hex: null,
|
|
11982
|
+
id: "warm",
|
|
11983
|
+
label: "Warm",
|
|
11984
|
+
uri: "https://colorscope.materialinstruments.com/id/temperature/warm"
|
|
11985
|
+
},
|
|
11986
|
+
{
|
|
11987
|
+
altLabels: [],
|
|
11988
|
+
definition: "The strongest warm reading: a highly chromatic red, orange or yellow.",
|
|
11989
|
+
hex: null,
|
|
11990
|
+
id: "hot",
|
|
11991
|
+
label: "Hot",
|
|
11992
|
+
uri: "https://colorscope.materialinstruments.com/id/temperature/hot"
|
|
11993
|
+
}
|
|
11994
|
+
]
|
|
11995
|
+
};
|
|
11996
|
+
|
|
11073
11997
|
// src/axes/palette.ts
|
|
11074
|
-
var
|
|
11075
|
-
var
|
|
11998
|
+
var COLOUR_LAYER_DATE = "2026-10-23";
|
|
11999
|
+
var V1_BASELINE = "2026-08-30";
|
|
11076
12000
|
var COLORSCOPE_AUTHORITY_URI = "https://colorscope.materialinstruments.com";
|
|
11077
|
-
var
|
|
11078
|
-
var
|
|
11079
|
-
|
|
11080
|
-
|
|
11081
|
-
|
|
11082
|
-
|
|
11083
|
-
|
|
11084
|
-
|
|
11085
|
-
{
|
|
11086
|
-
|
|
11087
|
-
|
|
11088
|
-
|
|
11089
|
-
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11093
|
-
|
|
11094
|
-
|
|
11095
|
-
|
|
11096
|
-
|
|
11097
|
-
|
|
11098
|
-
|
|
11099
|
-
|
|
11100
|
-
|
|
11101
|
-
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
|
|
11106
|
-
|
|
11107
|
-
|
|
11108
|
-
|
|
11109
|
-
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11115
|
-
|
|
11116
|
-
|
|
11117
|
-
|
|
11118
|
-
|
|
11119
|
-
|
|
11120
|
-
|
|
11121
|
-
|
|
11122
|
-
|
|
11123
|
-
|
|
11124
|
-
|
|
11125
|
-
|
|
11126
|
-
|
|
11127
|
-
},
|
|
11128
|
-
{
|
|
11129
|
-
altLabels: ["near-black", "ink black", "coal"],
|
|
11130
|
-
external: [
|
|
11131
|
-
{
|
|
11132
|
-
identifier: "Q23445",
|
|
11133
|
-
label: "black",
|
|
11134
|
-
match: "close",
|
|
11135
|
-
scheme: "wikidata"
|
|
11136
|
-
}
|
|
11137
|
-
],
|
|
11138
|
-
label: "Black",
|
|
11139
|
-
searchedWithout: [searchedUniclass3("Black colour")],
|
|
11140
|
-
slug: "black"
|
|
11141
|
-
},
|
|
11142
|
-
{
|
|
11143
|
-
altLabels: ["warm neutral", "sand"],
|
|
11144
|
-
external: [
|
|
11145
|
-
{
|
|
11146
|
-
identifier: "Q843607",
|
|
11147
|
-
label: "beige",
|
|
11148
|
-
match: "close",
|
|
11149
|
-
scheme: "wikidata"
|
|
11150
|
-
}
|
|
11151
|
-
],
|
|
11152
|
-
label: "Beige",
|
|
11153
|
-
searchedWithout: [searchedUniclass3("Beige colour")],
|
|
11154
|
-
slug: "beige"
|
|
11155
|
-
},
|
|
11156
|
-
{
|
|
11157
|
-
altLabels: ["greige", "mushroom", "putty"],
|
|
11158
|
-
external: [
|
|
11159
|
-
{
|
|
11160
|
-
identifier: "Q2307593",
|
|
11161
|
-
label: "taupe",
|
|
11162
|
-
match: "close",
|
|
11163
|
-
scheme: "wikidata"
|
|
11164
|
-
}
|
|
11165
|
-
],
|
|
11166
|
-
label: "Taupe",
|
|
11167
|
-
searchedWithout: [searchedUniclass3("Taupe colour")],
|
|
11168
|
-
slug: "taupe"
|
|
11169
|
-
},
|
|
11170
|
-
{
|
|
11171
|
-
altLabels: ["earth brown", "wood brown", "russet"],
|
|
11172
|
-
external: [
|
|
11173
|
-
{
|
|
11174
|
-
identifier: "Q47071",
|
|
11175
|
-
label: "brown",
|
|
11176
|
-
match: "close",
|
|
11177
|
-
scheme: "wikidata"
|
|
11178
|
-
}
|
|
11179
|
-
],
|
|
11180
|
-
label: "Brown",
|
|
11181
|
-
searchedWithout: [searchedUniclass3("Brown colour")],
|
|
11182
|
-
slug: "brown"
|
|
11183
|
-
},
|
|
11184
|
-
{
|
|
11185
|
-
altLabels: ["crimson", "scarlet", "carmine"],
|
|
11186
|
-
external: [
|
|
11187
|
-
{
|
|
11188
|
-
identifier: "Q3142",
|
|
11189
|
-
label: "red",
|
|
11190
|
-
match: "close",
|
|
11191
|
-
scheme: "wikidata"
|
|
11192
|
-
}
|
|
11193
|
-
],
|
|
11194
|
-
label: "Red",
|
|
11195
|
-
searchedWithout: [searchedUniclass3("Red colour")],
|
|
11196
|
-
slug: "red"
|
|
11197
|
-
},
|
|
11198
|
-
{
|
|
11199
|
-
altLabels: ["rust"],
|
|
11200
|
-
external: [
|
|
11201
|
-
{
|
|
11202
|
-
identifier: "Q39338",
|
|
11203
|
-
label: "orange",
|
|
11204
|
-
match: "close",
|
|
11205
|
-
scheme: "wikidata"
|
|
11206
|
-
}
|
|
11207
|
-
],
|
|
11208
|
-
label: "Orange",
|
|
11209
|
-
searchedWithout: [searchedUniclass3("Orange colour")],
|
|
11210
|
-
slug: "orange"
|
|
11211
|
-
},
|
|
11212
|
-
{
|
|
11213
|
-
altLabels: ["mustard", "ochre"],
|
|
11214
|
-
external: [
|
|
11215
|
-
{
|
|
11216
|
-
identifier: "Q943",
|
|
11217
|
-
label: "yellow",
|
|
11218
|
-
match: "close",
|
|
11219
|
-
scheme: "wikidata"
|
|
11220
|
-
}
|
|
11221
|
-
],
|
|
11222
|
-
label: "Yellow",
|
|
11223
|
-
searchedWithout: [searchedUniclass3("Yellow colour")],
|
|
11224
|
-
slug: "yellow"
|
|
11225
|
-
},
|
|
11226
|
-
{
|
|
11227
|
-
altLabels: ["sage", "olive"],
|
|
11228
|
-
external: [
|
|
11229
|
-
{
|
|
11230
|
-
identifier: "Q3133",
|
|
11231
|
-
label: "green",
|
|
11232
|
-
match: "close",
|
|
11233
|
-
scheme: "wikidata"
|
|
11234
|
-
}
|
|
11235
|
-
],
|
|
11236
|
-
label: "Green",
|
|
11237
|
-
searchedWithout: [searchedUniclass3("Green colour")],
|
|
11238
|
-
slug: "green"
|
|
11239
|
-
},
|
|
11240
|
-
{
|
|
11241
|
-
altLabels: ["aqua", "turquoise"],
|
|
11242
|
-
external: [
|
|
11243
|
-
{
|
|
11244
|
-
identifier: "Q1078214",
|
|
11245
|
-
label: "teal",
|
|
11246
|
-
match: "close",
|
|
11247
|
-
scheme: "wikidata"
|
|
11248
|
-
}
|
|
11249
|
-
],
|
|
11250
|
-
label: "Teal",
|
|
11251
|
-
searchedWithout: [searchedUniclass3("Teal colour")],
|
|
11252
|
-
slug: "teal"
|
|
11253
|
-
},
|
|
11254
|
-
{
|
|
11255
|
-
altLabels: ["navy", "indigo"],
|
|
11256
|
-
external: [
|
|
11257
|
-
{
|
|
11258
|
-
identifier: "Q1088",
|
|
11259
|
-
label: "blue",
|
|
11260
|
-
match: "close",
|
|
11261
|
-
scheme: "wikidata"
|
|
11262
|
-
}
|
|
11263
|
-
],
|
|
11264
|
-
label: "Blue",
|
|
11265
|
-
searchedWithout: [searchedUniclass3("Blue colour")],
|
|
11266
|
-
slug: "blue"
|
|
11267
|
-
},
|
|
11268
|
-
{
|
|
11269
|
-
altLabels: ["violet", "mauve"],
|
|
11270
|
-
external: [
|
|
11271
|
-
{
|
|
11272
|
-
identifier: "Q3257809",
|
|
11273
|
-
label: "purple",
|
|
11274
|
-
match: "close",
|
|
11275
|
-
scheme: "wikidata"
|
|
11276
|
-
}
|
|
11277
|
-
],
|
|
11278
|
-
label: "Purple",
|
|
11279
|
-
searchedWithout: [searchedUniclass3("Purple colour")],
|
|
11280
|
-
slug: "purple"
|
|
11281
|
-
},
|
|
11282
|
-
{
|
|
11283
|
-
altLabels: ["rose", "blush"],
|
|
11284
|
-
external: [
|
|
11285
|
-
{
|
|
11286
|
-
identifier: "Q429220",
|
|
11287
|
-
label: "pink",
|
|
11288
|
-
match: "close",
|
|
11289
|
-
scheme: "wikidata"
|
|
11290
|
-
}
|
|
11291
|
-
],
|
|
11292
|
-
label: "Pink",
|
|
11293
|
-
searchedWithout: [searchedUniclass3("Pink colour")],
|
|
11294
|
-
slug: "pink"
|
|
11295
|
-
}
|
|
11296
|
-
].map((term12) => ({
|
|
11297
|
-
...term12,
|
|
11298
|
-
canonicalAuthority: colorScopeAuthority(term12.slug, "color-family"),
|
|
11299
|
-
provenance: {
|
|
11300
|
-
basis: "vendored",
|
|
11301
|
-
snapshot: SNAPSHOT5,
|
|
11302
|
-
source: "@instruments/colorscope COLOR_FAMILIES"
|
|
11303
|
-
}
|
|
11304
|
-
}));
|
|
11305
|
-
var PALETTE_TEMPERATURE_TERMS = [
|
|
11306
|
-
{
|
|
11307
|
-
definition: "Dominant color casts to the warm side of the OKLab warmth axis.",
|
|
11308
|
-
label: "Warm",
|
|
11309
|
-
searchedWithout: [searchedUniclass3("Warm colour")],
|
|
11310
|
-
slug: "warm"
|
|
11311
|
-
},
|
|
11312
|
-
{
|
|
11313
|
-
definition: "Dominant color casts to the cool side of the OKLab warmth axis.",
|
|
11314
|
-
label: "Cool",
|
|
11315
|
-
searchedWithout: [searchedUniclass3("Cool colour")],
|
|
11316
|
-
slug: "cool"
|
|
11317
|
-
},
|
|
11318
|
-
{
|
|
11319
|
-
definition: "No decisive cast either way.",
|
|
11320
|
-
label: "Neutral",
|
|
11321
|
-
searchedWithout: [searchedUniclass3("Neutral colour")],
|
|
11322
|
-
slug: "neutral"
|
|
11323
|
-
}
|
|
11324
|
-
].map((term12) => ({
|
|
11325
|
-
...term12,
|
|
11326
|
-
canonicalAuthority: colorScopeAuthority(term12.slug, "temperature-level"),
|
|
11327
|
-
provenance: {
|
|
11328
|
-
basis: "vendored",
|
|
11329
|
-
snapshot: SNAPSHOT5,
|
|
11330
|
-
source: "colour_undertone, an undertone dictionary in a materials-retrieval system (src-05)"
|
|
11331
|
-
}
|
|
11332
|
-
}));
|
|
12001
|
+
var LAYER_SOURCE = `@materialinstruments/colorscope ${COLORSCOPE_VERSION} identities`;
|
|
12002
|
+
var COLOUR_LAYER_KINDS = {
|
|
12003
|
+
composition: { colorScopeKind: "palette", referenceKind: "palette-mood" },
|
|
12004
|
+
family: { colorScopeKind: "family", referenceKind: "color-family" },
|
|
12005
|
+
temperature: {
|
|
12006
|
+
colorScopeKind: "temperature",
|
|
12007
|
+
referenceKind: "temperature-level"
|
|
12008
|
+
},
|
|
12009
|
+
tone: { colorScopeKind: "basic-tone", referenceKind: "basic-tone" }
|
|
12010
|
+
};
|
|
12011
|
+
var PALETTE_LABEL_OVERRIDES = {
|
|
12012
|
+
"composition/colorful": "Polychrome"
|
|
12013
|
+
};
|
|
12014
|
+
var termFor = (facet, entry) => {
|
|
12015
|
+
const { referenceKind } = COLOUR_LAYER_KINDS[facet];
|
|
12016
|
+
const override = PALETTE_LABEL_OVERRIDES[`${facet}/${entry.id}`];
|
|
12017
|
+
const altLabels = override === void 0 ? entry.altLabels : [entry.label, ...entry.altLabels];
|
|
12018
|
+
return {
|
|
12019
|
+
...altLabels.length === 0 ? {} : { altLabels },
|
|
12020
|
+
canonicalAuthority: {
|
|
12021
|
+
authority: "colorscope",
|
|
12022
|
+
authorityUri: COLORSCOPE_AUTHORITY_URI,
|
|
12023
|
+
identifier: entry.id,
|
|
12024
|
+
referenceKind,
|
|
12025
|
+
uri: entry.uri
|
|
12026
|
+
},
|
|
12027
|
+
...entry.definition === null ? {} : { definition: entry.definition },
|
|
12028
|
+
...entry.hex === null ? {} : { hex: entry.hex },
|
|
12029
|
+
introducedAt: COLOUR_LAYER_DATE,
|
|
12030
|
+
label: override ?? entry.label,
|
|
12031
|
+
...override === void 0 ? {} : {
|
|
12032
|
+
note: `ColorScope labels this concept ${entry.label}; Taxonomy reads it as ${override}.`
|
|
12033
|
+
},
|
|
12034
|
+
provenance: {
|
|
12035
|
+
basis: "vendored",
|
|
12036
|
+
snapshot: COLOUR_LAYER_DATE,
|
|
12037
|
+
source: LAYER_SOURCE
|
|
12038
|
+
},
|
|
12039
|
+
reviewedAt: COLOUR_LAYER_DATE,
|
|
12040
|
+
slug: entry.id
|
|
12041
|
+
};
|
|
12042
|
+
};
|
|
12043
|
+
var layerTerms = (facet) => COLOUR_LAYER[COLOUR_LAYER_KINDS[facet].colorScopeKind].map(
|
|
12044
|
+
(entry) => termFor(facet, entry)
|
|
12045
|
+
);
|
|
12046
|
+
var PALETTE_FAMILY_TERMS = layerTerms("family");
|
|
12047
|
+
var PALETTE_TEMPERATURE_TERMS = layerTerms("temperature");
|
|
12048
|
+
var PALETTE_TONE_TERMS = layerTerms("tone");
|
|
12049
|
+
var PALETTE_COMPOSITION_TERMS = layerTerms("composition");
|
|
12050
|
+
var COLORSCOPE_WASHED_URI = `${COLORSCOPE_AUTHORITY_URI}/id/modifier/washed`;
|
|
11333
12051
|
var PALETTE_CHARACTER_TERMS = [
|
|
11334
|
-
{
|
|
11335
|
-
canonicalAuthority: colorScopeAuthority("vibrant", PALETTE_MOOD),
|
|
11336
|
-
definition: "High chroma; color is the loudest thing in the scheme.",
|
|
11337
|
-
label: "Vibrant",
|
|
11338
|
-
provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
|
|
11339
|
-
searchedWithout: [searchedUniclass3("Vibrant colour")],
|
|
11340
|
-
slug: "vibrant"
|
|
11341
|
-
},
|
|
11342
|
-
{
|
|
11343
|
-
canonicalAuthority: colorScopeAuthority("muted", PALETTE_MOOD),
|
|
11344
|
-
definition: "Chroma held low by design, with the colors still fully present.",
|
|
11345
|
-
label: "Muted",
|
|
11346
|
-
provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
|
|
11347
|
-
searchedWithout: [searchedUniclass3("Muted colour")],
|
|
11348
|
-
slug: "muted"
|
|
11349
|
-
},
|
|
11350
12052
|
{
|
|
11351
12053
|
altLabels: ["sun-bleached", "washed"],
|
|
11352
12054
|
definition: "Chroma reduced as if by age, wear or light, rather than chosen low. Distinct from muted: faded implies a stronger original.",
|
|
11353
12055
|
label: "Faded",
|
|
11354
|
-
note: "
|
|
12056
|
+
note: "Deprecated in 2.7.0. ColorScope owns colour, and its `washed` modifier now carries faded, sun-bleached and washed as alternate labels. Use the ColorScope concept; this URI keeps resolving.",
|
|
11355
12057
|
provenance: { basis: "authored", source: "@instruments/taxonomy ADR 0001" },
|
|
11356
|
-
|
|
11357
|
-
slug: "faded"
|
|
12058
|
+
reviewedAt: COLOUR_LAYER_DATE,
|
|
12059
|
+
slug: "faded",
|
|
12060
|
+
status: "deprecated",
|
|
12061
|
+
supersededByReference: COLORSCOPE_WASHED_URI
|
|
12062
|
+
}
|
|
12063
|
+
];
|
|
12064
|
+
var TAXONOMY_FACET_BASE = "https://taxonomy.materialinstruments.com/id/facet";
|
|
12065
|
+
var layerGovernance = (introducedAt) => ({
|
|
12066
|
+
introducedAt,
|
|
12067
|
+
provenance: {
|
|
12068
|
+
basis: "vendored",
|
|
12069
|
+
snapshot: COLOUR_LAYER_DATE,
|
|
12070
|
+
source: LAYER_SOURCE
|
|
12071
|
+
},
|
|
12072
|
+
reviewedAt: COLOUR_LAYER_DATE
|
|
12073
|
+
});
|
|
12074
|
+
var deprecatedFacetGovernance = (successor) => ({
|
|
12075
|
+
introducedAt: V1_BASELINE,
|
|
12076
|
+
provenance: {
|
|
12077
|
+
basis: "authored",
|
|
12078
|
+
source: "@instruments/taxonomy published corpus"
|
|
11358
12079
|
},
|
|
12080
|
+
reviewedAt: COLOUR_LAYER_DATE,
|
|
12081
|
+
status: "deprecated",
|
|
12082
|
+
supersededByReference: `${TAXONOMY_FACET_BASE}/palette/${successor}`
|
|
12083
|
+
});
|
|
12084
|
+
var PALETTE_FACET_GOVERNANCE = {
|
|
12085
|
+
character: deprecatedFacetGovernance("composition"),
|
|
12086
|
+
composition: layerGovernance(COLOUR_LAYER_DATE),
|
|
12087
|
+
family: layerGovernance(COLOUR_LAYER_DATE),
|
|
12088
|
+
hue: deprecatedFacetGovernance("family"),
|
|
12089
|
+
temperature: layerGovernance(V1_BASELINE),
|
|
12090
|
+
tone: layerGovernance(COLOUR_LAYER_DATE)
|
|
12091
|
+
};
|
|
12092
|
+
var PALETTE_AXIS_FACETS = [
|
|
11359
12093
|
{
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
provenance: {
|
|
11365
|
-
basis: "vendored",
|
|
11366
|
-
snapshot: SNAPSHOT5,
|
|
11367
|
-
source: "@instruments/colorscope COLOR_LIGHTNESS_LEVELS"
|
|
11368
|
-
},
|
|
11369
|
-
searchedWithout: [searchedUniclass3("Mid colour")],
|
|
11370
|
-
seenAs: ["medium", "Medium", "normal"],
|
|
11371
|
-
slug: "mid"
|
|
12094
|
+
governance: PALETTE_FACET_GOVERNANCE.family,
|
|
12095
|
+
label: "Family",
|
|
12096
|
+
slug: "family",
|
|
12097
|
+
terms: PALETTE_FAMILY_TERMS
|
|
11372
12098
|
},
|
|
11373
12099
|
{
|
|
11374
|
-
|
|
11375
|
-
|
|
11376
|
-
|
|
11377
|
-
|
|
11378
|
-
searchedWithout: [searchedUniclass3("Dark colour")],
|
|
11379
|
-
slug: "dark"
|
|
12100
|
+
governance: PALETTE_FACET_GOVERNANCE.temperature,
|
|
12101
|
+
label: "Temperature",
|
|
12102
|
+
slug: "temperature",
|
|
12103
|
+
terms: PALETTE_TEMPERATURE_TERMS
|
|
11380
12104
|
},
|
|
11381
12105
|
{
|
|
11382
|
-
|
|
11383
|
-
|
|
11384
|
-
|
|
11385
|
-
|
|
11386
|
-
searchedWithout: [searchedUniclass3("Light colour")],
|
|
11387
|
-
slug: "light"
|
|
12106
|
+
governance: PALETTE_FACET_GOVERNANCE.tone,
|
|
12107
|
+
label: "Tone",
|
|
12108
|
+
slug: "tone",
|
|
12109
|
+
terms: PALETTE_TONE_TERMS
|
|
11388
12110
|
},
|
|
11389
12111
|
{
|
|
11390
|
-
|
|
11391
|
-
|
|
11392
|
-
|
|
11393
|
-
|
|
11394
|
-
identifier: "Q10770146",
|
|
11395
|
-
label: "monochrome",
|
|
11396
|
-
match: "close",
|
|
11397
|
-
scheme: "wikidata"
|
|
11398
|
-
}
|
|
11399
|
-
],
|
|
11400
|
-
label: "Monochrome",
|
|
11401
|
-
provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
|
|
11402
|
-
searchedWithout: [searchedUniclass3("Monochrome colour")],
|
|
11403
|
-
slug: "monochrome"
|
|
12112
|
+
governance: PALETTE_FACET_GOVERNANCE.composition,
|
|
12113
|
+
label: "Composition",
|
|
12114
|
+
slug: "composition",
|
|
12115
|
+
terms: PALETTE_COMPOSITION_TERMS
|
|
11404
12116
|
},
|
|
11405
12117
|
{
|
|
11406
|
-
|
|
11407
|
-
|
|
11408
|
-
|
|
11409
|
-
|
|
11410
|
-
provenance: { basis: "vendored", snapshot: SNAPSHOT5, source: COLOUR_MOOD },
|
|
11411
|
-
searchedWithout: [searchedUniclass3("Polychrome colour")],
|
|
11412
|
-
seenAs: ["colorful"],
|
|
11413
|
-
slug: "colorful"
|
|
12118
|
+
governance: PALETTE_FACET_GOVERNANCE.hue,
|
|
12119
|
+
label: "Hue",
|
|
12120
|
+
slug: "hue",
|
|
12121
|
+
terms: []
|
|
11414
12122
|
},
|
|
11415
12123
|
{
|
|
11416
|
-
|
|
11417
|
-
|
|
11418
|
-
|
|
11419
|
-
|
|
11420
|
-
note: "NOT authored here, and the second time this file made that claim. It was written as authored because colorscope's PaletteMood was checked and its COLOR_CHROMA_LEVELS was not - and the chroma scale is muted, soft, vivid, SATURATED. The same failure as `mid`, in the same file, found by an adversarial pass rather than by the check that should have caught it.",
|
|
11421
|
-
provenance: {
|
|
11422
|
-
basis: "vendored",
|
|
11423
|
-
snapshot: SNAPSHOT5,
|
|
11424
|
-
source: "@instruments/colorscope COLOR_CHROMA_LEVELS"
|
|
11425
|
-
},
|
|
11426
|
-
searchedWithout: [searchedUniclass3("Saturated colour")],
|
|
11427
|
-
slug: "saturated"
|
|
12124
|
+
governance: PALETTE_FACET_GOVERNANCE.character,
|
|
12125
|
+
label: "Character",
|
|
12126
|
+
slug: "character",
|
|
12127
|
+
terms: PALETTE_CHARACTER_TERMS
|
|
11428
12128
|
}
|
|
11429
12129
|
];
|
|
11430
12130
|
|
|
@@ -11918,13 +12618,297 @@ var PATTERN_DIRECTIONALITY_TERMS = [
|
|
|
11918
12618
|
"Bi-directional",
|
|
11919
12619
|
"Two axes of equal weight, so the material reads correctly either way up."
|
|
11920
12620
|
),
|
|
11921
|
-
searchedWithout: [searchedUniclass3("bidirectional pattern")]
|
|
12621
|
+
searchedWithout: [searchedUniclass3("bidirectional pattern")]
|
|
12622
|
+
}
|
|
12623
|
+
];
|
|
12624
|
+
|
|
12625
|
+
// src/axes/coverage-review.ts
|
|
12626
|
+
var COVERAGE_SOURCE = "Linear TAX-66 coverage review";
|
|
12627
|
+
var coverageTerm = (slug, label, definition, extra = {}) => ({
|
|
12628
|
+
definition,
|
|
12629
|
+
introducedAt: SEARCHED_ON_TAX66_COVERAGE,
|
|
12630
|
+
label,
|
|
12631
|
+
provenance: { basis: "authored", source: COVERAGE_SOURCE },
|
|
12632
|
+
reviewedAt: SEARCHED_ON_TAX66_COVERAGE,
|
|
12633
|
+
slug,
|
|
12634
|
+
...extra
|
|
12635
|
+
});
|
|
12636
|
+
var referenceFor = (mapping2) => {
|
|
12637
|
+
if (mapping2.scheme === "aat") {
|
|
12638
|
+
return `Getty AAT ${mapping2.identifier} ${mapping2.label}, http://vocab.getty.edu/aat/${mapping2.identifier}`;
|
|
12639
|
+
}
|
|
12640
|
+
if (mapping2.scheme === "wikidata") {
|
|
12641
|
+
return `Wikidata ${mapping2.identifier} ${mapping2.label}, https://www.wikidata.org/wiki/${mapping2.identifier}`;
|
|
12642
|
+
}
|
|
12643
|
+
return void 0;
|
|
12644
|
+
};
|
|
12645
|
+
var grounded = (entry) => {
|
|
12646
|
+
const sources = (entry.external ?? []).map((mapping2) => referenceFor(mapping2)).filter((source) => source !== void 0);
|
|
12647
|
+
if (sources.length === 0) {
|
|
12648
|
+
return entry;
|
|
12649
|
+
}
|
|
12650
|
+
return {
|
|
12651
|
+
...entry,
|
|
12652
|
+
provenance: {
|
|
12653
|
+
basis: "referenced",
|
|
12654
|
+
snapshot: SEARCHED_ON_TAX66_COVERAGE,
|
|
12655
|
+
source: sources.join("; ")
|
|
12656
|
+
}
|
|
12657
|
+
};
|
|
12658
|
+
};
|
|
12659
|
+
var wikidataMapping = (identifier, label, match) => ({ identifier, label, match, scheme: "wikidata" });
|
|
12660
|
+
var searchedAat2 = (query) => ({
|
|
12661
|
+
date: SEARCHED_ON_TAX66_COVERAGE,
|
|
12662
|
+
query,
|
|
12663
|
+
scheme: "aat",
|
|
12664
|
+
via: `${GETTY_SPARQL}; luc:term search, AAT preferred labels and English scope notes read`
|
|
12665
|
+
});
|
|
12666
|
+
var searchedWikidata2 = (query) => ({
|
|
12667
|
+
date: SEARCHED_ON_TAX66_COVERAGE,
|
|
12668
|
+
query,
|
|
12669
|
+
scheme: "wikidata",
|
|
12670
|
+
via: `${WIKIDATA_SEARCH}&language=en&format=json; labels and descriptions read`
|
|
12671
|
+
});
|
|
12672
|
+
var searchedUniclass11 = (query) => ({
|
|
12673
|
+
date: SEARCHED_ON_TAX66_COVERAGE,
|
|
12674
|
+
query,
|
|
12675
|
+
scheme: "uniclass",
|
|
12676
|
+
via: `${UNICLASS_DOWNLOAD}; every July 2026 table (Ac, Co, EF, En, FI, Ma, PC, PM, Pr, RK, Ro, SL, Ss, TE) searched by title`
|
|
12677
|
+
});
|
|
12678
|
+
|
|
12679
|
+
// src/axes/pattern-motifs.ts
|
|
12680
|
+
var PLAID_CHECK = "plaid-check";
|
|
12681
|
+
var CULTURAL_HERITAGE = "cultural-heritage";
|
|
12682
|
+
var MOTIF_DRAFTS = [
|
|
12683
|
+
{
|
|
12684
|
+
...coverageTerm(
|
|
12685
|
+
"gingham",
|
|
12686
|
+
"Gingham",
|
|
12687
|
+
"A check of equal-width bands crossing at right angles in white and one colour, so that the crossings read as a third, deeper tone."
|
|
12688
|
+
),
|
|
12689
|
+
broaderSlug: PLAID_CHECK,
|
|
12690
|
+
external: [
|
|
12691
|
+
{
|
|
12692
|
+
identifier: "300451340",
|
|
12693
|
+
label: "gingham",
|
|
12694
|
+
match: "close",
|
|
12695
|
+
scheme: "aat"
|
|
12696
|
+
},
|
|
12697
|
+
wikidataMapping("Q2289640", "gingham", "close")
|
|
12698
|
+
],
|
|
12699
|
+
searchedWithout: [searchedUniclass11("gingham")]
|
|
12700
|
+
},
|
|
12701
|
+
{
|
|
12702
|
+
...coverageTerm(
|
|
12703
|
+
"tartan",
|
|
12704
|
+
"Tartan",
|
|
12705
|
+
"A check of crossing bands in several colours, set out in a fixed sequence called a sett and repeated in both directions, traditionally woven in twill and tied to Scottish clans and districts."
|
|
12706
|
+
),
|
|
12707
|
+
altLabels: ["tartan plaid"],
|
|
12708
|
+
broaderSlug: PLAID_CHECK,
|
|
12709
|
+
external: [
|
|
12710
|
+
{
|
|
12711
|
+
identifier: "300256600",
|
|
12712
|
+
label: "tartan",
|
|
12713
|
+
match: "close",
|
|
12714
|
+
scheme: "aat"
|
|
12715
|
+
},
|
|
12716
|
+
wikidataMapping("Q216797", "tartan", "close")
|
|
12717
|
+
],
|
|
12718
|
+
related: [relatedTo4("pattern.type.cultural-heritage")],
|
|
12719
|
+
searchedWithout: [searchedUniclass11("tartan; plaid")]
|
|
12720
|
+
},
|
|
12721
|
+
{
|
|
12722
|
+
...coverageTerm(
|
|
12723
|
+
"houndstooth",
|
|
12724
|
+
"Houndstooth",
|
|
12725
|
+
"A two-colour broken check in which each square is notched into four-pointed, tooth-like shapes, most often in black and white."
|
|
12726
|
+
),
|
|
12727
|
+
altLabels: ["dogstooth", "dogtooth", "hounds-tooth"],
|
|
12728
|
+
broaderSlug: PLAID_CHECK,
|
|
12729
|
+
external: [
|
|
12730
|
+
{
|
|
12731
|
+
identifier: "300266442",
|
|
12732
|
+
label: "houndstooth",
|
|
12733
|
+
match: "exact",
|
|
12734
|
+
scheme: "aat"
|
|
12735
|
+
},
|
|
12736
|
+
wikidataMapping("Q911389", "houndstooth", "exact")
|
|
12737
|
+
],
|
|
12738
|
+
searchedWithout: [searchedUniclass11("houndstooth; dogtooth")]
|
|
12739
|
+
},
|
|
12740
|
+
{
|
|
12741
|
+
...coverageTerm(
|
|
12742
|
+
"argyle",
|
|
12743
|
+
"Argyle",
|
|
12744
|
+
"A repeat of diamonds in two or more colours, set on the diagonal and crossed by fine diagonal lines, as in knitwear and socks."
|
|
12745
|
+
),
|
|
12746
|
+
altLabels: ["argyll"],
|
|
12747
|
+
broaderSlug: "geometric",
|
|
12748
|
+
searchedWithout: [
|
|
12749
|
+
searchedAat2("argyle; argyll; diamond pattern"),
|
|
12750
|
+
searchedWikidata2("argyle; argyle pattern; argyle diamond pattern"),
|
|
12751
|
+
searchedUniclass11("argyle; argyll")
|
|
12752
|
+
]
|
|
12753
|
+
},
|
|
12754
|
+
{
|
|
12755
|
+
...coverageTerm(
|
|
12756
|
+
"polka-dot",
|
|
12757
|
+
"Polka dot",
|
|
12758
|
+
"A repeat of evenly spaced, equal-sized filled circles on a contrasting ground."
|
|
12759
|
+
),
|
|
12760
|
+
altLabels: ["polka dots"],
|
|
12761
|
+
broaderSlug: "geometric",
|
|
12762
|
+
external: [
|
|
12763
|
+
{
|
|
12764
|
+
identifier: "300417972",
|
|
12765
|
+
label: "polka dots",
|
|
12766
|
+
match: "exact",
|
|
12767
|
+
scheme: "aat"
|
|
12768
|
+
},
|
|
12769
|
+
wikidataMapping("Q2429962", "polka dot", "exact")
|
|
12770
|
+
],
|
|
12771
|
+
searchedWithout: [searchedUniclass11("polka dot")]
|
|
12772
|
+
},
|
|
12773
|
+
{
|
|
12774
|
+
...coverageTerm(
|
|
12775
|
+
"trellis",
|
|
12776
|
+
"Trellis",
|
|
12777
|
+
"A repeat of crossing or interlaced lines forming an open lattice of diamonds or lozenges, in the manner of garden trellis."
|
|
12778
|
+
),
|
|
12779
|
+
altLabels: ["lattice", "latticework"],
|
|
12780
|
+
broaderSlug: "geometric",
|
|
12781
|
+
searchedWithout: [
|
|
12782
|
+
searchedAat2("trellis; lattice; treillage"),
|
|
12783
|
+
searchedWikidata2("trellis; trellis pattern; lattice pattern"),
|
|
12784
|
+
searchedUniclass11("trellis; lattice")
|
|
12785
|
+
]
|
|
12786
|
+
},
|
|
12787
|
+
{
|
|
12788
|
+
...coverageTerm(
|
|
12789
|
+
"fish-scale",
|
|
12790
|
+
"Fish-scale",
|
|
12791
|
+
"A repeat of overlapping rounded arcs set in staggered rows, like the scales of a fish, whether printed, woven or formed by laid units."
|
|
12792
|
+
),
|
|
12793
|
+
altLabels: ["fish scale", "fishscale", "mermaid scale"],
|
|
12794
|
+
broaderSlug: "geometric",
|
|
12795
|
+
external: [
|
|
12796
|
+
{
|
|
12797
|
+
identifier: "300010142",
|
|
12798
|
+
label: "scale pattern",
|
|
12799
|
+
match: "exact",
|
|
12800
|
+
scheme: "aat"
|
|
12801
|
+
}
|
|
12802
|
+
],
|
|
12803
|
+
// Scallop on UNIT SHAPE is the outline of one unit; this is the repeat those units, or a print,
|
|
12804
|
+
// can make. A fish-scale tile is a scallop unit, and a printed fish-scale is no unit at all, so
|
|
12805
|
+
// the two are linked and not merged.
|
|
12806
|
+
related: [relatedTo4("unit-shape.scallop")],
|
|
12807
|
+
searchedWithout: [
|
|
12808
|
+
searchedWikidata2("fish scale; fish scale pattern; scale pattern"),
|
|
12809
|
+
searchedUniclass11("fish scale; scallop; imbricated")
|
|
12810
|
+
]
|
|
12811
|
+
},
|
|
12812
|
+
{
|
|
12813
|
+
...coverageTerm(
|
|
12814
|
+
"ombre",
|
|
12815
|
+
"Ombre",
|
|
12816
|
+
"A gradient that shades one colour, or two neighbouring colours, from light to deep across the surface."
|
|
12817
|
+
),
|
|
12818
|
+
altLabels: ["ombr\xE9"],
|
|
12819
|
+
broaderSlug: "gradient",
|
|
12820
|
+
searchedWithout: [
|
|
12821
|
+
searchedAat2("ombre; ombr\xE9; shading; gradation"),
|
|
12822
|
+
searchedWikidata2("ombre; ombr\xE9; ombre dyeing"),
|
|
12823
|
+
searchedUniclass11("ombre; ombr\xE9")
|
|
12824
|
+
]
|
|
12825
|
+
},
|
|
12826
|
+
{
|
|
12827
|
+
...coverageTerm(
|
|
12828
|
+
"kilim",
|
|
12829
|
+
"Kilim",
|
|
12830
|
+
"A flat-woven repeat of stepped medallions, diamonds and bands in the manner of the tapestry-woven rugs of Anatolia, Persia and the Balkans."
|
|
12831
|
+
),
|
|
12832
|
+
broaderSlug: CULTURAL_HERITAGE,
|
|
12833
|
+
external: [
|
|
12834
|
+
{
|
|
12835
|
+
identifier: "300186972",
|
|
12836
|
+
label: "kilims",
|
|
12837
|
+
match: "related",
|
|
12838
|
+
scheme: "aat"
|
|
12839
|
+
},
|
|
12840
|
+
wikidataMapping("Q585358", "kilim", "related")
|
|
12841
|
+
],
|
|
12842
|
+
related: [relatedTo4("construction.woven")],
|
|
12843
|
+
searchedWithout: [searchedUniclass11("kilim")]
|
|
12844
|
+
},
|
|
12845
|
+
{
|
|
12846
|
+
...coverageTerm(
|
|
12847
|
+
"ikat",
|
|
12848
|
+
"Ikat",
|
|
12849
|
+
"A repeat of soft, feathered-edge motifs left by tie-dyeing warp or weft threads before they are woven, and imitated in prints."
|
|
12850
|
+
),
|
|
12851
|
+
broaderSlug: CULTURAL_HERITAGE,
|
|
12852
|
+
external: [
|
|
12853
|
+
{
|
|
12854
|
+
identifier: "300249861",
|
|
12855
|
+
label: "ikat",
|
|
12856
|
+
match: "related",
|
|
12857
|
+
scheme: "aat"
|
|
12858
|
+
},
|
|
12859
|
+
wikidataMapping("Q140101", "Ikat", "related")
|
|
12860
|
+
],
|
|
12861
|
+
note: "Ikat names a dyeing technique as well as the pattern it leaves. A term sits on one axis, so this is the pattern; both external concepts are the technique and are mapped as related. The technique is not yet a Construction term.",
|
|
12862
|
+
related: [relatedTo4("construction.woven")],
|
|
12863
|
+
searchedWithout: [searchedUniclass11("ikat")]
|
|
12864
|
+
},
|
|
12865
|
+
{
|
|
12866
|
+
...coverageTerm(
|
|
12867
|
+
"chinoiserie",
|
|
12868
|
+
"Chinoiserie",
|
|
12869
|
+
"A pictorial repeat of pagodas, figures, birds and flowering branches, in a European imitation of Chinese and East Asian decorative art."
|
|
12870
|
+
),
|
|
12871
|
+
broaderSlug: CULTURAL_HERITAGE,
|
|
12872
|
+
external: [
|
|
12873
|
+
{
|
|
12874
|
+
identifier: "300021167",
|
|
12875
|
+
label: "Chinoiserie",
|
|
12876
|
+
match: "close",
|
|
12877
|
+
scheme: "aat"
|
|
12878
|
+
},
|
|
12879
|
+
wikidataMapping("Q863679", "chinoiserie", "close")
|
|
12880
|
+
],
|
|
12881
|
+
related: [relatedTo4("pattern.type.scenic")],
|
|
12882
|
+
searchedWithout: [searchedUniclass11("chinoiserie")]
|
|
12883
|
+
},
|
|
12884
|
+
{
|
|
12885
|
+
...coverageTerm(
|
|
12886
|
+
"craquelure",
|
|
12887
|
+
"Craquelure",
|
|
12888
|
+
"A network of fine, irregular cracks across the surface, as in aged paint and varnish, and made on purpose in crackle glaze, crackle paint and printed imitations."
|
|
12889
|
+
),
|
|
12890
|
+
altLabels: ["crackle", "crackled", "crackle effect"],
|
|
12891
|
+
external: [
|
|
12892
|
+
{
|
|
12893
|
+
identifier: "300228345",
|
|
12894
|
+
label: "crackle",
|
|
12895
|
+
match: "exact",
|
|
12896
|
+
scheme: "aat"
|
|
12897
|
+
},
|
|
12898
|
+
wikidataMapping("Q1329067", "craquelure", "exact")
|
|
12899
|
+
],
|
|
12900
|
+
related: [
|
|
12901
|
+
relatedTo4("finish.treatment.antiqued"),
|
|
12902
|
+
relatedTo4("finish.treatment.glazed")
|
|
12903
|
+
],
|
|
12904
|
+
searchedWithout: [searchedUniclass11("craquelure; crackle")]
|
|
11922
12905
|
}
|
|
11923
12906
|
];
|
|
12907
|
+
var PATTERN_MOTIF_TERMS = MOTIF_DRAFTS.map(grounded);
|
|
11924
12908
|
|
|
11925
12909
|
// src/axes/pattern.ts
|
|
11926
12910
|
var SOURCE4 = "pattern vocabulary in a furnishings retailer (src-03)";
|
|
11927
|
-
var
|
|
12911
|
+
var SNAPSHOT5 = "2026-08-25";
|
|
11928
12912
|
var GEOMETRY_REVIEW_DATE = "2026-08-31";
|
|
11929
12913
|
var GEOMETRY_SOURCE = "Linear TAX-45 reviewed implementation contract";
|
|
11930
12914
|
var REVIEW_DATE7 = "2026-09-11";
|
|
@@ -11935,7 +12919,7 @@ var TAX58_SOURCE = "Linear TAX-58 visual-vocabulary review; MG-2218 reconciliati
|
|
|
11935
12919
|
var term7 = (slug, label, definition, extra = {}) => ({
|
|
11936
12920
|
definition,
|
|
11937
12921
|
label,
|
|
11938
|
-
provenance: { basis: "evidenced", snapshot:
|
|
12922
|
+
provenance: { basis: "evidenced", snapshot: SNAPSHOT5, source: SOURCE4 },
|
|
11939
12923
|
slug,
|
|
11940
12924
|
...extra
|
|
11941
12925
|
});
|
|
@@ -12356,7 +13340,8 @@ var PATTERN_TYPE_TERMS = [
|
|
|
12356
13340
|
"A surface intended to read as woven threads rather than its construction."
|
|
12357
13341
|
),
|
|
12358
13342
|
searchedWithout: [searchedUniclass3("Woven effect")]
|
|
12359
|
-
}
|
|
13343
|
+
},
|
|
13344
|
+
...PATTERN_MOTIF_TERMS
|
|
12360
13345
|
];
|
|
12361
13346
|
var PATTERN_TERMS = [
|
|
12362
13347
|
...PATTERN_TYPE_TERMS,
|
|
@@ -12373,7 +13358,7 @@ var AUTHORED4 = {
|
|
|
12373
13358
|
source: "@instruments/taxonomy ADR 0001"
|
|
12374
13359
|
};
|
|
12375
13360
|
var aat6 = (identifier, label, match) => ({ identifier, label, match, scheme: "aat" });
|
|
12376
|
-
var
|
|
13361
|
+
var relatedTo11 = (target) => ({
|
|
12377
13362
|
predicate: "related-to",
|
|
12378
13363
|
target
|
|
12379
13364
|
});
|
|
@@ -12443,7 +13428,7 @@ var PERIOD_TERMS = [
|
|
|
12443
13428
|
label: "Baroque",
|
|
12444
13429
|
note: "Stuart (1603-1714) is the British dynastic label for nearly the same span, and by this axis's own rule would be the better id; `baroque` is kept because it is what the English-language trade says of a building of this date anywhere in Europe. Jacobean (1603-1625) is a sub-span, not a synonym. Also a style name - see the header.",
|
|
12445
13430
|
provenance: AUTHORED4,
|
|
12446
|
-
related: [
|
|
13431
|
+
related: [relatedTo11("period.renaissance")],
|
|
12447
13432
|
slug: "baroque",
|
|
12448
13433
|
span: {
|
|
12449
13434
|
circa: true,
|
|
@@ -12548,7 +13533,7 @@ var PERIOD_TERMS = [
|
|
|
12548
13533
|
label: "Edwardian",
|
|
12549
13534
|
note: "The reign ends in 1910 but the building manner runs to the outbreak of war, and the trade dates it that way. NO US EQUIVALENT EXISTS and none is invented here - the American labels reached for at this date (Craftsman, Arts and Crafts, Prairie) are all styles, and putting one of them here would be the exact error this axis was built to stop.",
|
|
12550
13535
|
provenance: AUTHORED4,
|
|
12551
|
-
related: [
|
|
13536
|
+
related: [relatedTo11("period.victorian")],
|
|
12552
13537
|
slug: "edwardian",
|
|
12553
13538
|
span: {
|
|
12554
13539
|
circa: false,
|
|
@@ -12636,7 +13621,7 @@ var PERIOD_TERMS = [
|
|
|
12636
13621
|
label: "Late Twentieth Century",
|
|
12637
13622
|
note: "THE WEAKEST TERM ON THIS AXIS, and flagged rather than dressed up. The trade has no settled label for these thirty years - it dates by decade, or reaches for a style name instead - so this is a bucket the axis needs for completeness rather than a period anyone asks for by name. Expect it to be split or renamed once there is usage evidence to split it on.",
|
|
12638
13623
|
provenance: AUTHORED4,
|
|
12639
|
-
related: [
|
|
13624
|
+
related: [relatedTo11("period.mid-century")],
|
|
12640
13625
|
slug: "late-century",
|
|
12641
13626
|
span: {
|
|
12642
13627
|
circa: true,
|
|
@@ -12662,7 +13647,7 @@ var PERIOD_TERMS = [
|
|
|
12662
13647
|
label: "Contemporary",
|
|
12663
13648
|
note: "DELIBERATELY OPEN-ENDED, and it will need a successor bracket eventually. Collides by name with `style.contemporary`, which means the prevailing current idiom rather than a date; the axis prefix disambiguates. A 2024 building in full Georgian pastiche is `period.contemporary` and is emphatically not `style.contemporary`, which is the case that shows why the two cannot be merged.",
|
|
12664
13649
|
provenance: AUTHORED4,
|
|
12665
|
-
seenAs: ["Contemporary", "modern"
|
|
13650
|
+
seenAs: ["Contemporary", "modern"],
|
|
12666
13651
|
slug: "contemporary",
|
|
12667
13652
|
span: {
|
|
12668
13653
|
circa: true,
|
|
@@ -12676,11 +13661,11 @@ var PERIOD_TERMS = [
|
|
|
12676
13661
|
];
|
|
12677
13662
|
|
|
12678
13663
|
// src/axes/place.ts
|
|
12679
|
-
var
|
|
13664
|
+
var SNAPSHOT6 = "2026-08-21";
|
|
12680
13665
|
var ADR2 = "@instruments/taxonomy ADR 0001";
|
|
12681
13666
|
var PLATFORM_CONTEXTS = "CONTEXTS in an architecture-projects platform (src-01)";
|
|
12682
13667
|
var aat7 = (identifier, label, match) => ({ identifier, label, match, scheme: "aat" });
|
|
12683
|
-
var
|
|
13668
|
+
var relatedTo12 = (target) => ({
|
|
12684
13669
|
predicate: "related-to",
|
|
12685
13670
|
target
|
|
12686
13671
|
});
|
|
@@ -12691,7 +13676,7 @@ var PLACE_REGION_TERMS = [
|
|
|
12691
13676
|
label: "Mediterranean",
|
|
12692
13677
|
provenance: {
|
|
12693
13678
|
basis: "evidenced",
|
|
12694
|
-
snapshot:
|
|
13679
|
+
snapshot: SNAPSHOT6,
|
|
12695
13680
|
source: "a rendering pipeline (src-08) and an architecture-projects platform (src-01)"
|
|
12696
13681
|
},
|
|
12697
13682
|
slug: "mediterranean"
|
|
@@ -12743,7 +13728,7 @@ var PLACE_REGION_TERMS = [
|
|
|
12743
13728
|
label: "Nordic",
|
|
12744
13729
|
provenance: {
|
|
12745
13730
|
basis: "evidenced",
|
|
12746
|
-
snapshot:
|
|
13731
|
+
snapshot: SNAPSHOT6,
|
|
12747
13732
|
source: "an editorial image library (src-02), an architecture-projects platform (src-01) and a materials-retrieval system (src-05)"
|
|
12748
13733
|
},
|
|
12749
13734
|
seenAs: ["Nordic modern", "nordic_warm", "Scandinavian"],
|
|
@@ -12763,7 +13748,7 @@ var PLACE_REGION_TERMS = [
|
|
|
12763
13748
|
label: "Japanese",
|
|
12764
13749
|
provenance: {
|
|
12765
13750
|
basis: "evidenced",
|
|
12766
|
-
snapshot:
|
|
13751
|
+
snapshot: SNAPSHOT6,
|
|
12767
13752
|
source: "an architecture-projects platform (src-01) and a rendering pipeline (src-08)"
|
|
12768
13753
|
},
|
|
12769
13754
|
seenAs: ["Japanese contemporary"],
|
|
@@ -12775,7 +13760,7 @@ var PLACE_REGION_TERMS = [
|
|
|
12775
13760
|
label: "English Country",
|
|
12776
13761
|
provenance: {
|
|
12777
13762
|
basis: "evidenced",
|
|
12778
|
-
snapshot:
|
|
13763
|
+
snapshot: SNAPSHOT6,
|
|
12779
13764
|
source: "an editorial image library (src-02) and a furnishings retailer (src-03)"
|
|
12780
13765
|
},
|
|
12781
13766
|
seenAs: ["English Country", "Country"],
|
|
@@ -12896,7 +13881,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
12896
13881
|
label: "Coastal",
|
|
12897
13882
|
provenance: {
|
|
12898
13883
|
basis: "evidenced",
|
|
12899
|
-
snapshot:
|
|
13884
|
+
snapshot: SNAPSHOT6,
|
|
12900
13885
|
source: "CONTEXTS in an architecture-projects platform (src-01), a furnishings retailer (src-03), an editorial image library (src-02), a rendering pipeline (src-08) and a materials-retrieval system (src-05)"
|
|
12901
13886
|
},
|
|
12902
13887
|
slug: "coastal",
|
|
@@ -12912,10 +13897,10 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
12912
13897
|
label: "Waterfront",
|
|
12913
13898
|
provenance: {
|
|
12914
13899
|
basis: "vendored",
|
|
12915
|
-
snapshot:
|
|
13900
|
+
snapshot: SNAPSHOT6,
|
|
12916
13901
|
source: PLATFORM_CONTEXTS
|
|
12917
13902
|
},
|
|
12918
|
-
related: [
|
|
13903
|
+
related: [relatedTo12("place.landscape.coastal")],
|
|
12919
13904
|
slug: "waterfront"
|
|
12920
13905
|
},
|
|
12921
13906
|
{
|
|
@@ -12924,7 +13909,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
12924
13909
|
label: "Tropical",
|
|
12925
13910
|
provenance: {
|
|
12926
13911
|
basis: "evidenced",
|
|
12927
|
-
snapshot:
|
|
13912
|
+
snapshot: SNAPSHOT6,
|
|
12928
13913
|
source: "an architecture-projects platform (src-01)"
|
|
12929
13914
|
},
|
|
12930
13915
|
seenAs: ["Tropical modernism"],
|
|
@@ -12944,7 +13929,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
12944
13929
|
label: "Desert",
|
|
12945
13930
|
provenance: {
|
|
12946
13931
|
basis: "vendored",
|
|
12947
|
-
snapshot:
|
|
13932
|
+
snapshot: SNAPSHOT6,
|
|
12948
13933
|
source: PLATFORM_CONTEXTS
|
|
12949
13934
|
},
|
|
12950
13935
|
slug: "desert"
|
|
@@ -12965,7 +13950,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
12965
13950
|
label: "Mountain",
|
|
12966
13951
|
provenance: {
|
|
12967
13952
|
basis: "vendored",
|
|
12968
|
-
snapshot:
|
|
13953
|
+
snapshot: SNAPSHOT6,
|
|
12969
13954
|
source: PLATFORM_CONTEXTS
|
|
12970
13955
|
},
|
|
12971
13956
|
slug: "mountain"
|
|
@@ -12984,7 +13969,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
12984
13969
|
label: "Forest",
|
|
12985
13970
|
provenance: {
|
|
12986
13971
|
basis: "vendored",
|
|
12987
|
-
snapshot:
|
|
13972
|
+
snapshot: SNAPSHOT6,
|
|
12988
13973
|
source: PLATFORM_CONTEXTS
|
|
12989
13974
|
},
|
|
12990
13975
|
slug: "forest"
|
|
@@ -13004,7 +13989,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
13004
13989
|
label: "Rural",
|
|
13005
13990
|
provenance: {
|
|
13006
13991
|
basis: "vendored",
|
|
13007
|
-
snapshot:
|
|
13992
|
+
snapshot: SNAPSHOT6,
|
|
13008
13993
|
source: PLATFORM_CONTEXTS
|
|
13009
13994
|
},
|
|
13010
13995
|
slug: "rural"
|
|
@@ -13023,10 +14008,10 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
13023
14008
|
label: "Suburban",
|
|
13024
14009
|
provenance: {
|
|
13025
14010
|
basis: "vendored",
|
|
13026
|
-
snapshot:
|
|
14011
|
+
snapshot: SNAPSHOT6,
|
|
13027
14012
|
source: PLATFORM_CONTEXTS
|
|
13028
14013
|
},
|
|
13029
|
-
related: [
|
|
14014
|
+
related: [relatedTo12("place.landscape.urban")],
|
|
13030
14015
|
slug: "suburban"
|
|
13031
14016
|
},
|
|
13032
14017
|
{
|
|
@@ -13044,7 +14029,7 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
13044
14029
|
label: "Urban",
|
|
13045
14030
|
provenance: {
|
|
13046
14031
|
basis: "vendored",
|
|
13047
|
-
snapshot:
|
|
14032
|
+
snapshot: SNAPSHOT6,
|
|
13048
14033
|
source: PLATFORM_CONTEXTS
|
|
13049
14034
|
},
|
|
13050
14035
|
seenAs: ["Dense urban", "Urban infill", "downtown"],
|
|
@@ -13052,31 +14037,367 @@ var PLACE_LANDSCAPE_TERMS = [
|
|
|
13052
14037
|
}
|
|
13053
14038
|
];
|
|
13054
14039
|
|
|
13055
|
-
// src/axes/product-category.ts
|
|
14040
|
+
// src/axes/product-category-shared.ts
|
|
13056
14041
|
var uniclass5 = (slug, label, match) => ({
|
|
13057
14042
|
identifier: slug,
|
|
13058
14043
|
label,
|
|
13059
14044
|
match,
|
|
13060
14045
|
scheme: "uniclass"
|
|
13061
14046
|
});
|
|
14047
|
+
var aat8 = (identifier, label, match) => ({ identifier, label, match, scheme: "aat" });
|
|
13062
14048
|
var typicallyIn4 = (spaceId) => ({
|
|
13063
14049
|
predicate: "typically-in",
|
|
13064
14050
|
target: `space.${spaceId}`
|
|
13065
14051
|
});
|
|
13066
|
-
var
|
|
14052
|
+
var relatedTo13 = (...targets) => targets.map((target) => ({ predicate: "related-to", target }));
|
|
14053
|
+
|
|
14054
|
+
// src/axes/product-category-furniture.ts
|
|
14055
|
+
var LIVING_ROOM = "living-room";
|
|
14056
|
+
var DINING_ROOM = "dining-room";
|
|
14057
|
+
var CASE_FURNITURE = "case furniture";
|
|
14058
|
+
var AAT_CASE_FURNITURE = aat8("300038860", CASE_FURNITURE, "exact");
|
|
14059
|
+
var FURNITURE_DRAFTS = [
|
|
14060
|
+
coverageTerm(
|
|
14061
|
+
"furniture",
|
|
14062
|
+
"Furniture",
|
|
14063
|
+
"A made-up piece for sitting, reclining, working at or storing things, bought as a product rather than as a material, covering or luminaire, whether it ends up loose or built in.",
|
|
14064
|
+
{
|
|
14065
|
+
external: [
|
|
14066
|
+
aat8("300037680", "furniture", "exact"),
|
|
14067
|
+
wikidataMapping("Q14745", "furniture", "exact"),
|
|
14068
|
+
uniclass5("Pr_40_50", "Furnishings", "related")
|
|
14069
|
+
],
|
|
14070
|
+
related: relatedTo13("application.furniture")
|
|
14071
|
+
}
|
|
14072
|
+
),
|
|
14073
|
+
// SEATING
|
|
14074
|
+
coverageTerm(
|
|
14075
|
+
"armchair",
|
|
14076
|
+
"Armchair",
|
|
14077
|
+
"A seat for one person with a back and arms, usually upholstered; not a sofa, which seats two or more, and not a dining chair.",
|
|
14078
|
+
{
|
|
14079
|
+
altLabels: ["easy chair"],
|
|
14080
|
+
broaderSlug: "seating",
|
|
14081
|
+
external: [
|
|
14082
|
+
aat8("300037776", "armchairs", "exact"),
|
|
14083
|
+
wikidataMapping("Q11285759", "armchair", "exact"),
|
|
14084
|
+
uniclass5("Pr_40_50_12_26", "Easy chairs", "close"),
|
|
14085
|
+
uniclass5("Pr_40_50_12_48", "Lounge chairs", "close")
|
|
14086
|
+
],
|
|
14087
|
+
related: [typicallyIn4(LIVING_ROOM), typicallyIn4("lounge")]
|
|
14088
|
+
}
|
|
14089
|
+
),
|
|
14090
|
+
coverageTerm(
|
|
14091
|
+
"dining-chair",
|
|
14092
|
+
"Dining chair",
|
|
14093
|
+
"A chair made to be sat in at a dining table, with or without arms, independent of its material and upholstery.",
|
|
14094
|
+
{
|
|
14095
|
+
broaderSlug: "seating",
|
|
14096
|
+
external: [
|
|
14097
|
+
aat8("300038379", "dining chairs", "exact"),
|
|
14098
|
+
wikidataMapping("Q124964396", "dining chair", "exact"),
|
|
14099
|
+
uniclass5("Pr_40_50_12_22", "Dining chairs", "exact")
|
|
14100
|
+
],
|
|
14101
|
+
related: [typicallyIn4(DINING_ROOM), typicallyIn4("restaurant")]
|
|
14102
|
+
}
|
|
14103
|
+
),
|
|
14104
|
+
coverageTerm(
|
|
14105
|
+
"bar-stool",
|
|
14106
|
+
"Bar stool",
|
|
14107
|
+
"A tall stool for sitting at a bar, counter or breakfast island, with or without a low back or footrest.",
|
|
14108
|
+
{
|
|
14109
|
+
altLabels: ["barstool", "counter stool"],
|
|
14110
|
+
broaderSlug: "seating",
|
|
14111
|
+
external: [
|
|
14112
|
+
aat8("300038422", "barstools", "exact"),
|
|
14113
|
+
wikidataMapping("Q376339", "bar stool", "exact"),
|
|
14114
|
+
uniclass5("Pr_40_50_12_85", "Stools", "broad")
|
|
14115
|
+
],
|
|
14116
|
+
related: [typicallyIn4("bar"), typicallyIn4("kitchen")]
|
|
14117
|
+
}
|
|
14118
|
+
),
|
|
14119
|
+
coverageTerm(
|
|
14120
|
+
"ottoman",
|
|
14121
|
+
"Ottoman",
|
|
14122
|
+
"A low upholstered seat or footrest without back or arms, sometimes hollow for storage; not a long ottoman sofa and not an ottoman bed.",
|
|
14123
|
+
{
|
|
14124
|
+
altLabels: ["pouf", "pouffe"],
|
|
14125
|
+
broaderSlug: "seating",
|
|
14126
|
+
external: [
|
|
14127
|
+
aat8("300038442", "ottoman footstools", "close"),
|
|
14128
|
+
aat8("300038607", "pouffes", "close"),
|
|
14129
|
+
wikidataMapping("Q3545350", "ottoman", "exact"),
|
|
14130
|
+
uniclass5("Pr_40_50_12_59", "Ottomans", "exact")
|
|
14131
|
+
],
|
|
14132
|
+
related: [typicallyIn4(LIVING_ROOM), typicallyIn4("bedroom")],
|
|
14133
|
+
// Footstool is the narrower thing: AAT and Uniclass file the ottoman footstool beneath
|
|
14134
|
+
// footstools, and a footstool need not be an ottoman, so it is a wild form and not a name.
|
|
14135
|
+
seenAs: ["footstool"]
|
|
14136
|
+
}
|
|
14137
|
+
),
|
|
14138
|
+
coverageTerm(
|
|
14139
|
+
"bench",
|
|
14140
|
+
"Bench",
|
|
14141
|
+
"A long seat for two or more people, with or without a back, independent of its material and of whether it is upholstered.",
|
|
14142
|
+
{
|
|
14143
|
+
broaderSlug: "seating",
|
|
14144
|
+
external: [
|
|
14145
|
+
aat8("300038494", "benches (furniture)", "exact"),
|
|
14146
|
+
wikidataMapping("Q204776", "bench", "exact"),
|
|
14147
|
+
uniclass5("Pr_40_50_12_07", "Benches", "exact")
|
|
14148
|
+
],
|
|
14149
|
+
related: [typicallyIn4("entry"), typicallyIn4("boot-room")]
|
|
14150
|
+
}
|
|
14151
|
+
),
|
|
14152
|
+
coverageTerm(
|
|
14153
|
+
"chaise-longue",
|
|
14154
|
+
"Chaise longue",
|
|
14155
|
+
"An upholstered seat long enough to support the legs, with a back or headrest at one end, for reclining indoors.",
|
|
14156
|
+
{
|
|
14157
|
+
broaderSlug: "seating",
|
|
14158
|
+
external: [
|
|
14159
|
+
aat8("300038151", "chaises longues", "exact"),
|
|
14160
|
+
wikidataMapping("Q1059232", "chaise longue", "exact"),
|
|
14161
|
+
uniclass5("Pr_40_50_12_14", "Chaises longues", "exact")
|
|
14162
|
+
],
|
|
14163
|
+
related: [typicallyIn4(LIVING_ROOM), typicallyIn4("bedroom")],
|
|
14164
|
+
seenAs: ["chaise lounge"]
|
|
14165
|
+
}
|
|
14166
|
+
),
|
|
14167
|
+
// BED
|
|
14168
|
+
coverageTerm(
|
|
14169
|
+
"daybed",
|
|
14170
|
+
"Daybed",
|
|
14171
|
+
"An extended seat, generally armless and with one backed end, used for lounging by day and lying on at need; a bed as well as a seat, and not a sofa bed.",
|
|
14172
|
+
{
|
|
14173
|
+
broaderSlug: "bed",
|
|
14174
|
+
external: [
|
|
14175
|
+
aat8("300038586", "daybeds", "exact"),
|
|
14176
|
+
wikidataMapping("Q5243076", "daybed", "exact"),
|
|
14177
|
+
uniclass5("Pr_40_50_06_21", "Daybeds", "exact")
|
|
14178
|
+
],
|
|
14179
|
+
related: [
|
|
14180
|
+
...relatedTo13("product-category.seating"),
|
|
14181
|
+
typicallyIn4(LIVING_ROOM),
|
|
14182
|
+
typicallyIn4("guest-bedroom")
|
|
14183
|
+
]
|
|
14184
|
+
}
|
|
14185
|
+
),
|
|
14186
|
+
coverageTerm(
|
|
14187
|
+
"headboard",
|
|
14188
|
+
"Headboard",
|
|
14189
|
+
"A board or panel fixed or standing at the head of a bed, upholstered or bare; the bed it belongs to is a separate product.",
|
|
14190
|
+
{
|
|
14191
|
+
altLabels: ["bedhead", "bed head"],
|
|
14192
|
+
broaderSlug: "bed",
|
|
14193
|
+
external: [
|
|
14194
|
+
aat8("300040447", "headboards", "exact"),
|
|
14195
|
+
wikidataMapping("Q5689512", "headboard", "exact"),
|
|
14196
|
+
uniclass5("Pr_40_50_06_37", "Headboards", "exact")
|
|
14197
|
+
],
|
|
14198
|
+
related: [
|
|
14199
|
+
typicallyIn4("bedroom"),
|
|
14200
|
+
...relatedTo13("application.furniture-headboard")
|
|
14201
|
+
]
|
|
14202
|
+
}
|
|
14203
|
+
),
|
|
14204
|
+
// TABLE
|
|
14205
|
+
coverageTerm(
|
|
14206
|
+
"dining-table",
|
|
14207
|
+
"Dining table",
|
|
14208
|
+
"A table made to eat meals at, whatever its top, base or size, and including extending tables.",
|
|
14209
|
+
{
|
|
14210
|
+
broaderSlug: "table",
|
|
14211
|
+
external: [
|
|
14212
|
+
aat8("300039648", "dining tables", "exact"),
|
|
14213
|
+
wikidataMapping("Q4396855", "dining table", "exact"),
|
|
14214
|
+
uniclass5("Pr_40_50_21_22", "Dining tables", "exact")
|
|
14215
|
+
],
|
|
14216
|
+
related: [typicallyIn4(DINING_ROOM), typicallyIn4("restaurant")]
|
|
14217
|
+
}
|
|
14218
|
+
),
|
|
14219
|
+
coverageTerm(
|
|
14220
|
+
"coffee-table",
|
|
14221
|
+
"Coffee table",
|
|
14222
|
+
"A low table set in front of a sofa or among armchairs, at a height to reach from a seat.",
|
|
14223
|
+
{
|
|
14224
|
+
broaderSlug: "table",
|
|
14225
|
+
external: [
|
|
14226
|
+
aat8("300039640", "coffee tables", "exact"),
|
|
14227
|
+
wikidataMapping("Q2407432", "coffee table", "exact"),
|
|
14228
|
+
uniclass5("Pr_40_50_21_14", "Coffee tables", "exact")
|
|
14229
|
+
],
|
|
14230
|
+
related: [typicallyIn4(LIVING_ROOM), typicallyIn4("lounge")]
|
|
14231
|
+
}
|
|
14232
|
+
),
|
|
14233
|
+
coverageTerm(
|
|
14234
|
+
"side-table",
|
|
14235
|
+
"Side table",
|
|
14236
|
+
"A small table standing beside a sofa, armchair or bed to hold a lamp, a drink or a book; not a console table, which stands against a wall, and not a bedside cabinet.",
|
|
14237
|
+
{
|
|
14238
|
+
altLabels: ["end table", "lamp table"],
|
|
14239
|
+
broaderSlug: "table",
|
|
14240
|
+
external: [
|
|
14241
|
+
aat8("300039998", "end tables", "close"),
|
|
14242
|
+
wikidataMapping("Q65791322", "end table", "close"),
|
|
14243
|
+
uniclass5("Pr_40_50_21_58", "Occasional tables", "broad")
|
|
14244
|
+
],
|
|
14245
|
+
related: [typicallyIn4(LIVING_ROOM), typicallyIn4("lounge")]
|
|
14246
|
+
}
|
|
14247
|
+
),
|
|
14248
|
+
coverageTerm(
|
|
14249
|
+
"console-table",
|
|
14250
|
+
"Console table",
|
|
14251
|
+
"A narrow table made to stand against a wall, in a hall or behind a sofa, with its back left plain or unfinished.",
|
|
14252
|
+
{
|
|
14253
|
+
altLabels: ["hall table", "sofa table"],
|
|
14254
|
+
broaderSlug: "table",
|
|
14255
|
+
external: [
|
|
14256
|
+
aat8("300039580", "console tables", "exact"),
|
|
14257
|
+
wikidataMapping("Q7887380", "console", "close"),
|
|
14258
|
+
uniclass5("Pr_40_50_21_16", "Console tables", "exact")
|
|
14259
|
+
],
|
|
14260
|
+
related: [typicallyIn4("entry"), typicallyIn4("hallway")]
|
|
14261
|
+
}
|
|
14262
|
+
),
|
|
14263
|
+
coverageTerm(
|
|
14264
|
+
"desk",
|
|
14265
|
+
"Desk",
|
|
14266
|
+
"A table made for reading, writing or working at, with or without drawers, a hutch or a return; not a fitted counter.",
|
|
14267
|
+
{
|
|
14268
|
+
altLabels: ["writing desk"],
|
|
14269
|
+
broaderSlug: "table",
|
|
14270
|
+
external: [
|
|
14271
|
+
aat8("300039338", "desks", "exact"),
|
|
14272
|
+
wikidataMapping("Q1064858", "desk", "exact"),
|
|
14273
|
+
uniclass5("Pr_40_50_21_21", "Desks", "exact")
|
|
14274
|
+
],
|
|
14275
|
+
related: [
|
|
14276
|
+
typicallyIn4("study"),
|
|
14277
|
+
typicallyIn4("private-office"),
|
|
14278
|
+
typicallyIn4("open-office")
|
|
14279
|
+
]
|
|
14280
|
+
}
|
|
14281
|
+
),
|
|
14282
|
+
// STORAGE
|
|
14283
|
+
coverageTerm(
|
|
14284
|
+
"casegoods",
|
|
14285
|
+
"Casegoods",
|
|
14286
|
+
"Freestanding, non-upholstered storage furniture built as a boxlike carcass with doors, drawers or shelves, such as a sideboard, chest of drawers, wardrobe or bookcase; not fitted joinery.",
|
|
14287
|
+
{
|
|
14288
|
+
altLabels: ["case goods", CASE_FURNITURE],
|
|
14289
|
+
broaderSlug: "storage",
|
|
14290
|
+
external: [
|
|
14291
|
+
AAT_CASE_FURNITURE,
|
|
14292
|
+
wikidataMapping("Q95966197", "case furniture", "exact"),
|
|
14293
|
+
uniclass5("Pr_40_30_87", "Storage units and cupboards", "broad")
|
|
14294
|
+
]
|
|
14295
|
+
}
|
|
14296
|
+
),
|
|
14297
|
+
coverageTerm(
|
|
14298
|
+
"sideboard",
|
|
14299
|
+
"Sideboard",
|
|
14300
|
+
"A long, low carcass of cupboards and drawers topped by a surface, standing against a wall to hold tableware and serve from; not a kitchen base unit.",
|
|
14301
|
+
{
|
|
14302
|
+
altLabels: ["buffet", "credenza"],
|
|
14303
|
+
broaderSlug: "casegoods",
|
|
14304
|
+
external: [
|
|
14305
|
+
aat8("300039306", "sideboards (furniture)", "exact"),
|
|
14306
|
+
wikidataMapping("Q1762308", "sideboard", "exact"),
|
|
14307
|
+
uniclass5("Pr_40_30_87_81", "Sideboards", "exact")
|
|
14308
|
+
],
|
|
14309
|
+
related: [typicallyIn4(DINING_ROOM)]
|
|
14310
|
+
}
|
|
14311
|
+
),
|
|
14312
|
+
coverageTerm(
|
|
14313
|
+
"chest-of-drawers",
|
|
14314
|
+
"Chest of drawers",
|
|
14315
|
+
"A freestanding carcass fitted with stacked drawers for clothes and linen; not a storage chest with a lid, and not fitted drawer joinery.",
|
|
14316
|
+
{
|
|
14317
|
+
broaderSlug: "casegoods",
|
|
14318
|
+
external: [
|
|
14319
|
+
aat8("300039009", "chests of drawers", "exact"),
|
|
14320
|
+
wikidataMapping("Q14169227", "chest of drawers", "exact"),
|
|
14321
|
+
uniclass5("Pr_40_30_87_25", "Drawer units", "close")
|
|
14322
|
+
],
|
|
14323
|
+
related: [typicallyIn4("bedroom")],
|
|
14324
|
+
seenAs: ["Dresser", "Drawers"]
|
|
14325
|
+
}
|
|
14326
|
+
),
|
|
14327
|
+
coverageTerm(
|
|
14328
|
+
"wardrobe",
|
|
14329
|
+
"Wardrobe",
|
|
14330
|
+
"A freestanding upright cabinet for hanging and storing clothes, with doors and often drawers; not the fitted wardrobe built into a room, which is joinery.",
|
|
14331
|
+
{
|
|
14332
|
+
altLabels: ["armoire", "freestanding wardrobe"],
|
|
14333
|
+
broaderSlug: "casegoods",
|
|
14334
|
+
external: [
|
|
14335
|
+
aat8("300039237", "wardrobes (case furniture)", "exact"),
|
|
14336
|
+
wikidataMapping("Q106106", "wardrobe", "exact"),
|
|
14337
|
+
uniclass5("Pr_40_30_87_96", "Wardrobes", "exact")
|
|
14338
|
+
],
|
|
14339
|
+
related: [
|
|
14340
|
+
typicallyIn4("bedroom"),
|
|
14341
|
+
typicallyIn4("dressing-room"),
|
|
14342
|
+
...relatedTo13("element.wardrobe")
|
|
14343
|
+
]
|
|
14344
|
+
}
|
|
14345
|
+
),
|
|
14346
|
+
coverageTerm(
|
|
14347
|
+
"bookcase",
|
|
14348
|
+
"Bookcase",
|
|
14349
|
+
"A freestanding case of shelves for books and display, open or fronted with doors or glass; not fitted shelving built into a wall.",
|
|
14350
|
+
{
|
|
14351
|
+
altLabels: ["bookshelf"],
|
|
14352
|
+
broaderSlug: "casegoods",
|
|
14353
|
+
external: [
|
|
14354
|
+
aat8("300143716", "bookcases", "close"),
|
|
14355
|
+
wikidataMapping("Q215857", "bookcase", "exact"),
|
|
14356
|
+
uniclass5("Pr_40_30_78_58", "Open bookcases", "narrow"),
|
|
14357
|
+
uniclass5("Pr_40_30_87_33", "Glazed bookcases", "narrow")
|
|
14358
|
+
],
|
|
14359
|
+
related: [
|
|
14360
|
+
typicallyIn4("study"),
|
|
14361
|
+
typicallyIn4("library"),
|
|
14362
|
+
typicallyIn4(LIVING_ROOM)
|
|
14363
|
+
]
|
|
14364
|
+
}
|
|
14365
|
+
),
|
|
14366
|
+
coverageTerm(
|
|
14367
|
+
"shelving",
|
|
14368
|
+
"Shelving",
|
|
14369
|
+
"A freestanding unit or system of open shelves for storing and displaying things, on a frame, a ladder or uprights; not a bookcase with a carcass and not fitted shelving.",
|
|
14370
|
+
{
|
|
14371
|
+
altLabels: ["shelving unit", "shelf unit"],
|
|
14372
|
+
broaderSlug: "storage",
|
|
14373
|
+
external: [
|
|
14374
|
+
aat8("300375206", "shelving units", "close"),
|
|
14375
|
+
wikidataMapping("Q2637814", "rack with shelves", "close"),
|
|
14376
|
+
uniclass5("Pr_40_30_78_78", "Shelves", "close")
|
|
14377
|
+
],
|
|
14378
|
+
related: [
|
|
14379
|
+
typicallyIn4("library"),
|
|
14380
|
+
typicallyIn4("storage"),
|
|
14381
|
+
...relatedTo13("element.shelving")
|
|
14382
|
+
]
|
|
14383
|
+
}
|
|
14384
|
+
)
|
|
14385
|
+
];
|
|
14386
|
+
var FURNITURE_TERMS = FURNITURE_DRAFTS.map(grounded);
|
|
14387
|
+
|
|
14388
|
+
// src/axes/product-category.ts
|
|
13067
14389
|
var LUMINAIRES = uniclass5(
|
|
13068
14390
|
"Pr_70_70_48",
|
|
13069
14391
|
"Luminaires, lighting track and lighting accessories",
|
|
13070
14392
|
"broad"
|
|
13071
14393
|
);
|
|
13072
|
-
var
|
|
13073
|
-
var searchedAat2 = (query) => ({
|
|
14394
|
+
var searchedAat3 = (query) => ({
|
|
13074
14395
|
date: SEARCHED_ON,
|
|
13075
14396
|
query,
|
|
13076
14397
|
scheme: "aat",
|
|
13077
14398
|
via: "https://vocab.getty.edu:443/sparql; luc:term searches (separated by semicolons), AAT preferred labels and English scope notes, LIMIT 150"
|
|
13078
14399
|
});
|
|
13079
|
-
var
|
|
14400
|
+
var searchedUniclass12 = (query) => ({
|
|
13080
14401
|
date: SEARCHED_ON,
|
|
13081
14402
|
query,
|
|
13082
14403
|
scheme: "uniclass",
|
|
@@ -13143,7 +14464,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13143
14464
|
)
|
|
13144
14465
|
],
|
|
13145
14466
|
introducedAt: "2026-08-30",
|
|
13146
|
-
related:
|
|
14467
|
+
related: relatedTo13("application.flooring"),
|
|
13147
14468
|
reviewedAt: "2026-08-31"
|
|
13148
14469
|
}
|
|
13149
14470
|
),
|
|
@@ -13158,7 +14479,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13158
14479
|
],
|
|
13159
14480
|
related: [
|
|
13160
14481
|
typicallyIn4("kitchen"),
|
|
13161
|
-
...
|
|
14482
|
+
...relatedTo13("element.worktop", "application.countertop")
|
|
13162
14483
|
]
|
|
13163
14484
|
}
|
|
13164
14485
|
),
|
|
@@ -13171,7 +14492,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13171
14492
|
aat8("300014866", "flooring", "broad"),
|
|
13172
14493
|
uniclass5("Pr_35_57_71", "Resilient floor coverings", "narrow")
|
|
13173
14494
|
],
|
|
13174
|
-
related:
|
|
14495
|
+
related: relatedTo13("application.flooring", "element.floor-finish")
|
|
13175
14496
|
}
|
|
13176
14497
|
),
|
|
13177
14498
|
term8(
|
|
@@ -13217,7 +14538,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13217
14538
|
"A light fitting supplied as a unit - housing, light engine and gear - rather than the light it casts.",
|
|
13218
14539
|
{
|
|
13219
14540
|
external: [aat8("300180081", "lighting fixtures", "narrow"), LUMINAIRES],
|
|
13220
|
-
related:
|
|
14541
|
+
related: relatedTo13("element.luminaire", "application.lighting")
|
|
13221
14542
|
}
|
|
13222
14543
|
),
|
|
13223
14544
|
fromCorpus(
|
|
@@ -13250,6 +14571,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13250
14571
|
"Seating",
|
|
13251
14572
|
"A loose furniture product whose purpose is to be sat on.",
|
|
13252
14573
|
{
|
|
14574
|
+
broaderSlug: "furniture",
|
|
13253
14575
|
external: [
|
|
13254
14576
|
aat8("300037769", "seating furniture", "broad"),
|
|
13255
14577
|
uniclass5("Pr_40_50_12", "Chairs, seats and benches", "broad")
|
|
@@ -13261,6 +14583,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13261
14583
|
"Table",
|
|
13262
14584
|
"A loose furniture product supplying a raised horizontal surface on its own support.",
|
|
13263
14585
|
{
|
|
14586
|
+
broaderSlug: "furniture",
|
|
13264
14587
|
external: [
|
|
13265
14588
|
aat8("300039548", "tables (support furniture)", "exact"),
|
|
13266
14589
|
uniclass5("Pr_40_50_21", "Desks and tables", "broad")
|
|
@@ -13280,7 +14603,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13280
14603
|
typicallyIn4("bathroom"),
|
|
13281
14604
|
typicallyIn4("wc"),
|
|
13282
14605
|
typicallyIn4("restroom"),
|
|
13283
|
-
...
|
|
14606
|
+
...relatedTo13("element.sanitaryware")
|
|
13284
14607
|
]
|
|
13285
14608
|
}
|
|
13286
14609
|
),
|
|
@@ -13303,7 +14626,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13303
14626
|
typicallyIn4("kitchen"),
|
|
13304
14627
|
typicallyIn4("wc"),
|
|
13305
14628
|
typicallyIn4("restroom"),
|
|
13306
|
-
...
|
|
14629
|
+
...relatedTo13("element.tapware")
|
|
13307
14630
|
],
|
|
13308
14631
|
seenAs: ["Faucet", "Fittings"]
|
|
13309
14632
|
}
|
|
@@ -13317,7 +14640,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13317
14640
|
aat8("300033260", "hardware (components)", "broad"),
|
|
13318
14641
|
uniclass5("Pr_30_36", "Hardware products", "close")
|
|
13319
14642
|
],
|
|
13320
|
-
related:
|
|
14643
|
+
related: relatedTo13("element.ironmongery")
|
|
13321
14644
|
}
|
|
13322
14645
|
),
|
|
13323
14646
|
fromCorpus(
|
|
@@ -13327,8 +14650,8 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13327
14650
|
{
|
|
13328
14651
|
altLabels: ["wiring devices"],
|
|
13329
14652
|
external: [uniclass5("Pr_65_72_97", "Wiring accessories", "broad")],
|
|
13330
|
-
related:
|
|
13331
|
-
searchedWithout: [
|
|
14653
|
+
related: relatedTo13("element.socket-outlet"),
|
|
14654
|
+
searchedWithout: [searchedAat3('wiring; "electrical accessories"')],
|
|
13332
14655
|
seenAs: ["Electrical"]
|
|
13333
14656
|
}
|
|
13334
14657
|
),
|
|
@@ -13337,12 +14660,13 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13337
14660
|
"Storage",
|
|
13338
14661
|
"A furniture product whose purpose is to contain or support stored things, fitted or freestanding.",
|
|
13339
14662
|
{
|
|
13340
|
-
altLabels: ["
|
|
14663
|
+
altLabels: ["cabinetry"],
|
|
14664
|
+
broaderSlug: "furniture",
|
|
13341
14665
|
external: [
|
|
13342
14666
|
aat8("300038860", "case furniture", "narrow"),
|
|
13343
14667
|
uniclass5("Pr_40_30_87", "Storage units and cupboards", "close")
|
|
13344
14668
|
],
|
|
13345
|
-
related:
|
|
14669
|
+
related: relatedTo13(
|
|
13346
14670
|
"element.cabinetry",
|
|
13347
14671
|
"element.shelving",
|
|
13348
14672
|
"application.cabinetry"
|
|
@@ -13359,7 +14683,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13359
14683
|
aat8("300002803", "doors", "close"),
|
|
13360
14684
|
uniclass5("Pr_30_59_24", "Doorsets", "exact")
|
|
13361
14685
|
],
|
|
13362
|
-
related:
|
|
14686
|
+
related: relatedTo13("element.door", "application.door"),
|
|
13363
14687
|
seenAs: ["Doors"]
|
|
13364
14688
|
}
|
|
13365
14689
|
),
|
|
@@ -13377,9 +14701,9 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13377
14701
|
external: [
|
|
13378
14702
|
uniclass5("Pr_35_93_13_65", "Profiled metal acoustic panels", "narrow")
|
|
13379
14703
|
],
|
|
13380
|
-
related:
|
|
14704
|
+
related: relatedTo13("requirement.acoustic-performance"),
|
|
13381
14705
|
searchedWithout: [
|
|
13382
|
-
|
|
14706
|
+
searchedAat3('acoustic panel; "sound absorbing panels"')
|
|
13383
14707
|
]
|
|
13384
14708
|
}
|
|
13385
14709
|
),
|
|
@@ -13440,7 +14764,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13440
14764
|
altLabels: ["track lighting", "track light"],
|
|
13441
14765
|
broaderSlug: "luminaire",
|
|
13442
14766
|
external: [LUMINAIRES],
|
|
13443
|
-
searchedWithout: [
|
|
14767
|
+
searchedWithout: [searchedAat3("track lighting; track AND lighting")]
|
|
13444
14768
|
}
|
|
13445
14769
|
),
|
|
13446
14770
|
fromSearchCorpus(
|
|
@@ -13465,7 +14789,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13465
14789
|
altLabels: ["mosaic"],
|
|
13466
14790
|
broaderSlug: "tile",
|
|
13467
14791
|
external: [uniclass5("Pr_35_93_96_53", "Mosaic tiles", "exact")],
|
|
13468
|
-
searchedWithout: [
|
|
14792
|
+
searchedWithout: [searchedAat3("mosaic tile; tesserae")]
|
|
13469
14793
|
}
|
|
13470
14794
|
),
|
|
13471
14795
|
fromSearchCorpus(
|
|
@@ -13489,8 +14813,8 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13489
14813
|
altLabels: ["acoustic ceiling"],
|
|
13490
14814
|
broaderSlug: "ceiling-system",
|
|
13491
14815
|
external: [aat8("300073775", "acoustical ceilings", "related")],
|
|
13492
|
-
related:
|
|
13493
|
-
searchedWithout: [
|
|
14816
|
+
related: relatedTo13("requirement.acoustic-performance"),
|
|
14817
|
+
searchedWithout: [searchedUniclass12("acoustic ceiling system")]
|
|
13494
14818
|
}
|
|
13495
14819
|
),
|
|
13496
14820
|
fromSearchCorpus(
|
|
@@ -13521,7 +14845,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13521
14845
|
snapshot: REVIEW_DATE8,
|
|
13522
14846
|
source: "Wikidata Q321046 window blind, https://www.wikidata.org/wiki/Q321046"
|
|
13523
14847
|
},
|
|
13524
|
-
related:
|
|
14848
|
+
related: relatedTo13("application.vh-window-shade", "element.window"),
|
|
13525
14849
|
reviewedAt: REVIEW_DATE8
|
|
13526
14850
|
}
|
|
13527
14851
|
),
|
|
@@ -13566,7 +14890,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13566
14890
|
],
|
|
13567
14891
|
introducedAt: REVIEW_DATE8,
|
|
13568
14892
|
provenance: { basis: "authored", source: REVIEW_SOURCE7 },
|
|
13569
|
-
related:
|
|
14893
|
+
related: relatedTo13("element.cladding", "application.facade"),
|
|
13570
14894
|
reviewedAt: REVIEW_DATE8,
|
|
13571
14895
|
seenAs: ["Facade", "Rainscreens", "Exterior Panel Systems"]
|
|
13572
14896
|
}
|
|
@@ -13579,6 +14903,7 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13579
14903
|
"A furniture product supplied to sleep or lie on, or the frame or headboard made for one, independent of its material and size; not a mattress, bedding or a sofa bed.",
|
|
13580
14904
|
{
|
|
13581
14905
|
altLabels: ["bed frame"],
|
|
14906
|
+
broaderSlug: "furniture",
|
|
13582
14907
|
external: [
|
|
13583
14908
|
aat8("300038697", "beds (furniture)", "close"),
|
|
13584
14909
|
uniclass5("Pr_40_50_06", "Beds", "broad")
|
|
@@ -13618,28 +14943,29 @@ var PRODUCT_CATEGORY_TERMS = [
|
|
|
13618
14943
|
related: [typicallyIn4("living-room"), typicallyIn4("bedroom")],
|
|
13619
14944
|
reviewedAt: SEARCHED_ON_TAX66
|
|
13620
14945
|
}
|
|
13621
|
-
)
|
|
14946
|
+
),
|
|
14947
|
+
...FURNITURE_TERMS
|
|
13622
14948
|
];
|
|
13623
14949
|
|
|
13624
14950
|
// src/axes/requirement.ts
|
|
13625
14951
|
var SOURCE5 = "in-house residential and commercial project requirements";
|
|
13626
|
-
var
|
|
14952
|
+
var SNAPSHOT7 = "2026-08-25";
|
|
13627
14953
|
var term9 = (slug, label, definition, extra = {}) => ({
|
|
13628
14954
|
definition,
|
|
13629
14955
|
label,
|
|
13630
|
-
provenance: { basis: "evidenced", snapshot:
|
|
14956
|
+
provenance: { basis: "evidenced", snapshot: SNAPSHOT7, source: SOURCE5 },
|
|
13631
14957
|
slug,
|
|
13632
14958
|
...extra
|
|
13633
14959
|
});
|
|
13634
14960
|
var uniclass6 = (identifier, label, match) => ({ identifier, label, match, scheme: "uniclass" });
|
|
13635
14961
|
var aat9 = (identifier, label, match) => ({ identifier, label, match, scheme: "aat" });
|
|
13636
|
-
var
|
|
14962
|
+
var searchedAat4 = (query) => ({
|
|
13637
14963
|
date: SEARCHED_ON,
|
|
13638
14964
|
query,
|
|
13639
14965
|
scheme: "aat",
|
|
13640
14966
|
via: "https://vocab.getty.edu:443/sparql; luc:term search, AAT preferred labels and English scope notes, LIMIT 150"
|
|
13641
14967
|
});
|
|
13642
|
-
var
|
|
14968
|
+
var searchedUniclass13 = (query) => ({
|
|
13643
14969
|
date: SEARCHED_ON,
|
|
13644
14970
|
query,
|
|
13645
14971
|
scheme: "uniclass",
|
|
@@ -13652,7 +14978,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13652
14978
|
"The allowed monetary cost or cost band for the applicable scope.",
|
|
13653
14979
|
{
|
|
13654
14980
|
external: [uniclass6("PM_60_50_10", "Budget", "close")],
|
|
13655
|
-
searchedWithout: [
|
|
14981
|
+
searchedWithout: [searchedAat4("budget")]
|
|
13656
14982
|
}
|
|
13657
14983
|
),
|
|
13658
14984
|
term9(
|
|
@@ -13661,7 +14987,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13661
14987
|
"Whether the thing can be supplied in the required market and time window.",
|
|
13662
14988
|
{
|
|
13663
14989
|
external: [uniclass6("PC_20_67_05", "Availability", "close")],
|
|
13664
|
-
searchedWithout: [
|
|
14990
|
+
searchedWithout: [searchedAat4("availability")]
|
|
13665
14991
|
}
|
|
13666
14992
|
),
|
|
13667
14993
|
term9(
|
|
@@ -13670,7 +14996,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13670
14996
|
"The maximum elapsed time acceptable between commitment and supply.",
|
|
13671
14997
|
{
|
|
13672
14998
|
external: [uniclass6("PC_20_77_52", "Manufacturing lead time", "narrow")],
|
|
13673
|
-
searchedWithout: [
|
|
14999
|
+
searchedWithout: [searchedAat4("lead time")]
|
|
13674
15000
|
}
|
|
13675
15001
|
),
|
|
13676
15002
|
term9(
|
|
@@ -13679,8 +15005,8 @@ var REQUIREMENT_TERMS = [
|
|
|
13679
15005
|
"The required measured resistance to pedestrian slipping for the application.",
|
|
13680
15006
|
{
|
|
13681
15007
|
searchedWithout: [
|
|
13682
|
-
|
|
13683
|
-
|
|
15008
|
+
searchedAat4("slip resistance"),
|
|
15009
|
+
searchedUniclass13("slip resistance")
|
|
13684
15010
|
]
|
|
13685
15011
|
}
|
|
13686
15012
|
),
|
|
@@ -13690,7 +15016,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13690
15016
|
"Whether the product is evidenced as suitable for the stated wet exposure.",
|
|
13691
15017
|
{
|
|
13692
15018
|
external: [uniclass6("PC_50_34_82", "Suitability", "broad")],
|
|
13693
|
-
searchedWithout: [
|
|
15019
|
+
searchedWithout: [searchedAat4("wet area")]
|
|
13694
15020
|
}
|
|
13695
15021
|
),
|
|
13696
15022
|
term9(
|
|
@@ -13701,7 +15027,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13701
15027
|
external: [
|
|
13702
15028
|
uniclass6("PM_35_30", "Fire performance requirements", "broad")
|
|
13703
15029
|
],
|
|
13704
|
-
searchedWithout: [
|
|
15030
|
+
searchedWithout: [searchedAat4("fire resistance")]
|
|
13705
15031
|
}
|
|
13706
15032
|
),
|
|
13707
15033
|
term9(
|
|
@@ -13721,7 +15047,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13721
15047
|
"The allowed cleaning, renewal or routine care burden.",
|
|
13722
15048
|
{
|
|
13723
15049
|
external: [uniclass6("PM_80_10_50", "Maintenance requirements", "close")],
|
|
13724
|
-
searchedWithout: [
|
|
15050
|
+
searchedWithout: [searchedAat4("maintenance")]
|
|
13725
15051
|
}
|
|
13726
15052
|
),
|
|
13727
15053
|
term9(
|
|
@@ -13730,7 +15056,7 @@ var REQUIREMENT_TERMS = [
|
|
|
13730
15056
|
"A required or prohibited method of fixing, laying or applying the product.",
|
|
13731
15057
|
{
|
|
13732
15058
|
external: [uniclass6("PC_50_34_41", "Installation method", "exact")],
|
|
13733
|
-
searchedWithout: [
|
|
15059
|
+
searchedWithout: [searchedAat4("installation")]
|
|
13734
15060
|
}
|
|
13735
15061
|
),
|
|
13736
15062
|
term9(
|
|
@@ -13769,6 +15095,70 @@ var REQUIREMENT_TERMS = [
|
|
|
13769
15095
|
},
|
|
13770
15096
|
reviewedAt: SEARCHED_ON_TAX66
|
|
13771
15097
|
}
|
|
15098
|
+
),
|
|
15099
|
+
// Authored with the TAX-66 vocabulary gaps. These are needs a project states; the schemes that
|
|
15100
|
+
// evidence them (FSC, GREENGUARD, EPD and the rest) are on the certification axis and point back
|
|
15101
|
+
// here with `related-to`, so nothing on this axis names a scheme.
|
|
15102
|
+
term9(
|
|
15103
|
+
"responsible-sourcing",
|
|
15104
|
+
"Responsible sourcing",
|
|
15105
|
+
"The required evidence that a product's raw materials, such as timber, come from lawful and responsibly managed sources, traced through the supply chain.",
|
|
15106
|
+
{
|
|
15107
|
+
altLabels: ["sustainable sourcing"],
|
|
15108
|
+
...GAPS_LIFECYCLE,
|
|
15109
|
+
searchedWithout: [
|
|
15110
|
+
gapsSearchedAat("responsible sourcing | sustainable sourcing"),
|
|
15111
|
+
gapsSearchedUniclass(
|
|
15112
|
+
"Responsible sourcing | sustainable sourcing | chain of custody"
|
|
15113
|
+
),
|
|
15114
|
+
gapsSearchedWikidata("responsible sourcing")
|
|
15115
|
+
]
|
|
15116
|
+
}
|
|
15117
|
+
),
|
|
15118
|
+
term9(
|
|
15119
|
+
"antimicrobial",
|
|
15120
|
+
"Antimicrobial",
|
|
15121
|
+
"The required resistance of a surface to the growth of bacteria, fungi or mould, stated against a test method and not by the presence of an additive alone.",
|
|
15122
|
+
{
|
|
15123
|
+
altLabels: ["anti-microbial"],
|
|
15124
|
+
external: [
|
|
15125
|
+
uniclass6("PC_35_28_48_06", "Bacterial resistance", "close"),
|
|
15126
|
+
uniclass6("PC_20_67_04_04", "Anti-microbial treatment", "related"),
|
|
15127
|
+
{
|
|
15128
|
+
identifier: "Q4774939",
|
|
15129
|
+
label: "antimicrobial surface",
|
|
15130
|
+
match: "related",
|
|
15131
|
+
scheme: "wikidata"
|
|
15132
|
+
}
|
|
15133
|
+
],
|
|
15134
|
+
...GAPS_LIFECYCLE,
|
|
15135
|
+
searchedWithout: [gapsSearchedAat("antimicrobial | antibacterial")],
|
|
15136
|
+
seenAs: ["antibacterial"]
|
|
15137
|
+
}
|
|
15138
|
+
),
|
|
15139
|
+
term9(
|
|
15140
|
+
"net-zero",
|
|
15141
|
+
"Net zero",
|
|
15142
|
+
"The net greenhouse-gas balance a project is held to over a stated scope and period, once emissions are reduced and any remainder offset or removed; the assertion states the scope.",
|
|
15143
|
+
{
|
|
15144
|
+
altLabels: ["net zero carbon", "net-zero"],
|
|
15145
|
+
external: [
|
|
15146
|
+
uniclass6("PC_35_85_99", "Zero-carbon", "close"),
|
|
15147
|
+
uniclass6("PC_35_85_12", "Carbon-neutral", "related"),
|
|
15148
|
+
{
|
|
15149
|
+
identifier: "Q121734997",
|
|
15150
|
+
label: "Net-zero emissions",
|
|
15151
|
+
match: "close",
|
|
15152
|
+
scheme: "wikidata"
|
|
15153
|
+
}
|
|
15154
|
+
],
|
|
15155
|
+
...GAPS_LIFECYCLE,
|
|
15156
|
+
note: "Carbon-neutral, which can be reached by offsets alone, is a different claim; Uniclass keeps it apart from Zero-carbon, and the mapping to it is only related.",
|
|
15157
|
+
related: [
|
|
15158
|
+
{ predicate: "related-to", target: "requirement.embodied-carbon" }
|
|
15159
|
+
],
|
|
15160
|
+
searchedWithout: [gapsSearchedAat("net zero | zero energy")]
|
|
15161
|
+
}
|
|
13772
15162
|
)
|
|
13773
15163
|
];
|
|
13774
15164
|
|
|
@@ -13881,7 +15271,7 @@ var PROGRAM_SPACES = {
|
|
|
13881
15271
|
snapshot: VENDORED_SNAPSHOT,
|
|
13882
15272
|
source: "PROGRAM_SPACE_TYPES in a project-materials database (src-07)"
|
|
13883
15273
|
};
|
|
13884
|
-
var
|
|
15274
|
+
var relatedTo14 = (target) => ({
|
|
13885
15275
|
predicate: "related-to",
|
|
13886
15276
|
target
|
|
13887
15277
|
});
|
|
@@ -14182,7 +15572,7 @@ var CIRCULATION_SPACES = [
|
|
|
14182
15572
|
// stand on. A neat demonstration of the boundary rule catching a mapping that reads right.
|
|
14183
15573
|
note: "AAT files landings as a stair component, which is the element sense. This term is the volume sense - the thing you stand on - so the match is `close` and not `exact`.",
|
|
14184
15574
|
provenance: PROGRAM_SPACES,
|
|
14185
|
-
related: [
|
|
15575
|
+
related: [relatedTo14("space.stairwell")],
|
|
14186
15576
|
slug: "landing"
|
|
14187
15577
|
},
|
|
14188
15578
|
{
|
|
@@ -14351,7 +15741,7 @@ var CULTURE_SPACES = [
|
|
|
14351
15741
|
label: "Theatre",
|
|
14352
15742
|
note: "Deliberately not a kind of `auditorium`, and the containment runs the other way - the auditorium is the audience chamber INSIDE a theatre. That is a part-of relation and not an ISA edge, so it is carried in `related` where part-of belongs. No AAT mapping: every Getty `theaters` entry is a building or an institution, which is TYPOLOGY's business.",
|
|
14353
15743
|
provenance: PROGRAM_SPACES,
|
|
14354
|
-
related: [typicallyIn5("theatre"),
|
|
15744
|
+
related: [typicallyIn5("theatre"), relatedTo14("space.auditorium")],
|
|
14355
15745
|
slug: "theater"
|
|
14356
15746
|
},
|
|
14357
15747
|
{
|
|
@@ -14631,7 +16021,7 @@ var DINING_SPACES = [
|
|
|
14631
16021
|
label: "Kitchen",
|
|
14632
16022
|
note: "`application.kitchen` in the published APPLICATIONS axis is a room sitting inside a surface-use vocabulary, and is superseded by this term. As with `bathroom`, the edge is `related-to` rather than `suitable-for`, because the suitability claim runs from the material to the space and so belongs on the applications side.",
|
|
14633
16023
|
provenance: MS_ROOM_PROGRAM,
|
|
14634
|
-
related: [
|
|
16024
|
+
related: [relatedTo14("application.kitchen")],
|
|
14635
16025
|
seenAs: ["Kitchen"],
|
|
14636
16026
|
slug: "kitchen",
|
|
14637
16027
|
usage: schemeUsage("dominant")
|
|
@@ -14695,7 +16085,7 @@ var DINING_SPACES = [
|
|
|
14695
16085
|
label: "Scullery",
|
|
14696
16086
|
note: "Deliberately not a kind of `kitchen`. The parent is defined by preparing and cooking food, and a scullery is defined by the cooking happening next door. In current British practice the word has been reclaimed for the working half of a two-part kitchen, which is the same room by the same test.",
|
|
14697
16087
|
provenance: AUTHORED6,
|
|
14698
|
-
related: [
|
|
16088
|
+
related: [relatedTo14("space.kitchen")],
|
|
14699
16089
|
slug: "scullery"
|
|
14700
16090
|
},
|
|
14701
16091
|
{
|
|
@@ -14961,7 +16351,7 @@ var FITNESS_SPACES = [
|
|
|
14961
16351
|
// src/axes/space/gathering.ts
|
|
14962
16352
|
var LIVING_ROOMS = "Living rooms";
|
|
14963
16353
|
var LOUNGES = "lounges (sitting rooms)";
|
|
14964
|
-
var
|
|
16354
|
+
var LIVING_ROOM2 = "living-room";
|
|
14965
16355
|
var GATHERING_SPACES = [
|
|
14966
16356
|
// ─── Sitting and gathering ──────────────────────────────────────────────────────────────────
|
|
14967
16357
|
// The spine's largest single block, and the one where the near-synonym rule earns its keep. Nine
|
|
@@ -14983,12 +16373,12 @@ var GATHERING_SPACES = [
|
|
|
14983
16373
|
provenance: MS_ROOM_PROGRAM,
|
|
14984
16374
|
related: [serves("residential")],
|
|
14985
16375
|
seenAs: ["Living Room", "living_area"],
|
|
14986
|
-
slug:
|
|
16376
|
+
slug: LIVING_ROOM2,
|
|
14987
16377
|
usage: schemeUsage("common")
|
|
14988
16378
|
},
|
|
14989
16379
|
{
|
|
14990
16380
|
altLabels: ["den"],
|
|
14991
|
-
broaderSlug:
|
|
16381
|
+
broaderSlug: LIVING_ROOM2,
|
|
14992
16382
|
definition: "A small, enclosed and deliberately low-lit sitting volume held as a retreat from the main `living_room`, rather than as a substitute for it.",
|
|
14993
16383
|
external: [
|
|
14994
16384
|
aat11("300004416", "dens (rooms)", "close"),
|
|
@@ -15000,7 +16390,7 @@ var GATHERING_SPACES = [
|
|
|
15000
16390
|
slug: "snug"
|
|
15001
16391
|
},
|
|
15002
16392
|
{
|
|
15003
|
-
broaderSlug:
|
|
16393
|
+
broaderSlug: LIVING_ROOM2,
|
|
15004
16394
|
definition: "A formal sitting volume kept for receiving guests, held apart from the household's everyday `living_room` and finished to be seen rather than lived in. British usage, and the reason it is a term rather than another name for `living_room`: a house with both uses them differently.",
|
|
15005
16395
|
external: [
|
|
15006
16396
|
aat11("300004417", "drawing rooms", "exact"),
|
|
@@ -15145,7 +16535,7 @@ var GATHERING_SPACES = [
|
|
|
15145
16535
|
label: "Roof Lounge",
|
|
15146
16536
|
note: "Filed under `lounge` rather than under `outdoor`, and only one of those can be the parent. The lounge-ness is what gets specified - the seating, the lighting, the way it is used - and being outdoors is a condition applied to it. The same call is made on `outdoor_lounge`.",
|
|
15147
16537
|
provenance: PROGRAM_SPACES,
|
|
15148
|
-
related: [
|
|
16538
|
+
related: [relatedTo14("space.roof-deck")],
|
|
15149
16539
|
searchedWithout: [
|
|
15150
16540
|
{
|
|
15151
16541
|
date: SEARCHED_ON,
|
|
@@ -15165,7 +16555,7 @@ var GATHERING_SPACES = [
|
|
|
15165
16555
|
],
|
|
15166
16556
|
label: "Outdoor Lounge",
|
|
15167
16557
|
provenance: PROGRAM_SPACES,
|
|
15168
|
-
related: [
|
|
16558
|
+
related: [relatedTo14("space.outdoor")],
|
|
15169
16559
|
slug: "outdoor-lounge"
|
|
15170
16560
|
},
|
|
15171
16561
|
{
|
|
@@ -15177,7 +16567,7 @@ var GATHERING_SPACES = [
|
|
|
15177
16567
|
label: "Clubroom",
|
|
15178
16568
|
note: "Deliberately not a kind of `lounge`. A lounge is soft-seated and dropped into; a clubroom is booked, tabled, and expected to take a party. The two are neighbours in every brief and they are not the same room, which is why folding them would lose a real difference in floor build-up and acoustic treatment.",
|
|
15179
16569
|
provenance: PROGRAM_SPACES,
|
|
15180
|
-
related: [
|
|
16570
|
+
related: [relatedTo14("space.game-room")],
|
|
15181
16571
|
slug: "clubroom"
|
|
15182
16572
|
},
|
|
15183
16573
|
{
|
|
@@ -15185,7 +16575,7 @@ var GATHERING_SPACES = [
|
|
|
15185
16575
|
label: "Fireplace Area",
|
|
15186
16576
|
note: "A zone inside another room rather than a room, and deliberately not a child of `living_room` - it occurs in lobbies, lounges and bars as readily as in dwellings. The fire opening and chimneypiece themselves are `element.fireplace` and `element.chimneypiece`; this is the volume in front of them.",
|
|
15187
16577
|
provenance: PROGRAM_SPACES,
|
|
15188
|
-
related: [
|
|
16578
|
+
related: [relatedTo14("element.fireplace")],
|
|
15189
16579
|
searchedWithout: [
|
|
15190
16580
|
{
|
|
15191
16581
|
date: SEARCHED_ON,
|
|
@@ -15783,7 +17173,7 @@ var OUTDOOR_SPACES = [
|
|
|
15783
17173
|
label: "Facade Zone",
|
|
15784
17174
|
note: "Names a set of surfaces rather than a volume, and fails the standing-in test the way `home_exterior` does. Retained because the spine carries it and because facade packages really are specified as one zone. If it is ever split, its contents belong in ELEMENT - `element.cladding`, `element.external-wall` - and not here.",
|
|
15785
17175
|
provenance: PROGRAM_SPACES,
|
|
15786
|
-
related: [
|
|
17176
|
+
related: [relatedTo14("element.cladding")],
|
|
15787
17177
|
searchedWithout: [
|
|
15788
17178
|
{
|
|
15789
17179
|
date: SEARCHED_ON,
|
|
@@ -15948,7 +17338,7 @@ var RETAIL_SPACES = [
|
|
|
15948
17338
|
label: "Consultation Room",
|
|
15949
17339
|
note: "One character from `consult_room`, and deliberately not folded into it. That one is clinical - a GP surgery, examined and prescribed in, with the cleaning and privacy requirements that implies. This one is commercial and is furnished like a small meeting room. Two ids this close is a real trap, and the answer is a note on each rather than a merge that would put retail joinery into a medical specification.",
|
|
15950
17340
|
provenance: PROGRAM_SPACES,
|
|
15951
|
-
related: [
|
|
17341
|
+
related: [relatedTo14("space.consult-room"), serves("retail")],
|
|
15952
17342
|
searchedWithout: [
|
|
15953
17343
|
{
|
|
15954
17344
|
date: SEARCHED_ON,
|
|
@@ -16067,7 +17457,7 @@ var SANITARY_SPACES = [
|
|
|
16067
17457
|
label: "Bathroom",
|
|
16068
17458
|
note: "`application.bath` in the published APPLICATIONS axis is a room sitting inside a surface-use vocabulary, and is superseded by this term. The edge here is `related-to` and not `suitable-for` on purpose: `suitable-for` runs from a material-suitability claim TO a space, so the correct `suitable-for` edge points the other way and belongs on the applications side, alongside the deprecation.",
|
|
16069
17459
|
provenance: MS_ROOM_PROGRAM,
|
|
16070
|
-
related: [
|
|
17460
|
+
related: [relatedTo14("application.bath")],
|
|
16071
17461
|
seenAs: ["Bathroom"],
|
|
16072
17462
|
slug: "bathroom",
|
|
16073
17463
|
usage: schemeUsage("dominant")
|
|
@@ -16150,7 +17540,7 @@ var SANITARY_SPACES = [
|
|
|
16150
17540
|
label: "Locker Area",
|
|
16151
17541
|
note: "Kept apart from `changing_room` rather than folded into it, because the spine files them in different sectors and the difference is real: this one has no showers, no benching and no privacy requirement, and it sits in the open.",
|
|
16152
17542
|
provenance: PROGRAM_SPACES,
|
|
16153
|
-
related: [
|
|
17543
|
+
related: [relatedTo14("space.changing-room")],
|
|
16154
17544
|
slug: "locker-area"
|
|
16155
17545
|
},
|
|
16156
17546
|
{
|
|
@@ -16339,7 +17729,7 @@ var SERVICE_SPACES = [
|
|
|
16339
17729
|
label: "Electrical Room",
|
|
16340
17730
|
note: "Deliberately not a kind of `mechanical_room`. Switchgear is not a kind of mechanical plant, the two rooms are kept apart by regulation for exactly that reason, and their clearances, fire compartmentation and access rules are different.",
|
|
16341
17731
|
provenance: PROGRAM_SPACES,
|
|
16342
|
-
related: [
|
|
17732
|
+
related: [relatedTo14("space.mechanical-room")],
|
|
16343
17733
|
searchedWithout: [
|
|
16344
17734
|
{
|
|
16345
17735
|
date: SEARCHED_ON,
|
|
@@ -16453,7 +17843,7 @@ var SLEEPING_SPACES = [
|
|
|
16453
17843
|
label: "Nursery",
|
|
16454
17844
|
note: 'Deliberately not a kind of `bedroom`, on Getty\'s own evidence: AAT scopes a nursery as serving "as a bedroom or playroom", and AAT mints `night nurseries` separately for the sleeping-only case. If not every nursery is a bedroom, the ISA test fails, and it does. The nursery school is a building and belongs to TYPOLOGY, not here.',
|
|
16455
17845
|
provenance: AUTHORED6,
|
|
16456
|
-
related: [typicallyIn5("house"),
|
|
17846
|
+
related: [typicallyIn5("house"), relatedTo14("space.playroom")],
|
|
16457
17847
|
slug: "nursery"
|
|
16458
17848
|
},
|
|
16459
17849
|
{
|
|
@@ -16521,8 +17911,8 @@ var SLEEPING_SPACES = [
|
|
|
16521
17911
|
note: 'Deliberately not a kind of `closet_storage`, whose definition ends "never to stay in" - which is exactly what a dressing room is for. AAT 300004369 is `exact` here and `close` on `fitting_room`; Getty scopes it as "rooms for dressing and the toilet, usually opening from a bedroom", which is this room and only approximately a shop\'s changing cubicle.',
|
|
16522
17912
|
provenance: AUTHORED6,
|
|
16523
17913
|
related: [
|
|
16524
|
-
|
|
16525
|
-
|
|
17914
|
+
relatedTo14("space.principal-bedroom"),
|
|
17915
|
+
relatedTo14("space.closet-storage")
|
|
16526
17916
|
],
|
|
16527
17917
|
slug: "dressing-room"
|
|
16528
17918
|
}
|
|
@@ -16743,7 +18133,7 @@ var WORKING_SPACES = [
|
|
|
16743
18133
|
],
|
|
16744
18134
|
label: "IT Room",
|
|
16745
18135
|
provenance: PROGRAM_SPACES,
|
|
16746
|
-
related: [typicallyIn5("office"),
|
|
18136
|
+
related: [typicallyIn5("office"), relatedTo14("space.electrical-room")],
|
|
16747
18137
|
slug: "it-room"
|
|
16748
18138
|
},
|
|
16749
18139
|
{
|
|
@@ -16828,7 +18218,7 @@ var SECTOR_IDS = new Set(
|
|
|
16828
18218
|
|
|
16829
18219
|
// src/axes/style-shared.ts
|
|
16830
18220
|
var PLATFORM_STYLES_SOURCE = "STYLES in an architecture-projects platform (src-01)";
|
|
16831
|
-
var
|
|
18221
|
+
var SNAPSHOT8 = "2026-08-21";
|
|
16832
18222
|
var MOVEMENT = "movement";
|
|
16833
18223
|
var aat12 = (slug, label, match) => ({
|
|
16834
18224
|
identifier: slug,
|
|
@@ -16844,7 +18234,7 @@ var influencedBy = (target) => ({
|
|
|
16844
18234
|
predicate: "influenced-by",
|
|
16845
18235
|
target
|
|
16846
18236
|
});
|
|
16847
|
-
var
|
|
18237
|
+
var relatedTo15 = (target) => ({
|
|
16848
18238
|
predicate: "related-to",
|
|
16849
18239
|
target
|
|
16850
18240
|
});
|
|
@@ -16866,7 +18256,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16866
18256
|
label: "Postmodernism",
|
|
16867
18257
|
provenance: {
|
|
16868
18258
|
basis: "vendored",
|
|
16869
|
-
snapshot:
|
|
18259
|
+
snapshot: SNAPSHOT8,
|
|
16870
18260
|
source: PLATFORM_STYLES_SOURCE
|
|
16871
18261
|
},
|
|
16872
18262
|
related: [influencedBy("style.modernism"), evokes(LATE_CENTURY)],
|
|
@@ -16887,7 +18277,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16887
18277
|
label: "Deconstructivism",
|
|
16888
18278
|
provenance: {
|
|
16889
18279
|
basis: "vendored",
|
|
16890
|
-
snapshot:
|
|
18280
|
+
snapshot: SNAPSHOT8,
|
|
16891
18281
|
source: PLATFORM_STYLES_SOURCE
|
|
16892
18282
|
},
|
|
16893
18283
|
related: [influencedBy("style.constructivism"), evokes(LATE_CENTURY)],
|
|
@@ -16900,7 +18290,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16900
18290
|
label: "Parametricism",
|
|
16901
18291
|
provenance: {
|
|
16902
18292
|
basis: "vendored",
|
|
16903
|
-
snapshot:
|
|
18293
|
+
snapshot: SNAPSHOT8,
|
|
16904
18294
|
source: PLATFORM_STYLES_SOURCE
|
|
16905
18295
|
},
|
|
16906
18296
|
related: [evokes("period.contemporary")],
|
|
@@ -16929,7 +18319,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16929
18319
|
label: "High-Tech",
|
|
16930
18320
|
provenance: {
|
|
16931
18321
|
basis: "vendored",
|
|
16932
|
-
snapshot:
|
|
18322
|
+
snapshot: SNAPSHOT8,
|
|
16933
18323
|
source: PLATFORM_STYLES_SOURCE
|
|
16934
18324
|
},
|
|
16935
18325
|
related: [evokes(LATE_CENTURY)],
|
|
@@ -16950,7 +18340,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16950
18340
|
label: "Rationalism",
|
|
16951
18341
|
provenance: {
|
|
16952
18342
|
basis: "vendored",
|
|
16953
|
-
snapshot:
|
|
18343
|
+
snapshot: SNAPSHOT8,
|
|
16954
18344
|
source: PLATFORM_STYLES_SOURCE
|
|
16955
18345
|
},
|
|
16956
18346
|
related: [evokes("period.interwar")],
|
|
@@ -16971,7 +18361,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16971
18361
|
label: "Constructivism",
|
|
16972
18362
|
provenance: {
|
|
16973
18363
|
basis: "vendored",
|
|
16974
|
-
snapshot:
|
|
18364
|
+
snapshot: SNAPSHOT8,
|
|
16975
18365
|
source: PLATFORM_STYLES_SOURCE
|
|
16976
18366
|
},
|
|
16977
18367
|
related: [evokes("period.interwar")],
|
|
@@ -16993,7 +18383,7 @@ var STYLE_ARCHITECTURAL_TERMS = [
|
|
|
16993
18383
|
label: "Organic Modernism",
|
|
16994
18384
|
provenance: {
|
|
16995
18385
|
basis: "vendored",
|
|
16996
|
-
snapshot:
|
|
18386
|
+
snapshot: SNAPSHOT8,
|
|
16997
18387
|
source: PLATFORM_STYLES_SOURCE
|
|
16998
18388
|
},
|
|
16999
18389
|
seenAs: ["Organic", "quiet_organic"],
|
|
@@ -17023,7 +18413,7 @@ var STYLE_TERMS = [
|
|
|
17023
18413
|
}
|
|
17024
18414
|
],
|
|
17025
18415
|
label: "Minimalism",
|
|
17026
|
-
provenance: { basis: "evidenced", snapshot:
|
|
18416
|
+
provenance: { basis: "evidenced", snapshot: SNAPSHOT8, source: ESTATE3 },
|
|
17027
18417
|
seenAs: [
|
|
17028
18418
|
"serene-minimal",
|
|
17029
18419
|
"minimal_warm",
|
|
@@ -17065,7 +18455,7 @@ var STYLE_TERMS = [
|
|
|
17065
18455
|
note: 'NOT the consumer sense of "modern". A consumer calling a room modern usually means it is current and clean-lined, which is `contemporary` here. The two are separate terms and the crosswalk from an ambiguous source label declines rather than guessing. See ADR 0001.',
|
|
17066
18456
|
provenance: {
|
|
17067
18457
|
basis: "evidenced",
|
|
17068
|
-
snapshot:
|
|
18458
|
+
snapshot: SNAPSHOT8,
|
|
17069
18459
|
source: "an architecture-projects platform (src-01) and a rendering pipeline (src-08)"
|
|
17070
18460
|
},
|
|
17071
18461
|
slug: "modernism",
|
|
@@ -17092,7 +18482,7 @@ var STYLE_TERMS = [
|
|
|
17092
18482
|
note: "Style, not period. A reproduction built in 2024 is `style.mid-century-modern` in the `period.contemporary` period, which is why the two axes cannot be one.",
|
|
17093
18483
|
provenance: {
|
|
17094
18484
|
basis: "evidenced",
|
|
17095
|
-
snapshot:
|
|
18485
|
+
snapshot: SNAPSHOT8,
|
|
17096
18486
|
source: "an architecture-projects platform (src-01), an editorial image library (src-02), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
|
|
17097
18487
|
},
|
|
17098
18488
|
related: [{ predicate: "evokes", target: "period.mid-century" }],
|
|
@@ -17106,10 +18496,10 @@ var STYLE_TERMS = [
|
|
|
17106
18496
|
note: "DELIBERATELY TIME-RELATIVE, and the only term here that is. What it denotes moves; the id does not. Consumers distinguish it from `modern` in practice - a furnishings retailer carries both at similar volume - without anyone having written down how. `period.contemporary` is a different thing on a different axis; the prefix disambiguates.",
|
|
17107
18497
|
provenance: {
|
|
17108
18498
|
basis: "evidenced",
|
|
17109
|
-
snapshot:
|
|
18499
|
+
snapshot: SNAPSHOT8,
|
|
17110
18500
|
source: "a furnishings retailer (src-03), a rendering pipeline (src-08) and a materials-retrieval system (src-05)"
|
|
17111
18501
|
},
|
|
17112
|
-
related: [
|
|
18502
|
+
related: [relatedTo15("period.contemporary")],
|
|
17113
18503
|
searchedWithout: [
|
|
17114
18504
|
{
|
|
17115
18505
|
date: SEARCHED_ON,
|
|
@@ -17130,7 +18520,7 @@ var STYLE_TERMS = [
|
|
|
17130
18520
|
definition: "Pre-modern decorative conventions carried forward without irony: mouldings, pattern, symmetry, furniture with a period lineage.",
|
|
17131
18521
|
external: [aat12("300310540", "traditional (style)", "exact")],
|
|
17132
18522
|
label: "Traditional",
|
|
17133
|
-
provenance: { basis: "evidenced", snapshot:
|
|
18523
|
+
provenance: { basis: "evidenced", snapshot: SNAPSHOT8, source: ESTATE3 },
|
|
17134
18524
|
searchedWithout: [
|
|
17135
18525
|
{
|
|
17136
18526
|
date: SEARCHED_ON,
|
|
@@ -17168,7 +18558,7 @@ var STYLE_TERMS = [
|
|
|
17168
18558
|
label: "Neoclassical",
|
|
17169
18559
|
provenance: {
|
|
17170
18560
|
basis: "vendored",
|
|
17171
|
-
snapshot:
|
|
18561
|
+
snapshot: SNAPSHOT8,
|
|
17172
18562
|
source: PLATFORM_STYLES_SOURCE
|
|
17173
18563
|
},
|
|
17174
18564
|
seenAs: ["Classical & Grand"],
|
|
@@ -17189,7 +18579,7 @@ var STYLE_TERMS = [
|
|
|
17189
18579
|
label: "Gothic",
|
|
17190
18580
|
provenance: {
|
|
17191
18581
|
basis: "vendored",
|
|
17192
|
-
snapshot:
|
|
18582
|
+
snapshot: SNAPSHOT8,
|
|
17193
18583
|
source: PLATFORM_STYLES_SOURCE
|
|
17194
18584
|
},
|
|
17195
18585
|
related: [evokes("period.medieval"), evokes("typology.church")],
|
|
@@ -17210,7 +18600,7 @@ var STYLE_TERMS = [
|
|
|
17210
18600
|
label: "Art Deco",
|
|
17211
18601
|
provenance: {
|
|
17212
18602
|
basis: "evidenced",
|
|
17213
|
-
snapshot:
|
|
18603
|
+
snapshot: SNAPSHOT8,
|
|
17214
18604
|
source: "an architecture-projects platform (src-01), an editorial image library (src-02), a furnishings retailer (src-03) and a rendering pipeline (src-08)"
|
|
17215
18605
|
},
|
|
17216
18606
|
related: [{ predicate: "evokes", target: "period.interwar" }],
|
|
@@ -17232,7 +18622,7 @@ var STYLE_TERMS = [
|
|
|
17232
18622
|
label: "Industrial",
|
|
17233
18623
|
provenance: {
|
|
17234
18624
|
basis: "evidenced",
|
|
17235
|
-
snapshot:
|
|
18625
|
+
snapshot: SNAPSHOT8,
|
|
17236
18626
|
source: "a rendering pipeline (src-08), an architecture-projects platform (src-01), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
|
|
17237
18627
|
},
|
|
17238
18628
|
related: [{ predicate: "evokes", target: "typology.warehouse" }],
|
|
@@ -17254,7 +18644,7 @@ var STYLE_TERMS = [
|
|
|
17254
18644
|
label: "Brutalism",
|
|
17255
18645
|
provenance: {
|
|
17256
18646
|
basis: "vendored",
|
|
17257
|
-
snapshot:
|
|
18647
|
+
snapshot: SNAPSHOT8,
|
|
17258
18648
|
source: PLATFORM_STYLES_SOURCE
|
|
17259
18649
|
},
|
|
17260
18650
|
related: [influencedBy("style.modernism"), evokes("period.mid-century")],
|
|
@@ -17274,7 +18664,7 @@ var STYLE_TERMS = [
|
|
|
17274
18664
|
label: "Maximalism",
|
|
17275
18665
|
provenance: {
|
|
17276
18666
|
basis: "evidenced",
|
|
17277
|
-
snapshot:
|
|
18667
|
+
snapshot: SNAPSHOT8,
|
|
17278
18668
|
source: "an editorial image library (src-02)"
|
|
17279
18669
|
},
|
|
17280
18670
|
searchedWithout: [
|
|
@@ -17303,10 +18693,10 @@ var STYLE_TERMS = [
|
|
|
17303
18693
|
label: "Eclectic",
|
|
17304
18694
|
provenance: {
|
|
17305
18695
|
basis: "evidenced",
|
|
17306
|
-
snapshot:
|
|
18696
|
+
snapshot: SNAPSHOT8,
|
|
17307
18697
|
source: SCHEME_CORPUS2
|
|
17308
18698
|
},
|
|
17309
|
-
related: [
|
|
18699
|
+
related: [relatedTo15("style.maximalism")],
|
|
17310
18700
|
slug: "eclectic",
|
|
17311
18701
|
styleKind: MARKET_IDIOM,
|
|
17312
18702
|
usage: {
|
|
@@ -17323,7 +18713,7 @@ var STYLE_TERMS = [
|
|
|
17323
18713
|
note: 'Defined only relative to two other terms, which is unusual and was nearly grounds to refuse it. It stays because it is heavily used in the US consumer market and because the relative definition is the honest one - the term genuinely means "between those two" and pretending otherwise would invent content nobody intends.',
|
|
17324
18714
|
provenance: {
|
|
17325
18715
|
basis: "evidenced",
|
|
17326
|
-
snapshot:
|
|
18716
|
+
snapshot: SNAPSHOT8,
|
|
17327
18717
|
source: SCHEME_CORPUS2
|
|
17328
18718
|
},
|
|
17329
18719
|
related: [
|
|
@@ -17360,7 +18750,7 @@ var STYLE_TERMS = [
|
|
|
17360
18750
|
label: "Rustic",
|
|
17361
18751
|
provenance: {
|
|
17362
18752
|
basis: "evidenced",
|
|
17363
|
-
snapshot:
|
|
18753
|
+
snapshot: SNAPSHOT8,
|
|
17364
18754
|
source: "a rendering pipeline (src-08), an architecture-projects platform (src-01), a furnishings retailer (src-03) and a materials-retrieval system (src-05)"
|
|
17365
18755
|
},
|
|
17366
18756
|
seenAs: ["Rustic & Artisan"],
|
|
@@ -17382,7 +18772,7 @@ var STYLE_TERMS = [
|
|
|
17382
18772
|
label: "Vernacular",
|
|
17383
18773
|
provenance: {
|
|
17384
18774
|
basis: "vendored",
|
|
17385
|
-
snapshot:
|
|
18775
|
+
snapshot: SNAPSHOT8,
|
|
17386
18776
|
source: PLATFORM_STYLES_SOURCE
|
|
17387
18777
|
},
|
|
17388
18778
|
slug: "vernacular",
|
|
@@ -17404,10 +18794,10 @@ var STYLE_TERMS = [
|
|
|
17404
18794
|
label: "Critical Regionalism",
|
|
17405
18795
|
provenance: {
|
|
17406
18796
|
basis: "vendored",
|
|
17407
|
-
snapshot:
|
|
18797
|
+
snapshot: SNAPSHOT8,
|
|
17408
18798
|
source: PLATFORM_STYLES_SOURCE
|
|
17409
18799
|
},
|
|
17410
|
-
related: [
|
|
18800
|
+
related: [relatedTo15("style.vernacular")],
|
|
17411
18801
|
slug: "critical-regionalism",
|
|
17412
18802
|
styleKind: MOVEMENT
|
|
17413
18803
|
},
|
|
@@ -17426,12 +18816,12 @@ var STYLE_TERMS = [
|
|
|
17426
18816
|
label: "Wabi-Sabi",
|
|
17427
18817
|
provenance: {
|
|
17428
18818
|
basis: "evidenced",
|
|
17429
|
-
snapshot:
|
|
18819
|
+
snapshot: SNAPSHOT8,
|
|
17430
18820
|
source: "an editorial image library (src-02)"
|
|
17431
18821
|
},
|
|
17432
18822
|
related: [
|
|
17433
18823
|
{ predicate: "evokes", target: "place.region.japanese" },
|
|
17434
|
-
|
|
18824
|
+
relatedTo15("style.rustic")
|
|
17435
18825
|
],
|
|
17436
18826
|
searchedWithout: [
|
|
17437
18827
|
{
|
|
@@ -17508,7 +18898,7 @@ var searchedWithout = (query) => [
|
|
|
17508
18898
|
}
|
|
17509
18899
|
];
|
|
17510
18900
|
var ESTATE_POSITIONING = "brand-positioning vocabulary in a materials-retrieval system (src-05) and project budget bands in a project-materials database (src-07)";
|
|
17511
|
-
var
|
|
18901
|
+
var SNAPSHOT9 = "2026-08-22";
|
|
17512
18902
|
var ADR3 = "@instruments/taxonomy ADR 0001, amended 22 August 2026";
|
|
17513
18903
|
var TIER_MARKET_TERMS = [
|
|
17514
18904
|
{
|
|
@@ -17517,7 +18907,7 @@ var TIER_MARKET_TERMS = [
|
|
|
17517
18907
|
label: "Value",
|
|
17518
18908
|
provenance: {
|
|
17519
18909
|
basis: "evidenced",
|
|
17520
|
-
snapshot:
|
|
18910
|
+
snapshot: SNAPSHOT9,
|
|
17521
18911
|
source: ESTATE_POSITIONING
|
|
17522
18912
|
},
|
|
17523
18913
|
rank: 1,
|
|
@@ -17531,7 +18921,7 @@ var TIER_MARKET_TERMS = [
|
|
|
17531
18921
|
label: "Mid-market",
|
|
17532
18922
|
provenance: {
|
|
17533
18923
|
basis: "evidenced",
|
|
17534
|
-
snapshot:
|
|
18924
|
+
snapshot: SNAPSHOT9,
|
|
17535
18925
|
source: ESTATE_POSITIONING
|
|
17536
18926
|
},
|
|
17537
18927
|
rank: 2,
|
|
@@ -17546,7 +18936,7 @@ var TIER_MARKET_TERMS = [
|
|
|
17546
18936
|
note: "`upscale` is NOT recorded here as another name for this term, though the trade uses it that way, because `tier.chain-scale.upscale` is a different rung on a longer ladder. Letting the word resolve to both is how the two scales would quietly become one.",
|
|
17547
18937
|
provenance: {
|
|
17548
18938
|
basis: "evidenced",
|
|
17549
|
-
snapshot:
|
|
18939
|
+
snapshot: SNAPSHOT9,
|
|
17550
18940
|
source: ESTATE_POSITIONING
|
|
17551
18941
|
},
|
|
17552
18942
|
rank: 3,
|
|
@@ -17560,7 +18950,7 @@ var TIER_MARKET_TERMS = [
|
|
|
17560
18950
|
note: "NOT `mood.luxurious`, and the distinction is the reason this axis exists. Mood says a space reads as expensive; tier says a thing sits at the top of its market. An Aman is this term and `mood.austere`; a gaudy budget hotel lobby is `mood.luxurious` and `tier.market.value`.",
|
|
17561
18951
|
provenance: {
|
|
17562
18952
|
basis: "evidenced",
|
|
17563
|
-
snapshot:
|
|
18953
|
+
snapshot: SNAPSHOT9,
|
|
17564
18954
|
source: ESTATE_POSITIONING
|
|
17565
18955
|
},
|
|
17566
18956
|
rank: 4,
|
|
@@ -17639,7 +19029,7 @@ var TIER_PRICE_BAND_TERMS = [
|
|
|
17639
19029
|
label: symbols,
|
|
17640
19030
|
provenance: {
|
|
17641
19031
|
basis: "vendored",
|
|
17642
|
-
snapshot:
|
|
19032
|
+
snapshot: SNAPSHOT9,
|
|
17643
19033
|
source: "PRICE_TIERS in a materials-retrieval system (src-05)"
|
|
17644
19034
|
},
|
|
17645
19035
|
rank: index + 1,
|
|
@@ -18199,7 +19589,7 @@ var term11 = (slug, label, definition, extra = {}) => ({
|
|
|
18199
19589
|
...extra
|
|
18200
19590
|
});
|
|
18201
19591
|
var RECTANGLE = "unit-shape.rectangle";
|
|
18202
|
-
var
|
|
19592
|
+
var relatedTo16 = (...targets) => targets.map((target) => ({ predicate: "related-to", target }));
|
|
18203
19593
|
var UNIT_SHAPE_TERMS = [
|
|
18204
19594
|
{
|
|
18205
19595
|
...term11(
|
|
@@ -18221,7 +19611,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18221
19611
|
scheme: "uniclass"
|
|
18222
19612
|
}
|
|
18223
19613
|
],
|
|
18224
|
-
related:
|
|
19614
|
+
related: relatedTo16(RECTANGLE)
|
|
18225
19615
|
},
|
|
18226
19616
|
{
|
|
18227
19617
|
...term11(
|
|
@@ -18318,7 +19708,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18318
19708
|
scheme: "wikidata"
|
|
18319
19709
|
}
|
|
18320
19710
|
],
|
|
18321
|
-
related:
|
|
19711
|
+
related: relatedTo16("unit-shape.circle"),
|
|
18322
19712
|
searchedWithout: [searchedUniclass3("Semicircle")]
|
|
18323
19713
|
},
|
|
18324
19714
|
{
|
|
@@ -18348,7 +19738,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18348
19738
|
scheme: "wikidata"
|
|
18349
19739
|
}
|
|
18350
19740
|
],
|
|
18351
|
-
related:
|
|
19741
|
+
related: relatedTo16("installation-layout.chantilly"),
|
|
18352
19742
|
searchedWithout: [searchedUniclass3("Rhombus")]
|
|
18353
19743
|
},
|
|
18354
19744
|
{
|
|
@@ -18365,7 +19755,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18365
19755
|
scheme: "wikidata"
|
|
18366
19756
|
}
|
|
18367
19757
|
],
|
|
18368
|
-
related:
|
|
19758
|
+
related: relatedTo16(RECTANGLE, "unit-shape.rhombus"),
|
|
18369
19759
|
searchedWithout: [searchedUniclass3("Parallelogram")]
|
|
18370
19760
|
},
|
|
18371
19761
|
{
|
|
@@ -18378,7 +19768,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18378
19768
|
scheme: "wikidata"
|
|
18379
19769
|
}
|
|
18380
19770
|
],
|
|
18381
|
-
related:
|
|
19771
|
+
related: relatedTo16("installation-layout.hexagon-block"),
|
|
18382
19772
|
searchedWithout: [searchedUniclass3("Hexagon")]
|
|
18383
19773
|
},
|
|
18384
19774
|
{
|
|
@@ -18391,7 +19781,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18391
19781
|
scheme: "wikidata"
|
|
18392
19782
|
}
|
|
18393
19783
|
],
|
|
18394
|
-
related:
|
|
19784
|
+
related: relatedTo16("unit-shape.square"),
|
|
18395
19785
|
searchedWithout: [searchedUniclass3("Octagon")]
|
|
18396
19786
|
},
|
|
18397
19787
|
{
|
|
@@ -18423,7 +19813,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18423
19813
|
}
|
|
18424
19814
|
}
|
|
18425
19815
|
),
|
|
18426
|
-
related:
|
|
19816
|
+
related: relatedTo16(RECTANGLE),
|
|
18427
19817
|
searchedWithout: [searchedUniclass3("picket tile shape")]
|
|
18428
19818
|
},
|
|
18429
19819
|
{
|
|
@@ -18432,7 +19822,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18432
19822
|
"Chevron unit",
|
|
18433
19823
|
"One genuinely V-shaped or boomerang-shaped physical unit; never rectangular units mitred or arranged into a chevron layout."
|
|
18434
19824
|
),
|
|
18435
|
-
related:
|
|
19825
|
+
related: relatedTo16("installation-layout.chevron"),
|
|
18436
19826
|
searchedWithout: [searchedUniclass3("chevron shape")]
|
|
18437
19827
|
},
|
|
18438
19828
|
{
|
|
@@ -18450,7 +19840,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18450
19840
|
"A fan-like unit with one convex curved edge and a narrower opposing edge.",
|
|
18451
19841
|
{ altLabels: ["Fan"] }
|
|
18452
19842
|
),
|
|
18453
|
-
related:
|
|
19843
|
+
related: relatedTo16("unit-shape.semicircle"),
|
|
18454
19844
|
searchedWithout: [searchedUniclass3("scallop shape")]
|
|
18455
19845
|
},
|
|
18456
19846
|
{
|
|
@@ -18459,7 +19849,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18459
19849
|
"Star",
|
|
18460
19850
|
"A unit with multiple outward-pointing arms around a centre."
|
|
18461
19851
|
),
|
|
18462
|
-
related:
|
|
19852
|
+
related: relatedTo16("unit-shape.cross"),
|
|
18463
19853
|
searchedWithout: [searchedUniclass3("star polygon")]
|
|
18464
19854
|
},
|
|
18465
19855
|
{
|
|
@@ -18476,7 +19866,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18476
19866
|
scheme: "wikidata"
|
|
18477
19867
|
}
|
|
18478
19868
|
],
|
|
18479
|
-
related:
|
|
19869
|
+
related: relatedTo16("installation-layout.chantilly"),
|
|
18480
19870
|
searchedWithout: [searchedUniclass3("cross shape")]
|
|
18481
19871
|
},
|
|
18482
19872
|
{
|
|
@@ -18493,7 +19883,7 @@ var UNIT_SHAPE_TERMS = [
|
|
|
18493
19883
|
scheme: "uniclass"
|
|
18494
19884
|
}
|
|
18495
19885
|
],
|
|
18496
|
-
related:
|
|
19886
|
+
related: relatedTo16("installation-layout.irregular-field")
|
|
18497
19887
|
}
|
|
18498
19888
|
];
|
|
18499
19889
|
|
|
@@ -19651,6 +21041,7 @@ var AXES = [
|
|
|
19651
21041
|
slug: "requirement",
|
|
19652
21042
|
status: "authored"
|
|
19653
21043
|
},
|
|
21044
|
+
...BRIEF_AXES,
|
|
19654
21045
|
{
|
|
19655
21046
|
boundary: "Sector classifies whom the building serves; Typology classifies what the building is. A converted warehouse full of flats is sector residential and typology warehouse plus apartment. Sector moves when the tenant moves; typology does not.",
|
|
19656
21047
|
facets: single("sector", "Sector", SECTOR_TERMS),
|
|
@@ -19716,16 +21107,8 @@ var AXES = [
|
|
|
19716
21107
|
status: "authored"
|
|
19717
21108
|
},
|
|
19718
21109
|
{
|
|
19719
|
-
boundary: "
|
|
19720
|
-
facets:
|
|
19721
|
-
{ label: "Hue", slug: "hue", terms: PALETTE_HUE_TERMS },
|
|
19722
|
-
{
|
|
19723
|
-
label: "Temperature",
|
|
19724
|
-
slug: "temperature",
|
|
19725
|
-
terms: PALETTE_TEMPERATURE_TERMS
|
|
19726
|
-
},
|
|
19727
|
-
{ label: "Character", slug: "character", terms: PALETTE_CHARACTER_TERMS }
|
|
19728
|
-
],
|
|
21110
|
+
boundary: "ColorScope owns colour; Taxonomy shows it and authors none. Palette lists ColorScope's families, temperature levels, basic tones and palette compositions under ColorScope's own URIs, so any term can relate to a colour. Named colours and paint colours are not terms here: they stay with ColorScope, reached through the phrase lexicon. Four facets rather than one flat list, because a flat list cannot say warm green or muted blue.",
|
|
21111
|
+
facets: PALETTE_AXIS_FACETS,
|
|
19729
21112
|
label: "Palette",
|
|
19730
21113
|
question: "What color is it?",
|
|
19731
21114
|
slug: "palette",
|
|
@@ -19743,7 +21126,7 @@ var AXES = [
|
|
|
19743
21126
|
status: "authored"
|
|
19744
21127
|
},
|
|
19745
21128
|
{
|
|
19746
|
-
boundary: "Daylight is the natural light a space receives and the direction it comes from. Aspect is compass-literal and says nothing about the sun: which side is bright depends on the hemisphere, and that consequence is a separate claim on Light. It is not Palette, which is the color of what is in the room rather than the light falling on it; not Mood, where airy and moody are outcomes a scheme achieves rather than conditions a room has; not Element, which holds the windows, rooflights and luminaires themselves, and artificial lighting is never recorded here; and not Place, which says where a building stands rather than which way a room looks.",
|
|
21129
|
+
boundary: "Daylight is the natural light a space receives and the direction it comes from. Aspect is compass-literal and says nothing about the sun: which side is bright depends on the hemisphere, and that consequence is a separate claim on Light. It is not Palette, which is the color of what is in the room rather than the light falling on it; not Mood, where airy and moody are outcomes a scheme achieves rather than conditions a room has; not Element, which holds the windows, rooflights and luminaires themselves, and artificial lighting is never recorded here; not Time of day, which is the hour a scheme evokes; and not Place, which says where a building stands rather than which way a room looks.",
|
|
19747
21130
|
facets: [
|
|
19748
21131
|
{
|
|
19749
21132
|
governance: TAX48_AUTHORED_GOVERNANCE,
|
|
@@ -19773,6 +21156,7 @@ var AXES = [
|
|
|
19773
21156
|
slug: "season",
|
|
19774
21157
|
status: "authored"
|
|
19775
21158
|
},
|
|
21159
|
+
TIME_OF_DAY_AXIS,
|
|
19776
21160
|
{
|
|
19777
21161
|
boundary: "Tier is where a thing sits in a market; Mood is how a room reads. They come apart in both directions - an Aman is luxury tier and austere, a budget hotel lobby can be loudly luxurious - and welding them together loses both. It is also not a channel: trade-only says who may buy, not how much it costs.",
|
|
19778
21162
|
facets: [
|
|
@@ -19861,7 +21245,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
|
|
|
19861
21245
|
// src/v1.ts
|
|
19862
21246
|
var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
|
|
19863
21247
|
var TAXONOMY_SNAPSHOT = "2026-10-02";
|
|
19864
|
-
var TAXONOMY_VERSION = "2.
|
|
21248
|
+
var TAXONOMY_VERSION = "2.7.0";
|
|
19865
21249
|
var PUBLISHED_V1_BASELINE = "2026-08-30";
|
|
19866
21250
|
var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
|
|
19867
21251
|
var LIMESTONE_INTRODUCED = "2026-09-01";
|
|
@@ -19875,6 +21259,8 @@ var compareText = (left, right) => {
|
|
|
19875
21259
|
}
|
|
19876
21260
|
return 0;
|
|
19877
21261
|
};
|
|
21262
|
+
var COLORSCOPE_BASE_URI = "https://colorscope.materialinstruments.com";
|
|
21263
|
+
var COLORSCOPE_CONCEPT_PREFIX = `${COLORSCOPE_BASE_URI}/id/`;
|
|
19878
21264
|
var CANONICAL_SEGMENT = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
|
|
19879
21265
|
var canonicalSegment = (segment) => {
|
|
19880
21266
|
if (!CANONICAL_SEGMENT.test(segment)) {
|
|
@@ -19890,15 +21276,30 @@ var DEFAULT_PROVENANCE = {
|
|
|
19890
21276
|
basis: "authored",
|
|
19891
21277
|
source: "@instruments/taxonomy published corpus"
|
|
19892
21278
|
};
|
|
19893
|
-
var
|
|
19894
|
-
|
|
21279
|
+
var isTaxonomyConceptUri = (uri) => uri.startsWith(`${TAXONOMY_BASE_URI}/id/`);
|
|
21280
|
+
var isColorScopeConceptUri = (uri) => uri.startsWith(COLORSCOPE_CONCEPT_PREFIX);
|
|
21281
|
+
var isFullUri = (reference) => reference.startsWith("https://");
|
|
21282
|
+
var successorUri = (reference) => {
|
|
21283
|
+
if (reference === void 0) {
|
|
21284
|
+
return void 0;
|
|
21285
|
+
}
|
|
21286
|
+
if (isFullUri(reference)) {
|
|
21287
|
+
if (isTaxonomyConceptUri(reference) || isColorScopeConceptUri(reference)) {
|
|
21288
|
+
return reference;
|
|
21289
|
+
}
|
|
21290
|
+
throw new Error(`Unrecognised successor URI: "${reference}".`);
|
|
21291
|
+
}
|
|
21292
|
+
const successor = resolveReference(reference);
|
|
19895
21293
|
const successorAxis = successor === void 0 ? void 0 : AXES.find((axis) => axis.slug === successor.axisSlug);
|
|
19896
|
-
|
|
21294
|
+
return successor === void 0 || successorAxis === void 0 ? void 0 : conceptUri(
|
|
19897
21295
|
successor.axisSlug,
|
|
19898
21296
|
successor.facetSlug,
|
|
19899
21297
|
successor.termSlug,
|
|
19900
21298
|
successorAxis.facets.length > 1 || successorAxis.facets[0]?.slug !== successorAxis.slug
|
|
19901
21299
|
);
|
|
21300
|
+
};
|
|
21301
|
+
var lifecycleFor = (term12) => {
|
|
21302
|
+
const supersededBy = successorUri(term12?.supersededByReference);
|
|
19902
21303
|
return {
|
|
19903
21304
|
introducedAt: term12?.introducedAt ?? PUBLISHED_V1_BASELINE,
|
|
19904
21305
|
reviewedAt: term12?.reviewedAt ?? term12?.introducedAt ?? PUBLISHED_V1_BASELINE,
|
|
@@ -19918,18 +21319,23 @@ var inversePredicate = {
|
|
|
19918
21319
|
"suitable-for": "supported-by",
|
|
19919
21320
|
"typically-in": "typically-contains"
|
|
19920
21321
|
};
|
|
19921
|
-
var
|
|
21322
|
+
var colorScopeConceptUri = (uri) => {
|
|
21323
|
+
if (!isColorScopeConceptUri(uri)) {
|
|
21324
|
+
throw new Error(`Not a ColorScope concept URI: "${uri}".`);
|
|
21325
|
+
}
|
|
21326
|
+
return uri;
|
|
21327
|
+
};
|
|
19922
21328
|
var governanceFor = (explanation, term12) => ({
|
|
19923
21329
|
explanation,
|
|
19924
21330
|
lifecycle: lifecycleFor(term12),
|
|
19925
21331
|
provenance: term12?.provenance ?? DEFAULT_PROVENANCE,
|
|
19926
21332
|
steward: "@instruments/taxonomy"
|
|
19927
21333
|
});
|
|
19928
|
-
var externalReferences = (mappings) => mappings?.map((
|
|
19929
|
-
authority:
|
|
19930
|
-
identifier:
|
|
19931
|
-
label:
|
|
19932
|
-
match:
|
|
21334
|
+
var externalReferences = (mappings) => mappings?.map((mapping2) => ({
|
|
21335
|
+
authority: mapping2.scheme,
|
|
21336
|
+
identifier: mapping2.identifier,
|
|
21337
|
+
label: mapping2.label,
|
|
21338
|
+
match: mapping2.match
|
|
19933
21339
|
}));
|
|
19934
21340
|
var governedEdge = (from, predicate, to, term12, assertion = "asserted", role) => {
|
|
19935
21341
|
const governance = governanceFor(
|
|
@@ -19972,17 +21378,21 @@ var addTermNodes = (assembly, axis, axisUri) => {
|
|
|
19972
21378
|
governedEdge(axisUri, "has-facet", facetUri, facet.governance, "inverse")
|
|
19973
21379
|
);
|
|
19974
21380
|
for (const [termOrder, term12] of facet.terms.entries()) {
|
|
19975
|
-
|
|
19976
|
-
|
|
19977
|
-
}
|
|
19978
|
-
const uri = conceptUri(axis.slug, facet.slug, term12.slug, faceted);
|
|
21381
|
+
const external = term12.canonicalAuthority;
|
|
21382
|
+
const uri = external === void 0 ? conceptUri(axis.slug, facet.slug, term12.slug, faceted) : colorScopeConceptUri(external.uri);
|
|
19979
21383
|
const qualified = faceted ? `${axis.slug}.${facet.slug}.${term12.slug}` : `${axis.slug}.${term12.slug}`;
|
|
19980
21384
|
assembly.conceptByQualifiedSlug.set(qualified, uri);
|
|
19981
21385
|
assembly.conceptByAxisAndTerm.set(`${axis.slug}.${term12.slug}`, uri);
|
|
19982
|
-
const governance = governanceFor(
|
|
21386
|
+
const governance = external === void 0 ? governanceFor(
|
|
19983
21387
|
`Taxonomy governs the canonical identity and meaning of ${term12.label}.`,
|
|
19984
21388
|
term12
|
|
19985
|
-
)
|
|
21389
|
+
) : {
|
|
21390
|
+
...governanceFor(
|
|
21391
|
+
`ColorScope governs the identity and meaning of ${term12.label}. Taxonomy lists it so that any term can relate to it, and defines nothing about it.`,
|
|
21392
|
+
term12
|
|
21393
|
+
),
|
|
21394
|
+
steward: "@materialinstruments/colorscope"
|
|
21395
|
+
};
|
|
19986
21396
|
assembly.nodes.push({
|
|
19987
21397
|
...term12.altLabels === void 0 ? {} : { altLabels: term12.altLabels },
|
|
19988
21398
|
axis: axisUri,
|
|
@@ -19990,7 +21400,8 @@ var addTermNodes = (assembly, axis, axisUri) => {
|
|
|
19990
21400
|
...term12.external === void 0 ? {} : { externalReferences: externalReferences(term12.external) },
|
|
19991
21401
|
facet: facetUri,
|
|
19992
21402
|
governance,
|
|
19993
|
-
governedBy: "taxonomy",
|
|
21403
|
+
governedBy: external === void 0 ? "taxonomy" : "colorscope",
|
|
21404
|
+
...term12.hex === void 0 ? {} : { hex: term12.hex },
|
|
19994
21405
|
kind: "concept",
|
|
19995
21406
|
label: term12.label,
|
|
19996
21407
|
lifecycle: governance.lifecycle,
|
|
@@ -20118,13 +21529,25 @@ var KNOWLEDGE_GRAPH = buildKnowledgeGraph();
|
|
|
20118
21529
|
var COLOR_FAMILY_REFERENCE_KIND = "color-family";
|
|
20119
21530
|
var NAMED_COLOR_REFERENCE_KIND = "named-color";
|
|
20120
21531
|
var COLOR_SCOPE_REFERENCE_KINDS = [
|
|
21532
|
+
"basic-tone",
|
|
20121
21533
|
"chroma-level",
|
|
20122
21534
|
COLOR_FAMILY_REFERENCE_KIND,
|
|
20123
21535
|
"lightness-level",
|
|
21536
|
+
"modifier",
|
|
20124
21537
|
NAMED_COLOR_REFERENCE_KIND,
|
|
20125
21538
|
"palette-mood",
|
|
20126
21539
|
"temperature-level"
|
|
20127
21540
|
];
|
|
21541
|
+
var COLORSCOPE_URI_KIND = {
|
|
21542
|
+
"basic-tone": "basic-tone",
|
|
21543
|
+
"chroma-level": "chroma",
|
|
21544
|
+
"color-family": "family",
|
|
21545
|
+
"lightness-level": "lightness",
|
|
21546
|
+
modifier: "modifier",
|
|
21547
|
+
"named-color": "color",
|
|
21548
|
+
"palette-mood": "palette",
|
|
21549
|
+
"temperature-level": "temperature"
|
|
21550
|
+
};
|
|
20128
21551
|
var lexicalGovernance = (explanation, provenance, lifecycle = lifecycleFor()) => ({
|
|
20129
21552
|
explanation,
|
|
20130
21553
|
lifecycle,
|
|
@@ -20133,9 +21556,10 @@ var lexicalGovernance = (explanation, provenance, lifecycle = lifecycleFor()) =>
|
|
|
20133
21556
|
});
|
|
20134
21557
|
var colorScope = (identifier, referenceKind) => ({
|
|
20135
21558
|
authority: "colorscope",
|
|
20136
|
-
authorityUri:
|
|
21559
|
+
authorityUri: COLORSCOPE_BASE_URI,
|
|
20137
21560
|
identifier,
|
|
20138
|
-
referenceKind
|
|
21561
|
+
referenceKind,
|
|
21562
|
+
uri: `${COLORSCOPE_CONCEPT_PREFIX}${COLORSCOPE_URI_KIND[referenceKind]}/${identifier}`
|
|
20139
21563
|
});
|
|
20140
21564
|
var WALNUT_MATERIAL = {
|
|
20141
21565
|
authority: "taxonomy",
|
|
@@ -20200,7 +21624,7 @@ var TERRA_COTTA_LIFECYCLE = {
|
|
|
20200
21624
|
reviewedAt: TERRA_COTTA_DATE,
|
|
20201
21625
|
status: "active"
|
|
20202
21626
|
};
|
|
20203
|
-
var COLORSCOPE_INSTALLED =
|
|
21627
|
+
var COLORSCOPE_INSTALLED = `@materialinstruments/colorscope ${COLORSCOPE_VERSION} data/reference/v1/taxonomy.json`;
|
|
20204
21628
|
var reviewedTaxonomy = (path) => ({
|
|
20205
21629
|
authority: "taxonomy",
|
|
20206
21630
|
uri: `${TAXONOMY_BASE_URI}/id/${path}`
|
|
@@ -20306,7 +21730,96 @@ var crossoverTaxonomyAmbiguity = (phrase, meanings, explanation, source, snapsho
|
|
|
20306
21730
|
};
|
|
20307
21731
|
};
|
|
20308
21732
|
var MG2620_LEXICAL_REVIEW_DATE = "2026-10-10";
|
|
21733
|
+
var COLOUR_REPOINT_LIFECYCLE = {
|
|
21734
|
+
introducedAt: PUBLISHED_V1_BASELINE,
|
|
21735
|
+
reviewedAt: COLOUR_LAYER_DATE,
|
|
21736
|
+
status: "active"
|
|
21737
|
+
};
|
|
21738
|
+
var colourWordProvenance = (identifier) => ({
|
|
21739
|
+
basis: "referenced",
|
|
21740
|
+
snapshot: COLOUR_LAYER_DATE,
|
|
21741
|
+
source: `${COLORSCOPE_INSTALLED} concept ${identifier}`
|
|
21742
|
+
});
|
|
21743
|
+
var capitalised = (phrase) => `${phrase.slice(0, 1).toUpperCase()}${phrase.slice(1)}`;
|
|
21744
|
+
var NAMED_COLOUR_WORDS = [
|
|
21745
|
+
"aqua",
|
|
21746
|
+
"blush",
|
|
21747
|
+
"carmine",
|
|
21748
|
+
"coal",
|
|
21749
|
+
"crimson",
|
|
21750
|
+
"greige",
|
|
21751
|
+
"ivory",
|
|
21752
|
+
"mauve",
|
|
21753
|
+
"mushroom",
|
|
21754
|
+
"mustard",
|
|
21755
|
+
"navy",
|
|
21756
|
+
"ochre",
|
|
21757
|
+
"off-white",
|
|
21758
|
+
"olive",
|
|
21759
|
+
"putty",
|
|
21760
|
+
"rose",
|
|
21761
|
+
"russet",
|
|
21762
|
+
"rust",
|
|
21763
|
+
"sage",
|
|
21764
|
+
"scarlet",
|
|
21765
|
+
"turquoise",
|
|
21766
|
+
"violet"
|
|
21767
|
+
];
|
|
21768
|
+
var namedColourEntry = (phrase) => ({
|
|
21769
|
+
explanation: `${capitalised(phrase)} is a ColorScope named colour. Taxonomy hands the word to ColorScope, which owns the colour and the family it sits in.`,
|
|
21770
|
+
governance: lexicalGovernance(
|
|
21771
|
+
"ColorScope governs named colours and the family each belongs to; Taxonomy mints no node for one.",
|
|
21772
|
+
colourWordProvenance(phrase),
|
|
21773
|
+
COLOUR_REPOINT_LIFECYCLE
|
|
21774
|
+
),
|
|
21775
|
+
outcome: "equivalent",
|
|
21776
|
+
phrase,
|
|
21777
|
+
target: colorScope(phrase, NAMED_COLOR_REFERENCE_KIND)
|
|
21778
|
+
});
|
|
21779
|
+
var INDIGO_ENTRY = {
|
|
21780
|
+
explanation: "Indigo names two ColorScope colours, Indigo Blue in the blue family and Indigo Violet in the purple family; the bare word does not settle which.",
|
|
21781
|
+
governance: lexicalGovernance(
|
|
21782
|
+
AMBIGUITY_GOVERNANCE,
|
|
21783
|
+
colourWordProvenance("indigo-blue and indigo-violet"),
|
|
21784
|
+
COLOUR_REPOINT_LIFECYCLE
|
|
21785
|
+
),
|
|
21786
|
+
meanings: [
|
|
21787
|
+
colorScope("indigo-blue", NAMED_COLOR_REFERENCE_KIND),
|
|
21788
|
+
colorScope("indigo-violet", NAMED_COLOR_REFERENCE_KIND)
|
|
21789
|
+
],
|
|
21790
|
+
outcome: "ambiguous",
|
|
21791
|
+
phrase: "indigo"
|
|
21792
|
+
};
|
|
21793
|
+
var washedEntry = (phrase) => ({
|
|
21794
|
+
explanation: `${capitalised(phrase)} is a wording of ColorScope's washed modifier: colour that has lost strength through age, light or wear. Taxonomy's former Faded term is deprecated in its favour.`,
|
|
21795
|
+
governance: lexicalGovernance(
|
|
21796
|
+
"ColorScope governs the washed modifier; the deprecated Taxonomy term it replaces keeps its published URI.",
|
|
21797
|
+
colourWordProvenance("washed"),
|
|
21798
|
+
COLOUR_REPOINT_LIFECYCLE
|
|
21799
|
+
),
|
|
21800
|
+
outcome: "equivalent",
|
|
21801
|
+
phrase,
|
|
21802
|
+
target: colorScope("washed", "modifier")
|
|
21803
|
+
});
|
|
21804
|
+
var SATURATED_ENTRY = {
|
|
21805
|
+
explanation: "Saturated is a ColorScope chroma level. Taxonomy hands the word to ColorScope, which owns it.",
|
|
21806
|
+
governance: lexicalGovernance(
|
|
21807
|
+
"ColorScope governs its chroma levels; Taxonomy lists no node for one.",
|
|
21808
|
+
colourWordProvenance("saturated"),
|
|
21809
|
+
COLOUR_REPOINT_LIFECYCLE
|
|
21810
|
+
),
|
|
21811
|
+
outcome: "equivalent",
|
|
21812
|
+
phrase: "saturated",
|
|
21813
|
+
target: colorScope("saturated", "chroma-level")
|
|
21814
|
+
};
|
|
21815
|
+
var COLOUR_PHRASE_ENTRIES = [
|
|
21816
|
+
...NAMED_COLOUR_WORDS.map(namedColourEntry),
|
|
21817
|
+
INDIGO_ENTRY,
|
|
21818
|
+
...["faded", "sun-bleached", "washed"].map(washedEntry),
|
|
21819
|
+
SATURATED_ENTRY
|
|
21820
|
+
];
|
|
20309
21821
|
var AUTHORED_PHRASE_ENTRIES = [
|
|
21822
|
+
...COLOUR_PHRASE_ENTRIES,
|
|
20310
21823
|
{
|
|
20311
21824
|
explanation: "Matt is the British-English spelling of matte for surface sheen. Qualifiers such as semi-matt and full-matt retain their own meanings; this entry does not strip them.",
|
|
20312
21825
|
governance: lexicalGovernance(
|
|
@@ -20376,20 +21889,6 @@ var AUTHORED_PHRASE_ENTRIES = [
|
|
|
20376
21889
|
status: "active"
|
|
20377
21890
|
}
|
|
20378
21891
|
),
|
|
20379
|
-
{
|
|
20380
|
-
explanation: "Blue is a ColorScope color-family meaning; Taxonomy references that authority rather than minting a rival color identity.",
|
|
20381
|
-
governance: lexicalGovernance(
|
|
20382
|
-
"The ColorScope family is the single governed meaning of the unqualified color word.",
|
|
20383
|
-
{
|
|
20384
|
-
basis: "vendored",
|
|
20385
|
-
snapshot: PUBLISHED_V1_BASELINE,
|
|
20386
|
-
source: "@instruments/colorscope COLOR_FAMILIES"
|
|
20387
|
-
}
|
|
20388
|
-
),
|
|
20389
|
-
outcome: "equivalent",
|
|
20390
|
-
phrase: "blue",
|
|
20391
|
-
target: colorScope("blue", COLOR_FAMILY_REFERENCE_KIND)
|
|
20392
|
-
},
|
|
20393
21892
|
crossoverAmbiguity(
|
|
20394
21893
|
"alabaster",
|
|
20395
21894
|
`${TAXONOMY_BASE_URI}/id/material/alabaster`,
|
|
@@ -21252,10 +22751,43 @@ var lexicalPhrases = (term12) => [term12.slug, term12.label, ...term12.altLabels
|
|
|
21252
22751
|
(phrase, index, phrases) => phrase.length > 0 && phrases.indexOf(phrase) === index
|
|
21253
22752
|
);
|
|
21254
22753
|
var targetKey = (target) => target.authority === "taxonomy" ? `taxonomy:${target.uri}` : `colorscope:${target.referenceKind}:${target.identifier}`;
|
|
21255
|
-
var
|
|
22754
|
+
var PHRASES_RESOLVED_BEFORE_COLOUR_NODES = /* @__PURE__ */ new Set([
|
|
22755
|
+
"beige",
|
|
22756
|
+
"black",
|
|
22757
|
+
"blue",
|
|
22758
|
+
"brown",
|
|
22759
|
+
"colorful",
|
|
22760
|
+
"cool",
|
|
22761
|
+
"cream",
|
|
22762
|
+
"dark",
|
|
22763
|
+
"gray",
|
|
22764
|
+
"green",
|
|
22765
|
+
"grey",
|
|
22766
|
+
"light",
|
|
22767
|
+
"mid",
|
|
22768
|
+
"medium",
|
|
22769
|
+
"monochrome",
|
|
22770
|
+
"muted",
|
|
22771
|
+
"neutral",
|
|
22772
|
+
"orange",
|
|
22773
|
+
"pink",
|
|
22774
|
+
"polychrome",
|
|
22775
|
+
"purple",
|
|
22776
|
+
"red",
|
|
22777
|
+
"taupe",
|
|
22778
|
+
"teal",
|
|
22779
|
+
"vibrant",
|
|
22780
|
+
"warm",
|
|
22781
|
+
"white",
|
|
22782
|
+
"yellow"
|
|
22783
|
+
]);
|
|
22784
|
+
var inferredLifecycle = (meanings, phrase) => {
|
|
21256
22785
|
const terms = meanings.flatMap((meaning) => meaning.terms);
|
|
21257
22786
|
const lifecycles = terms.map((term12) => lifecycleFor(term12));
|
|
21258
|
-
const [introducedAt] =
|
|
22787
|
+
const [introducedAt] = [
|
|
22788
|
+
...terms.map((term12) => term12.introducedAt ?? PUBLISHED_V1_BASELINE),
|
|
22789
|
+
...PHRASES_RESOLVED_BEFORE_COLOUR_NODES.has(phrase) ? [PUBLISHED_V1_BASELINE] : []
|
|
22790
|
+
].toSorted(compareText);
|
|
21259
22791
|
const reviewedAt = terms.map(
|
|
21260
22792
|
(term12) => term12.reviewedAt ?? term12.introducedAt ?? PUBLISHED_V1_BASELINE
|
|
21261
22793
|
).toSorted(compareText).at(-1);
|
|
@@ -21304,7 +22836,7 @@ var inferredLexicalEntries = () => {
|
|
|
21304
22836
|
if (first === void 0) {
|
|
21305
22837
|
throw new Error(`Lexical phrase "${phrase}" has no meaning.`);
|
|
21306
22838
|
}
|
|
21307
|
-
const lifecycle = inferredLifecycle(meanings);
|
|
22839
|
+
const lifecycle = inferredLifecycle(meanings, phrase);
|
|
21308
22840
|
if (second === void 0) {
|
|
21309
22841
|
return {
|
|
21310
22842
|
explanation: `The published spelling \u201C${phrase}\u201D has one governed meaning.`,
|
|
@@ -21512,6 +23044,7 @@ var ASSESSMENT_POLICY_REVISION = `sha256:${createHash2("sha256").update(
|
|
|
21512
23044
|
export {
|
|
21513
23045
|
ASSESSMENT_AUTHORITY_REFERENCES,
|
|
21514
23046
|
ASSESSMENT_POLICY_REVISION,
|
|
23047
|
+
COLORSCOPE_BASE_URI,
|
|
21515
23048
|
COLOR_SCOPE_REFERENCE_KINDS,
|
|
21516
23049
|
CONCEPT_ASSESSMENT_POLICIES,
|
|
21517
23050
|
KNOWLEDGE_GRAPH,
|