@instruments/taxonomy 1.1.6 → 1.2.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.
Files changed (96) hide show
  1. package/dist/assertions.d.ts +70 -0
  2. package/dist/authoring.d.ts +33 -0
  3. package/dist/axes/construction.d.ts +3 -0
  4. package/dist/axes/element-fabric.d.ts +2 -0
  5. package/dist/axes/element-fitout.d.ts +2 -0
  6. package/dist/axes/element-shared.d.ts +13 -0
  7. package/dist/axes/element.d.ts +2 -0
  8. package/dist/axes/finish.d.ts +9 -0
  9. package/dist/axes/format.d.ts +3 -0
  10. package/dist/axes/index.d.ts +62 -0
  11. package/dist/axes/installation-layout.d.ts +3 -0
  12. package/dist/axes/material.d.ts +3 -0
  13. package/dist/axes/mood-anchors.d.ts +4 -0
  14. package/dist/axes/mood.d.ts +2 -0
  15. package/dist/axes/palette.d.ts +7 -0
  16. package/dist/axes/pattern.d.ts +13 -0
  17. package/dist/axes/period-anchors.d.ts +4 -0
  18. package/dist/axes/period.d.ts +29 -0
  19. package/dist/axes/place-anchors.d.ts +4 -0
  20. package/dist/axes/place.d.ts +5 -0
  21. package/dist/axes/product-category.d.ts +3 -0
  22. package/dist/axes/requirement.d.ts +3 -0
  23. package/dist/axes/space/arrival.d.ts +2 -0
  24. package/dist/axes/space/circulation.d.ts +2 -0
  25. package/dist/axes/space/civic.d.ts +2 -0
  26. package/dist/axes/space/culture.d.ts +2 -0
  27. package/dist/axes/space/dining.d.ts +2 -0
  28. package/dist/axes/space/domestic.d.ts +2 -0
  29. package/dist/axes/space/fitness.d.ts +2 -0
  30. package/dist/axes/space/gathering.d.ts +2 -0
  31. package/dist/axes/space/healthcare.d.ts +2 -0
  32. package/dist/axes/space/learning.d.ts +2 -0
  33. package/dist/axes/space/market-neutral.d.ts +1 -0
  34. package/dist/axes/space/other.d.ts +2 -0
  35. package/dist/axes/space/outdoor.d.ts +2 -0
  36. package/dist/axes/space/retail.d.ts +2 -0
  37. package/dist/axes/space/sanitary.d.ts +2 -0
  38. package/dist/axes/space/service.d.ts +2 -0
  39. package/dist/axes/space/shared.d.ts +30 -0
  40. package/dist/axes/space/sleeping.d.ts +2 -0
  41. package/dist/axes/space/working.d.ts +2 -0
  42. package/dist/axes/space-anchors/arrival.d.ts +3 -0
  43. package/dist/axes/space-anchors/circulation.d.ts +3 -0
  44. package/dist/axes/space-anchors/civic.d.ts +3 -0
  45. package/dist/axes/space-anchors/culture.d.ts +3 -0
  46. package/dist/axes/space-anchors/dining.d.ts +3 -0
  47. package/dist/axes/space-anchors/domestic.d.ts +3 -0
  48. package/dist/axes/space-anchors/fitness.d.ts +3 -0
  49. package/dist/axes/space-anchors/gathering.d.ts +3 -0
  50. package/dist/axes/space-anchors/healthcare.d.ts +3 -0
  51. package/dist/axes/space-anchors/learning.d.ts +3 -0
  52. package/dist/axes/space-anchors/other.d.ts +3 -0
  53. package/dist/axes/space-anchors/outdoor.d.ts +3 -0
  54. package/dist/axes/space-anchors/retail.d.ts +3 -0
  55. package/dist/axes/space-anchors/sanitary.d.ts +3 -0
  56. package/dist/axes/space-anchors/service.d.ts +3 -0
  57. package/dist/axes/space-anchors/sleeping.d.ts +3 -0
  58. package/dist/axes/space-anchors/working.d.ts +3 -0
  59. package/dist/axes/space-anchors.d.ts +8 -0
  60. package/dist/axes/space.d.ts +61 -0
  61. package/dist/axes/style-anchors.d.ts +7 -0
  62. package/dist/axes/style.d.ts +2 -0
  63. package/dist/axes/tier.d.ts +42 -0
  64. package/dist/axes/typology.d.ts +2 -0
  65. package/dist/axes/unit-shape.d.ts +3 -0
  66. package/dist/canonicalisation.d.ts +44 -0
  67. package/dist/crosswalks/designshop.d.ts +30 -0
  68. package/dist/crosswalks/mapping.d.ts +29 -0
  69. package/dist/crosswalks/materialgraph.d.ts +38 -0
  70. package/dist/crosswalks/miu.d.ts +13 -0
  71. package/dist/crosswalks/strength.d.ts +19 -0
  72. package/dist/dictionaries.d.ts +4 -0
  73. package/dist/downstream-check-policy.d.ts +34 -0
  74. package/dist/env.d.ts +6 -0
  75. package/dist/estate/concepts.d.ts +116 -0
  76. package/dist/estate/decomposition.d.ts +40 -0
  77. package/dist/estate/index.d.ts +4 -0
  78. package/dist/estate/residue-report.d.ts +45 -0
  79. package/dist/estate/rows/architizer.d.ts +2 -0
  80. package/dist/estate/rows/designround.d.ts +2 -0
  81. package/dist/estate/rows/designshop.d.ts +2 -0
  82. package/dist/estate/rows/index.d.ts +2 -0
  83. package/dist/estate/rows/materia.d.ts +2 -0
  84. package/dist/estate/rows/materialgraph.d.ts +2 -0
  85. package/dist/estate/rows/samplize.d.ts +2 -0
  86. package/dist/estate/sources.d.ts +47 -0
  87. package/dist/index.d.ts +5 -339
  88. package/dist/index.js +52 -1
  89. package/dist/match.d.ts +107 -0
  90. package/dist/materialgraph-crossover-sources.d.ts +52 -0
  91. package/dist/search-corpus-source.d.ts +8 -0
  92. package/dist/taste-assertion.d.ts +112 -0
  93. package/dist/taste.d.ts +2 -0
  94. package/dist/term.d.ts +346 -0
  95. package/dist/v1.d.ts +141 -0
  96. package/package.json +13 -13
package/dist/index.js CHANGED
@@ -470,6 +470,7 @@ var ELEMENT_FABRIC_TERMS = [
470
470
  uniclass("EF_25_10", "Walls", "exact")
471
471
  ],
472
472
  label: "Wall",
473
+ placement: "field",
473
474
  provenance: AUTHORED2,
474
475
  slug: "wall"
475
476
  },
@@ -482,6 +483,7 @@ var ELEMENT_FABRIC_TERMS = [
482
483
  uniclass("EF_25_10_25", EF_EXTERNAL_WALLS, "exact")
483
484
  ],
484
485
  label: "External Wall",
486
+ placement: "field",
485
487
  provenance: AUTHORED2,
486
488
  slug: "external-wall"
487
489
  },
@@ -494,6 +496,7 @@ var ELEMENT_FABRIC_TERMS = [
494
496
  uniclass("EF_25_10_40", "Internal walls", "exact")
495
497
  ],
496
498
  label: "Internal Wall",
499
+ placement: "field",
497
500
  provenance: AUTHORED2,
498
501
  slug: "internal-wall"
499
502
  },
@@ -505,6 +508,7 @@ var ELEMENT_FABRIC_TERMS = [
505
508
  uniclass("EF_25_10_40", "Internal walls", "broad")
506
509
  ],
507
510
  label: "Partition",
511
+ placement: "field",
508
512
  provenance: AUTHORED2,
509
513
  slug: "partition"
510
514
  },
@@ -513,6 +517,7 @@ var ELEMENT_FABRIC_TERMS = [
513
517
  external: [uniclass("EF_25_10_25", EF_EXTERNAL_WALLS, "related")],
514
518
  label: "Cladding",
515
519
  note: "No AAT mapping. AAT 300014860 `cladding` is the metal-coating process, a different thing entirely, and a plausible wrong mapping is worse than none.",
520
+ placement: "field",
516
521
  provenance: AUTHORED2,
517
522
  related: [partOf("external-wall")],
518
523
  slug: "cladding"
@@ -523,6 +528,7 @@ var ELEMENT_FABRIC_TERMS = [
523
528
  external: [aat("300002691", "wainscoting", "narrow")],
524
529
  label: "Panelling",
525
530
  note: "AAT's nearest term, `wainscoting`, is panelling carried only to dado height; this term covers full-height panelling too, so the AAT concept is narrower.",
531
+ placement: "joinery",
526
532
  provenance: AUTHORED2,
527
533
  related: [partOf(INTERNAL_WALL)],
528
534
  slug: "panelling"
@@ -534,6 +540,7 @@ var ELEMENT_FABRIC_TERMS = [
534
540
  uniclass("EF_25_10_60", "Parapet walls", "exact")
535
541
  ],
536
542
  label: "Parapet",
543
+ placement: "field",
537
544
  provenance: AUTHORED2,
538
545
  related: [partOf("external-wall")],
539
546
  slug: "parapet"
@@ -546,6 +553,7 @@ var ELEMENT_FABRIC_TERMS = [
546
553
  uniclass("EF_30_20", "Floors", "exact")
547
554
  ],
548
555
  label: "Floor",
556
+ placement: "underfoot",
549
557
  provenance: AUTHORED2,
550
558
  slug: "floor"
551
559
  },
@@ -553,6 +561,7 @@ var ELEMENT_FABRIC_TERMS = [
553
561
  definition: "The wearing layer laid on a floor, replaceable without touching the floor beneath it.",
554
562
  external: [aat("300014866", "flooring", "close")],
555
563
  label: "Floor Finish",
564
+ placement: "underfoot",
556
565
  provenance: AUTHORED2,
557
566
  related: [partOf("floor")],
558
567
  slug: "floor-finish"
@@ -566,6 +575,7 @@ var ELEMENT_FABRIC_TERMS = [
566
575
  uniclass("EF_30_20", "Floors", "broad")
567
576
  ],
568
577
  label: "Raised Floor",
578
+ placement: "underfoot",
569
579
  provenance: AUTHORED2,
570
580
  slug: "raised-floor"
571
581
  },
@@ -577,6 +587,7 @@ var ELEMENT_FABRIC_TERMS = [
577
587
  uniclass("EF_30_25_12", "Ceilings", "exact")
578
588
  ],
579
589
  label: "Ceiling",
590
+ placement: "overhead",
580
591
  provenance: AUTHORED2,
581
592
  slug: "ceiling"
582
593
  },
@@ -589,6 +600,7 @@ var ELEMENT_FABRIC_TERMS = [
589
600
  uniclass("EF_30_25_12", "Ceilings", "broad")
590
601
  ],
591
602
  label: "Suspended Ceiling",
603
+ placement: "overhead",
592
604
  provenance: AUTHORED2,
593
605
  slug: "suspended-ceiling"
594
606
  },
@@ -599,6 +611,7 @@ var ELEMENT_FABRIC_TERMS = [
599
611
  uniclass("EF_30_25_80", "Soffits", "exact")
600
612
  ],
601
613
  label: "Soffit",
614
+ placement: "overhead",
602
615
  provenance: AUTHORED2,
603
616
  slug: "soffit"
604
617
  },
@@ -610,6 +623,7 @@ var ELEMENT_FABRIC_TERMS = [
610
623
  uniclass("EF_30_10", "Roofs", "exact")
611
624
  ],
612
625
  label: "Roof",
626
+ placement: "overhead",
613
627
  provenance: AUTHORED2,
614
628
  slug: "roof"
615
629
  },
@@ -621,6 +635,7 @@ var ELEMENT_FABRIC_TERMS = [
621
635
  uniclass("EF_30_10_30", "Flat roofs", "exact")
622
636
  ],
623
637
  label: "Flat Roof",
638
+ placement: "overhead",
624
639
  provenance: AUTHORED2,
625
640
  slug: "flat-roof"
626
641
  },
@@ -632,6 +647,7 @@ var ELEMENT_FABRIC_TERMS = [
632
647
  uniclass("EF_30_10_64", "Pitched roofs", "exact")
633
648
  ],
634
649
  label: "Pitched Roof",
650
+ placement: "overhead",
635
651
  provenance: AUTHORED2,
636
652
  slug: "pitched-roof"
637
653
  },
@@ -640,6 +656,7 @@ var ELEMENT_FABRIC_TERMS = [
640
656
  definition: "A glazed opening in a roof plane, admitting daylight from above rather than from a wall.",
641
657
  external: [aat("300003062", "skylights", "exact")],
642
658
  label: "Rooflight",
659
+ placement: "unpainted",
643
660
  provenance: AUTHORED2,
644
661
  related: [partOf(ROOF)],
645
662
  slug: "rooflight"
@@ -652,6 +669,7 @@ var ELEMENT_FABRIC_TERMS = [
652
669
  uniclass("EF_25_30_25", "Doors", "exact")
653
670
  ],
654
671
  label: "Door",
672
+ placement: "joinery",
655
673
  provenance: AUTHORED2,
656
674
  slug: "door"
657
675
  },
@@ -662,6 +680,7 @@ var ELEMENT_FABRIC_TERMS = [
662
680
  uniclass("EF_25_30_97", "Windows", "exact")
663
681
  ],
664
682
  label: "Window",
683
+ placement: "trim",
665
684
  provenance: AUTHORED2,
666
685
  slug: "window"
667
686
  },
@@ -669,6 +688,7 @@ var ELEMENT_FABRIC_TERMS = [
669
688
  definition: "The transparent infill held in an opening or frame: the glass, not the opening it fills.",
670
689
  label: "Glazing",
671
690
  note: "No AAT mapping. AAT carries `glazing` only as processes and `glass` only as a material, and neither of those is this element.",
691
+ placement: "unpainted",
672
692
  provenance: AUTHORED2,
673
693
  related: [partOf(WINDOW), partOf("curtain-walling")],
674
694
  slug: "glazing"
@@ -682,13 +702,16 @@ var ELEMENT_FABRIC_TERMS = [
682
702
  uniclass("EF_25_10_25", EF_EXTERNAL_WALLS, "broad")
683
703
  ],
684
704
  label: "Curtain Walling",
705
+ placement: "unpainted",
685
706
  provenance: AUTHORED2,
686
707
  slug: "curtain-walling"
687
708
  },
688
709
  {
710
+ altLabels: ["shutters"],
689
711
  definition: "A hinged or sliding cover to a window opening, working by moving rather than by drawing.",
690
712
  external: [aat("300003173", "shutters (opening covers)", "exact")],
691
713
  label: "Shutter",
714
+ placement: "trim",
692
715
  provenance: AUTHORED2,
693
716
  related: [partOf(WINDOW)],
694
717
  slug: "shutter"
@@ -701,6 +724,7 @@ var ELEMENT_FABRIC_TERMS = [
701
724
  aat("300045375", "door hardware", "narrow")
702
725
  ],
703
726
  label: "Ironmongery",
727
+ placement: "unpainted",
704
728
  provenance: AUTHORED2,
705
729
  related: [partOf(DOOR), partOf(WINDOW)],
706
730
  slug: "ironmongery"
@@ -715,6 +739,7 @@ var ELEMENT_FABRIC_TERMS = [
715
739
  uniclass("EF_35_10", "Stairs", "exact")
716
740
  ],
717
741
  label: "Stair",
742
+ placement: "underfoot",
718
743
  provenance: AUTHORED2,
719
744
  slug: "stair"
720
745
  },
@@ -722,6 +747,7 @@ var ELEMENT_FABRIC_TERMS = [
722
747
  definition: "The horizontal face of a step, which is the surface the foot lands on.",
723
748
  external: [aat("300003326", "treads", "exact")],
724
749
  label: "Stair Tread",
750
+ placement: "underfoot",
725
751
  provenance: AUTHORED2,
726
752
  related: [partOf(STAIR)],
727
753
  slug: "stair-tread"
@@ -730,6 +756,7 @@ var ELEMENT_FABRIC_TERMS = [
730
756
  definition: "The vertical face between one tread and the next, absent on an open-riser stair.",
731
757
  external: [aat("300003325", "risers (step components)", "exact")],
732
758
  label: "Stair Riser",
759
+ placement: "underfoot",
733
760
  provenance: AUTHORED2,
734
761
  related: [partOf(STAIR)],
735
762
  slug: "stair-riser"
@@ -743,6 +770,7 @@ var ELEMENT_FABRIC_TERMS = [
743
770
  uniclass("EF_25_55", "Barriers", "broad")
744
771
  ],
745
772
  label: "Balustrade",
773
+ placement: "trim",
746
774
  provenance: AUTHORED2,
747
775
  related: [partOf(STAIR)],
748
776
  slug: "balustrade"
@@ -751,6 +779,7 @@ var ELEMENT_FABRIC_TERMS = [
751
779
  definition: "The continuous rail sized to be gripped while moving, on a balustrade or fixed to a wall.",
752
780
  external: [aat("300002022", "handrails", "exact")],
753
781
  label: "Handrail",
782
+ placement: "trim",
754
783
  provenance: AUTHORED2,
755
784
  related: [partOf(BALUSTRADE)],
756
785
  slug: "handrail"
@@ -760,6 +789,7 @@ var ELEMENT_FABRIC_TERMS = [
760
789
  definition: "The post terminating or turning a balustrade, taking the load the handrail cannot.",
761
790
  external: [aat("300003296", "newels", "exact")],
762
791
  label: "Newel",
792
+ placement: "trim",
763
793
  provenance: AUTHORED2,
764
794
  related: [partOf(BALUSTRADE)],
765
795
  slug: "newel"
@@ -777,6 +807,7 @@ var ELEMENT_FITOUT_TERMS = [
777
807
  uniclass("EF_40_20", "Fittings", "broad")
778
808
  ],
779
809
  label: "Millwork",
810
+ placement: "joinery",
780
811
  provenance: AUTHORED2,
781
812
  slug: "millwork"
782
813
  },
@@ -790,6 +821,7 @@ var ELEMENT_FITOUT_TERMS = [
790
821
  uniclass("EF_40_20", "Fittings", "broad")
791
822
  ],
792
823
  label: "Cabinetry",
824
+ placement: "joinery",
793
825
  provenance: AUTHORED2,
794
826
  slug: "cabinetry"
795
827
  },
@@ -798,6 +830,7 @@ var ELEMENT_FITOUT_TERMS = [
798
830
  definition: "The working surface spanning a run of cabinetry, specified for what is done on it.",
799
831
  external: [aat("300375691", "countertops", "exact")],
800
832
  label: "Worktop",
833
+ placement: "joinery",
801
834
  provenance: AUTHORED2,
802
835
  related: [partOf("cabinetry")],
803
836
  slug: "worktop"
@@ -809,6 +842,7 @@ var ELEMENT_FITOUT_TERMS = [
809
842
  uniclass("EF_40_20", "Fittings", "broad")
810
843
  ],
811
844
  label: "Shelving",
845
+ placement: "joinery",
812
846
  provenance: AUTHORED2,
813
847
  slug: "shelving"
814
848
  },
@@ -819,6 +853,7 @@ var ELEMENT_FITOUT_TERMS = [
819
853
  external: [aat("300040157", "built-in furniture", "broad")],
820
854
  label: "Wardrobe",
821
855
  note: "AAT splits `wardrobes` into a room sense and a loose-furniture sense, and a fitted wardrobe is neither, so the broader `built-in furniture` is carried instead.",
856
+ placement: "joinery",
822
857
  provenance: AUTHORED2,
823
858
  slug: "wardrobe"
824
859
  },
@@ -831,6 +866,7 @@ var ELEMENT_FITOUT_TERMS = [
831
866
  ],
832
867
  label: "Radiator",
833
868
  note: "The Uniclass match is `related`, not `broad`: EF_60_40_37 is the heating FUNCTION, and a radiator is not a kind of function.",
869
+ placement: "field",
834
870
  provenance: AUTHORED2,
835
871
  slug: "radiator"
836
872
  },
@@ -842,6 +878,7 @@ var ELEMENT_FITOUT_TERMS = [
842
878
  uniclass("EF_70_80", "Lighting", "related")
843
879
  ],
844
880
  label: "Luminaire",
881
+ placement: "unpainted",
845
882
  provenance: AUTHORED2,
846
883
  slug: "luminaire"
847
884
  },
@@ -850,6 +887,7 @@ var ELEMENT_FITOUT_TERMS = [
850
887
  definition: "The plumbed-in vessels of a wet room: basin, WC pan, cistern, bath, shower tray.",
851
888
  external: [aat("300052575", "plumbing fixtures", "close")],
852
889
  label: "Sanitaryware",
890
+ placement: "unpainted",
853
891
  provenance: AUTHORED2,
854
892
  slug: "sanitaryware"
855
893
  },
@@ -861,6 +899,7 @@ var ELEMENT_FITOUT_TERMS = [
861
899
  uniclass("EF_55_70_38", "Hot and cold water supply", "related")
862
900
  ],
863
901
  label: "Tapware",
902
+ placement: "unpainted",
864
903
  provenance: AUTHORED2,
865
904
  related: [partOf("sanitaryware")],
866
905
  slug: "tapware"
@@ -873,6 +912,7 @@ var ELEMENT_FITOUT_TERMS = [
873
912
  uniclass("EF_70_30_80", "Small power supply", "related")
874
913
  ],
875
914
  label: "Socket & Switch",
915
+ placement: "unpainted",
876
916
  provenance: AUTHORED2,
877
917
  slug: "socket-outlet"
878
918
  },
@@ -882,6 +922,7 @@ var ELEMENT_FITOUT_TERMS = [
882
922
  definition: "The board closing the wall-to-floor junction, protecting the base and hiding tolerance.",
883
923
  external: [aat("300002681", "baseboards", "exact")],
884
924
  label: "Skirting",
925
+ placement: "trim",
885
926
  provenance: AUTHORED2,
886
927
  related: [partOf(INTERNAL_WALL)],
887
928
  slug: "skirting"
@@ -892,6 +933,7 @@ var ELEMENT_FITOUT_TERMS = [
892
933
  external: [aat("300003429", "moldings (object components)", "broad")],
893
934
  label: "Architrave",
894
935
  note: "AAT 300001780 `architraves (entablature)` is the classical member and not this term, despite the shared word; the broader `moldings` concept is carried instead.",
936
+ placement: "trim",
895
937
  provenance: AUTHORED2,
896
938
  related: [partOf(DOOR)],
897
939
  slug: "architrave"
@@ -901,6 +943,7 @@ var ELEMENT_FITOUT_TERMS = [
901
943
  definition: "The moulded band at the wall-to-ceiling junction; a plain quadrant in that position is coving.",
902
944
  external: [aat("300001788", "cornices", "exact")],
903
945
  label: "Cornice",
946
+ placement: "overhead",
904
947
  provenance: AUTHORED2,
905
948
  related: [partOf(INTERNAL_WALL)],
906
949
  slug: "cornice"
@@ -910,6 +953,7 @@ var ELEMENT_FITOUT_TERMS = [
910
953
  definition: "The horizontal moulding at chair-back height, splitting the wall into dado and field.",
911
954
  external: [aat("300002684", "chair rails", "exact")],
912
955
  label: "Dado Rail",
956
+ placement: "trim",
913
957
  provenance: AUTHORED2,
914
958
  related: [partOf(INTERNAL_WALL)],
915
959
  slug: "dado-rail"
@@ -918,6 +962,7 @@ var ELEMENT_FITOUT_TERMS = [
918
962
  definition: "The high horizontal moulding profiled to take hanging hooks, so pictures move undrilled.",
919
963
  external: [aat("300002687", "picture rails", "exact")],
920
964
  label: "Picture Rail",
965
+ placement: "trim",
921
966
  provenance: AUTHORED2,
922
967
  related: [partOf(INTERNAL_WALL)],
923
968
  slug: "picture-rail"
@@ -932,6 +977,7 @@ var ELEMENT_FITOUT_TERMS = [
932
977
  ],
933
978
  label: "Column",
934
979
  note: "The Uniclass match is `related`: a column is a component of a framed structure, not a kind of one. The same holds for `beam` and `truss`.",
980
+ placement: "field",
935
981
  provenance: AUTHORED2,
936
982
  slug: "column"
937
983
  },
@@ -943,6 +989,7 @@ var ELEMENT_FITOUT_TERMS = [
943
989
  uniclass("EF_20_10_30", EF_FRAMED_STRUCTURES, "related")
944
990
  ],
945
991
  label: "Beam",
992
+ placement: "overhead",
946
993
  provenance: AUTHORED2,
947
994
  slug: "beam"
948
995
  },
@@ -953,6 +1000,7 @@ var ELEMENT_FITOUT_TERMS = [
953
1000
  uniclass("EF_20_10_30", EF_FRAMED_STRUCTURES, "related")
954
1001
  ],
955
1002
  label: "Truss",
1003
+ placement: "overhead",
956
1004
  provenance: AUTHORED2,
957
1005
  related: [partOf(ROOF)],
958
1006
  slug: "truss"
@@ -962,6 +1010,7 @@ var ELEMENT_FITOUT_TERMS = [
962
1010
  definition: "The built opening and hearth holding a fire, taken with the flue it discharges into.",
963
1011
  external: [aat("300052267", "fireplaces", "exact")],
964
1012
  label: "Fireplace",
1013
+ placement: "joinery",
965
1014
  provenance: AUTHORED2,
966
1015
  slug: "fireplace"
967
1016
  },
@@ -970,6 +1019,7 @@ var ELEMENT_FITOUT_TERMS = [
970
1019
  definition: "The surround and shelf framing a fireplace opening, replaceable without touching it.",
971
1020
  external: [aat("300052347", "mantels (fireplace components)", "exact")],
972
1021
  label: "Chimneypiece",
1022
+ placement: "joinery",
973
1023
  provenance: AUTHORED2,
974
1024
  related: [partOf("fireplace")],
975
1025
  slug: "chimneypiece"
@@ -7460,7 +7510,7 @@ var resolveReference = (reference) => INDEX.byKey.get(canonicalKey(reference));
7460
7510
  // src/v1.ts
7461
7511
  var TAXONOMY_BASE_URI = "https://taxonomy.materialinstruments.com";
7462
7512
  var TAXONOMY_SNAPSHOT = "2026-09-01";
7463
- var TAXONOMY_VERSION = "1.1.6";
7513
+ var TAXONOMY_VERSION = "1.2.0";
7464
7514
  var PUBLISHED_V1_BASELINE = "2026-08-30";
7465
7515
  var TAX45_REVIEW_SNAPSHOT = "2026-08-31";
7466
7516
  var compareText = (left, right) => {
@@ -7591,6 +7641,7 @@ var addTermNodes = (assembly, axis, axisUri) => {
7591
7641
  lifecycle: governance.lifecycle,
7592
7642
  ...term10.note === void 0 ? {} : { note: term10.note },
7593
7643
  order: termOrder,
7644
+ ...term10.placement === void 0 ? {} : { placement: term10.placement },
7594
7645
  provenance: governance.provenance,
7595
7646
  ...term10.rank === void 0 ? {} : { rank: term10.rank },
7596
7647
  ...term10.searchedWithout === void 0 ? {} : { searchedWithout: term10.searchedWithout },
@@ -0,0 +1,107 @@
1
+ import type { RelationRole } from "./term.js";
2
+ /** The role an assertion plays inside a compound expression. */
3
+ export type BundleRole = RelationRole;
4
+ export interface BundleMemberInput {
5
+ /** A qualified canonical term or typed relation, e.g. `style.minimalism`. */
6
+ assertion: string;
7
+ /** Defaults to accent: an unspecified role is evidence of presence, not necessity. */
8
+ role?: BundleRole;
9
+ }
10
+ export interface BundleMember {
11
+ assertion: string;
12
+ role: BundleRole;
13
+ }
14
+ export interface CanonicalBundle {
15
+ kind: "all-of";
16
+ /** Stable, reversible identity derived from the canonical serialization. */
17
+ id: string;
18
+ members: readonly BundleMember[];
19
+ serialization: string;
20
+ }
21
+ export type AlternativeReason = "query-alternative" | "source-ambiguous";
22
+ export interface CanonicalAlternatives {
23
+ kind: "any-of";
24
+ /** Stable, reversible identity derived from the sorted alternative bundle identities. */
25
+ id: string;
26
+ alternatives: readonly CanonicalBundle[];
27
+ reason: AlternativeReason;
28
+ serialization: string;
29
+ }
30
+ export declare const MATCH_WEIGHTS: Readonly<Record<RelationRole, number>>;
31
+ export declare const DEFAULT_BUNDLE_ROLE: BundleRole;
32
+ /**
33
+ * Give a bundle one canonical spelling. Duplicate assertions collapse; constitutive wins when the
34
+ * same assertion was supplied in both roles because removing it would otherwise change identity.
35
+ */
36
+ export declare const defineBundle: (inputs: readonly BundleMemberInput[]) => CanonicalBundle;
37
+ export declare const defineAlternatives: (inputs: readonly (CanonicalBundle | readonly BundleMemberInput[])[], reason: AlternativeReason) => CanonicalAlternatives;
38
+ export interface BundleMatch {
39
+ eligible: boolean;
40
+ matched: readonly string[];
41
+ missingAccents: readonly string[];
42
+ missingConstitutive: readonly string[];
43
+ /** Fixed-weight score in [0, 1]. Ineligible matches always score zero. */
44
+ score: number;
45
+ }
46
+ /**
47
+ * Match without penalising extra candidate annotations. Richer annotation should not make an
48
+ * otherwise identical subject rank lower.
49
+ */
50
+ export declare const matchBundle: (bundle: CanonicalBundle, candidateAssertions: Iterable<string>) => BundleMatch;
51
+ export interface AlternativesMatch {
52
+ alternative: CanonicalBundle;
53
+ match: BundleMatch;
54
+ }
55
+ /** The strongest eligible reading wins; bundle identity makes ties deterministic. */
56
+ export declare const matchAlternatives: (alternatives: CanonicalAlternatives, candidateAssertions: Iterable<string>) => AlternativesMatch;
57
+ /** How well a candidate answered the query. `exact` matched every member, accents included. */
58
+ export type MatchTier = "exact" | "eligible" | "relaxed";
59
+ /** A subject to rank: an opaque id and the assertions annotating it. */
60
+ export interface CandidateAnnotations {
61
+ id: string;
62
+ assertions: readonly string[];
63
+ }
64
+ export interface RankedCandidate {
65
+ id: string;
66
+ tier: MatchTier;
67
+ match: BundleMatch;
68
+ }
69
+ export interface BundleSearch {
70
+ /** The strongest tier present. Absent when no candidate carried even one member. */
71
+ tier?: MatchTier;
72
+ results: readonly RankedCandidate[];
73
+ /** True when nothing was eligible and the relaxed tier was served in its place. */
74
+ relaxed: boolean;
75
+ /**
76
+ * Constitutive members NO candidate in this corpus carries. Populated only when nothing was
77
+ * eligible, because that is when it is the answer: these are the conjuncts the corpus cannot
78
+ * satisfy, and naming them is what turns an empty result into a usable one.
79
+ */
80
+ blocking: readonly string[];
81
+ }
82
+ export interface SearchOptions {
83
+ /** Refuse the relaxed tier: return nothing rather than a labelled partial answer. */
84
+ strict?: boolean;
85
+ /** Truncate the ranked list. Applied after ordering, so it never changes which result is first. */
86
+ limit?: number;
87
+ }
88
+ /**
89
+ * Rank a corpus against a bundle under the published rule. Deterministic: the same corpus in any
90
+ * input order returns the same list.
91
+ */
92
+ export declare const searchBundle: (bundle: CanonicalBundle, candidates: Iterable<CandidateAnnotations>, options?: SearchOptions) => BundleSearch;
93
+ export interface MatchTestCandidate {
94
+ assertions: readonly string[];
95
+ id: string;
96
+ }
97
+ export interface MatchTestVector {
98
+ candidates: readonly MatchTestCandidate[];
99
+ expectedEligibleOrder: readonly string[];
100
+ id: string;
101
+ query: CanonicalBundle;
102
+ }
103
+ /**
104
+ * Executable test vectors published for consumers implementing the same rule in another language.
105
+ * One is residential, one commercial; the matcher itself has no market branch.
106
+ */
107
+ export declare const MATCH_TEST_VECTORS: readonly MatchTestVector[];
@@ -0,0 +1,52 @@
1
+ export declare const MATERIALGRAPH_CROSSOVER_SOURCE = "materialgraph@b55d7ad33807d9653bd4838b7908fb1d100440a8:packages/products/src/search/colour-material-lexicon.ts:46-102";
2
+ export declare const COLORSCOPE_CROSSOVER_SOURCE = "materialinstruments/colorscope@c0662caabe7cd8604241a8a7b2608fa5bc71de51:packages/core/data/reference/v1/taxonomy.json";
3
+ export declare const BRASS_MATERIAL_SOURCE = "https://archive.copper.org/applications/industrial/DesignGuide/terms.php";
4
+ export declare const BRASS_FINISH_SOURCE = "https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
5
+ export declare const NICKEL_MATERIAL_SOURCE = "https://nickelinstitute.org/en/nickel-applications/";
6
+ export declare const NICKEL_FINISH_SOURCE = "https://nickelinstitute.org/en/nickel-applications/plating";
7
+ export declare const CROSSOVER_DEFINITION_SOURCES: {
8
+ readonly alabaster: "https://webapps.bgs.ac.uk/memoirs/docs/B06070.html";
9
+ readonly brass: "https://archive.copper.org/applications/industrial/DesignGuide/terms.php; https://nickelinstitute.org/media/lxxh1zwr/2023-nickelplatinghandbooka5_printablepdf.pdf section 5";
10
+ readonly bronze: "https://archive.copper.org/applications/industrial/DesignGuide/terms.php; https://archive.copper.org/applications/architecture/arch_dhb/technical-discussion/copper_alloys/";
11
+ readonly cherry: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
12
+ readonly chestnut: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
13
+ readonly chrome: "ISO 1456:2009, https://www.iso.org/standard/50237.html; ISO 6158:2018, https://www.iso.org/standard/72269.html";
14
+ readonly clay: "https://pubs.usgs.gov/info/clays/";
15
+ readonly concrete: "https://www.concrete.org/frequentlyaskedquestions.aspx?faqid=640";
16
+ readonly copper: "https://archive.copper.org/applications/industrial/DesignGuide/selection/elect02.php";
17
+ readonly cork: "https://apcor.pt/en/what-it-is";
18
+ readonly cotton: "https://www.fao.org/docrep/pdf/012/i0987e/i0987e00.pdf";
19
+ readonly denim: "https://cottonworks.com/encyclopedia-item/denim/";
20
+ readonly ebony: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
21
+ readonly gold: "https://www.usgs.gov/centers/national-minerals-information-center/gold-statistics-and-information";
22
+ readonly gunmetal: "https://live.copper.org/applications/marine/cuni/alloys/pub-206-copper-alloys-for-marine-environments.pdf";
23
+ readonly iron: "https://www.usgs.gov/centers/national-minerals-information-center/iron-and-steel-statistics-and-information";
24
+ readonly jade: "https://www.gia.edu/jade-description";
25
+ readonly jute: "https://www.fao.org/markets-and-trade/commodities-overview/fibres/jute-and-hard-fibres/";
26
+ readonly leather: "ISO 15115, https://www.iso.org/obp/ui?_escaped_fragment_=iso%3Astd%3Aiso%3A15115%3Aed-1%3Av1%3Aen";
27
+ readonly limestone: "https://pubs.usgs.gov/fs/2008/3089/";
28
+ readonly linen: "https://allianceflaxlinenhemp.eu/en/document_resources/35/download";
29
+ readonly mahogany: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
30
+ readonly marble: "https://www.naturalstoneinstitute.org/designprofessionals/varieties/definition/; ASTM C503 via https://www.naturalstoneinstitute.org/stoneprofessionals/astm/";
31
+ readonly nickel: "https://nickelinstitute.org/en/nickel-applications/; https://nickelinstitute.org/en/nickel-applications/plating";
32
+ readonly oak: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
33
+ readonly obsidian: "https://www.usgs.gov/glossary/volcano-hazards-program-glossary";
34
+ readonly onyx: "https://www.naturalstoneinstitute.org/consumers/varieties/marble/";
35
+ readonly pewter: "Getty AAT 300010979, https://www.getty.edu/vow/AATFullDisplay?find=&logic=AND&note=&page=1&subjectid=300010979";
36
+ readonly platinum: "https://www.usgs.gov/centers/national-minerals-information-center/platinum-group-metals-statistics-and-information";
37
+ readonly rosewood: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
38
+ readonly silver: "https://silverinstitute.org/silver-element-essentials/";
39
+ readonly sisal: "https://www.fao.org/docrep/pdf/012/i0987e/i0987e00.pdf";
40
+ readonly slate: "ASTM C629 via https://www.naturalstoneinstitute.org/stoneprofessionals/astm/";
41
+ readonly steel: "https://worldsteel.org/about-steel/what-is-steel/";
42
+ readonly stone: "https://www.naturalstoneinstitute.org/about/sponsorship-and-advertising/sponsored-content-guidelines/";
43
+ readonly suede: "ISO 15115, https://www.iso.org/obp/ui?_escaped_fragment_=iso%3Astd%3Aiso%3A15115%3Aed-1%3Av1%3Aen";
44
+ readonly teak: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
45
+ readonly terracotta: "Getty AAT 300047296, https://www.getty.edu/vow/AATFullDisplay?find=building&logic=AND&note=&subjectid=300047296";
46
+ readonly travertine: "https://www.naturalstoneinstitute.org/about/sponsorship-and-advertising/sponsored-content-guidelines/";
47
+ readonly walnut: "https://research.fs.usda.gov/treesearch/32210";
48
+ readonly wood: "https://research.fs.usda.gov/download/treesearch/37440.pdf";
49
+ readonly wool: "https://www.fao.org/docrep/pdf/012/i0987e/i0987e00.pdf";
50
+ };
51
+ export type MaterialGraphCrossoverPhrase = keyof typeof CROSSOVER_DEFINITION_SOURCES;
52
+ export declare const crossoverSource: (phrase: MaterialGraphCrossoverPhrase) => string;
@@ -0,0 +1,8 @@
1
+ export declare const MATERIALGRAPH_SEARCH_CORPUS_COMMIT: "53df40868bfb09bfe69bc66c455c051e34005ae1";
2
+ export declare const MATERIALGRAPH_SEARCH_CORPUS_PATH: "packages/products/src/benchmark/fixtures/benchmark-cases-2026-07-31.1.json";
3
+ export declare const MATERIALGRAPH_SEARCH_CORPUS_SNAPSHOT: "2026-07-31";
4
+ /**
5
+ * The fixture evidences searched language and admission need. Taxonomy authors the concept boundary;
6
+ * neither an individual phrase nor the 244-query fixture as a whole is treated as that definition.
7
+ */
8
+ export declare const searchCorpusEvidence: (phrases: string) => string;
@@ -0,0 +1,112 @@
1
+ import type { CanonicalAlternatives, CanonicalBundle } from "./match.js";
2
+ export declare const TASTE_ASSERTION_CONTRACT_VERSION: "1.0.0";
3
+ export declare const TAXONOMY_SNAPSHOT_VERSION: "2026-08-31";
4
+ export type AssertionRole = "taste" | "project_context" | "requirement";
5
+ export type AssertionAuthority = "explicit" | "behavioral" | "inferred";
6
+ export type AssertionPolarity = "positive" | "negative" | "never";
7
+ export type AssertionScope = {
8
+ kind: "person";
9
+ } | {
10
+ kind: "household";
11
+ householdId: string;
12
+ } | {
13
+ kind: "project";
14
+ projectId: string;
15
+ } | {
16
+ kind: "room_type";
17
+ roomTypeId: string;
18
+ } | {
19
+ kind: "room";
20
+ roomId: string;
21
+ } | {
22
+ kind: "surface";
23
+ roomId: string;
24
+ surfaceId: string;
25
+ };
26
+ export interface AssertionProvenance {
27
+ /** The application, import or instrument that produced the observation. */
28
+ sourceSystem: string;
29
+ /** Version of the source data, prompt, fixture or export used when the evidence was observed. */
30
+ sourceSnapshotVersion: string;
31
+ sourceRecordId?: string;
32
+ sourceUrl?: string;
33
+ /** Optional id for the observation from which this assertion was proposed. */
34
+ observationId?: string;
35
+ }
36
+ interface SourceMeaning {
37
+ /** Source vocabulary field, before canonicalisation. */
38
+ sourceField: string;
39
+ /** Verbatim source value; never replaced by the canonical label. */
40
+ sourceValue: string;
41
+ /** Version of the source-specific mapping policy. */
42
+ crosswalkVersion: string;
43
+ /** Version of the canonical vocabulary against which mapping ran. */
44
+ taxonomySnapshotVersion: string;
45
+ }
46
+ export interface ResolvedAssertionMeaning extends SourceMeaning {
47
+ kind: "resolved";
48
+ canonical: CanonicalBundle;
49
+ }
50
+ export interface AmbiguousAssertionMeaning extends SourceMeaning {
51
+ kind: "ambiguous";
52
+ alternatives: CanonicalAlternatives;
53
+ }
54
+ export interface UnresolvedAssertionMeaning extends SourceMeaning {
55
+ kind: "unresolved";
56
+ }
57
+ export type AssertionMeaning = ResolvedAssertionMeaning | AmbiguousAssertionMeaning | UnresolvedAssertionMeaning;
58
+ interface PortableAssertionBase {
59
+ /** Stable application-owned identifier for this assertion event. */
60
+ id: string;
61
+ contractVersion: typeof TASTE_ASSERTION_CONTRACT_VERSION;
62
+ actorId: string;
63
+ /** Whose taste or project view the assertion describes; never inferred from actorId. */
64
+ subjectId: string;
65
+ /** Project context is explicit even when the assertion's scope is durable and personal. */
66
+ projectId: string;
67
+ authority: AssertionAuthority;
68
+ polarity: AssertionPolarity;
69
+ scope: AssertionScope;
70
+ meaning: AssertionMeaning;
71
+ provenance: AssertionProvenance;
72
+ observedAt: string;
73
+ confirmedAt?: string;
74
+ validFrom?: string;
75
+ validUntil?: string;
76
+ /** Logical withdrawal is append-only; physical privacy deletion is an application concern. */
77
+ retractedAt?: string;
78
+ supersedesAssertionId?: string;
79
+ }
80
+ export interface TasteAssertion extends PortableAssertionBase {
81
+ role: "taste";
82
+ }
83
+ export interface ProjectContextAssertion extends PortableAssertionBase {
84
+ role: "project_context";
85
+ }
86
+ export type RequirementOperator = "equals" | "not_equals" | "at_least" | "at_most" | "includes" | "excludes";
87
+ export interface RequirementConstraint {
88
+ operator: RequirementOperator;
89
+ value: boolean | number | string;
90
+ unit?: string;
91
+ }
92
+ export interface RequirementAssertion extends PortableAssertionBase {
93
+ role: "requirement";
94
+ /** The dimension is canonical meaning; the source-owned required value remains typed here. */
95
+ constraint: RequirementConstraint;
96
+ }
97
+ /** Portable evidence semantics only. Ranking weights and serving policy belong to each consumer. */
98
+ export type PortableTasteAssertion = TasteAssertion | ProjectContextAssertion | RequirementAssertion;
99
+ export interface PortableAssertionTestVector {
100
+ assertion: PortableTasteAssertion;
101
+ id: string;
102
+ expected: {
103
+ actorId: string;
104
+ subjectId: string;
105
+ projectId: string;
106
+ role: AssertionRole;
107
+ meaningKind: AssertionMeaning["kind"];
108
+ };
109
+ }
110
+ /** Executable fixtures for consumers serialising the portable envelope in another repository. */
111
+ export declare const PORTABLE_ASSERTION_TEST_VECTORS: readonly PortableAssertionTestVector[];
112
+ export {};