@bedrock-engineer/bro-xml-parser 0.3.0 → 0.5.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/README.md +21 -12
  2. package/dist/browser.d.ts +15 -5
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +7 -5
  5. package/dist/browser.js.map +1 -1
  6. package/dist/core/columns.d.ts +80 -0
  7. package/dist/core/columns.d.ts.map +1 -0
  8. package/dist/core/columns.js +100 -0
  9. package/dist/core/columns.js.map +1 -0
  10. package/dist/core/producer.d.ts +216 -0
  11. package/dist/core/producer.d.ts.map +1 -0
  12. package/dist/core/producer.js +85 -0
  13. package/dist/core/producer.js.map +1 -0
  14. package/dist/core/schema-parser.d.ts +41 -17
  15. package/dist/core/schema-parser.d.ts.map +1 -1
  16. package/dist/core/schema-parser.js +178 -73
  17. package/dist/core/schema-parser.js.map +1 -1
  18. package/dist/core/version-detector.d.ts +3 -1
  19. package/dist/core/version-detector.d.ts.map +1 -1
  20. package/dist/core/version-detector.js +37 -0
  21. package/dist/core/version-detector.js.map +1 -1
  22. package/dist/decoders/constants.d.ts +2 -0
  23. package/dist/decoders/constants.d.ts.map +1 -0
  24. package/dist/decoders/constants.js +2 -0
  25. package/dist/decoders/constants.js.map +1 -0
  26. package/dist/decoders/type-decoders.d.ts +38 -0
  27. package/dist/decoders/type-decoders.d.ts.map +1 -0
  28. package/dist/decoders/type-decoders.js +134 -0
  29. package/dist/decoders/type-decoders.js.map +1 -0
  30. package/dist/namespaces.d.ts.map +1 -1
  31. package/dist/namespaces.js +16 -0
  32. package/dist/namespaces.js.map +1 -1
  33. package/dist/node.d.ts +15 -5
  34. package/dist/node.d.ts.map +1 -1
  35. package/dist/node.js +7 -5
  36. package/dist/node.js.map +1 -1
  37. package/dist/parser.d.ts +69 -19
  38. package/dist/parser.d.ts.map +1 -1
  39. package/dist/parser.js +103 -29
  40. package/dist/parser.js.map +1 -1
  41. package/dist/producers.d.ts +36 -0
  42. package/dist/producers.d.ts.map +1 -0
  43. package/dist/producers.js +35 -0
  44. package/dist/producers.js.map +1 -0
  45. package/dist/resolvers/gld-resolvers.d.ts +30 -0
  46. package/dist/resolvers/gld-resolvers.d.ts.map +1 -0
  47. package/dist/resolvers/gld-resolvers.js +76 -0
  48. package/dist/resolvers/gld-resolvers.js.map +1 -0
  49. package/dist/resolvers/gmw-resolvers.d.ts +37 -0
  50. package/dist/resolvers/gmw-resolvers.d.ts.map +1 -0
  51. package/dist/resolvers/gmw-resolvers.js +101 -0
  52. package/dist/resolvers/gmw-resolvers.js.map +1 -0
  53. package/dist/resolvers.d.ts +2 -0
  54. package/dist/resolvers.d.ts.map +1 -1
  55. package/dist/resolvers.js +4 -0
  56. package/dist/resolvers.js.map +1 -1
  57. package/dist/schema-presets.d.ts +67 -16
  58. package/dist/schema-presets.d.ts.map +1 -1
  59. package/dist/schema-presets.js +51 -114
  60. package/dist/schema-presets.js.map +1 -1
  61. package/dist/schemas/bhrg-schema.d.ts +528 -9
  62. package/dist/schemas/bhrg-schema.d.ts.map +1 -1
  63. package/dist/schemas/bhrg-schema.js +330 -189
  64. package/dist/schemas/bhrg-schema.js.map +1 -1
  65. package/dist/schemas/bhrgt-analysis.d.ts +1057 -0
  66. package/dist/schemas/bhrgt-analysis.d.ts.map +1 -0
  67. package/dist/schemas/bhrgt-analysis.js +454 -0
  68. package/dist/schemas/bhrgt-analysis.js.map +1 -0
  69. package/dist/schemas/bore-schema.d.ts +773 -9
  70. package/dist/schemas/bore-schema.d.ts.map +1 -1
  71. package/dist/schemas/bore-schema.js +344 -292
  72. package/dist/schemas/bore-schema.js.map +1 -1
  73. package/dist/schemas/common-fields.d.ts +50 -5
  74. package/dist/schemas/common-fields.d.ts.map +1 -1
  75. package/dist/schemas/common-fields.js +70 -19
  76. package/dist/schemas/common-fields.js.map +1 -1
  77. package/dist/schemas/cpt-schema.d.ts +126 -9
  78. package/dist/schemas/cpt-schema.d.ts.map +1 -1
  79. package/dist/schemas/cpt-schema.js +182 -285
  80. package/dist/schemas/cpt-schema.js.map +1 -1
  81. package/dist/schemas/generated/gld.generated.d.ts +9 -0
  82. package/dist/schemas/generated/gld.generated.d.ts.map +1 -0
  83. package/dist/schemas/generated/gld.generated.js +19 -0
  84. package/dist/schemas/generated/gld.generated.js.map +1 -0
  85. package/dist/schemas/gld-schema.d.ts +92 -0
  86. package/dist/schemas/gld-schema.d.ts.map +1 -0
  87. package/dist/schemas/gld-schema.js +88 -0
  88. package/dist/schemas/gld-schema.js.map +1 -0
  89. package/dist/schemas/gmw-schema.d.ts +180 -0
  90. package/dist/schemas/gmw-schema.d.ts.map +1 -0
  91. package/dist/schemas/gmw-schema.js +131 -0
  92. package/dist/schemas/gmw-schema.js.map +1 -0
  93. package/dist/types/index.d.ts +51 -1421
  94. package/dist/types/index.d.ts.map +1 -1
  95. package/dist/types/index.js.map +1 -1
  96. package/package.json +1 -1
@@ -1,193 +1,334 @@
1
1
  /**
2
- * BHR-G (Geological Borehole) schema definition
2
+ * BHR-G (Geologische boring / geological borehole) schema.
3
3
  *
4
- * Defines metadata fields for BHR-G data following BRO structure.
5
- * Each field specifies:
6
- * - xpath: location in XML document
7
- * - resolver: function to convert/parse value (optional)
8
- * - attribute: which property to extract (optional, defaults to textContent)
9
- * - required: whether field is mandatory (optional, defaults to false)
4
+ * Maps the dsbhrg/3.1 registration object to {@link BHRGData}. The bulk is the
5
+ * descriptive borehole log: an array of soil layers, each carrying a large
6
+ * flattened soil surface plus nested sub-structures (Munsell colour,
7
+ * sand/shell/gravel/peat fractions, fraction distribution, chunks, mottles, thin
8
+ * strata). Optional soil codes that should be *absent* (not `null`) when
9
+ * unspecified use `presence: "omit"`; repeatable code lists use an array with
10
+ * `presence: "omit"` so the key appears only when non-empty.
11
+ *
12
+ * Field coverage is verified against the official XSD with
13
+ * `npm run check:xsd-coverage`.
10
14
  */
11
- import { COMMON_REGISTRATION_FIELDS } from "./common-fields.js";
12
- import * as typeResolvers from "../resolvers/type-resolvers.js";
13
- import * as gmlResolvers from "../resolvers/gml-resolvers.js";
14
- import * as bhrgResolvers from "../resolvers/bhrg-resolvers.js";
15
- import { processRegistrationHistory } from "../resolvers/bore-resolver-utils.js";
16
- export const BHRG_SCHEMA = {
17
- // === Core Identification (shared brocom fields) ===
18
- ...COMMON_REGISTRATION_FIELDS,
19
- // === Dates ===
20
- researchReportDate: {
21
- xpath: "./dsbhrg:researchReportDate",
22
- resolver: typeResolvers.parseDate,
23
- },
24
- // === Location ===
25
- deliveredLocation: {
26
- xpath: "./dsbhrg:deliveredLocation/bhrgcom:location",
27
- resolver: gmlResolvers.parseGMLLocation,
28
- },
29
- standardizedLocation: {
30
- xpath: "./dsbhrg:standardizedLocation/brocom:location",
31
- resolver: gmlResolvers.parseGMLLocation,
32
- },
33
- // === Vertical Position ===
34
- deliveredVerticalPositionOffset: {
35
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:offset",
36
- resolver: typeResolvers.parseFloat,
37
- },
38
- deliveredVerticalPositionDatum: {
39
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalDatum",
40
- },
41
- deliveredVerticalPositionReferencePoint: {
42
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:localVerticalReferencePoint",
43
- },
44
- waterDepth: {
45
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:waterDepth",
46
- resolver: typeResolvers.parseFloat,
47
- },
48
- verticalPositioningDate: {
49
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalPositioningDate",
50
- resolver: typeResolvers.parseDate,
51
- },
52
- verticalPositioningMethod: {
53
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalPositioningMethod",
54
- },
55
- verticalPositioningOperator: {
56
- xpath: "./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalPositioningOperator",
57
- },
58
- // === Site Characteristic ===
59
- landscapeElement: {
60
- xpath: "./dsbhrg:siteCharacteristic/bhrgcom:landscapeElement",
61
- },
62
- hydrologicalSetting: {
63
- xpath: "./dsbhrg:siteCharacteristic/bhrgcom:hydrologicalSetting",
64
- },
65
- currentProcess: {
66
- xpath: "./dsbhrg:siteCharacteristic/bhrgcom:currentProcess",
67
- },
68
- // === Boring Metadata ===
69
- descriptionProcedure: {
70
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptionProcedure",
71
- },
72
- utensil: {
73
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:utensil",
74
- },
75
- boreRockReached: {
76
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:rockReached",
77
- resolver: typeResolvers.parseBoolean,
78
- },
79
- finalBoreDepth: {
80
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:finalDepthBoring",
81
- resolver: typeResolvers.parseFloat,
82
- },
83
- finalSampleDepth: {
84
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:finalDepthSampling",
85
- resolver: typeResolvers.parseFloat,
86
- },
87
- boreHoleCompleted: {
88
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:boreholeCompleted",
89
- },
90
- // === Boring Execution Details ===
91
- boringStartDate: {
92
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:boringStartDate",
93
- resolver: typeResolvers.parseDate,
94
- },
95
- boringEndDate: {
96
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:boringEndDate",
97
- resolver: typeResolvers.parseDate,
98
- },
99
- boringProcedure: {
100
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:boringProcedure",
101
- },
102
- boringTechnique: {
103
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:boredInterval/bhrgcom:BoredInterval/bhrgcom:boringTechnique",
104
- },
105
- trajectoryExcavated: {
106
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:trajectoryExcavated",
107
- resolver: typeResolvers.parseBoolean,
108
- },
109
- subsurfaceContaminated: {
110
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:subsurfaceContaminated",
111
- resolver: typeResolvers.parseBoolean,
112
- },
113
- stopCriterion: {
114
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:stopCriterion",
115
- },
116
- flushingAdditiveUsed: {
117
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:flushingAdditiveUsed",
118
- },
119
- // === Sampling Details ===
120
- samplingProcedure: {
121
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:samplingProcedure",
122
- },
123
- samplingMethod: {
124
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:sampledInterval/bhrgcom:SampledInterval/bhrgcom:samplingMethod",
125
- },
126
- samplingQuality: {
127
- xpath: "./dsbhrg:boring/bhrgcom:Boring/bhrgcom:sampledInterval/bhrgcom:SampledInterval/bhrgcom:samplingQuality",
128
- },
129
- // === Description Metadata ===
130
- descriptionQuality: {
131
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog/bhrgcom:descriptionQuality",
132
- },
133
- describedSamplesQuality: {
134
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog/bhrgcom:describedSamplesQuality",
135
- },
136
- descriptionLocation: {
137
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog/bhrgcom:descriptionLocation",
138
- },
139
- descriptionReportDate: {
140
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptionReportDate",
141
- resolver: typeResolvers.parseDate,
142
- },
143
- describedMaterial: {
144
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog/bhrgcom:describedMaterial",
145
- },
146
- continuouslySampled: {
147
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog/bhrgcom:continuouslySampled",
148
- resolver: typeResolvers.parseBoolean,
149
- },
150
- sampleMoistness: {
151
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog/bhrgcom:sampleMoistness",
152
- },
153
- // === Layer Data ===
154
- data: {
155
- xpath: "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog",
156
- resolver: bhrgResolvers.processBHRGLayerData,
157
- },
158
- // === Boring Interval Arrays ===
159
- boredIntervals: {
160
- xpath: ".", // Use current context - resolver will find all bored intervals
161
- resolver: bhrgResolvers.processBHRGBoredIntervals,
162
- },
163
- sampledIntervals: {
164
- xpath: ".", // Use current context - resolver will find all sampled intervals
165
- resolver: bhrgResolvers.processBHRGSampledIntervals,
166
- },
167
- // === Administrative History ===
168
- registrationHistory: {
169
- xpath: ".", // Use current context - resolver will find registration history
170
- resolver: processRegistrationHistory,
171
- },
172
- reportHistory: {
173
- xpath: ".", // Use current context - resolver will find report history
174
- resolver: bhrgResolvers.processBHRGReportHistory,
175
- },
176
- // === Additional Top-Level Metadata ===
177
- deliveryContext: {
178
- xpath: "./dsbhrg:deliveryContext",
179
- },
180
- surveyPurpose: {
181
- xpath: "./dsbhrg:surveyPurpose",
182
- },
183
- discipline: {
184
- xpath: "./dsbhrg:discipline",
185
- },
186
- surveyProcedure: {
187
- xpath: "./dsbhrg:surveyProcedure",
188
- },
189
- nitgCode: {
190
- xpath: "./dsbhrg:NITGCode",
191
- },
192
- };
15
+ import { object, array, text, date, number, boolean } from "../core/producer.js";
16
+ import { COMMON_REGISTRATION_PRODUCERS, REGISTRATION_HISTORY, gmlLocation, } from "./common-fields.js";
17
+ const REQUIRED = { presence: "required" };
18
+ const OMIT = { presence: "omit" };
19
+ /** Mount an object/array producer at a relative path, keyed only when present. */
20
+ function optional(producer, at) {
21
+ return { ...producer, at, presence: "omit" };
22
+ }
23
+ /** A repeatable code list: array of the matched elements' text, omitted if empty. */
24
+ function codeList(each) {
25
+ return array({ each, item: text(), presence: "omit" });
26
+ }
27
+ // === Nested soil sub-structures (fields relative to each sub-structure node) ===
28
+ const MUNSELL_COLOUR = object({
29
+ fields: {
30
+ munsellHue: text("./bhrgcom:munsellHue"),
31
+ munsellValue: text("./bhrgcom:munsellValue"),
32
+ munsellChroma: text("./bhrgcom:munsellChroma"),
33
+ },
34
+ });
35
+ const SAND_FRACTION = object({
36
+ fields: {
37
+ darkGrainContentClass: text("./bhrgcom:darkGrainContentClass"),
38
+ darkGrainContentClassArchive: text("./bhrgcom:darkGrainContentClassArchive"),
39
+ angularity: text("./bhrgcom:angularity"),
40
+ sandMedianClass: text("./bhrgcom:sandMedianClass"),
41
+ sandSorting: text("./bhrgcom:sandSorting"),
42
+ variegation: text("./bhrgcom:variegation"),
43
+ anomalouslyCoarseContentClass: text("./bhrgcom:anomalouslyCoarseContentClass"),
44
+ anomalouslyCoarseContentClassArchive: text("./bhrgcom:anomalouslyCoarseContentClassArchive"),
45
+ granuleContentClass: text("./bhrgcom:granuleContentClass"),
46
+ granuleContentClassArchive: text("./bhrgcom:granuleContentClassArchive"),
47
+ estimatedMedian: number("./bhrgcom:estimatedMedian"),
48
+ sandConstituents: array({
49
+ each: "./bhrgcom:sandConstituent",
50
+ item: object({
51
+ fields: {
52
+ grainColour: text("./bhrgcom:grainColour"),
53
+ percentageClass: text("./bhrgcom:percentageClass"),
54
+ archiveClass: text("./bhrgcom:archiveClass"),
55
+ },
56
+ }),
57
+ }),
58
+ },
59
+ });
60
+ const SHELL_FRACTION = object({
61
+ fields: {
62
+ gritContentClass: text("./bhrgcom:gritContentClass"),
63
+ fragmentContentClass: text("./bhrgcom:fragmentContentClass"),
64
+ remainsContentClass: text("./bhrgcom:remainsContentClass"),
65
+ wholeContentClass: text("./bhrgcom:wholeContentClass"),
66
+ doublets: text("./bhrgcom:doublets"),
67
+ thickWalledContentClass: text("./bhrgcom:thickWalledContentClass"),
68
+ thinWalledContentClass: text("./bhrgcom:thinWalledContentClass"),
69
+ inSitu: text("./bhrgcom:inSitu"),
70
+ weatheringDegree: text("./bhrgcom:weatheringDegree"),
71
+ shellConstituents: array({
72
+ each: "./bhrgcom:shellConstituent",
73
+ item: object({
74
+ fields: {
75
+ shellTaxon: text("./bhrgcom:shellTaxon"),
76
+ relativeAbundance: text("./bhrgcom:relativeAbundance"),
77
+ relativeAbundanceClass: text("./bhrgcom:relativeAbundanceClass"),
78
+ relativeAbundanceClassArchive: text("./bhrgcom:relativeAbundanceClassArchive"),
79
+ },
80
+ }),
81
+ }),
82
+ },
83
+ });
84
+ const GRAVEL_FRACTION = object({
85
+ fields: {
86
+ gravelMedianClass: text("./bhrgcom:gravelMedianClass"),
87
+ angularity: text("./bhrgcom:angularity"),
88
+ fineGravelContentClass: text("./bhrgcom:fineGravelContentClass"),
89
+ mediumCoarseGravelContentClass: text("./bhrgcom:mediumCoarseGravelContentClass"),
90
+ veryCoarseGravelContentClass: text("./bhrgcom:veryCoarseGravelContentClass"),
91
+ ventifactPresent: text("./bhrgcom:ventifactPresent"),
92
+ sphericity: text("./bhrgcom:sphericity"),
93
+ variegation: text("./bhrgcom:variegation"),
94
+ gravelProvenance: text("./bhrgcom:gravelProvenance"),
95
+ estimatedMedian: number("./bhrgcom:estimatedMedian"),
96
+ gravelConstituents: array({
97
+ each: "./bhrgcom:gravelConstituent",
98
+ item: object({
99
+ fields: {
100
+ gravelType: text("./bhrgcom:gravelType"),
101
+ fractionProportion: number("./bhrgcom:fractionProportion"),
102
+ archiveClass: text("./bhrgcom:archiveClass"),
103
+ },
104
+ }),
105
+ }),
106
+ },
107
+ });
108
+ const PEAT_FRACTION = object({
109
+ fields: {
110
+ peatType: text("./bhrgcom:peatType"),
111
+ peatConstituents: array({
112
+ each: "./bhrgcom:peatConstituent",
113
+ item: object({
114
+ fields: {
115
+ plantRemainType: text("./bhrgcom:plantRemainType"),
116
+ percentageClass: text("./bhrgcom:percentageClass"),
117
+ archiveClass: text("./bhrgcom:archiveClass"),
118
+ },
119
+ }),
120
+ }),
121
+ },
122
+ });
123
+ const FRACTION_DISTRIBUTION = object({
124
+ fields: {
125
+ fractionDistributionComplete: text("./bhrgcom:fractionDistributionComplete"),
126
+ estimatedMassProportionOrganicMatter: number("./bhrgcom:estimatedMassProportionOrganicMatter"),
127
+ estimatedMassProportionShellMatter: number("./bhrgcom:estimatedMassProportionShellMatter"),
128
+ estimatedVolumeProportionShellMatter: number("./bhrgcom:estimatedVolumeProportionShellMatter"),
129
+ estimatedMassProportionShell: number("./bhrgcom:estimatedMassProportionShell"),
130
+ estimatedMassProportionGravel: number("./bhrgcom:estimatedMassProportionGravel"),
131
+ estimatedVolumeProportionGravel: number("./bhrgcom:estimatedVolumeProportionGravel"),
132
+ fineFractionDistributionOrganicSoil: optional(object({
133
+ fields: {
134
+ estimatedMassProportionSand: number("./bhrgcom:estimatedMassProportionSand"),
135
+ estimatedMassProportionSilt: number("./bhrgcom:estimatedMassProportionSilt"),
136
+ estimatedMassProportionLutum: number("./bhrgcom:estimatedMassProportionLutum"),
137
+ },
138
+ }), "./bhrgcom:fineFractionDistributionOrganicSoil"),
139
+ fineFractionDistributionShellySoil: optional(object({
140
+ fields: {
141
+ estimatedVolumeProportionSand: number("./bhrgcom:estimatedVolumeProportionSand"),
142
+ estimatedVolumeProportionSilt: number("./bhrgcom:estimatedVolumeProportionSilt"),
143
+ estimatedVolumeProportionLutum: number("./bhrgcom:estimatedVolumeProportionLutum"),
144
+ },
145
+ }), "./bhrgcom:fineFractionDistributionShellySoil"),
146
+ },
147
+ });
148
+ const THIN_STRATUM = object({
149
+ fields: {
150
+ layerProportion: number("./bhrgcom:layerProportion"),
151
+ layerProportionClass: text("./bhrgcom:layerProportionClass"),
152
+ layerProportionClassArchive: text("./bhrgcom:layerProportionClassArchive"),
153
+ stratumThicknessClass: text("./bhrgcom:stratumThicknessClass"),
154
+ geologicalOrigin: text("./bhrgcom:geologicalOrigin"),
155
+ },
156
+ });
157
+ const CHUNK = object({
158
+ fields: {
159
+ soilType: text("./bhrgcom:soilType"),
160
+ sizeClass: text("./bhrgcom:sizeClass"),
161
+ percentageClass: text("./bhrgcom:percentageClass"),
162
+ archiveClass: text("./bhrgcom:archiveClass"),
163
+ colour: text("./bhrgcom:colour"),
164
+ geologicalOrigin: text("./bhrgcom:geologicalOrigin"),
165
+ cemented: text("./bhrgcom:cemented"),
166
+ },
167
+ });
168
+ const MOTTLE = object({
169
+ fields: {
170
+ colour: text("./bhrgcom:colour"),
171
+ density: text("./bhrgcom:density"),
172
+ inBands: text("./bhrgcom:inBands"),
173
+ },
174
+ });
175
+ // === One descriptive-log layer (fields relative to bhrgcom:Layer) ===
176
+ const LAYER = object({
177
+ fields: {
178
+ upperBoundary: number("./bhrgcom:upperBoundary", REQUIRED),
179
+ lowerBoundary: number("./bhrgcom:lowerBoundary", REQUIRED),
180
+ soilNameNEN5104: text("./bhrgcom:soil/bhrgcom:soilNameNEN5104", REQUIRED),
181
+ // Layer-level (outside <soil>)
182
+ upperBoundaryDetermination: text("./bhrgcom:upperBoundaryDetermination"),
183
+ lowerBoundaryDetermination: text("./bhrgcom:lowerBoundaryDetermination"),
184
+ anthropogenic: text("./bhrgcom:anthropogenic"),
185
+ rooted: text("./bhrgcom:rooted"),
186
+ postSedimentary: text("./bhrgcom:postSedimentary", OMIT),
187
+ horizonCode: text("./bhrgcom:horizonCode", OMIT),
188
+ humanTrace: text("./bhrgcom:humanTrace", OMIT),
189
+ geologicalOrigin: text("./bhrgcom:geologicalOrigin", OMIT),
190
+ bioturbated: text("./bhrgcom:bioturbated", OMIT),
191
+ structure: codeList("./bhrgcom:structure"),
192
+ verticalTrend: codeList("./bhrgcom:verticalTrend"),
193
+ archeologicalConstituents: codeList("./bhrgcom:archeologicalConstituent/bhrgcom:constituentType"),
194
+ thinStrata: array({ each: "./bhrgcom:thinStratum", item: THIN_STRATUM, presence: "omit" }),
195
+ // Soil-level (inside <soil>)
196
+ color: text("./bhrgcom:soil/bhrgcom:colour", OMIT),
197
+ organicMatterContentClassNEN5104: text("./bhrgcom:soil/bhrgcom:organicMatterContentClassNEN5104"),
198
+ gravelContentClass: text("./bhrgcom:soil/bhrgcom:gravelContentClass"),
199
+ carbonateContentClass: text("./bhrgcom:soil/bhrgcom:carbonateContentClass"),
200
+ sandMedianClass: text("./bhrgcom:soil/bhrgcom:sandMedianClass"),
201
+ geologicalSoilName: text("./bhrgcom:soil/bhrgcom:geologicalSoilName", OMIT),
202
+ shellMatterContentClass: text("./bhrgcom:soil/bhrgcom:shellMatterContentClass", OMIT),
203
+ micaContentClass: text("./bhrgcom:soil/bhrgcom:micaContentClass", OMIT),
204
+ micaContentClassArchive: text("./bhrgcom:soil/bhrgcom:micaContentClassArchive", OMIT),
205
+ shellMatterContentClassArchive: text("./bhrgcom:soil/bhrgcom:shellMatterContentClassArchive", OMIT),
206
+ glauconiteContentClass: text("./bhrgcom:soil/bhrgcom:glauconiteContentClass", OMIT),
207
+ glauconiteContentClassArchive: text("./bhrgcom:soil/bhrgcom:glauconiteContentClassArchive", OMIT),
208
+ sedimentaryPhenomenon: text("./bhrgcom:soil/bhrgcom:sedimentaryPhenomenon", OMIT),
209
+ veryCoarseFractionContentClass: codeList("./bhrgcom:soil/bhrgcom:veryCoarseFractionContentClass"),
210
+ veryCoarseFractionContentClassArchive: codeList("./bhrgcom:soil/bhrgcom:veryCoarseFractionContentClassArchive"),
211
+ animalFossils: codeList("./bhrgcom:soil/bhrgcom:animalFossil/bhrgcom:animalFossilType"),
212
+ // Nested soil sub-structures (present only when the node exists)
213
+ munsellColour: optional(MUNSELL_COLOUR, "./bhrgcom:soil/bhrgcom:munsellColour"),
214
+ sandFraction: optional(SAND_FRACTION, "./bhrgcom:soil/bhrgcom:sandFraction"),
215
+ shellFraction: optional(SHELL_FRACTION, "./bhrgcom:soil/bhrgcom:shellFraction"),
216
+ gravelFraction: optional(GRAVEL_FRACTION, "./bhrgcom:soil/bhrgcom:gravelFraction"),
217
+ peatFraction: optional(PEAT_FRACTION, "./bhrgcom:soil/bhrgcom:peatFraction"),
218
+ fractionDistribution: optional(FRACTION_DISTRIBUTION, "./bhrgcom:soil/bhrgcom:fractionDistribution"),
219
+ chunks: array({ each: "./bhrgcom:soil/bhrgcom:chunk", item: CHUNK, presence: "omit" }),
220
+ mottles: array({ each: "./bhrgcom:soil/bhrgcom:mottle", item: MOTTLE, presence: "omit" }),
221
+ },
222
+ });
223
+ const BORING = "./dsbhrg:boring/bhrgcom:Boring";
224
+ const SAMPLE_DESC = "./dsbhrg:boreholeSampleDescription/bhrgcom:BoreholeSampleDescription";
225
+ const LOG = `${SAMPLE_DESC}/bhrgcom:descriptiveBoreholeLog/bhrgcom:DescriptiveBoreholeLog`;
226
+ /** Report history: an event log; the first event's date stands in for start/end. */
227
+ /**
228
+ * Report history. BHR-G carries only an `event` list (no explicit report
229
+ * start/end), so both dates are taken from the first event via `event[1]`.
230
+ */
231
+ const REPORT_HISTORY = object({
232
+ at: "./dsbhrg:reportHistory",
233
+ fields: {
234
+ reportStartDate: date("./bhrgcom:event[1]/bhrgcom:date"),
235
+ reportEndDate: date("./bhrgcom:event[1]/bhrgcom:date"),
236
+ intermediateEvents: array({
237
+ each: "./bhrgcom:event",
238
+ item: object({
239
+ fields: {
240
+ eventName: text("./bhrgcom:name"),
241
+ eventDate: date("./bhrgcom:date"),
242
+ },
243
+ }),
244
+ }),
245
+ },
246
+ });
247
+ export const BHRG_PRODUCER = object({
248
+ fields: {
249
+ // === Core identification (shared brocom fields) ===
250
+ ...COMMON_REGISTRATION_PRODUCERS,
251
+ researchReportDate: date("./dsbhrg:researchReportDate"),
252
+ // === Location ===
253
+ deliveredLocation: gmlLocation("./dsbhrg:deliveredLocation/bhrgcom:location"),
254
+ standardizedLocation: gmlLocation("./dsbhrg:standardizedLocation/brocom:location"),
255
+ // === Vertical position ===
256
+ deliveredVerticalPositionOffset: number("./dsbhrg:deliveredVerticalPosition/bhrgcom:offset"),
257
+ deliveredVerticalPositionDatum: text("./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalDatum"),
258
+ deliveredVerticalPositionReferencePoint: text("./dsbhrg:deliveredVerticalPosition/bhrgcom:localVerticalReferencePoint"),
259
+ waterDepth: number("./dsbhrg:deliveredVerticalPosition/bhrgcom:waterDepth"),
260
+ verticalPositioningDate: date("./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalPositioningDate"),
261
+ verticalPositioningMethod: text("./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalPositioningMethod"),
262
+ verticalPositioningOperator: text("./dsbhrg:deliveredVerticalPosition/bhrgcom:verticalPositioningOperator"),
263
+ // === Site characteristic ===
264
+ landscapeElement: text("./dsbhrg:siteCharacteristic/bhrgcom:landscapeElement"),
265
+ hydrologicalSetting: text("./dsbhrg:siteCharacteristic/bhrgcom:hydrologicalSetting"),
266
+ currentProcess: text("./dsbhrg:siteCharacteristic/bhrgcom:currentProcess"),
267
+ // === Boring metadata ===
268
+ descriptionProcedure: text(`${SAMPLE_DESC}/bhrgcom:descriptionProcedure`),
269
+ utensil: text(`${SAMPLE_DESC}/bhrgcom:utensil`),
270
+ boreRockReached: boolean(`${BORING}/bhrgcom:rockReached`),
271
+ finalBoreDepth: number(`${BORING}/bhrgcom:finalDepthBoring`),
272
+ finalSampleDepth: number(`${BORING}/bhrgcom:finalDepthSampling`),
273
+ boreHoleCompleted: text(`${BORING}/bhrgcom:boreholeCompleted`),
274
+ // === Boring execution details ===
275
+ boringStartDate: date(`${BORING}/bhrgcom:boringStartDate`),
276
+ boringEndDate: date(`${BORING}/bhrgcom:boringEndDate`),
277
+ boringProcedure: text(`${BORING}/bhrgcom:boringProcedure`),
278
+ boringTechnique: text(`${BORING}/bhrgcom:boredInterval/bhrgcom:BoredInterval/bhrgcom:boringTechnique`),
279
+ trajectoryExcavated: boolean(`${BORING}/bhrgcom:trajectoryExcavated`),
280
+ subsurfaceContaminated: boolean(`${BORING}/bhrgcom:subsurfaceContaminated`),
281
+ stopCriterion: text(`${BORING}/bhrgcom:stopCriterion`),
282
+ flushingAdditiveUsed: text(`${BORING}/bhrgcom:flushingAdditiveUsed`),
283
+ // === Sampling details ===
284
+ samplingProcedure: text(`${BORING}/bhrgcom:samplingProcedure`),
285
+ samplingMethod: text(`${BORING}/bhrgcom:sampledInterval/bhrgcom:SampledInterval/bhrgcom:samplingMethod`),
286
+ samplingQuality: text(`${BORING}/bhrgcom:sampledInterval/bhrgcom:SampledInterval/bhrgcom:samplingQuality`),
287
+ // === Description metadata ===
288
+ descriptionQuality: text(`${LOG}/bhrgcom:descriptionQuality`),
289
+ describedSamplesQuality: text(`${LOG}/bhrgcom:describedSamplesQuality`),
290
+ descriptionLocation: text(`${LOG}/bhrgcom:descriptionLocation`),
291
+ descriptionReportDate: date(`${SAMPLE_DESC}/bhrgcom:descriptionReportDate`),
292
+ describedMaterial: text(`${LOG}/bhrgcom:describedMaterial`),
293
+ continuouslySampled: boolean(`${LOG}/bhrgcom:continuouslySampled`),
294
+ sampleMoistness: text(`${LOG}/bhrgcom:sampleMoistness`),
295
+ // === Layer data ===
296
+ data: array({ at: LOG, each: ".//bhrgcom:layer/bhrgcom:Layer", item: LAYER }),
297
+ // === Boring interval arrays ===
298
+ boredIntervals: array({
299
+ each: `${BORING}/bhrgcom:boredInterval/bhrgcom:BoredInterval`,
300
+ item: object({
301
+ fields: {
302
+ beginDepth: number("./bhrgcom:beginDepth", REQUIRED),
303
+ endDepth: number("./bhrgcom:endDepth", REQUIRED),
304
+ boringTechnique: text("./bhrgcom:boringTechnique"),
305
+ boredDiameter: number("./bhrgcom:boredDiameter"),
306
+ },
307
+ }),
308
+ }),
309
+ sampledIntervals: array({
310
+ each: `${BORING}/bhrgcom:sampledInterval/bhrgcom:SampledInterval`,
311
+ item: object({
312
+ fields: {
313
+ beginDepth: number("./bhrgcom:beginDepth", REQUIRED),
314
+ endDepth: number("./bhrgcom:endDepth", REQUIRED),
315
+ preTreatment: text("./bhrgcom:preTreatment"),
316
+ samplingMethod: text("./bhrgcom:samplingMethod"),
317
+ samplingQuality: text("./bhrgcom:samplingQuality"),
318
+ // Not present in BHR-G (only BHR-GT) — always null.
319
+ orientatedSampled: boolean("./bhrgcom:orientatedSampled"),
320
+ },
321
+ }),
322
+ }),
323
+ // === Administrative history ===
324
+ registrationHistory: REGISTRATION_HISTORY,
325
+ reportHistory: REPORT_HISTORY,
326
+ // === Additional top-level metadata ===
327
+ deliveryContext: text("./dsbhrg:deliveryContext"),
328
+ surveyPurpose: text("./dsbhrg:surveyPurpose"),
329
+ discipline: text("./dsbhrg:discipline"),
330
+ surveyProcedure: text("./dsbhrg:surveyProcedure"),
331
+ nitgCode: text("./dsbhrg:NITGCode"),
332
+ },
333
+ });
193
334
  //# sourceMappingURL=bhrg-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bhrg-schema.js","sourceRoot":"","sources":["../../src/schemas/bhrg-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bhrg-schema.js","sourceRoot":"","sources":["../../src/schemas/bhrg-schema.ts"],"names":[],"mappings":"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"}