@instruments/taxonomy 1.13.0 → 2.0.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 +4 -4
- package/dist/assessment-policy.d.ts +47 -0
- package/dist/authoring.d.ts +1 -1
- package/dist/axes/axis.d.ts +2 -2
- package/dist/axes/space.d.ts +1 -1
- package/dist/axes/tier.d.ts +1 -1
- package/dist/canonicalisation.d.ts +1 -1
- package/dist/crossover-sources.d.ts +1 -1
- package/dist/crosswalks/mapping.d.ts +1 -1
- package/dist/estate/concepts.d.ts +4 -4
- package/dist/estate/decomposition.d.ts +1 -1
- package/dist/estate/residue-report.d.ts +1 -1
- package/dist/estate/sources.d.ts +4 -4
- package/dist/index.d.ts +2 -1
- package/dist/index.js +496 -297
- package/dist/match.d.ts +1 -1
- package/dist/term.d.ts +3 -3
- package/dist/v1.d.ts +21 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ The package root exports the governed corpus and its release metadata:
|
|
|
8
8
|
|
|
9
9
|
- `TAXONOMY_BASE_URI` - the authority used for every canonical concept URI.
|
|
10
10
|
- `KNOWLEDGE_GRAPH` - normalized axis, facet, and concept nodes plus typed, bidirectional edges.
|
|
11
|
-
- `
|
|
11
|
+
- `PHRASE_ENTRIES` - exhaustive declarative `equivalent`, `ambiguous`, and `declined` records for every canonical or observed authored spelling.
|
|
12
12
|
- `TAXONOMY_CORPUS_METADATA` - deterministic node, edge, and lexical counts with the corpus revision, snapshot, and package version.
|
|
13
13
|
- `TAXONOMY_CORPUS_REVISION`, `TAXONOMY_SNAPSHOT`, and `TAXONOMY_VERSION` - the exact content fingerprint, source snapshot, and package release identifiers.
|
|
14
14
|
|
|
@@ -22,7 +22,7 @@ https://taxonomy.materialinstruments.com/id/facet/palette/hue
|
|
|
22
22
|
https://taxonomy.materialinstruments.com/id/material/walnut
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
ColorScope remains authoritative for
|
|
25
|
+
ColorScope remains authoritative for color concepts. Taxonomy does not mint graph nodes or URIs for ColorScope-governed terms; lexical records reference ColorScope identifiers without merging them into Taxonomy hierarchy. For example, `walnut` has a governed primary material meaning and a secondary ColorScope meaning. Two more phrases carry an ordered meaning between two material concepts: `quartz` (engineered quartz before the mineral) and `melamine` (melamine-faced board before the resin).
|
|
26
26
|
|
|
27
27
|
## Install and consume
|
|
28
28
|
|
|
@@ -33,7 +33,7 @@ pnpm add @instruments/taxonomy
|
|
|
33
33
|
```ts
|
|
34
34
|
import {
|
|
35
35
|
KNOWLEDGE_GRAPH,
|
|
36
|
-
|
|
36
|
+
PHRASE_ENTRIES,
|
|
37
37
|
TAXONOMY_CORPUS_METADATA,
|
|
38
38
|
} from "@instruments/taxonomy";
|
|
39
39
|
|
|
@@ -43,7 +43,7 @@ const walnut = KNOWLEDGE_GRAPH.nodes.find(
|
|
|
43
43
|
node.uri === "https://taxonomy.materialinstruments.com/id/material/walnut"
|
|
44
44
|
);
|
|
45
45
|
|
|
46
|
-
const walnutReadings =
|
|
46
|
+
const walnutReadings = PHRASE_ENTRIES.find(
|
|
47
47
|
(entry) => entry.phrase === "walnut"
|
|
48
48
|
);
|
|
49
49
|
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { CanonicalConceptUri } from "./v1.js";
|
|
2
|
+
/** Evidence routes are consumer contracts, never new appearance concepts. */
|
|
3
|
+
export type AssessmentEvidenceRoute = "photo-candidate" | "capture-conditional" | "catalogue-only" | "context-required" | "external-authority" | "unreviewed";
|
|
4
|
+
/** A restriction needs an explicit list AND evidence; absence never means prohibited. */
|
|
5
|
+
export type MaterialApplicability = {
|
|
6
|
+
status: "unreviewed";
|
|
7
|
+
reason: string;
|
|
8
|
+
} | {
|
|
9
|
+
status: "cross-category";
|
|
10
|
+
evidence: readonly string[];
|
|
11
|
+
} | {
|
|
12
|
+
status: "restricted";
|
|
13
|
+
categoryUris: readonly CanonicalConceptUri[];
|
|
14
|
+
evidence: readonly string[];
|
|
15
|
+
};
|
|
16
|
+
export interface ConceptAssessmentPolicy {
|
|
17
|
+
conceptUri: CanonicalConceptUri;
|
|
18
|
+
evidenceRoute: AssessmentEvidenceRoute;
|
|
19
|
+
materialApplicability: MaterialApplicability;
|
|
20
|
+
requirements: readonly string[];
|
|
21
|
+
references: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Total accounting for active concepts. Unreviewed applicability is intentional:
|
|
25
|
+
* supplier omissions and general word knowledge cannot establish material exclusions.
|
|
26
|
+
* Definitions, aliases and cardinality continue to come from KNOWLEDGE_GRAPH.
|
|
27
|
+
*/
|
|
28
|
+
export declare const CONCEPT_ASSESSMENT_POLICIES: readonly ConceptAssessmentPolicy[];
|
|
29
|
+
/** These owner references anchor the audit, not a claim of standards compliance. */
|
|
30
|
+
export declare const ASSESSMENT_AUTHORITY_REFERENCES: readonly [{
|
|
31
|
+
readonly role: "appearance-terminology";
|
|
32
|
+
readonly url: "https://store.astm.org/e0284-25.html";
|
|
33
|
+
}, {
|
|
34
|
+
readonly role: "property-measurement";
|
|
35
|
+
readonly url: "https://store.astm.org/d0523-25.html";
|
|
36
|
+
}, {
|
|
37
|
+
readonly role: "construction-classification";
|
|
38
|
+
readonly url: "https://uniclass.thenbs.com/";
|
|
39
|
+
}, {
|
|
40
|
+
readonly role: "construction-classification";
|
|
41
|
+
readonly url: "https://www.csiresources.org/standards/overview";
|
|
42
|
+
}, {
|
|
43
|
+
readonly role: "controlled-vocabulary";
|
|
44
|
+
readonly url: "https://www.getty.edu/research/tools/vocabularies/aat/about.html";
|
|
45
|
+
}];
|
|
46
|
+
/** Revisioned separately so adding consumer policy cannot silently change concept meanings. */
|
|
47
|
+
export declare const ASSESSMENT_POLICY_REVISION: `sha256:${string}`;
|
package/dist/authoring.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare const PROVENANCE: {
|
|
|
19
19
|
readonly snapshot: "2026-07-08";
|
|
20
20
|
readonly source: "value dictionaries in a materials-retrieval system (src-05)";
|
|
21
21
|
};
|
|
22
|
-
export { KNOWLEDGE_GRAPH,
|
|
22
|
+
export { KNOWLEDGE_GRAPH, PHRASE_ENTRIES, TAXONOMY_BASE_URI, type AxisNode, type CanonicalConceptUri, type ColorScopeTarget, type ConceptNode, type ExternalReference, type FacetNode, type GraphPredicate, type KnowledgeGraph, type KnowledgeGraphEdge, type KnowledgeGraphNode, type PhraseEntry, type MeaningContext, type PhraseMeaning, type Lifecycle, type Governance, TAXONOMY_SNAPSHOT, type TaxonomyTarget, } from "./v1.js";
|
|
23
23
|
export declare const MATERIAL_FAMILIES: readonly ["paint", "wall-finish", "wallcovering", "textile", "upholstery", "carpet", "wood", "stone", "tile", "terrazzo", "metal", "glass", "resilient-flooring", "composite", "concrete", "leather", "other"];
|
|
24
24
|
export type MaterialFamily = (typeof MATERIAL_FAMILIES)[number];
|
|
25
25
|
export declare const isMaterialFamily: (value: string) => value is MaterialFamily;
|
package/dist/axes/axis.d.ts
CHANGED
|
@@ -11,8 +11,8 @@ export type FacetHolds = "one" | "several";
|
|
|
11
11
|
export interface AxisFacet {
|
|
12
12
|
governance?: AxisGovernance;
|
|
13
13
|
/**
|
|
14
|
-
* `one` means a thing has a single
|
|
15
|
-
* separate
|
|
14
|
+
* `one` means a thing has a single meaning of this facet. `several` means each stated term is a
|
|
15
|
+
* separate meaning, never a span between two of them. Optional: a facet that has not been decided
|
|
16
16
|
* says nothing, and a consumer must not read silence as either answer.
|
|
17
17
|
*/
|
|
18
18
|
holds?: FacetHolds;
|
package/dist/axes/space.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare const SPACE_TERMS: readonly Term[];
|
|
|
47
47
|
*
|
|
48
48
|
* THE ACCESSOR EXISTS SO THE INHERITANCE IS NOT REINVENTED. A `serves` edge restricts every
|
|
49
49
|
* descendant - each suite is a hotel room, so each suite serves hospitality - and a consumer
|
|
50
|
-
*
|
|
50
|
+
* meaning raw edges would see `suite` carrying none and read it as unrestricted. The walk stops at
|
|
51
51
|
* the NEAREST edge-bearing ancestor, because a child's own edges are a narrower claim that
|
|
52
52
|
* replaces the inherited one rather than adding to it (`training_room` serves workplace inside a
|
|
53
53
|
* neutral `classroom`).
|
package/dist/axes/tier.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Term } from "../term.js";
|
|
2
2
|
/**
|
|
3
|
-
* The positioning ladder. Where a
|
|
3
|
+
* The positioning ladder. Where a brand, a product line or a project sits in the market, as a
|
|
4
4
|
* judgement anyone in the trade would recognise.
|
|
5
5
|
*
|
|
6
6
|
* The five values a materials-retrieval system's brand extractor is instructed to choose between, minus
|
|
@@ -26,7 +26,7 @@ export interface ResolvedCanonicalisation extends CanonicalisationBase {
|
|
|
26
26
|
export interface AmbiguousCanonicalisation extends CanonicalisationBase {
|
|
27
27
|
status: "ambiguous";
|
|
28
28
|
alternatives: CanonicalAlternatives;
|
|
29
|
-
/** How strongly each alternative would stand for the source value, were it the right
|
|
29
|
+
/** How strongly each alternative would stand for the source value, were it the right meaning. */
|
|
30
30
|
match: MatchStrength;
|
|
31
31
|
note?: string;
|
|
32
32
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const RETRIEVAL_LEXICON_SOURCE = "
|
|
1
|
+
export declare const RETRIEVAL_LEXICON_SOURCE = "color-material lexicon in a materials-retrieval system (src-05)";
|
|
2
2
|
export declare const COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@5feb29b267a7954c135976ede8039f37121afd27:packages/core/data/reference/v1/taxonomy.json";
|
|
3
3
|
export declare const BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
|
|
4
4
|
export declare const BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
|
|
@@ -23,7 +23,7 @@ export declare const constitutive: (assertion: string) => CrosswalkMapping;
|
|
|
23
23
|
* required: an approximation nobody had to justify is how a close match ships as an exact one.
|
|
24
24
|
*/
|
|
25
25
|
export declare const approximates: (match: Exclude<MatchStrength, "exact">, note: string, ...assertions: readonly string[]) => CrosswalkMapping;
|
|
26
|
-
/** The source is known to mean one of these and never recorded which. `match` grades each
|
|
26
|
+
/** The source is known to mean one of these and never recorded which. `match` grades each meaning. */
|
|
27
27
|
export declare const ambiguous: (match: MatchStrength, ...assertions: readonly string[]) => CrosswalkMapping;
|
|
28
28
|
/** A curated refusal. Distinct from an absent row, which means nobody has looked. */
|
|
29
29
|
export declare const declined: (reason: string) => CrosswalkMapping;
|
|
@@ -29,10 +29,10 @@ export interface Concept {
|
|
|
29
29
|
* on the same axis.
|
|
30
30
|
*
|
|
31
31
|
* NOT the repository count, and the difference started mattering the moment the paint-sample
|
|
32
|
-
* retailer joined the census. Its vocabulary is
|
|
32
|
+
* retailer joined the census. Its vocabulary is color and nothing else, so it can never reach
|
|
33
33
|
* `style.rustic` and counting it against that row would report a disagreement where there is only
|
|
34
34
|
* a different subject. Six repositories, but only five of them have anything to say about style, and only
|
|
35
|
-
* three about
|
|
35
|
+
* three about color.
|
|
36
36
|
*/
|
|
37
37
|
couldReach: number;
|
|
38
38
|
cells: readonly ConceptCell[];
|
|
@@ -64,7 +64,7 @@ export interface AxisDisagreement {
|
|
|
64
64
|
* The disagreement matrix, split one table per axis.
|
|
65
65
|
*
|
|
66
66
|
* ONE TABLE MIXING AXES IS SPARSE BY CONSTRUCTION, and the sparseness is not a finding. Each
|
|
67
|
-
* repository speaks about some axes and not others: the paint-sample retailer's vocabulary is
|
|
67
|
+
* repository speaks about some axes and not others: the paint-sample retailer's vocabulary is color
|
|
68
68
|
* and nothing else, so against every style concept it is a column of dashes. Rendered as one table that reads
|
|
69
69
|
* as six repositories disagreeing when it is really six repositories talking about different
|
|
70
70
|
* subjects, and it costs enough width to break the canonical identifiers across three lines.
|
|
@@ -104,7 +104,7 @@ export declare const agreementSummary: () => {
|
|
|
104
104
|
* percentage.
|
|
105
105
|
*
|
|
106
106
|
* A SHARE AND NOT A COUNT, and the distinction is the whole reason this function exists rather than
|
|
107
|
-
* a consumer
|
|
107
|
+
* a consumer meaning `ROOM_SCHEME_STYLE_COUNTS` directly. The underlying figures are a third
|
|
108
108
|
* party's catalogue volumes and are not ours to publish. The claim anything downstream actually
|
|
109
109
|
* needs is that `Modern` and `Contemporary` sit at comparable volume and together account for a
|
|
110
110
|
* large slice of the corpus - which a percentage carries exactly as well and a count carries no
|
|
@@ -4,7 +4,7 @@ export type Verdict =
|
|
|
4
4
|
"decomposed"
|
|
5
5
|
/** Decomposes, but the compound carries meaning the parts do not. Needs an anchor as well. */
|
|
6
6
|
| "lossy"
|
|
7
|
-
/** The canon can express both
|
|
7
|
+
/** The canon can express both meanings; the source cannot be safely mapped to one. Declines. */
|
|
8
8
|
| "ambiguous"
|
|
9
9
|
/** A real term, but answering a question outside the interiors aesthetic axes. */
|
|
10
10
|
| "out-of-axis"
|
|
@@ -15,7 +15,7 @@ export interface ResidueReport {
|
|
|
15
15
|
/** `decomposed` as a share of `aesthetic`. TAX-14's threshold was 80 per cent. */
|
|
16
16
|
cleanRate: number;
|
|
17
17
|
/**
|
|
18
|
-
* The circularity guard. The axes here were authored after
|
|
18
|
+
* The circularity guard. The axes here were authored after meaning these terms, so the headline
|
|
19
19
|
* rate is partly fitted to its own inputs. This is the share that decomposes onto canon that
|
|
20
20
|
* existed BEFORE the test - vendored from the materials-retrieval system, colorscope and the
|
|
21
21
|
* architecture-projects platform, or already published in this package. It is the floor the
|
package/dist/estate/sources.d.ts
CHANGED
|
@@ -97,10 +97,10 @@ export declare const PAINT_SAMPLE_COLOUR_COLLECTIONS: EstateVocabulary;
|
|
|
97
97
|
* A standing fact, visible in this capture rather than asserted.
|
|
98
98
|
*
|
|
99
99
|
* THE PAINT-SAMPLE RETAILER IS A SAMPLING CHANNEL, NOT A PAINT BRAND. It prints peel-and-stick
|
|
100
|
-
* sheets of other manufacturers'
|
|
101
|
-
*
|
|
100
|
+
* sheets of other manufacturers' colors and manufactures nothing. Its own product index groups by
|
|
101
|
+
* brand, and every brand is somebody else: the largest share of the catalogue sits in a
|
|
102
102
|
* `benjamin-moore` collection, then `sherwin-williams`, then `behr`. If a query ever returns the
|
|
103
|
-
* retailer as the
|
|
103
|
+
* retailer as the brand of a color, the query is wrong and this is the evidence.
|
|
104
104
|
*/
|
|
105
|
-
export declare const
|
|
105
|
+
export declare const PAINT_SAMPLE_BRAND_COLLECTIONS: readonly ["benjamin-moore", "sherwin-williams", "behr"];
|
|
106
106
|
export declare const ESTATE_VOCABULARIES: readonly EstateVocabulary[];
|
package/dist/index.d.ts
CHANGED
|
@@ -4,5 +4,6 @@
|
|
|
4
4
|
* Identity is always a canonical HTTPS URI. The package exports declarative data and the types
|
|
5
5
|
* needed to consume it; resolution, traversal, ranking, and search policy live in adapters.
|
|
6
6
|
*/
|
|
7
|
-
export {
|
|
7
|
+
export { ASSESSMENT_AUTHORITY_REFERENCES, ASSESSMENT_POLICY_REVISION, type AssessmentEvidenceRoute, type ConceptAssessmentPolicy, CONCEPT_ASSESSMENT_POLICIES, type MaterialApplicability, } from "./assessment-policy.js";
|
|
8
|
+
export { type AxisNode, type CanonicalConceptUri, COLOR_SCOPE_REFERENCE_KINDS, type ColorScopeReferenceKind, type ColorScopeTarget, type ConceptNode, type ExternalReference, type FacetHolds, type FacetNode, type Governance, type GraphPredicate, type KnowledgeGraph, type KnowledgeGraphEdge, type KnowledgeGraphNode, KNOWLEDGE_GRAPH, type PhraseEntry, type MeaningContext, type MeaningPriority, PHRASE_ENTRIES, type Lifecycle, type LifecycleStatus, type PhraseMeaning, TAXONOMY_BASE_URI, TAXONOMY_CORPUS_METADATA, TAXONOMY_CORPUS_REVISION, TAXONOMY_SNAPSHOT, TAXONOMY_VERSION, type TaxonomyTarget, } from "./v1.js";
|
|
8
9
|
export type { ElementPlacement, PeriodSpan, SearchedWithout, StyleKind, TermProvenance, TermUsage, UsageWithheld, } from "./term.js";
|