@oml/owl 0.7.0 → 0.9.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.
@@ -1,7 +1,23 @@
1
1
  // Copyright (c) 2026 Modelware. All rights reserved.
2
- import { Parser as N3Parser, Store as N3Store } from 'n3';
3
- import SHACLValidator from 'rdf-validate-shacl';
2
+ import { DataFactory, Parser as N3Parser, Store as N3Store } from 'n3';
3
+ import { Validator as ShaclValidator } from 'shacl-engine';
4
+ import { targetResolvers as shaclSparqlTargetResolvers, validations as shaclSparqlValidations } from 'shacl-engine/sparql.js';
4
5
  export const ShaclValidateRequest = 'oml/table-editor/validate';
6
+ const SHACL_FACTORY = {
7
+ ...DataFactory,
8
+ literal: (value, languageOrDatatype) => languageOrDatatype === undefined || languageOrDatatype === null
9
+ ? DataFactory.literal(value)
10
+ : DataFactory.literal(value, languageOrDatatype),
11
+ dataset: () => new N3Store(),
12
+ };
13
+ const RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';
14
+ const SH_PROPERTY_SHAPE = 'http://www.w3.org/ns/shacl#PropertyShape';
15
+ const SH_DEACTIVATED = 'http://www.w3.org/ns/shacl#deactivated';
16
+ const SH_NAME = 'http://www.w3.org/ns/shacl#name';
17
+ const SH_PATH = 'http://www.w3.org/ns/shacl#path';
18
+ const SH_PROPERTY = 'http://www.w3.org/ns/shacl#property';
19
+ const SH_TARGET_CLASS = 'http://www.w3.org/ns/shacl#targetClass';
20
+ const SH_TARGET_NODE = 'http://www.w3.org/ns/shacl#targetNode';
5
21
  export class ShaclService {
6
22
  constructor(sparqlService, prepareContext, resolveContextIri) {
7
23
  this.sparqlService = sparqlService;
@@ -57,18 +73,22 @@ export class ShaclService {
57
73
  const propertyNameByPath = collectShaclPropertyDisplayNames(shapeQuads);
58
74
  const shapesDataset = new N3Store(shapeQuads);
59
75
  const dataDataset = new N3Store(constructResult.quads);
60
- const validator = new SHACLValidator(shapesDataset);
61
- const report = await validator.validate(dataDataset);
76
+ const validator = new ShaclValidator(shapesDataset, {
77
+ factory: SHACL_FACTORY,
78
+ targetResolvers: shaclSparqlTargetResolvers,
79
+ validations: shaclSparqlValidations,
80
+ });
81
+ const report = await validator.validate({ dataset: dataDataset });
62
82
  const rawResults = Array.isArray(report?.results) ? report.results : [];
63
83
  const issues = rawResults.map((result) => {
64
- const path = formatValidationField(result?.path);
84
+ const path = formatValidationPath(result?.path);
65
85
  return {
66
86
  message: formatValidationField(result?.message) || 'Validation issue.',
67
- focusNode: formatValidationField(result?.focusNode),
87
+ focusNode: formatValidationField(result?.focusNode?.term ?? result?.focusNode),
68
88
  path,
69
89
  propertyName: path ? propertyNameByPath.get(path) : undefined,
70
90
  severity: formatValidationField(result?.severity),
71
- source: formatValidationField(result?.sourceConstraintComponent ?? result?.sourceShape),
91
+ source: formatValidationField(result?.constraintComponent ?? result?.shape?.ptr?.term),
72
92
  };
73
93
  });
74
94
  return {
@@ -108,46 +128,21 @@ export function registerShaclValidationRequests(connection, oml) {
108
128
  });
109
129
  }
110
130
  export function deriveSelectQueryFromShacl(shaclSource, graphIri) {
111
- let shapesStore;
131
+ let shapeQuads;
112
132
  try {
113
133
  const parser = new N3Parser({ format: 'text/turtle' });
114
- const quads = parser.parse(shaclSource);
115
- shapesStore = new N3Store(quads);
134
+ shapeQuads = parser.parse(shaclSource);
116
135
  }
117
136
  catch {
118
137
  return undefined;
119
138
  }
120
- const validator = new SHACLValidator(shapesStore);
121
- const { sh } = validator.ns;
122
- const shapesGraph = validator.shapesGraph;
123
- const nodeShape = shapesGraph.shapesWithTarget.find((shape) => !shape.isPropertyShape && !shape.deactivated);
139
+ const nodeShape = parsePrimaryNodeShape(shapeQuads);
124
140
  if (!nodeShape) {
125
141
  return undefined;
126
142
  }
127
- const targetClassTerms = nodeShape.shapeNodePointer.out(sh.targetClass).terms;
128
- const targetClasses = targetClassTerms.filter((term) => term.termType === 'NamedNode');
129
- const targetNodes = nodeShape.shapeNodePointer.out(sh.targetNode).terms;
130
- if (targetClasses.length === 0 && targetNodes.length === 0) {
131
- return undefined;
132
- }
133
- const propertyShapeTerms = nodeShape.shapeNodePointer.out(sh.property).terms;
134
- const columns = [];
135
- for (const propertyShapeTerm of propertyShapeTerms) {
136
- const propertyShape = shapesGraph.getShape(propertyShapeTerm);
137
- if (propertyShape.deactivated) {
138
- continue;
139
- }
140
- const path = propertyShape.pathObject;
141
- if (!isRdfTerm(path) || path.termType !== 'NamedNode') {
142
- continue;
143
- }
144
- const nameTerm = propertyShape.shapeNodePointer.out(sh.name).term;
145
- const name = nameTerm && nameTerm.termType === 'Literal' ? nameTerm.value : undefined;
146
- columns.push({ path, name });
147
- }
148
143
  const usedNames = new Set(['focus']);
149
- const variables = columns.map((column) => {
150
- const base = normalizeSparqlVariableName(column.name || localName(column.path.value) || 'value');
144
+ const variables = nodeShape.columns.map((column) => {
145
+ const base = normalizeSparqlVariableName(column.name || localName(column.path) || 'value');
151
146
  const unique = uniqueVariableName(base, usedNames);
152
147
  usedNames.add(unique);
153
148
  const sourceVariable = uniqueVariableName(`__${unique}`, usedNames);
@@ -165,17 +160,17 @@ export function deriveSelectQueryFromShacl(shaclSource, graphIri) {
165
160
  ].join(' ');
166
161
  const whereLines = [];
167
162
  const graphLines = [];
168
- if (targetClasses.length > 0) {
169
- const values = targetClasses.map((term) => `<${term.value}>`).join(' ');
163
+ if (nodeShape.targetClasses.length > 0) {
164
+ const values = nodeShape.targetClasses.map((term) => `<${term.value}>`).join(' ');
170
165
  whereLines.push(` VALUES ?__targetClass { ${values} }`);
171
166
  graphLines.push(' ?focus a ?__targetClass .');
172
167
  }
173
- if (targetNodes.length > 0) {
174
- const values = targetNodes.map((term) => termToSparql(term)).join(' ');
168
+ if (nodeShape.targetNodes.length > 0) {
169
+ const values = nodeShape.targetNodes.map((term) => termToSparql(term)).join(' ');
175
170
  whereLines.push(` VALUES ?focus { ${values} }`);
176
171
  }
177
172
  for (const entry of variables) {
178
- graphLines.push(` OPTIONAL { ?focus <${entry.path.value}> ?${entry.sourceVariable} . }`);
173
+ graphLines.push(` OPTIONAL { ?focus <${entry.path}> ?${entry.sourceVariable} . }`);
179
174
  }
180
175
  whereLines.push(` GRAPH <${escapeIriForSparql(graphIri)}> {`);
181
176
  whereLines.push(...graphLines);
@@ -214,6 +209,80 @@ function buildValidationConstructQuery(contextIri) {
214
209
  '}',
215
210
  ].join('\n');
216
211
  }
212
+ function parsePrimaryNodeShape(shapeQuads) {
213
+ const shapesStore = new N3Store([...shapeQuads]);
214
+ const targetSubjects = collectSubjectsWithTargets(shapeQuads);
215
+ for (const shapeTerm of targetSubjects) {
216
+ if (isDeactivatedShape(shapesStore, shapeTerm) || isPropertyShape(shapesStore, shapeTerm)) {
217
+ continue;
218
+ }
219
+ const targetClasses = getObjects(shapesStore, shapeTerm, SH_TARGET_CLASS)
220
+ .filter((term) => term.termType === 'NamedNode');
221
+ const targetNodes = getObjects(shapesStore, shapeTerm, SH_TARGET_NODE);
222
+ if (targetClasses.length === 0 && targetNodes.length === 0) {
223
+ continue;
224
+ }
225
+ const columns = getObjects(shapesStore, shapeTerm, SH_PROPERTY)
226
+ .filter((term) => term.termType === 'NamedNode' || term.termType === 'BlankNode')
227
+ .filter((term) => !isDeactivatedShape(shapesStore, term))
228
+ .map((term) => {
229
+ const path = getFirstObject(shapesStore, term, SH_PATH);
230
+ if (!path || path.termType !== 'NamedNode') {
231
+ return undefined;
232
+ }
233
+ const nameTerm = getFirstObject(shapesStore, term, SH_NAME);
234
+ return {
235
+ path: path.value,
236
+ name: nameTerm && nameTerm.termType === 'Literal' ? nameTerm.value : undefined,
237
+ };
238
+ })
239
+ .filter((column) => Boolean(column));
240
+ return {
241
+ targetClasses,
242
+ targetNodes,
243
+ columns,
244
+ };
245
+ }
246
+ return undefined;
247
+ }
248
+ function collectSubjectsWithTargets(shapeQuads) {
249
+ const seen = new Set();
250
+ const subjects = [];
251
+ for (const quad of shapeQuads) {
252
+ if (quad.predicate.value !== SH_TARGET_CLASS && quad.predicate.value !== SH_TARGET_NODE) {
253
+ continue;
254
+ }
255
+ const key = termKey(quad.subject);
256
+ if (!key || seen.has(key)) {
257
+ continue;
258
+ }
259
+ seen.add(key);
260
+ subjects.push(quad.subject);
261
+ }
262
+ return subjects;
263
+ }
264
+ function isPropertyShape(store, subject) {
265
+ return store.countQuads(subject, DataFactory.namedNode(RDF_TYPE), DataFactory.namedNode(SH_PROPERTY_SHAPE), null) > 0
266
+ || store.countQuads(subject, DataFactory.namedNode(SH_PATH), null, null) > 0;
267
+ }
268
+ function isDeactivatedShape(store, subject) {
269
+ return getObjects(store, subject, SH_DEACTIVATED).some((term) => isTruthyLiteral(term));
270
+ }
271
+ function isTruthyLiteral(term) {
272
+ return term.termType === 'Literal' && (term.value === 'true' || term.value === '1');
273
+ }
274
+ function getObjects(store, subject, predicateIri) {
275
+ return [...store.getQuads(subject, DataFactory.namedNode(predicateIri), null, null)].map((quad) => quad.object);
276
+ }
277
+ function getFirstObject(store, subject, predicateIri) {
278
+ return getObjects(store, subject, predicateIri)[0];
279
+ }
280
+ function termKey(term) {
281
+ if (term.termType !== 'NamedNode' && term.termType !== 'BlankNode') {
282
+ return undefined;
283
+ }
284
+ return `${term.termType}:${term.value}`;
285
+ }
217
286
  function formatValidationField(value) {
218
287
  if (value === undefined || value === null)
219
288
  return undefined;
@@ -227,12 +296,26 @@ function formatValidationField(value) {
227
296
  return value;
228
297
  if (typeof value === 'number' || typeof value === 'boolean')
229
298
  return String(value);
230
- if (typeof value === 'object' && 'value' in value) {
299
+ if (typeof value === 'object' && value !== null && 'value' in value) {
231
300
  const raw = value.value;
232
301
  return typeof raw === 'string' ? raw : String(raw);
233
302
  }
234
303
  return String(value);
235
304
  }
305
+ function formatValidationPath(path) {
306
+ if (Array.isArray(path) && path.length === 1) {
307
+ const [step] = path;
308
+ if (step.quantifier === 'one'
309
+ && step.start === 'subject'
310
+ && step.end === 'object'
311
+ && Array.isArray(step.predicates)
312
+ && step.predicates.length === 1
313
+ && typeof step.predicates[0]?.value === 'string') {
314
+ return step.predicates[0].value;
315
+ }
316
+ }
317
+ return formatValidationField(path);
318
+ }
236
319
  function collectShaclPropertyDisplayNames(shapeQuads) {
237
320
  const SH_PATH = 'http://www.w3.org/ns/shacl#path';
238
321
  const SH_NAME = 'http://www.w3.org/ns/shacl#name';
@@ -328,9 +411,6 @@ function localName(iri) {
328
411
  }
329
412
  return iri;
330
413
  }
331
- function isRdfTerm(value) {
332
- return typeof value === 'object' && value !== null && 'termType' in value;
333
- }
334
414
  function escapeIriForSparql(iri) {
335
415
  return iri.replace(/>/g, '\\>');
336
416
  }
@@ -1 +1 @@
1
- {"version":3,"file":"owl-shacl.js","sourceRoot":"","sources":["../../src/owl/owl-shacl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owl-shacl.js","sourceRoot":"","sources":["../../src/owl/owl-shacl.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,QAAQ,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,CAAC;AACvE,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,eAAe,IAAI,0BAA0B,EAAE,WAAW,IAAI,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAQ9H,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AA+BhE,MAAM,aAAa,GAAG;IAClB,GAAG,WAAW;IACd,OAAO,EAAE,CAAC,KAAa,EAAE,kBAAyC,EAAE,EAAE,CAClE,kBAAkB,KAAK,SAAS,IAAI,kBAAkB,KAAK,IAAI;QAC3D,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,kBAAyB,CAAC;IAC/D,OAAO,EAAE,GAAY,EAAE,CAAC,IAAI,OAAO,EAAE;CACxC,CAAC;AACF,MAAM,QAAQ,GAAG,iDAAiD,CAAC;AACnE,MAAM,iBAAiB,GAAG,0CAA0C,CAAC;AACrE,MAAM,cAAc,GAAG,wCAAwC,CAAC;AAChE,MAAM,OAAO,GAAG,iCAAiC,CAAC;AAClD,MAAM,OAAO,GAAG,iCAAiC,CAAC;AAClD,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAC1D,MAAM,eAAe,GAAG,wCAAwC,CAAC;AACjE,MAAM,cAAc,GAAG,uCAAuC,CAAC;AAE/D,MAAM,OAAO,YAAY;IACrB,YACqB,aAA+B,EAC/B,cAAmD,EACnD,iBAA+C;QAF/C,kBAAa,GAAb,aAAa,CAAkB;QAC/B,mBAAc,GAAd,cAAc,CAAqC;QACnD,sBAAiB,GAAjB,iBAAiB,CAA8B;IACjE,CAAC;IAEJ,KAAK,CAAC,aAAa,CAAC,QAA4B,EAAE,WAAmB;QACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO;gBACH,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,8DAA8D;aACxE,CAAC;QACN,CAAC;QAED,MAAM,aAAa,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;gBACH,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,4BAA4B;aACtC,CAAC;QACN,CAAC;QAED,IAAI,UAAU,CAAC;QACf,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC9B,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACzC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACH,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,mBAAmB;iBAC7B,CAAC;YACN,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;aAC1E,CAAC;QACN,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,6BAA6B,CAAC,UAAU,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO;gBACH,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,eAAe,CAAC,KAAK,IAAI,yCAAyC;aAC5E,CAAC;QACN,CAAC;QAED,IAAI,CAAC;YACD,MAAM,kBAAkB,GAAG,gCAAgC,CAAC,UAAU,CAAC,CAAC;YACxE,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;gBAChD,OAAO,EAAE,aAAa;gBACtB,eAAe,EAAE,0BAA0B;gBAC3C,WAAW,EAAE,sBAAsB;aACtC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YAClE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAE,MAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAE,MAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,MAAM,MAAM,GAA2B,UAAU,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;gBAClE,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAChD,OAAO;oBACH,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,mBAAmB;oBACtE,SAAS,EAAE,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,MAAM,EAAE,SAAS,CAAC;oBAC9E,IAAI;oBACJ,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBAC7D,QAAQ,EAAE,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;oBACjD,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,IAAI,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC;iBACzF,CAAC;YACN,CAAC,CAAC,CAAC;YACH,OAAO;gBACH,QAAQ,EAAE,OAAO,CAAE,MAAc,EAAE,QAAQ,CAAC;gBAC5C,MAAM;aACT,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB;aACvE,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED,MAAM,UAAU,yBAAyB,CACrC,aAA+B,EAC/B,cAAmD,EACnD,iBAA+C;IAE/C,OAAO,IAAI,YAAY,CAAC,aAAa,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,UAA0B,EAAE,GAAQ;IAChF,UAAU,CAAC,SAAS,CAAC,oBAAoB,EAAE,KAAK,EAAE,MAA2B,EAAgC,EAAE;QAC3G,MAAM,gBAAgB,GAAG,GAAG,EAAE,SAAS,EAAE,gBAAgB,CAAC;QAC1D,IAAI,CAAC,gBAAgB;eACd,OAAO,gBAAgB,CAAC,gBAAgB,KAAK,UAAU;eACvD,OAAO,gBAAgB,CAAC,kBAAkB,KAAK,UAAU;eACzD,OAAO,gBAAgB,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;YAC1D,OAAO;gBACH,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,8CAA8C;aACxD,CAAC;QACN,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,MAAM,WAAW,GAAG,OAAO,MAAM,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,YAAY,GAAG,yBAAyB,CAC1C,gBAAgB,CAAC,gBAAgB,EAAE,EACnC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EACjD,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAC/C,CAAC;QACF,OAAO,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,WAAmB,EAAE,QAAgB;IAC5E,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACvD,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC;QAC3F,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;QACpE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM;YAChB,cAAc;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;SACpB,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG;QACf,QAAQ;QACR,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAmD,EAAE,EAAE,CACrE,+BAA+B,KAAK,CAAC,cAAc,0BAA0B,KAAK,CAAC,QAAQ,GAAG,CACjG;KACJ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,IAAI,SAAS,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,UAAU,CAAC,IAAI,CAAC,6BAA6B,MAAM,IAAI,CAAC,CAAC;QACzD,UAAU,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvF,UAAU,CAAC,IAAI,CAAC,qBAAqB,MAAM,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,cAAc,MAAM,CAAC,CAAC;IAC1F,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/D,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAC/B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEvB,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,IAAI,GAAG,CAAiB,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACH,MAAM,EAAE;YACJ,UAAU,UAAU,EAAE;YACtB,SAAS;YACT,GAAG,UAAU;YACb,GAAG;YACH,iBAAiB;SACpB,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,eAAe;QACf,YAAY;KACf,CAAC;AACN,CAAC;AAED,SAAS,6BAA6B,CAAC,UAAkB;IACrD,OAAO;QACH,aAAa;QACb,cAAc;QACd,iBAAiB;QACjB,iBAAiB;QACjB,GAAG;QACH,SAAS;QACT,YAAY,UAAU,gBAAgB;QACtC,yDAAyD,UAAU,MAAM;QACzE,cAAc;QACd,sCAAsC;QACtC,gDAAgD,UAAU,IAAI;QAC9D,KAAK;QACL,GAAG;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA2B;IACtD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAE9D,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,IAAI,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;YACxF,SAAS;QACb,CAAC;QAED,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC;aACpE,MAAM,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,SAAS;QACb,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;aAC1D,MAAM,CAAC,CAAC,IAAI,EAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC;aAC9F,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,IAAI,EAAiC,EAAE;YACzC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACzC,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,IAAI,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACjF,CAAC;QACN,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,MAAM,EAA+B,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtE,OAAO;YACH,aAAa;YACb,WAAW;YACX,OAAO;SACV,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,0BAA0B,CAAC,UAA2B;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAW,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,eAAe,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACtF,SAAS;QACb,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,OAAa;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;WAC9G,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,OAAa;IACrD,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,eAAe,CAAC,IAAU;IAC/B,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,OAAa,EAAE,YAAoB;IACnE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,OAAa,EAAE,YAAoB;IACvE,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,OAAO,CAAC,IAAU;IACvB,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QACjE,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IACzC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,KAAK;aACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;aAC5C,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAK,KAAa,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAI,KAAa,CAAC,KAAK,CAAC;QACjC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAa;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,IAA4G,CAAC;QAC5H,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;eACtB,IAAI,CAAC,KAAK,KAAK,SAAS;eACxB,IAAI,CAAC,GAAG,KAAK,QAAQ;eACrB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;eAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;eAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACpC,CAAC;IACL,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,gCAAgC,CAAC,UAA2B;IACjE,MAAM,OAAO,GAAG,iCAAiC,CAAC;IAClD,MAAM,OAAO,GAAG,iCAAiC,CAAC;IAClD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAsB,EAAE;QAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,SAAS;QACb,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC3E,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS;QACb,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW;IACtC,IAAI,OAAO,GAAG,GAAG,CAAC;IAClB,MAAM,gBAAgB,GAAG,uCAAuC,CAAC;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAU;IAC5B,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;YACvB,OAAO,IAAI,OAAO,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,OAAO,GAAG,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACzE,CAAC;AAED,SAAS,2BAA2B,CAAC,GAAW;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,UAAU,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAyB;IAC/D,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@oml/owl",
3
3
  "description": "The semantic web specific package",
4
- "version": "0.7.0",
4
+ "version": "0.9.0",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": ">=20.10.0",
@@ -33,11 +33,11 @@
33
33
  "test": "vitest run"
34
34
  },
35
35
  "dependencies": {
36
- "@oml/language": "0.7.0",
37
36
  "@comunica/query-sparql": "^5.1.3",
37
+ "@oml/language": "0.9.0",
38
38
  "langium": "^4.2.1",
39
39
  "n3": "^2.0.1",
40
- "rdf-validate-shacl": "^0.6.5",
40
+ "shacl-engine": "^1.1.0",
41
41
  "yaml": "^2.8.2"
42
42
  },
43
43
  "devDependencies": {
@@ -1,8 +1,9 @@
1
1
  // Copyright (c) 2026 Modelware. All rights reserved.
2
2
 
3
3
  import type { Quad, Term } from '@rdfjs/types';
4
- import { Parser as N3Parser, Store as N3Store } from 'n3';
5
- import SHACLValidator from 'rdf-validate-shacl';
4
+ import { DataFactory, Parser as N3Parser, Store as N3Store } from 'n3';
5
+ import { Validator as ShaclValidator } from 'shacl-engine';
6
+ import { targetResolvers as shaclSparqlTargetResolvers, validations as shaclSparqlValidations } from 'shacl-engine/sparql.js';
6
7
  import type {
7
8
  OwlShaclService,
8
9
  OwlShaclValidationIssue,
@@ -26,10 +27,38 @@ export type DerivedShaclSelectQuery = {
26
27
  columnLabels: Map<string, string>;
27
28
  };
28
29
 
30
+ type ParsedShaclColumn = {
31
+ path: string;
32
+ name?: string;
33
+ };
34
+
35
+ type ParsedShaclNodeShape = {
36
+ targetClasses: Term[];
37
+ targetNodes: Term[];
38
+ columns: ParsedShaclColumn[];
39
+ };
40
+
29
41
  type ConnectionLike = {
30
42
  onRequest: (type: string, handler: (params: ShaclValidateParams) => ShaclValidateResult | Promise<ShaclValidateResult>) => void;
31
43
  };
32
44
 
45
+ const SHACL_FACTORY = {
46
+ ...DataFactory,
47
+ literal: (value: string, languageOrDatatype?: string | Term | null) =>
48
+ languageOrDatatype === undefined || languageOrDatatype === null
49
+ ? DataFactory.literal(value)
50
+ : DataFactory.literal(value, languageOrDatatype as any),
51
+ dataset: (): N3Store => new N3Store(),
52
+ };
53
+ const RDF_TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type';
54
+ const SH_PROPERTY_SHAPE = 'http://www.w3.org/ns/shacl#PropertyShape';
55
+ const SH_DEACTIVATED = 'http://www.w3.org/ns/shacl#deactivated';
56
+ const SH_NAME = 'http://www.w3.org/ns/shacl#name';
57
+ const SH_PATH = 'http://www.w3.org/ns/shacl#path';
58
+ const SH_PROPERTY = 'http://www.w3.org/ns/shacl#property';
59
+ const SH_TARGET_CLASS = 'http://www.w3.org/ns/shacl#targetClass';
60
+ const SH_TARGET_NODE = 'http://www.w3.org/ns/shacl#targetNode';
61
+
33
62
  export class ShaclService implements OwlShaclService {
34
63
  constructor(
35
64
  private readonly sparqlService: OwlSparqlService,
@@ -89,18 +118,22 @@ export class ShaclService implements OwlShaclService {
89
118
  const propertyNameByPath = collectShaclPropertyDisplayNames(shapeQuads);
90
119
  const shapesDataset = new N3Store(shapeQuads);
91
120
  const dataDataset = new N3Store(constructResult.quads);
92
- const validator = new SHACLValidator(shapesDataset);
93
- const report = await validator.validate(dataDataset);
121
+ const validator = new ShaclValidator(shapesDataset, {
122
+ factory: SHACL_FACTORY,
123
+ targetResolvers: shaclSparqlTargetResolvers,
124
+ validations: shaclSparqlValidations,
125
+ });
126
+ const report = await validator.validate({ dataset: dataDataset });
94
127
  const rawResults = Array.isArray((report as any)?.results) ? (report as any).results : [];
95
128
  const issues: ShaclValidationIssue[] = rawResults.map((result: any) => {
96
- const path = formatValidationField(result?.path);
129
+ const path = formatValidationPath(result?.path);
97
130
  return {
98
131
  message: formatValidationField(result?.message) || 'Validation issue.',
99
- focusNode: formatValidationField(result?.focusNode),
132
+ focusNode: formatValidationField(result?.focusNode?.term ?? result?.focusNode),
100
133
  path,
101
134
  propertyName: path ? propertyNameByPath.get(path) : undefined,
102
135
  severity: formatValidationField(result?.severity),
103
- source: formatValidationField(result?.sourceConstraintComponent ?? result?.sourceShape),
136
+ source: formatValidationField(result?.constraintComponent ?? result?.shape?.ptr?.term),
104
137
  };
105
138
  });
106
139
  return {
@@ -150,49 +183,22 @@ export function registerShaclValidationRequests(connection: ConnectionLike, oml:
150
183
  }
151
184
 
152
185
  export function deriveSelectQueryFromShacl(shaclSource: string, graphIri: string): DerivedShaclSelectQuery | undefined {
153
- let shapesStore: N3Store;
186
+ let shapeQuads: Quad[];
154
187
  try {
155
188
  const parser = new N3Parser({ format: 'text/turtle' });
156
- const quads = parser.parse(shaclSource);
157
- shapesStore = new N3Store(quads);
189
+ shapeQuads = parser.parse(shaclSource);
158
190
  } catch {
159
191
  return undefined;
160
192
  }
161
193
 
162
- const validator = new SHACLValidator(shapesStore);
163
- const { sh } = validator.ns;
164
- const shapesGraph = validator.shapesGraph;
165
- const nodeShape = shapesGraph.shapesWithTarget.find((shape: any) => !shape.isPropertyShape && !shape.deactivated);
194
+ const nodeShape = parsePrimaryNodeShape(shapeQuads);
166
195
  if (!nodeShape) {
167
196
  return undefined;
168
197
  }
169
198
 
170
- const targetClassTerms = nodeShape.shapeNodePointer.out(sh.targetClass).terms as Term[];
171
- const targetClasses = targetClassTerms.filter((term: Term): term is Term => term.termType === 'NamedNode');
172
- const targetNodes = nodeShape.shapeNodePointer.out(sh.targetNode).terms as Term[];
173
- if (targetClasses.length === 0 && targetNodes.length === 0) {
174
- return undefined;
175
- }
176
-
177
- const propertyShapeTerms = nodeShape.shapeNodePointer.out(sh.property).terms as Term[];
178
- const columns: Array<{ path: Term; name?: string }> = [];
179
- for (const propertyShapeTerm of propertyShapeTerms) {
180
- const propertyShape = shapesGraph.getShape(propertyShapeTerm);
181
- if (propertyShape.deactivated) {
182
- continue;
183
- }
184
- const path = propertyShape.pathObject;
185
- if (!isRdfTerm(path) || path.termType !== 'NamedNode') {
186
- continue;
187
- }
188
- const nameTerm = propertyShape.shapeNodePointer.out(sh.name).term;
189
- const name = nameTerm && nameTerm.termType === 'Literal' ? nameTerm.value : undefined;
190
- columns.push({ path, name });
191
- }
192
-
193
199
  const usedNames = new Set<string>(['focus']);
194
- const variables = columns.map((column) => {
195
- const base = normalizeSparqlVariableName(column.name || localName(column.path.value) || 'value');
200
+ const variables = nodeShape.columns.map((column) => {
201
+ const base = normalizeSparqlVariableName(column.name || localName(column.path) || 'value');
196
202
  const unique = uniqueVariableName(base, usedNames);
197
203
  usedNames.add(unique);
198
204
  const sourceVariable = uniqueVariableName(`__${unique}`, usedNames);
@@ -214,19 +220,19 @@ export function deriveSelectQueryFromShacl(shaclSource: string, graphIri: string
214
220
  const whereLines: string[] = [];
215
221
  const graphLines: string[] = [];
216
222
 
217
- if (targetClasses.length > 0) {
218
- const values = targetClasses.map((term: Term) => `<${term.value}>`).join(' ');
223
+ if (nodeShape.targetClasses.length > 0) {
224
+ const values = nodeShape.targetClasses.map((term: Term) => `<${term.value}>`).join(' ');
219
225
  whereLines.push(` VALUES ?__targetClass { ${values} }`);
220
226
  graphLines.push(' ?focus a ?__targetClass .');
221
227
  }
222
228
 
223
- if (targetNodes.length > 0) {
224
- const values = targetNodes.map((term: Term) => termToSparql(term)).join(' ');
229
+ if (nodeShape.targetNodes.length > 0) {
230
+ const values = nodeShape.targetNodes.map((term: Term) => termToSparql(term)).join(' ');
225
231
  whereLines.push(` VALUES ?focus { ${values} }`);
226
232
  }
227
233
 
228
234
  for (const entry of variables) {
229
- graphLines.push(` OPTIONAL { ?focus <${entry.path.value}> ?${entry.sourceVariable} . }`);
235
+ graphLines.push(` OPTIONAL { ?focus <${entry.path}> ?${entry.sourceVariable} . }`);
230
236
  }
231
237
 
232
238
  whereLines.push(` GRAPH <${escapeIriForSparql(graphIri)}> {`);
@@ -270,6 +276,93 @@ function buildValidationConstructQuery(contextIri: string): string {
270
276
  ].join('\n');
271
277
  }
272
278
 
279
+ function parsePrimaryNodeShape(shapeQuads: readonly Quad[]): ParsedShaclNodeShape | undefined {
280
+ const shapesStore = new N3Store([...shapeQuads]);
281
+ const targetSubjects = collectSubjectsWithTargets(shapeQuads);
282
+
283
+ for (const shapeTerm of targetSubjects) {
284
+ if (isDeactivatedShape(shapesStore, shapeTerm) || isPropertyShape(shapesStore, shapeTerm)) {
285
+ continue;
286
+ }
287
+
288
+ const targetClasses = getObjects(shapesStore, shapeTerm, SH_TARGET_CLASS)
289
+ .filter((term): term is Term => term.termType === 'NamedNode');
290
+ const targetNodes = getObjects(shapesStore, shapeTerm, SH_TARGET_NODE);
291
+ if (targetClasses.length === 0 && targetNodes.length === 0) {
292
+ continue;
293
+ }
294
+
295
+ const columns = getObjects(shapesStore, shapeTerm, SH_PROPERTY)
296
+ .filter((term): term is Term => term.termType === 'NamedNode' || term.termType === 'BlankNode')
297
+ .filter((term) => !isDeactivatedShape(shapesStore, term))
298
+ .map((term): ParsedShaclColumn | undefined => {
299
+ const path = getFirstObject(shapesStore, term, SH_PATH);
300
+ if (!path || path.termType !== 'NamedNode') {
301
+ return undefined;
302
+ }
303
+ const nameTerm = getFirstObject(shapesStore, term, SH_NAME);
304
+ return {
305
+ path: path.value,
306
+ name: nameTerm && nameTerm.termType === 'Literal' ? nameTerm.value : undefined,
307
+ };
308
+ })
309
+ .filter((column): column is ParsedShaclColumn => Boolean(column));
310
+
311
+ return {
312
+ targetClasses,
313
+ targetNodes,
314
+ columns,
315
+ };
316
+ }
317
+
318
+ return undefined;
319
+ }
320
+
321
+ function collectSubjectsWithTargets(shapeQuads: readonly Quad[]): Term[] {
322
+ const seen = new Set<string>();
323
+ const subjects: Term[] = [];
324
+ for (const quad of shapeQuads) {
325
+ if (quad.predicate.value !== SH_TARGET_CLASS && quad.predicate.value !== SH_TARGET_NODE) {
326
+ continue;
327
+ }
328
+ const key = termKey(quad.subject);
329
+ if (!key || seen.has(key)) {
330
+ continue;
331
+ }
332
+ seen.add(key);
333
+ subjects.push(quad.subject);
334
+ }
335
+ return subjects;
336
+ }
337
+
338
+ function isPropertyShape(store: N3Store, subject: Term): boolean {
339
+ return store.countQuads(subject, DataFactory.namedNode(RDF_TYPE), DataFactory.namedNode(SH_PROPERTY_SHAPE), null) > 0
340
+ || store.countQuads(subject, DataFactory.namedNode(SH_PATH), null, null) > 0;
341
+ }
342
+
343
+ function isDeactivatedShape(store: N3Store, subject: Term): boolean {
344
+ return getObjects(store, subject, SH_DEACTIVATED).some((term) => isTruthyLiteral(term));
345
+ }
346
+
347
+ function isTruthyLiteral(term: Term): boolean {
348
+ return term.termType === 'Literal' && (term.value === 'true' || term.value === '1');
349
+ }
350
+
351
+ function getObjects(store: N3Store, subject: Term, predicateIri: string): Term[] {
352
+ return [...store.getQuads(subject, DataFactory.namedNode(predicateIri), null, null)].map((quad) => quad.object);
353
+ }
354
+
355
+ function getFirstObject(store: N3Store, subject: Term, predicateIri: string): Term | undefined {
356
+ return getObjects(store, subject, predicateIri)[0];
357
+ }
358
+
359
+ function termKey(term: Term): string | undefined {
360
+ if (term.termType !== 'NamedNode' && term.termType !== 'BlankNode') {
361
+ return undefined;
362
+ }
363
+ return `${term.termType}:${term.value}`;
364
+ }
365
+
273
366
  function formatValidationField(value: unknown): string | undefined {
274
367
  if (value === undefined || value === null) return undefined;
275
368
  if (Array.isArray(value)) {
@@ -280,13 +373,28 @@ function formatValidationField(value: unknown): string | undefined {
280
373
  }
281
374
  if (typeof value === 'string') return value;
282
375
  if (typeof value === 'number' || typeof value === 'boolean') return String(value);
283
- if (typeof value === 'object' && 'value' in (value as any)) {
376
+ if (typeof value === 'object' && value !== null && 'value' in (value as any)) {
284
377
  const raw = (value as any).value;
285
378
  return typeof raw === 'string' ? raw : String(raw);
286
379
  }
287
380
  return String(value);
288
381
  }
289
382
 
383
+ function formatValidationPath(path: unknown): string | undefined {
384
+ if (Array.isArray(path) && path.length === 1) {
385
+ const [step] = path as Array<{ quantifier?: string; start?: string; end?: string; predicates?: Array<{ value?: string }> }>;
386
+ if (step.quantifier === 'one'
387
+ && step.start === 'subject'
388
+ && step.end === 'object'
389
+ && Array.isArray(step.predicates)
390
+ && step.predicates.length === 1
391
+ && typeof step.predicates[0]?.value === 'string') {
392
+ return step.predicates[0].value;
393
+ }
394
+ }
395
+ return formatValidationField(path);
396
+ }
397
+
290
398
  function collectShaclPropertyDisplayNames(shapeQuads: readonly Quad[]): Map<string, string> {
291
399
  const SH_PATH = 'http://www.w3.org/ns/shacl#path';
292
400
  const SH_NAME = 'http://www.w3.org/ns/shacl#name';
@@ -391,10 +499,6 @@ function localName(iri: string): string {
391
499
  return iri;
392
500
  }
393
501
 
394
- function isRdfTerm(value: unknown): value is Term {
395
- return typeof value === 'object' && value !== null && 'termType' in value;
396
- }
397
-
398
502
  function escapeIriForSparql(iri: string): string {
399
503
  return iri.replace(/>/g, '\\>');
400
504
  }
@@ -0,0 +1,13 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+
3
+ declare module 'shacl-engine' {
4
+ export class Validator {
5
+ constructor(dataset: unknown, options: unknown);
6
+ validate(data: unknown, shapes?: unknown): Promise<any>;
7
+ }
8
+ }
9
+
10
+ declare module 'shacl-engine/sparql.js' {
11
+ export const validations: unknown;
12
+ export const targetResolvers: unknown;
13
+ }