@oml/owl 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +46 -0
  2. package/out/index.d.ts +10 -0
  3. package/out/index.js +12 -0
  4. package/out/index.js.map +1 -0
  5. package/out/owl/owl-abox.d.ts +79 -0
  6. package/out/owl/owl-abox.js +765 -0
  7. package/out/owl/owl-abox.js.map +1 -0
  8. package/out/owl/owl-imports.d.ts +9 -0
  9. package/out/owl/owl-imports.js +102 -0
  10. package/out/owl/owl-imports.js.map +1 -0
  11. package/out/owl/owl-interfaces.d.ts +121 -0
  12. package/out/owl/owl-interfaces.js +3 -0
  13. package/out/owl/owl-interfaces.js.map +1 -0
  14. package/out/owl/owl-mapper.d.ts +80 -0
  15. package/out/owl/owl-mapper.js +1217 -0
  16. package/out/owl/owl-mapper.js.map +1 -0
  17. package/out/owl/owl-service.d.ts +65 -0
  18. package/out/owl/owl-service.js +552 -0
  19. package/out/owl/owl-service.js.map +1 -0
  20. package/out/owl/owl-shacl.d.ts +28 -0
  21. package/out/owl/owl-shacl.js +337 -0
  22. package/out/owl/owl-shacl.js.map +1 -0
  23. package/out/owl/owl-sparql.d.ts +71 -0
  24. package/out/owl/owl-sparql.js +260 -0
  25. package/out/owl/owl-sparql.js.map +1 -0
  26. package/out/owl/owl-store.d.ts +32 -0
  27. package/out/owl/owl-store.js +142 -0
  28. package/out/owl/owl-store.js.map +1 -0
  29. package/out/owl/owl-tbox.d.ts +98 -0
  30. package/out/owl/owl-tbox.js +575 -0
  31. package/out/owl/owl-tbox.js.map +1 -0
  32. package/out/owl-module.d.ts +15 -0
  33. package/out/owl-module.js +22 -0
  34. package/out/owl-module.js.map +1 -0
  35. package/package.json +52 -0
  36. package/src/index.ts +12 -0
  37. package/src/owl/owl-abox.ts +930 -0
  38. package/src/owl/owl-imports.ts +108 -0
  39. package/src/owl/owl-interfaces.ts +145 -0
  40. package/src/owl/owl-mapper.ts +1510 -0
  41. package/src/owl/owl-service.ts +642 -0
  42. package/src/owl/owl-shacl.ts +400 -0
  43. package/src/owl/owl-sparql.ts +317 -0
  44. package/src/owl/owl-store.ts +173 -0
  45. package/src/owl/owl-tbox.ts +727 -0
  46. package/src/owl-module.ts +52 -0
@@ -0,0 +1,575 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ import { DataFactory } from 'n3';
3
+ import { isBooleanLiteral, isBuiltInPredicate, isDecimalLiteral, isDescription, isDifferentFromPredicate, isDoubleLiteral, isIntegerLiteral, isPropertyPredicate, isQuotedLiteral, isRelationEntity, isRelationEntityPredicate, isRule, isSameAsPredicate, isTypePredicate, isVocabulary, } from '@oml/language';
4
+ const { namedNode, quad } = DataFactory;
5
+ const RDF = {
6
+ type: namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#type'),
7
+ };
8
+ const RDFS = {
9
+ subClassOf: namedNode('http://www.w3.org/2000/01/rdf-schema#subClassOf'),
10
+ subPropertyOf: namedNode('http://www.w3.org/2000/01/rdf-schema#subPropertyOf'),
11
+ Literal: namedNode('http://www.w3.org/2000/01/rdf-schema#Literal'),
12
+ };
13
+ const OWL = {
14
+ equivalentClass: namedNode('http://www.w3.org/2002/07/owl#equivalentClass'),
15
+ equivalentProperty: namedNode('http://www.w3.org/2002/07/owl#equivalentProperty'),
16
+ sameAs: namedNode('http://www.w3.org/2002/07/owl#sameAs'),
17
+ differentFrom: namedNode('http://www.w3.org/2002/07/owl#differentFrom'),
18
+ inverseOf: namedNode('http://www.w3.org/2002/07/owl#inverseOf'),
19
+ FunctionalProperty: namedNode('http://www.w3.org/2002/07/owl#FunctionalProperty'),
20
+ InverseFunctionalProperty: namedNode('http://www.w3.org/2002/07/owl#InverseFunctionalProperty'),
21
+ SymmetricProperty: namedNode('http://www.w3.org/2002/07/owl#SymmetricProperty'),
22
+ TransitiveProperty: namedNode('http://www.w3.org/2002/07/owl#TransitiveProperty'),
23
+ subPropertyOf: namedNode('http://www.w3.org/2002/07/owl#subPropertyOf'),
24
+ };
25
+ const OML = {
26
+ hasSource: namedNode('http://opencaesar.io/oml#hasSource'),
27
+ hasTarget: namedNode('http://opencaesar.io/oml#hasTarget'),
28
+ };
29
+ export class TBoxIndexBuilder {
30
+ constructor(reasoningStore, tboxIndexCache, importGraph) {
31
+ this.reasoningStore = reasoningStore;
32
+ this.tboxIndexCache = tboxIndexCache;
33
+ this.importGraph = importGraph;
34
+ }
35
+ buildOwn(modelUri, ontology) {
36
+ const graphs = this.reasoningStore.graphs(modelUri);
37
+ const store = this.reasoningStore.getStore();
38
+ const quads = this.allQuads(store, graphs, null, null, null);
39
+ const index = this.emptyIndex();
40
+ for (const q of quads) {
41
+ if (q.subject.termType !== 'NamedNode') {
42
+ continue;
43
+ }
44
+ if (q.predicate.value === RDF.type.value && q.object.termType === 'NamedNode') {
45
+ if (q.object.value === OWL.FunctionalProperty.value) {
46
+ index.functionalProperties.add(q.subject.value);
47
+ }
48
+ else if (q.object.value === OWL.InverseFunctionalProperty.value) {
49
+ index.inverseFunctionalProperties.add(q.subject.value);
50
+ }
51
+ else if (q.object.value === OWL.SymmetricProperty.value) {
52
+ index.symmetricProperties.add(q.subject.value);
53
+ }
54
+ else if (q.object.value === OWL.TransitiveProperty.value) {
55
+ index.transitiveProperties.add(q.subject.value);
56
+ }
57
+ continue;
58
+ }
59
+ if (q.object.termType !== 'NamedNode') {
60
+ continue;
61
+ }
62
+ if (q.predicate.value === RDFS.subClassOf.value) {
63
+ this.pushMapArrayUnique(index.superClasses, q.subject.value, q.object.value);
64
+ continue;
65
+ }
66
+ if (q.predicate.value === OWL.equivalentClass.value) {
67
+ this.pushMapArrayUnique(index.superClasses, q.subject.value, q.object.value);
68
+ this.pushMapArrayUnique(index.superClasses, q.object.value, q.subject.value);
69
+ continue;
70
+ }
71
+ if (q.predicate.value === RDFS.subPropertyOf.value || q.predicate.value === OWL.subPropertyOf.value) {
72
+ this.pushMapArrayUnique(index.subProperties, q.subject.value, q.object.value);
73
+ continue;
74
+ }
75
+ if (q.predicate.value === OWL.equivalentProperty.value) {
76
+ this.pushMapArrayUnique(index.subProperties, q.subject.value, q.object.value);
77
+ this.pushMapArrayUnique(index.subProperties, q.object.value, q.subject.value);
78
+ continue;
79
+ }
80
+ if (q.predicate.value === 'http://www.w3.org/2000/01/rdf-schema#domain') {
81
+ this.pushMapArrayUnique(index.domain, q.subject.value, q.object.value);
82
+ continue;
83
+ }
84
+ if (q.predicate.value === 'http://www.w3.org/2000/01/rdf-schema#range') {
85
+ if (this.isDatatypeIri(q.object.value)) {
86
+ this.pushMapArrayUnique(index.datatypeRange, q.subject.value, q.object.value);
87
+ }
88
+ else {
89
+ this.pushMapArrayUnique(index.objectRange, q.subject.value, q.object.value);
90
+ }
91
+ continue;
92
+ }
93
+ if (q.predicate.value === OWL.inverseOf.value) {
94
+ this.pushMapArrayUnique(index.inverseRoles, q.subject.value, q.object.value);
95
+ this.pushMapArrayUnique(index.inverseRoles, q.object.value, q.subject.value);
96
+ }
97
+ }
98
+ if (ontology && isVocabulary(ontology)) {
99
+ index.forwardRules.push(...this.buildForwardRules(ontology));
100
+ }
101
+ this.closeSuperClassesTransitively(index.superClasses);
102
+ this.closeSubPropertiesTransitively(index.subProperties);
103
+ return index;
104
+ }
105
+ buildMerged(modelUri) {
106
+ const closure = this.importGraph.dependenciesOf(modelUri);
107
+ const allUris = [modelUri, ...closure];
108
+ const visited = new Set();
109
+ const merged = this.emptyIndex();
110
+ for (const uri of allUris) {
111
+ if (visited.has(uri)) {
112
+ continue;
113
+ }
114
+ visited.add(uri);
115
+ const own = this.tboxIndexCache.getOwn(uri);
116
+ if (!own) {
117
+ continue;
118
+ }
119
+ this.mergeStringArrayMap(merged.superClasses, own.superClasses);
120
+ this.mergeStringArrayMap(merged.subProperties, own.subProperties);
121
+ this.mergeStringArrayMap(merged.domain, own.domain);
122
+ this.mergeStringArrayMap(merged.objectRange, own.objectRange);
123
+ this.mergeStringArrayMap(merged.datatypeRange, own.datatypeRange);
124
+ this.mergeStringArrayMap(merged.inverseRoles, own.inverseRoles);
125
+ this.mergeForwardRules(merged.forwardRules, own.forwardRules);
126
+ this.mergeSet(merged.symmetricProperties, own.symmetricProperties);
127
+ this.mergeSet(merged.transitiveProperties, own.transitiveProperties);
128
+ this.mergeSet(merged.functionalProperties, own.functionalProperties);
129
+ this.mergeSet(merged.inverseFunctionalProperties, own.inverseFunctionalProperties);
130
+ }
131
+ this.closeSuperClassesTransitively(merged.superClasses);
132
+ this.closeSubPropertiesTransitively(merged.subProperties);
133
+ return merged;
134
+ }
135
+ allQuads(store, graphs, s, p, o) {
136
+ return [
137
+ ...store.getQuads(s, p, o, graphs.own),
138
+ ...store.getQuads(s, p, o, graphs.entailments),
139
+ ];
140
+ }
141
+ pushMapArrayUnique(map, key, value) {
142
+ const values = map.get(key) ?? [];
143
+ if (!values.includes(value)) {
144
+ values.push(value);
145
+ map.set(key, values);
146
+ }
147
+ }
148
+ emptyIndex() {
149
+ return {
150
+ superClasses: new Map(),
151
+ subProperties: new Map(),
152
+ domain: new Map(),
153
+ objectRange: new Map(),
154
+ datatypeRange: new Map(),
155
+ inverseRoles: new Map(),
156
+ forwardRules: [],
157
+ symmetricProperties: new Set(),
158
+ transitiveProperties: new Set(),
159
+ functionalProperties: new Set(),
160
+ inverseFunctionalProperties: new Set(),
161
+ };
162
+ }
163
+ mergeStringArrayMap(target, source) {
164
+ for (const [key, values] of source.entries()) {
165
+ const existing = target.get(key) ?? [];
166
+ for (const value of values) {
167
+ if (!existing.includes(value)) {
168
+ existing.push(value);
169
+ }
170
+ }
171
+ target.set(key, existing);
172
+ }
173
+ }
174
+ mergeSet(target, source) {
175
+ for (const value of source) {
176
+ target.add(value);
177
+ }
178
+ }
179
+ mergeForwardRules(target, source) {
180
+ const merged = new Map();
181
+ for (const rule of target) {
182
+ merged.set(rule.iri, rule);
183
+ }
184
+ for (const rule of source) {
185
+ merged.set(rule.iri, rule);
186
+ }
187
+ target.length = 0;
188
+ target.push(...merged.values());
189
+ }
190
+ buildForwardRules(ontology) {
191
+ const rules = [];
192
+ for (const statement of ontology.ownedStatements ?? []) {
193
+ if (isRule(statement) && !statement.ref) {
194
+ const lowered = this.lowerOmlRule(statement, ontology);
195
+ if (lowered) {
196
+ rules.push(lowered);
197
+ }
198
+ continue;
199
+ }
200
+ if (isRelationEntity(statement)) {
201
+ const lowered = this.lowerRelationEntityRule(statement, ontology);
202
+ if (lowered) {
203
+ rules.push(lowered);
204
+ }
205
+ }
206
+ }
207
+ return rules;
208
+ }
209
+ lowerRelationEntityRule(relation, ontology) {
210
+ const relationEntityIri = this.memberIri(relation, ontology);
211
+ const forwardName = relation.forwardRelation?.name;
212
+ const namespace = this.normalizeNamespace(ontology.namespace ?? '');
213
+ if (!relationEntityIri || !namespace || !forwardName) {
214
+ return undefined;
215
+ }
216
+ const forwardIri = `${namespace}${forwardName}`;
217
+ return {
218
+ iri: `${forwardIri}__derivation`,
219
+ body: [
220
+ { kind: 'class', classIri: relationEntityIri, argument: { kind: 'variable', name: 'r' } },
221
+ { kind: 'property', propertyIri: OML.hasSource.value, argument1: { kind: 'variable', name: 'r' }, argument2: { kind: 'variable', name: 's' } },
222
+ { kind: 'property', propertyIri: OML.hasTarget.value, argument1: { kind: 'variable', name: 'r' }, argument2: { kind: 'variable', name: 't' } },
223
+ ],
224
+ head: [
225
+ { kind: 'property', propertyIri: forwardIri, argument1: { kind: 'variable', name: 's' }, argument2: { kind: 'variable', name: 't' } },
226
+ ],
227
+ };
228
+ }
229
+ lowerOmlRule(rule, ontology) {
230
+ const iri = this.memberIri(rule, ontology);
231
+ if (!iri) {
232
+ return undefined;
233
+ }
234
+ const body = this.lowerPredicates(rule.antecedent, ontology);
235
+ const head = this.lowerPredicates(rule.consequent, ontology);
236
+ if (!body || !head) {
237
+ return undefined;
238
+ }
239
+ return { iri, body, head };
240
+ }
241
+ lowerPredicates(predicates, ontology) {
242
+ const atoms = [];
243
+ for (const predicate of predicates) {
244
+ if (isBuiltInPredicate(predicate)) {
245
+ return undefined;
246
+ }
247
+ if (isTypePredicate(predicate)) {
248
+ const classIri = this.resolveRefIri(predicate.type, ontology);
249
+ const argument = this.lowerArgument(predicate.argument, ontology);
250
+ if (!classIri || !argument) {
251
+ return undefined;
252
+ }
253
+ atoms.push({ kind: 'class', classIri, argument });
254
+ continue;
255
+ }
256
+ if (isRelationEntityPredicate(predicate)) {
257
+ const relationEntityIri = this.resolveRefIri(predicate.type, ontology);
258
+ const relationArg = this.lowerArgument(predicate.argument, ontology);
259
+ const sourceArg = this.lowerArgument(predicate.argument1, ontology);
260
+ const targetArg = this.lowerArgument(predicate.argument2, ontology);
261
+ if (!relationEntityIri || !relationArg || !sourceArg || !targetArg) {
262
+ return undefined;
263
+ }
264
+ atoms.push({ kind: 'class', classIri: relationEntityIri, argument: relationArg });
265
+ atoms.push({ kind: 'property', propertyIri: OML.hasSource.value, argument1: relationArg, argument2: sourceArg });
266
+ atoms.push({ kind: 'property', propertyIri: OML.hasTarget.value, argument1: relationArg, argument2: targetArg });
267
+ continue;
268
+ }
269
+ if (isPropertyPredicate(predicate)) {
270
+ const propertyIri = this.resolveRefIri(predicate.property, ontology);
271
+ const argument1 = this.lowerArgument(predicate.argument1, ontology);
272
+ const argument2 = this.lowerArgument(predicate.argument2, ontology);
273
+ if (!propertyIri || !argument1 || !argument2) {
274
+ return undefined;
275
+ }
276
+ atoms.push({ kind: 'property', propertyIri, argument1, argument2 });
277
+ continue;
278
+ }
279
+ if (isSameAsPredicate(predicate) || isDifferentFromPredicate(predicate)) {
280
+ const argument1 = this.lowerArgument(predicate.argument1, ontology);
281
+ const argument2 = this.lowerArgument(predicate.argument2, ontology);
282
+ if (!argument1 || !argument2) {
283
+ return undefined;
284
+ }
285
+ atoms.push({
286
+ kind: 'property',
287
+ propertyIri: isSameAsPredicate(predicate) ? OWL.sameAs.value : OWL.differentFrom.value,
288
+ argument1,
289
+ argument2,
290
+ });
291
+ continue;
292
+ }
293
+ return undefined;
294
+ }
295
+ return atoms;
296
+ }
297
+ lowerArgument(argument, ontology) {
298
+ if (argument.variable) {
299
+ return { kind: 'variable', name: argument.variable };
300
+ }
301
+ if (argument.instance) {
302
+ const iri = this.resolveRefIri(argument.instance, ontology);
303
+ return iri ? { kind: 'named', iri } : undefined;
304
+ }
305
+ if (argument.literal) {
306
+ return this.lowerLiteral(argument.literal, ontology);
307
+ }
308
+ return undefined;
309
+ }
310
+ lowerLiteral(literalValue, ontology) {
311
+ if (isBooleanLiteral(literalValue)) {
312
+ return { kind: 'literal', value: String(literalValue.value), datatype: 'http://www.w3.org/2001/XMLSchema#boolean', language: '' };
313
+ }
314
+ if (isIntegerLiteral(literalValue)) {
315
+ return { kind: 'literal', value: String(literalValue.value), datatype: 'http://www.w3.org/2001/XMLSchema#integer', language: '' };
316
+ }
317
+ if (isDecimalLiteral(literalValue)) {
318
+ return { kind: 'literal', value: String(literalValue.value), datatype: 'http://www.w3.org/2001/XMLSchema#decimal', language: '' };
319
+ }
320
+ if (isDoubleLiteral(literalValue)) {
321
+ return { kind: 'literal', value: String(literalValue.value), datatype: 'http://www.w3.org/2001/XMLSchema#double', language: '' };
322
+ }
323
+ if (isQuotedLiteral(literalValue)) {
324
+ if (literalValue.type) {
325
+ const datatype = this.resolveRefIri(literalValue.type, ontology);
326
+ return datatype ? { kind: 'literal', value: literalValue.value, datatype, language: '' } : undefined;
327
+ }
328
+ return {
329
+ kind: 'literal',
330
+ value: literalValue.value,
331
+ datatype: literalValue.langTag ? 'http://www.w3.org/1999/02/22-rdf-syntax-ns#langString' : 'http://www.w3.org/2001/XMLSchema#string',
332
+ language: literalValue.langTag ?? '',
333
+ };
334
+ }
335
+ return undefined;
336
+ }
337
+ resolveRefIri(ref, ontology) {
338
+ const target = ref?.ref ?? ref;
339
+ if (!target) {
340
+ return undefined;
341
+ }
342
+ return this.memberIri(target, ontology);
343
+ }
344
+ memberIri(member, fallbackOntology) {
345
+ const name = member?.name;
346
+ if (!name) {
347
+ return undefined;
348
+ }
349
+ const ontology = this.ontologyOf(member) ?? fallbackOntology;
350
+ const namespace = this.normalizeNamespace(ontology.namespace ?? '');
351
+ return namespace ? `${namespace}${name.replace(/^\^/, '')}` : undefined;
352
+ }
353
+ ontologyOf(node) {
354
+ let current = node;
355
+ while (current && !isVocabulary(current) && !isDescription(current)) {
356
+ current = current.$container;
357
+ }
358
+ return current;
359
+ }
360
+ normalizeNamespace(value) {
361
+ return value.replace(/^<|>$/g, '');
362
+ }
363
+ closeSuperClassesTransitively(superClasses) {
364
+ for (const [clazz, directSupers] of superClasses.entries()) {
365
+ const visited = new Set();
366
+ const worklist = [...directSupers];
367
+ const closure = [];
368
+ while (worklist.length > 0) {
369
+ const next = worklist.shift();
370
+ if (!next || visited.has(next)) {
371
+ continue;
372
+ }
373
+ visited.add(next);
374
+ closure.push(next);
375
+ worklist.push(...(superClasses.get(next) ?? []));
376
+ }
377
+ superClasses.set(clazz, closure);
378
+ }
379
+ }
380
+ closeSubPropertiesTransitively(subProperties) {
381
+ for (const [property, directSupers] of subProperties.entries()) {
382
+ const visited = new Set();
383
+ const worklist = [...directSupers];
384
+ const closure = [property];
385
+ while (worklist.length > 0) {
386
+ const next = worklist.shift();
387
+ if (!next || visited.has(next)) {
388
+ continue;
389
+ }
390
+ visited.add(next);
391
+ closure.push(next);
392
+ worklist.push(...(subProperties.get(next) ?? []));
393
+ }
394
+ subProperties.set(property, [...new Set(closure)].sort());
395
+ }
396
+ }
397
+ isDatatypeIri(iri) {
398
+ return iri.startsWith('http://www.w3.org/2001/XMLSchema#') || iri === RDFS.Literal.value;
399
+ }
400
+ }
401
+ export class TBoxIndexCache {
402
+ constructor() {
403
+ this.ownIndexes = new Map();
404
+ this.mergedIndexes = new Map();
405
+ this.dirtyMerged = new Set();
406
+ }
407
+ getOwn(modelUri) {
408
+ return this.ownIndexes.get(modelUri);
409
+ }
410
+ setOwn(modelUri, index) {
411
+ this.ownIndexes.set(modelUri, index);
412
+ }
413
+ hasOwn(modelUri) {
414
+ return this.ownIndexes.has(modelUri);
415
+ }
416
+ invalidateOwn(modelUri) {
417
+ this.ownIndexes.delete(modelUri);
418
+ }
419
+ getMerged(modelUri) {
420
+ return this.mergedIndexes.get(modelUri);
421
+ }
422
+ setMerged(modelUri, index) {
423
+ this.mergedIndexes.set(modelUri, index);
424
+ this.dirtyMerged.delete(modelUri);
425
+ }
426
+ hasMerged(modelUri) {
427
+ return this.mergedIndexes.has(modelUri);
428
+ }
429
+ isMergedDirty(modelUri) {
430
+ return this.dirtyMerged.has(modelUri);
431
+ }
432
+ invalidateMerged(modelUri) {
433
+ this.dirtyMerged.add(modelUri);
434
+ }
435
+ invalidateMergedAll(modelUris) {
436
+ for (const modelUri of modelUris) {
437
+ this.invalidateMerged(modelUri);
438
+ }
439
+ }
440
+ }
441
+ export class TBoxChainer {
442
+ constructor(reasoningStore) {
443
+ this.reasoningStore = reasoningStore;
444
+ }
445
+ chain(modelUri) {
446
+ const graphs = this.reasoningStore.graphs(modelUri);
447
+ const store = this.reasoningStore.getStore();
448
+ this.reasoningStore.clearEntailments(modelUri);
449
+ let iterations = 0;
450
+ while (true) {
451
+ iterations += 1;
452
+ if (iterations > TBoxChainer.MAX_CHAIN_ITERATIONS) {
453
+ throw new Error(`TBox chaining did not converge for '${modelUri}' `
454
+ + `after ${TBoxChainer.MAX_CHAIN_ITERATIONS} iterations.`);
455
+ }
456
+ const pending = [];
457
+ const pendingKeys = new Set();
458
+ const iteration = this.collectIterationData(store, graphs);
459
+ this.fireT1(store, graphs, iteration, pending, pendingKeys);
460
+ this.fireT2(store, graphs, iteration, pending, pendingKeys);
461
+ this.fireT3(store, graphs, iteration, pending, pendingKeys);
462
+ this.fireT4(store, graphs, iteration, pending, pendingKeys);
463
+ this.fireT5(store, graphs, iteration, pending, pendingKeys);
464
+ if (pending.length === 0) {
465
+ break;
466
+ }
467
+ store.addQuads(pending);
468
+ }
469
+ }
470
+ fireT1(store, graphs, iteration, pending, pendingKeys) {
471
+ for (const edge of iteration.subClassEdges) {
472
+ for (const parent of iteration.subClassBySub.get(edge.object.value) ?? []) {
473
+ this.pushIfNew(store, quad(edge.subject, RDFS.subClassOf, parent, graphs.entailments), pending, pendingKeys);
474
+ }
475
+ }
476
+ }
477
+ fireT2(store, graphs, iteration, pending, pendingKeys) {
478
+ for (const edge of iteration.subPropertyEdges) {
479
+ for (const parent of iteration.subPropertyBySub.get(edge.object.value) ?? []) {
480
+ this.pushIfNew(store, quad(edge.subject, RDFS.subPropertyOf, parent, graphs.entailments), pending, pendingKeys);
481
+ }
482
+ }
483
+ }
484
+ fireT3(store, graphs, iteration, pending, pendingKeys) {
485
+ for (const [left, right] of iteration.equivalentClasses) {
486
+ this.pushIfNew(store, quad(namedNode(left), RDFS.subClassOf, namedNode(right), graphs.entailments), pending, pendingKeys);
487
+ this.pushIfNew(store, quad(namedNode(right), RDFS.subClassOf, namedNode(left), graphs.entailments), pending, pendingKeys);
488
+ }
489
+ }
490
+ fireT4(store, graphs, iteration, pending, pendingKeys) {
491
+ for (const [left, right] of iteration.equivalentProperties) {
492
+ this.pushIfNew(store, quad(namedNode(left), RDFS.subPropertyOf, namedNode(right), graphs.entailments), pending, pendingKeys);
493
+ this.pushIfNew(store, quad(namedNode(right), RDFS.subPropertyOf, namedNode(left), graphs.entailments), pending, pendingKeys);
494
+ }
495
+ }
496
+ fireT5(store, graphs, iteration, pending, pendingKeys) {
497
+ for (const [role, inverseRoles] of iteration.inverseByRole.entries()) {
498
+ for (const inverseRole of inverseRoles) {
499
+ this.pushIfNew(store, quad(inverseRole, OWL.inverseOf, namedNode(role), graphs.entailments), pending, pendingKeys);
500
+ }
501
+ }
502
+ }
503
+ collectIterationData(store, graphs) {
504
+ const quads = [
505
+ ...store.getQuads(null, null, null, graphs.own),
506
+ ...store.getQuads(null, null, null, graphs.entailments),
507
+ ];
508
+ const subClassEdges = [];
509
+ const subClassBySub = new Map();
510
+ const subPropertyEdges = [];
511
+ const subPropertyBySub = new Map();
512
+ const equivalentClasses = [];
513
+ const equivalentProperties = [];
514
+ const inverseByRole = new Map();
515
+ for (const q of quads) {
516
+ if (q.subject.termType !== 'NamedNode' || q.object.termType !== 'NamedNode') {
517
+ continue;
518
+ }
519
+ if (q.predicate.value === RDFS.subClassOf.value) {
520
+ subClassEdges.push({ subject: q.subject, object: q.object });
521
+ const parents = subClassBySub.get(q.subject.value) ?? [];
522
+ parents.push(q.object);
523
+ subClassBySub.set(q.subject.value, parents);
524
+ continue;
525
+ }
526
+ if (q.predicate.value === RDFS.subPropertyOf.value || q.predicate.value === OWL.subPropertyOf.value) {
527
+ subPropertyEdges.push({ subject: q.subject, object: q.object });
528
+ const parents = subPropertyBySub.get(q.subject.value) ?? [];
529
+ parents.push(q.object);
530
+ subPropertyBySub.set(q.subject.value, parents);
531
+ continue;
532
+ }
533
+ if (q.predicate.value === OWL.equivalentClass.value) {
534
+ equivalentClasses.push([q.subject.value, q.object.value]);
535
+ continue;
536
+ }
537
+ if (q.predicate.value === OWL.equivalentProperty.value) {
538
+ equivalentProperties.push([q.subject.value, q.object.value]);
539
+ continue;
540
+ }
541
+ if (q.predicate.value === OWL.inverseOf.value) {
542
+ const entries = inverseByRole.get(q.subject.value) ?? [];
543
+ if (!entries.some((entry) => entry.value === q.object.value)) {
544
+ entries.push(q.object);
545
+ }
546
+ inverseByRole.set(q.subject.value, entries);
547
+ }
548
+ }
549
+ return {
550
+ subClassEdges,
551
+ subClassBySub,
552
+ subPropertyEdges,
553
+ subPropertyBySub,
554
+ equivalentClasses,
555
+ equivalentProperties,
556
+ inverseByRole,
557
+ };
558
+ }
559
+ pushIfNew(store, inferred, pending, pendingKeys) {
560
+ if (store.has(inferred)) {
561
+ return;
562
+ }
563
+ const key = this.quadKey(inferred);
564
+ if (pendingKeys.has(key)) {
565
+ return;
566
+ }
567
+ pending.push(inferred);
568
+ pendingKeys.add(key);
569
+ }
570
+ quadKey(q) {
571
+ return `${q.subject.id}|${q.predicate.id}|${q.object.id}|${q.graph.id}`;
572
+ }
573
+ }
574
+ TBoxChainer.MAX_CHAIN_ITERATIONS = 1000;
575
+ //# sourceMappingURL=owl-tbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owl-tbox.js","sourceRoot":"","sources":["../../src/owl/owl-tbox.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAIjC,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EACzB,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,YAAY,GACf,MAAM,eAAe,CAAC;AAEvB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;AAExC,MAAM,GAAG,GAAG;IACR,IAAI,EAAE,SAAS,CAAC,iDAAiD,CAAC;CACrE,CAAC;AAEF,MAAM,IAAI,GAAG;IACT,UAAU,EAAE,SAAS,CAAC,iDAAiD,CAAC;IACxE,aAAa,EAAE,SAAS,CAAC,oDAAoD,CAAC;IAC9E,OAAO,EAAE,SAAS,CAAC,8CAA8C,CAAC;CACrE,CAAC;AAEF,MAAM,GAAG,GAAG;IACR,eAAe,EAAE,SAAS,CAAC,+CAA+C,CAAC;IAC3E,kBAAkB,EAAE,SAAS,CAAC,kDAAkD,CAAC;IACjF,MAAM,EAAE,SAAS,CAAC,sCAAsC,CAAC;IACzD,aAAa,EAAE,SAAS,CAAC,6CAA6C,CAAC;IACvE,SAAS,EAAE,SAAS,CAAC,yCAAyC,CAAC;IAC/D,kBAAkB,EAAE,SAAS,CAAC,kDAAkD,CAAC;IACjF,yBAAyB,EAAE,SAAS,CAAC,yDAAyD,CAAC;IAC/F,iBAAiB,EAAE,SAAS,CAAC,iDAAiD,CAAC;IAC/E,kBAAkB,EAAE,SAAS,CAAC,kDAAkD,CAAC;IACjF,aAAa,EAAE,SAAS,CAAC,6CAA6C,CAAC;CAC1E,CAAC;AAEF,MAAM,GAAG,GAAG;IACR,SAAS,EAAE,SAAS,CAAC,oCAAoC,CAAC;IAC1D,SAAS,EAAE,SAAS,CAAC,oCAAoC,CAAC;CAC7D,CAAC;AA+BF,MAAM,OAAO,gBAAgB;IACzB,YACqB,cAAwB,EACxB,cAAiC,EACjC,WAA2B;QAF3B,mBAAc,GAAd,cAAc,CAAU;QACxB,mBAAc,GAAd,cAAc,CAAmB;QACjC,gBAAW,GAAX,WAAW,CAAgB;IAC7C,CAAC;IAEJ,QAAQ,CAAC,QAAgB,EAAE,QAAmB;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEhC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACrC,SAAS;YACb,CAAC;YAED,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC5E,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBAClD,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;oBAChE,KAAK,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3D,CAAC;qBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;oBACxD,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnD,CAAC;qBAAM,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;oBACzD,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpD,CAAC;gBACD,SAAS;YACb,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,SAAS;YACb,CAAC;YAED,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7E,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC7E,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAClG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9E,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBACrD,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9E,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9E,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,6CAA6C,EAAE,CAAC;gBACtE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,4CAA4C,EAAE,CAAC;gBACrE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClF,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChF,CAAC;gBACD,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,QAAgB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEjB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;gBACP,SAAS;YACb,CAAC;YAED,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAChE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACnE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACxD,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,QAAQ,CAAC,KAAY,EAAE,MAAkD,EAAE,CAAc,EAAE,CAAc,EAAE,CAAc;QAC7H,OAAO;YACH,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;YACtC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;SACjD,CAAC;IACN,CAAC;IAEO,kBAAkB,CAAC,GAA0B,EAAE,GAAW,EAAE,KAAa;QAC7E,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,UAAU;QACd,OAAO;YACH,YAAY,EAAE,IAAI,GAAG,EAAoB;YACzC,aAAa,EAAE,IAAI,GAAG,EAAoB;YAC1C,MAAM,EAAE,IAAI,GAAG,EAAoB;YACnC,WAAW,EAAE,IAAI,GAAG,EAAoB;YACxC,aAAa,EAAE,IAAI,GAAG,EAAoB;YAC1C,YAAY,EAAE,IAAI,GAAG,EAAoB;YACzC,YAAY,EAAE,EAAE;YAChB,mBAAmB,EAAE,IAAI,GAAG,EAAU;YACtC,oBAAoB,EAAE,IAAI,GAAG,EAAU;YACvC,oBAAoB,EAAE,IAAI,GAAG,EAAU;YACvC,2BAA2B,EAAE,IAAI,GAAG,EAAU;SACjD,CAAC;IACN,CAAC;IAEO,mBAAmB,CAAC,MAA6B,EAAE,MAA6B;QACpF,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAEO,QAAQ,CAAC,MAAmB,EAAE,MAAmB;QACrD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAA+B,EAAE,MAA+B;QACtF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,iBAAiB,CAAC,QAAoD;QAC1E,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;YACrD,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACvD,IAAI,OAAO,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;gBACD,SAAS;YACb,CAAC;YACD,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAClE,IAAI,OAAO,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,uBAAuB,CAAC,QAAwB,EAAE,QAAkB;QACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAE,QAAgB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,SAAS,GAAG,WAAW,EAAE,CAAC;QAChD,OAAO;YACH,GAAG,EAAE,GAAG,UAAU,cAAc;YAChC,IAAI,EAAE;gBACF,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;gBACzF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;gBAC9I,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;aACjJ;YACD,IAAI,EAAE;gBACF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;aACxI;SACJ,CAAC;IACN,CAAC;IAEO,YAAY,CAAC,IAAU,EAAE,QAAkB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;IAEO,eAAe,CAAC,UAAuB,EAAE,QAAkB;QAC/D,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAClE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzB,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAClD,SAAS;YACb,CAAC;YACD,IAAI,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACvE,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpE,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjE,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;gBAClF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBACjH,SAAS;YACb,CAAC;YACD,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpE,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC3C,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;gBACpE,SAAS;YACb,CAAC;YACD,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACpE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC3B,OAAO,SAAS,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,UAAU;oBAChB,WAAW,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK;oBACtF,SAAS;oBACT,SAAS;iBACZ,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,QAAkB,EAAE,QAAkB;QACxD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzD,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5D,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,YAAY,CAAC,YAAqB,EAAE,QAAkB;QAC1D,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtI,CAAC;QACD,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtI,CAAC;QACD,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,0CAA0C,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACtI,CAAC;QACD,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,yCAAyC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACrI,CAAC;QACD,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACjE,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACzG,CAAC;YACD,OAAO;gBACH,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,yCAAyC;gBACpI,QAAQ,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;aACvC,CAAC;QACN,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,GAAqC,EAAE,QAAkB;QAC3E,MAAM,MAAM,GAAI,GAAW,EAAE,GAAG,IAAI,GAAG,CAAC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAiD,EAAE,QAAQ,CAAC,CAAC;IACvF,CAAC;IAEO,SAAS,CAAC,MAA+C,EAAE,gBAA0B;QACzF,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAE,QAAgB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAEO,UAAU,CAAC,IAA8B;QAC7C,IAAI,OAAO,GAAQ,IAAI,CAAC;QACxB,OAAO,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC;QACD,OAAO,OAA+B,CAAC;IAC3C,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,6BAA6B,CAAC,YAAmC;QACrE,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;YACnC,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,SAAS;gBACb,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAEO,8BAA8B,CAAC,aAAoC;QACvE,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;YAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;YACnC,MAAM,OAAO,GAAa,CAAC,QAAQ,CAAC,CAAC;YAErC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,SAAS;gBACb,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACtD,CAAC;YAED,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,GAAW;QAC7B,OAAO,GAAG,CAAC,UAAU,CAAC,mCAAmC,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7F,CAAC;CACJ;AAED,MAAM,OAAO,cAAc;IAA3B;QACqB,eAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC1C,kBAAa,GAAG,IAAI,GAAG,EAAqB,CAAC;QAC7C,gBAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IA4CrD,CAAC;IA1CG,MAAM,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,KAAgB;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,aAAa,CAAC,QAAgB;QAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,QAAgB,EAAE,KAAgB;QACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,mBAAmB,CAAC,SAAmB;QACnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;CACJ;AAED,MAAM,OAAO,WAAW;IAGpB,YAA6B,cAAwB;QAAxB,mBAAc,GAAd,cAAc,CAAU;IAAG,CAAC;IAEzD,KAAK,CAAC,QAAgB;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,OAAO,IAAI,EAAE,CAAC;YACV,UAAU,IAAI,CAAC,CAAC;YAChB,IAAI,UAAU,GAAG,WAAW,CAAC,oBAAoB,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CACX,uCAAuC,QAAQ,IAAI;sBACjD,SAAS,WAAW,CAAC,oBAAoB,cAAc,CAC5D,CAAC;YACN,CAAC;YAED,MAAM,OAAO,GAAW,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAE3D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAE5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM;YACV,CAAC;YACD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAEO,MAAM,CACV,KAAY,EACZ,MAAkD,EAClD,SAA4B,EAC5B,OAAe,EACf,WAAwB;QAExB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YACzC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YACjH,CAAC;QACL,CAAC;IACL,CAAC;IAEO,MAAM,CACV,KAAY,EACZ,MAAkD,EAClD,SAA4B,EAC5B,OAAe,EACf,WAAwB;QAExB,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;YAC5C,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC3E,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YACpH,CAAC;QACL,CAAC;IACL,CAAC;IAEO,MAAM,CACV,KAAY,EACZ,MAAkD,EAClD,SAA4B,EAC5B,OAAe,EACf,WAAwB;QAExB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC1H,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9H,CAAC;IACL,CAAC;IAEO,MAAM,CACV,KAAY,EACZ,MAAkD,EAClD,SAA4B,EAC5B,OAAe,EACf,WAAwB;QAExB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YAC7H,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACjI,CAAC;IACL,CAAC;IAEO,MAAM,CACV,KAAY,EACZ,MAAkD,EAClD,SAA4B,EAC5B,OAAe,EACf,WAAwB;QAExB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACnE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YACvH,CAAC;QACL,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,KAAY,EAAE,MAAkD;QACzF,MAAM,KAAK,GAAG;YACV,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;YAC/C,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC;SAC1D,CAAC;QAEF,MAAM,aAAa,GAAqD,EAAE,CAAC;QAC3E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;QACrD,MAAM,gBAAgB,GAAqD,EAAE,CAAC;QAC9E,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAuB,CAAC;QACxD,MAAM,iBAAiB,GAA4B,EAAE,CAAC;QACtD,MAAM,oBAAoB,GAA4B,EAAE,CAAC;QACzD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;QAErD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBAC1E,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC9C,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC5C,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAClG,gBAAgB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvB,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC/C,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAClD,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1D,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;gBACrD,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7D,SAAS;YACb,CAAC;YACD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QAED,OAAO;YACH,aAAa;YACb,aAAa;YACb,gBAAgB;YAChB,gBAAgB;YAChB,iBAAiB;YACjB,oBAAoB;YACpB,aAAa;SAChB,CAAC;IACN,CAAC;IAEO,SAAS,CAAC,KAAY,EAAE,QAAc,EAAE,OAAe,EAAE,WAAwB;QACrF,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAEO,OAAO,CAAC,CAAO;QACnB,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5E,CAAC;;AAlLuB,gCAAoB,GAAG,IAAI,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Module } from 'langium';
2
+ import { type DefaultSharedModuleContext, type LangiumSharedServices, type PartialLangiumServices } from 'langium/lsp';
3
+ import { OmlServices } from '@oml/language';
4
+ import { ReasoningService } from './owl/owl-service.js';
5
+ export type OwlAddedServices = {
6
+ reasoning: {
7
+ ReasoningService: ReasoningService;
8
+ };
9
+ };
10
+ export type OwlServices = OmlServices & OwlAddedServices;
11
+ export declare const OwlModule: Module<OwlServices, PartialLangiumServices & OwlAddedServices>;
12
+ export declare function createOwlServices(context: DefaultSharedModuleContext): {
13
+ shared: LangiumSharedServices;
14
+ Oml: OwlServices;
15
+ };
@@ -0,0 +1,22 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ import { inject } from 'langium';
3
+ import { createDefaultModule, createDefaultSharedModule } from 'langium/lsp';
4
+ import { OmlGeneratedModule, OmlGeneratedSharedModule, OmlModule, OmlSharedModule, registerValidationChecks, } from '@oml/language';
5
+ import { ReasoningService } from './owl/owl-service.js';
6
+ export const OwlModule = {
7
+ reasoning: {
8
+ ReasoningService: (services) => new ReasoningService(services)
9
+ }
10
+ };
11
+ export function createOwlServices(context) {
12
+ const shared = inject(createDefaultSharedModule(context), OmlGeneratedSharedModule, OmlSharedModule);
13
+ const Oml = inject(createDefaultModule({ shared }), OmlGeneratedModule, OmlModule, OwlModule);
14
+ shared.ServiceRegistry.register(Oml);
15
+ registerValidationChecks(Oml);
16
+ void Oml.reasoning.ReasoningService;
17
+ if (!context.connection) {
18
+ shared.workspace.ConfigurationProvider.initialized({});
19
+ }
20
+ return { shared, Oml };
21
+ }
22
+ //# sourceMappingURL=owl-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owl-module.js","sourceRoot":"","sources":["../src/owl-module.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAA+H,MAAM,aAAa,CAAC;AAC1M,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EACxB,SAAS,EACT,eAAe,EAEf,wBAAwB,GAC3B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAUxD,MAAM,CAAC,MAAM,SAAS,GAAmE;IACrF,SAAS,EAAE;QACP,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC,QAAuB,CAAC;KAChF;CACJ,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IAIjE,MAAM,MAAM,GAAG,MAAM,CACjB,yBAAyB,CAAC,OAAO,CAAC,EAClC,wBAAwB,EACxB,eAA8E,CACjF,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CACd,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,EAC/B,kBAAkB,EAClB,SAAwD,EACxD,SAAS,CACZ,CAAC;IACF,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAK,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;AAC3B,CAAC"}