@comake/skl-js-engine 0.10.2 → 0.11.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 (32) hide show
  1. package/dist/index.d.ts +1 -6
  2. package/dist/index.js +1 -7
  3. package/dist/index.js.map +1 -1
  4. package/dist/sklEngine.d.ts +1 -2
  5. package/dist/sklEngine.js +2 -6
  6. package/dist/sklEngine.js.map +1 -1
  7. package/dist/storage/BaseQueryAdapterOptions.d.ts +1 -1
  8. package/dist/storage/sparql/{BasicSparqlQueryAdapter.d.ts → SparqlQueryAdapter.d.ts} +1 -1
  9. package/dist/storage/sparql/{BasicSparqlQueryAdapter.js → SparqlQueryAdapter.js} +8 -8
  10. package/dist/storage/sparql/SparqlQueryAdapter.js.map +1 -0
  11. package/dist/storage/sparql/SparqlQueryBuilder.d.ts +62 -5
  12. package/dist/storage/sparql/SparqlQueryBuilder.js +592 -0
  13. package/dist/storage/sparql/SparqlQueryBuilder.js.map +1 -1
  14. package/dist/util/TripleUtil.js +4 -1
  15. package/dist/util/TripleUtil.js.map +1 -1
  16. package/package.json +1 -1
  17. package/dist/storage/blazegraph/BlazegraphQueryAdapter.d.ts +0 -32
  18. package/dist/storage/blazegraph/BlazegraphQueryAdapter.js +0 -137
  19. package/dist/storage/blazegraph/BlazegraphQueryAdapter.js.map +0 -1
  20. package/dist/storage/blazegraph/BlazegraphQueryAdapterOptions.d.ts +0 -15
  21. package/dist/storage/blazegraph/BlazegraphQueryAdapterOptions.js +0 -3
  22. package/dist/storage/blazegraph/BlazegraphQueryAdapterOptions.js.map +0 -1
  23. package/dist/storage/blazegraph/BlazegraphQueryBuilder.d.ts +0 -23
  24. package/dist/storage/blazegraph/BlazegraphQueryBuilder.js +0 -98
  25. package/dist/storage/blazegraph/BlazegraphQueryBuilder.js.map +0 -1
  26. package/dist/storage/sparql/BasicSparqlQueryAdapter.js.map +0 -1
  27. package/dist/storage/sparql/BasicSparqlQueryBuilder.d.ts +0 -17
  28. package/dist/storage/sparql/BasicSparqlQueryBuilder.js +0 -36
  29. package/dist/storage/sparql/BasicSparqlQueryBuilder.js.map +0 -1
  30. package/dist/storage/sparql/SparqlQueryPatternBuilder.d.ts +0 -58
  31. package/dist/storage/sparql/SparqlQueryPatternBuilder.js +0 -573
  32. package/dist/storage/sparql/SparqlQueryPatternBuilder.js.map +0 -1
@@ -1,3 +1,595 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SparqlQueryBuilder = void 0;
7
+ const data_model_1 = __importDefault(require("@rdfjs/data-model"));
8
+ const SparqlUtil_1 = require("../../util/SparqlUtil");
9
+ const TripleUtil_1 = require("../../util/TripleUtil");
10
+ const Util_1 = require("../../util/Util");
11
+ const Vocabularies_1 = require("../../util/Vocabularies");
12
+ const FindOperator_1 = require("../FindOperator");
13
+ const VariableGenerator_1 = require("./VariableGenerator");
14
+ class SparqlQueryBuilder {
15
+ constructor() {
16
+ this.variableGenerator = new VariableGenerator_1.VariableGenerator();
17
+ }
18
+ buildEntitySelectPatternsFromOptions(subject, options) {
19
+ const relations = options?.select ? undefined : options?.relations;
20
+ const whereQueryData = this.createWhereQueryData(subject, options?.where);
21
+ const orderQueryData = this.createOrderQueryData(subject, options?.order);
22
+ const relationsQueryData = this.createRelationsQueryData(subject, relations);
23
+ if (whereQueryData.triples.length === 0 && (whereQueryData.filters.length > 0 ||
24
+ orderQueryData.triples.length > 0 ||
25
+ (whereQueryData.values.length === 0 &&
26
+ whereQueryData.graphValues.length === 0 &&
27
+ whereQueryData.graphTriples.length === 0))) {
28
+ whereQueryData.triples.push({
29
+ subject,
30
+ predicate: this.createVariable(),
31
+ object: this.createVariable(),
32
+ });
33
+ }
34
+ const wherePatterns = this.createWherePatternsFromQueryData(whereQueryData.values, whereQueryData.triples, whereQueryData.filters, orderQueryData.triples, orderQueryData.filters);
35
+ const graphWherePatterns = this.createWherePatternsFromQueryData(whereQueryData.graphValues, whereQueryData.graphTriples, whereQueryData.graphFilters, undefined, undefined, undefined, relationsQueryData.patterns);
36
+ return {
37
+ where: wherePatterns,
38
+ orders: orderQueryData.orders,
39
+ group: orderQueryData.groupByParent ? subject : undefined,
40
+ graphWhere: graphWherePatterns,
41
+ graphSelectionTriples: relationsQueryData.selectionTriples,
42
+ };
43
+ }
44
+ buildConstructFromEntitySelectQuery(graphWhere, graphSelectionTriples, select) {
45
+ let triples;
46
+ let where = [];
47
+ if (select) {
48
+ triples = this.createSelectPattern(select, SparqlUtil_1.entityVariable);
49
+ where = [
50
+ (0, SparqlUtil_1.createSparqlOptional)([
51
+ (0, SparqlUtil_1.createSparqlBasicGraphPattern)(triples),
52
+ ]),
53
+ ...graphWhere,
54
+ ];
55
+ }
56
+ else {
57
+ triples = [SparqlUtil_1.entityGraphTriple, ...graphSelectionTriples];
58
+ where = [
59
+ ...graphWhere,
60
+ (0, SparqlUtil_1.createSparqlGraphPattern)(SparqlUtil_1.entityVariable, [(0, SparqlUtil_1.createSparqlBasicGraphPattern)([SparqlUtil_1.entityGraphTriple])]),
61
+ ];
62
+ }
63
+ return (0, SparqlUtil_1.createSparqlConstructQuery)(triples, where);
64
+ }
65
+ createWhereQueryData(subject, where, baseTriples = []) {
66
+ const hasSingleKey = Object.keys(where ?? {}).length === 1;
67
+ const whereQueryData = Object.entries(where ?? {}).reduce((obj, [key, value]) => {
68
+ const whereQueryDataForField = this.createWhereQueryDataForField(subject, key, value, hasSingleKey);
69
+ return {
70
+ values: [...obj.values, ...whereQueryDataForField.values],
71
+ triples: [...obj.triples, ...whereQueryDataForField.triples],
72
+ filters: [...obj.filters, ...whereQueryDataForField.filters],
73
+ graphValues: [...obj.graphValues, ...whereQueryDataForField.graphValues],
74
+ graphTriples: [...obj.graphTriples, ...whereQueryDataForField.graphTriples],
75
+ graphFilters: [...obj.graphFilters, ...whereQueryDataForField.graphFilters],
76
+ };
77
+ }, { values: [], triples: baseTriples, filters: [], graphValues: [], graphTriples: [], graphFilters: [] });
78
+ return whereQueryData;
79
+ }
80
+ createWhereQueryDataForField(subject, field, value, isOnlyField) {
81
+ if (field === 'id') {
82
+ return this.createWhereQueryDataForIdValue(subject, value, isOnlyField);
83
+ }
84
+ if (field === 'type') {
85
+ return this.createWhereQueryDataForType(subject, value);
86
+ }
87
+ const predicate = data_model_1.default.namedNode(field);
88
+ return this.createWhereQueryDataFromKeyValue(subject, predicate, value);
89
+ }
90
+ createWhereQueryDataForIdValue(term, value, isOnlyField) {
91
+ let filter;
92
+ let valuePattern;
93
+ if (FindOperator_1.FindOperator.isFindOperator(value)) {
94
+ ({ filter, valuePattern } = this.resolveFindOperatorAsExpressionForId(term, value));
95
+ }
96
+ else {
97
+ valuePattern = {
98
+ type: 'values',
99
+ values: [{
100
+ [`?${term.value}`]: data_model_1.default.namedNode(value),
101
+ }],
102
+ };
103
+ }
104
+ if (isOnlyField) {
105
+ return {
106
+ values: [],
107
+ filters: [],
108
+ triples: [],
109
+ graphValues: valuePattern ? [valuePattern] : [],
110
+ graphFilters: filter ? [filter] : [],
111
+ graphTriples: [],
112
+ };
113
+ }
114
+ return {
115
+ values: valuePattern ? [valuePattern] : [],
116
+ filters: filter ? [filter] : [],
117
+ triples: [],
118
+ graphValues: [],
119
+ graphFilters: [],
120
+ graphTriples: [],
121
+ };
122
+ }
123
+ createWhereQueryDataForType(subject, value) {
124
+ if (FindOperator_1.FindOperator.isFindOperator(value)) {
125
+ if (value.operator === 'inverse') {
126
+ const inversePredicate = (0, SparqlUtil_1.createSparqlInversePredicate)([SparqlUtil_1.allTypesAndSuperTypesPath]);
127
+ const inverseWhereQueryData = this.createWhereQueryDataFromKeyValue(subject, inversePredicate, value.value);
128
+ return {
129
+ values: inverseWhereQueryData.values,
130
+ filters: inverseWhereQueryData.filters,
131
+ triples: inverseWhereQueryData.triples,
132
+ graphValues: [],
133
+ graphTriples: [],
134
+ graphFilters: [],
135
+ };
136
+ }
137
+ const variable = this.createVariable();
138
+ const triple = { subject, predicate: SparqlUtil_1.allTypesAndSuperTypesPath, object: variable };
139
+ const { filter, valuePattern, tripleInFilter } = this.resolveFindOperatorAsExpressionWithMultipleValues(variable, value, triple);
140
+ return {
141
+ values: valuePattern ? [valuePattern] : [],
142
+ filters: filter ? [filter] : [],
143
+ triples: tripleInFilter ? [] : [triple],
144
+ graphValues: [],
145
+ graphFilters: [],
146
+ graphTriples: [],
147
+ };
148
+ }
149
+ return {
150
+ values: [],
151
+ filters: [],
152
+ triples: [{
153
+ subject,
154
+ predicate: SparqlUtil_1.allTypesAndSuperTypesPath,
155
+ object: data_model_1.default.namedNode(value),
156
+ }],
157
+ graphValues: [],
158
+ graphFilters: [],
159
+ graphTriples: [],
160
+ };
161
+ }
162
+ createWhereQueryDataFromKeyValue(subject, predicate, value) {
163
+ if (Array.isArray(value) && FindOperator_1.FindOperator.isFindOperator(value[0])) {
164
+ return this.createWhereQueryDataForMultipleFindOperators(subject, predicate, value);
165
+ }
166
+ if (FindOperator_1.FindOperator.isFindOperator(value)) {
167
+ return this.createWhereQueryDataForFindOperator(subject, predicate, value);
168
+ }
169
+ if (Array.isArray(value)) {
170
+ return value.reduce((obj, valueItem) => {
171
+ const valueWhereQueryData = this.createWhereQueryDataFromKeyValue(subject, predicate, valueItem);
172
+ return {
173
+ values: [...obj.values, ...valueWhereQueryData.values],
174
+ filters: [...obj.filters, ...valueWhereQueryData.filters],
175
+ triples: [...obj.triples, ...valueWhereQueryData.triples],
176
+ graphValues: [...obj.graphValues, ...valueWhereQueryData.graphValues],
177
+ graphFilters: [...obj.graphFilters, ...valueWhereQueryData.graphFilters],
178
+ graphTriples: [...obj.graphTriples, ...valueWhereQueryData.graphTriples],
179
+ };
180
+ }, { values: [], filters: [], triples: [], graphTriples: [], graphValues: [], graphFilters: [] });
181
+ }
182
+ if (typeof value === 'object') {
183
+ if ('@value' in value) {
184
+ return this.createWhereQueryDataForValueObject(subject, predicate, value);
185
+ }
186
+ return this.createWhereQueryDataForNestedWhere(subject, predicate, value);
187
+ }
188
+ const term = this.resolveValueToTerm(value);
189
+ return {
190
+ values: [],
191
+ filters: [],
192
+ triples: [{ subject, predicate, object: term }],
193
+ graphValues: [],
194
+ graphFilters: [],
195
+ graphTriples: [],
196
+ };
197
+ }
198
+ createWhereQueryDataForFindOperator(subject, predicate, operator) {
199
+ if (operator.operator === 'inverse') {
200
+ const inversePredicate = (0, SparqlUtil_1.createSparqlInversePredicate)([predicate]);
201
+ const inverseWhereQueryData = this.createWhereQueryDataFromKeyValue(subject, inversePredicate, operator.value);
202
+ return {
203
+ values: inverseWhereQueryData.values,
204
+ filters: inverseWhereQueryData.filters,
205
+ triples: inverseWhereQueryData.triples,
206
+ graphValues: [],
207
+ graphTriples: [],
208
+ graphFilters: [],
209
+ };
210
+ }
211
+ const variable = this.createVariable();
212
+ const triple = { subject, predicate, object: variable };
213
+ const { filter, valuePattern } = this.resolveFindOperatorAsExpressionWithMultipleValues(variable, operator, triple);
214
+ return {
215
+ values: valuePattern ? [valuePattern] : [],
216
+ filters: filter ? [filter] : [],
217
+ triples: [triple],
218
+ graphValues: [],
219
+ graphTriples: [],
220
+ graphFilters: [],
221
+ };
222
+ }
223
+ createWhereQueryDataForMultipleFindOperators(subject, predicate, operators) {
224
+ const variable = this.createVariable();
225
+ const triple = { subject, predicate, object: variable };
226
+ const whereQueryData = {
227
+ values: [],
228
+ filters: [],
229
+ triples: [triple],
230
+ graphValues: [],
231
+ graphTriples: [],
232
+ graphFilters: [],
233
+ };
234
+ return operators.reduce((obj, operator) => {
235
+ const { filter, valuePattern } = this.resolveFindOperatorAsExpressionWithMultipleValues(variable, operator, triple);
236
+ if (valuePattern) {
237
+ obj.values.push(valuePattern);
238
+ }
239
+ if (filter) {
240
+ obj.filters.push(filter);
241
+ }
242
+ return obj;
243
+ }, whereQueryData);
244
+ }
245
+ createWhereQueryDataForNestedWhere(subject, predicate, where) {
246
+ const subNodeVariable = this.createVariable();
247
+ const subWhereQueryData = this.createWhereQueryData(subNodeVariable, where);
248
+ return {
249
+ values: [...subWhereQueryData.values, ...subWhereQueryData.graphValues],
250
+ filters: subWhereQueryData.filters,
251
+ triples: [
252
+ { subject, predicate, object: subNodeVariable },
253
+ ...subWhereQueryData.triples,
254
+ ],
255
+ graphValues: [],
256
+ graphFilters: [],
257
+ graphTriples: [],
258
+ };
259
+ }
260
+ createWhereQueryDataForValueObject(subject, predicate, valueObject) {
261
+ const term = this.valueObjectToTerm(valueObject);
262
+ return {
263
+ values: [],
264
+ filters: [],
265
+ triples: [{ subject, predicate, object: term }],
266
+ graphValues: [],
267
+ graphFilters: [],
268
+ graphTriples: [],
269
+ };
270
+ }
271
+ valueObjectToTerm(valueObject) {
272
+ let typeOrLanguage;
273
+ let value;
274
+ if ('@type' in valueObject && valueObject['@type'] === '@json') {
275
+ typeOrLanguage = Vocabularies_1.RDF.JSON;
276
+ value = JSON.stringify(valueObject['@value']);
277
+ }
278
+ else {
279
+ typeOrLanguage = ('@type' in valueObject ? valueObject['@type'] : valueObject['@language']);
280
+ value = valueObject['@value'].toString();
281
+ }
282
+ return data_model_1.default.literal(value, typeOrLanguage);
283
+ }
284
+ resolveFindOperatorAsExpressionWithMultipleValues(leftSide, operator, triple, dontUseValuePattern = false) {
285
+ if (operator.operator === 'in') {
286
+ const resolvedValue = this.resolveValueToExpression(operator.value);
287
+ if (Array.isArray(resolvedValue) && !dontUseValuePattern) {
288
+ return {
289
+ valuePattern: {
290
+ type: 'values',
291
+ values: resolvedValue.map((value) => ({ [`?${leftSide.value}`]: value })),
292
+ },
293
+ };
294
+ }
295
+ return {
296
+ filter: (0, SparqlUtil_1.createSparqlInOperation)(leftSide, resolvedValue),
297
+ };
298
+ }
299
+ if (operator.operator === 'not') {
300
+ return {
301
+ filter: this.buildNotOperationForMultiValued(leftSide, this.resolveValueToExpression(operator.value), triple),
302
+ tripleInFilter: true,
303
+ };
304
+ }
305
+ const resolvedExpression = this.resolveValueToExpression(operator.value);
306
+ switch (operator.operator) {
307
+ case 'equal':
308
+ return { filter: (0, SparqlUtil_1.createSparqlEqualOperation)(leftSide, resolvedExpression) };
309
+ case 'gt':
310
+ return { filter: (0, SparqlUtil_1.createSparqlGtOperation)(leftSide, resolvedExpression) };
311
+ case 'gte':
312
+ return { filter: (0, SparqlUtil_1.createSparqlGteOperation)(leftSide, resolvedExpression) };
313
+ case 'lt':
314
+ return { filter: (0, SparqlUtil_1.createSparqlLtOperation)(leftSide, resolvedExpression) };
315
+ case 'lte':
316
+ return { filter: (0, SparqlUtil_1.createSparqlLteOperation)(leftSide, resolvedExpression) };
317
+ default:
318
+ throw new Error(`Unsupported operator "${operator.operator}"`);
319
+ }
320
+ }
321
+ resolveFindOperatorAsExpressionForId(leftSide, operator) {
322
+ switch (operator.operator) {
323
+ case 'in': {
324
+ const resolvedValue = this.resolveValueToExpression(operator.value);
325
+ return {
326
+ valuePattern: {
327
+ type: 'values',
328
+ values: resolvedValue.map((value) => ({ [`?${leftSide.value}`]: value })),
329
+ },
330
+ };
331
+ }
332
+ case 'not':
333
+ return {
334
+ filter: this.buildNotOperationForId(leftSide, this.resolveValueToExpression(operator.value)),
335
+ };
336
+ case 'equal':
337
+ return {
338
+ filter: (0, SparqlUtil_1.createSparqlEqualOperation)(leftSide, this.resolveValueToExpression(operator.value)),
339
+ };
340
+ default:
341
+ throw new Error(`Unsupported operator "${operator.operator}"`);
342
+ }
343
+ }
344
+ resolveValueToExpression(value) {
345
+ if (FindOperator_1.FindOperator.isFindOperator(value)) {
346
+ return value;
347
+ }
348
+ if (Array.isArray(value)) {
349
+ return value.map((valueItem) => this.resolveValueToTerm(valueItem));
350
+ }
351
+ return this.resolveValueToTerm(value);
352
+ }
353
+ buildNotOperationForMultiValued(leftSide, rightSide, triple) {
354
+ let filterExpression;
355
+ const rightSideIsOperation = typeof rightSide === 'object' && 'operator' in rightSide;
356
+ if (rightSideIsOperation) {
357
+ let expression;
358
+ try {
359
+ ({ filter: expression } = this.resolveFindOperatorAsExpressionWithMultipleValues(leftSide, rightSide, triple, true));
360
+ }
361
+ catch {
362
+ throw new Error(`Unsupported Not sub operator "${rightSide.operator}"`);
363
+ }
364
+ filterExpression = (0, SparqlUtil_1.createSparqlFilterWithExpression)(expression);
365
+ }
366
+ else {
367
+ filterExpression = (0, SparqlUtil_1.createSparqlFilterWithExpression)((0, SparqlUtil_1.createSparqlEqualOperation)(leftSide, rightSide));
368
+ }
369
+ return (0, SparqlUtil_1.createSparqlNotExistsOperation)([
370
+ (0, SparqlUtil_1.createSparqlSelectGroup)([
371
+ (0, SparqlUtil_1.createSparqlBasicGraphPattern)([triple]),
372
+ filterExpression,
373
+ ]),
374
+ ]);
375
+ }
376
+ buildNotOperationForId(leftSide, rightSide) {
377
+ if (FindOperator_1.FindOperator.isFindOperator(rightSide)) {
378
+ const resolvedValue = this.resolveValueToExpression(rightSide.value);
379
+ switch (rightSide.operator) {
380
+ case 'in':
381
+ return (0, SparqlUtil_1.createSparqlNotInOperation)(leftSide, resolvedValue);
382
+ case 'equal':
383
+ return (0, SparqlUtil_1.createSparqlNotEqualOperation)(leftSide, resolvedValue);
384
+ default:
385
+ throw new Error(`Unsupported Not sub operator "${rightSide.operator}"`);
386
+ }
387
+ }
388
+ return (0, SparqlUtil_1.createSparqlNotEqualOperation)(leftSide, rightSide);
389
+ }
390
+ resolveValueToTerm(value) {
391
+ if (typeof value === 'object' && '@value' in value) {
392
+ return (0, TripleUtil_1.valueToLiteral)(value['@value'], '@type' in value ? value['@type'] : undefined);
393
+ }
394
+ if ((0, Util_1.isUrl)(value)) {
395
+ return data_model_1.default.namedNode(value);
396
+ }
397
+ return (0, TripleUtil_1.valueToLiteral)(value);
398
+ }
399
+ createOrderQueryData(subject, order, isNested = false) {
400
+ if (!order) {
401
+ return { triples: [], orders: [], filters: [] };
402
+ }
403
+ return Object.entries(order).reduce((obj, [property, orderValue]) => {
404
+ const orderQueryData = this.createOrderQueryDataForProperty(subject, property, orderValue, isNested);
405
+ obj.orders = [...obj.orders, ...orderQueryData.orders];
406
+ obj.triples = [...obj.triples, ...orderQueryData.triples];
407
+ obj.filters = [...obj.filters, ...orderQueryData.filters];
408
+ obj.groupByParent = obj.groupByParent ?? orderQueryData.groupByParent;
409
+ return obj;
410
+ }, { triples: [], orders: [], filters: [] });
411
+ }
412
+ createOrderQueryDataForProperty(subject, property, orderValue, isNested = false) {
413
+ const predicate = data_model_1.default.namedNode(property);
414
+ if (FindOperator_1.FindOperator.isFindOperator(orderValue)) {
415
+ const variable = this.createVariable();
416
+ const inverseRelationTriple = {
417
+ subject,
418
+ predicate: (0, SparqlUtil_1.createSparqlInversePredicate)([predicate]),
419
+ object: variable,
420
+ };
421
+ const subRelationOperatorValue = orderValue.value;
422
+ const subRelationOrderQueryData = this.createOrderQueryData(variable, subRelationOperatorValue.order, true);
423
+ const subRelationWhereQueryData = this.createWhereQueryData(variable, subRelationOperatorValue.where);
424
+ return {
425
+ triples: [inverseRelationTriple, ...subRelationOrderQueryData.triples, ...subRelationWhereQueryData.triples],
426
+ filters: subRelationWhereQueryData.filters,
427
+ orders: subRelationOrderQueryData.orders,
428
+ groupByParent: true,
429
+ };
430
+ }
431
+ if (property === 'id') {
432
+ return {
433
+ triples: [],
434
+ filters: [],
435
+ orders: [{
436
+ expression: subject,
437
+ descending: orderValue === 'DESC' || orderValue === 'desc',
438
+ }],
439
+ };
440
+ }
441
+ const variable = this.createVariable();
442
+ const isDescending = orderValue === 'DESC' || orderValue === 'desc';
443
+ return {
444
+ triples: [{ subject, predicate, object: variable }],
445
+ filters: [],
446
+ orders: [{
447
+ expression: isNested
448
+ ? {
449
+ type: 'aggregate',
450
+ expression: variable,
451
+ aggregation: isDescending ? 'max' : 'min',
452
+ }
453
+ : variable,
454
+ descending: isDescending,
455
+ }],
456
+ };
457
+ }
458
+ createRelationsQueryData(subject, relations) {
459
+ if (!relations) {
460
+ return { patterns: [], selectionTriples: [] };
461
+ }
462
+ return Object.entries(relations)
463
+ .reduce((obj, [property, relationsValue]) => {
464
+ const predicate = data_model_1.default.namedNode(property);
465
+ if (typeof relationsValue === 'object') {
466
+ if (FindOperator_1.FindOperator.isFindOperator(relationsValue)) {
467
+ const { patterns, selectionTriples } = this.createRelationsQueryDataForInverseRelation(subject, predicate, relationsValue);
468
+ return {
469
+ patterns: [...obj.patterns, ...patterns],
470
+ selectionTriples: [...obj.selectionTriples, ...selectionTriples],
471
+ };
472
+ }
473
+ const { patterns, selectionTriples } = this.createRelationsQueryDataForNestedRelation(subject, predicate, relationsValue);
474
+ return {
475
+ patterns: [...obj.patterns, ...patterns],
476
+ selectionTriples: [...obj.selectionTriples, ...selectionTriples],
477
+ };
478
+ }
479
+ const variable = this.createVariable();
480
+ const graphTriple = {
481
+ subject: this.createVariable(),
482
+ predicate: this.createVariable(),
483
+ object: this.createVariable(),
484
+ };
485
+ const relationPattern = (0, SparqlUtil_1.createSparqlOptional)([
486
+ (0, SparqlUtil_1.createSparqlBasicGraphPattern)([{ subject, predicate, object: variable }]),
487
+ (0, SparqlUtil_1.createSparqlGraphPattern)(variable, [(0, SparqlUtil_1.createSparqlBasicGraphPattern)([graphTriple])]),
488
+ ]);
489
+ return {
490
+ patterns: [...obj.patterns, relationPattern],
491
+ selectionTriples: [...obj.selectionTriples, graphTriple],
492
+ };
493
+ }, { patterns: [], selectionTriples: [] });
494
+ }
495
+ createRelationsQueryDataForInverseRelation(subject, predicate, relationsValue) {
496
+ const variable = this.createVariable();
497
+ const graphTriple = {
498
+ subject: this.createVariable(),
499
+ predicate: this.createVariable(),
500
+ object: this.createVariable(),
501
+ };
502
+ const inverseRelationTriple = {
503
+ subject,
504
+ predicate: (0, SparqlUtil_1.createSparqlInversePredicate)([predicate]),
505
+ object: variable,
506
+ };
507
+ if (typeof relationsValue.value === 'object' &&
508
+ relationsValue.value.relations) {
509
+ const subRelationsQueryData = this.createRelationsQueryData(variable, relationsValue.value.relations);
510
+ const relationPattern = (0, SparqlUtil_1.createSparqlOptional)([
511
+ (0, SparqlUtil_1.createSparqlBasicGraphPattern)([inverseRelationTriple]),
512
+ (0, SparqlUtil_1.createSparqlGraphPattern)(variable, [(0, SparqlUtil_1.createSparqlBasicGraphPattern)([graphTriple])]),
513
+ ...subRelationsQueryData.patterns,
514
+ ]);
515
+ return {
516
+ patterns: [relationPattern],
517
+ selectionTriples: [graphTriple, ...subRelationsQueryData.selectionTriples],
518
+ };
519
+ }
520
+ const relationPattern = (0, SparqlUtil_1.createSparqlOptional)([
521
+ (0, SparqlUtil_1.createSparqlBasicGraphPattern)([inverseRelationTriple]),
522
+ (0, SparqlUtil_1.createSparqlGraphPattern)(variable, [(0, SparqlUtil_1.createSparqlBasicGraphPattern)([graphTriple])]),
523
+ ]);
524
+ return {
525
+ patterns: [relationPattern],
526
+ selectionTriples: [graphTriple],
527
+ };
528
+ }
529
+ createRelationsQueryDataForNestedRelation(subject, predicate, relationsValue) {
530
+ const variable = this.createVariable();
531
+ const graphTriple = {
532
+ subject: this.createVariable(),
533
+ predicate: this.createVariable(),
534
+ object: this.createVariable(),
535
+ };
536
+ const relationTriple = { subject, predicate, object: variable };
537
+ const subRelationsQueryData = this.createRelationsQueryData(variable, relationsValue);
538
+ const relationPattern = (0, SparqlUtil_1.createSparqlOptional)([
539
+ (0, SparqlUtil_1.createSparqlBasicGraphPattern)([relationTriple]),
540
+ (0, SparqlUtil_1.createSparqlGraphPattern)(variable, [(0, SparqlUtil_1.createSparqlBasicGraphPattern)([graphTriple])]),
541
+ ...subRelationsQueryData.patterns,
542
+ ]);
543
+ return {
544
+ patterns: [relationPattern],
545
+ selectionTriples: [graphTriple, ...subRelationsQueryData.selectionTriples],
546
+ };
547
+ }
548
+ createVariable() {
549
+ return data_model_1.default.variable(this.variableGenerator.getNext());
550
+ }
551
+ createSelectPattern(select, subject) {
552
+ if (Array.isArray(select)) {
553
+ return select.map((selectPredicate) => ({
554
+ subject,
555
+ predicate: data_model_1.default.namedNode(selectPredicate),
556
+ object: this.createVariable(),
557
+ }));
558
+ }
559
+ return Object.entries(select).reduce((arr, [key, value]) => {
560
+ const variable = this.createVariable();
561
+ arr.push({ subject, predicate: data_model_1.default.namedNode(key), object: variable });
562
+ if (typeof value === 'object') {
563
+ arr = [...arr, ...this.createSelectPattern(value, variable)];
564
+ }
565
+ return arr;
566
+ }, []);
567
+ }
568
+ createWherePatternsFromQueryData(values, triples, filters, orderTriples, orderFilters, serviceTriples, additionalPatterns) {
569
+ let patterns = values;
570
+ if (triples.length > 0) {
571
+ patterns.push((0, SparqlUtil_1.createSparqlBasicGraphPattern)(triples));
572
+ }
573
+ if (orderTriples && orderTriples.length > 0) {
574
+ const optionalPatterns = [(0, SparqlUtil_1.createSparqlBasicGraphPattern)(orderTriples)];
575
+ if (orderFilters && orderFilters.length > 0) {
576
+ optionalPatterns.push((0, SparqlUtil_1.createFilterPatternFromFilters)(orderFilters));
577
+ }
578
+ patterns.push((0, SparqlUtil_1.createSparqlOptional)(optionalPatterns));
579
+ }
580
+ if (filters.length > 0) {
581
+ patterns.push((0, SparqlUtil_1.createFilterPatternFromFilters)(filters));
582
+ }
583
+ if (serviceTriples) {
584
+ for (const [service, sTriples] of Object.entries(serviceTriples)) {
585
+ patterns.unshift((0, SparqlUtil_1.createSparqlServicePattern)(service, sTriples));
586
+ }
587
+ }
588
+ if (additionalPatterns) {
589
+ patterns = [...patterns, ...additionalPatterns];
590
+ }
591
+ return patterns;
592
+ }
593
+ }
594
+ exports.SparqlQueryBuilder = SparqlQueryBuilder;
3
595
  //# sourceMappingURL=SparqlQueryBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SparqlQueryBuilder.js","sourceRoot":"","sources":["../../../src/storage/sparql/SparqlQueryBuilder.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"SparqlQueryBuilder.js","sourceRoot":"","sources":["../../../src/storage/sparql/SparqlQueryBuilder.ts"],"names":[],"mappings":";;;;;;AAAA,mEAA4C;AAe5C,sDAsB+B;AAC/B,sDAE+B;AAE/B,0CAAwC;AACxC,0DAA8C;AAC9C,kDAA+C;AAc/C,2DAAwD;AAuCxD,MAAa,kBAAkB;IAG7B;QACE,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;IACnD,CAAC;IAEM,oCAAoC,CACzC,OAAiB,EACjB,OAAmC;QAEnC,MAAM,SAAS,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7E,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CACzC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACjC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACjC,CACE,cAAc,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAClC,cAAc,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;gBACvC,cAAc,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CACzC,CACF,EAAE;YACD,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC1B,OAAO;gBACP,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;gBAChC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;aAC9B,CAAC,CAAC;SACJ;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,gCAAgC,CACzD,cAAc,CAAC,MAAM,EACrB,cAAc,CAAC,OAAO,EACtB,cAAc,CAAC,OAAO,EACtB,cAAc,CAAC,OAAO,EACtB,cAAc,CAAC,OAAO,CACvB,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,gCAAgC,CAC9D,cAAc,CAAC,WAAW,EAC1B,cAAc,CAAC,YAAY,EAC3B,cAAc,CAAC,YAAY,EAC3B,SAAS,EACT,SAAS,EACT,SAAS,EACT,kBAAkB,CAAC,QAAQ,CAC5B,CAAC;QACF,OAAO;YACL,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,KAAK,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACzD,UAAU,EAAE,kBAAkB;YAC9B,qBAAqB,EAAE,kBAAkB,CAAC,gBAAgB;SAC3D,CAAC;IACJ,CAAC;IAEM,mCAAmC,CACxC,UAAqB,EACrB,qBAA+B,EAC/B,MAA0B;QAE1B,IAAI,OAAiB,CAAC;QACtB,IAAI,KAAK,GAAc,EAAE,CAAC;QAC1B,IAAI,MAAM,EAAE;YACV,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,2BAAc,CAAC,CAAC;YAC3D,KAAK,GAAG;gBACN,IAAA,iCAAoB,EAAC;oBACnB,IAAA,0CAA6B,EAAC,OAAO,CAAC;iBACvC,CAAC;gBACF,GAAG,UAAU;aACd,CAAC;SACH;aAAM;YACL,OAAO,GAAG,CAAE,8BAAiB,EAAE,GAAG,qBAAqB,CAAE,CAAC;YAC1D,KAAK,GAAG;gBACN,GAAG,UAAU;gBACb,IAAA,qCAAwB,EACtB,2BAAc,EACd,CAAE,IAAA,0CAA6B,EAAC,CAAE,8BAAiB,CAAE,CAAC,CAAE,CACzD;aACF,CAAC;SACH;QACD,OAAO,IAAA,uCAA0B,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAEO,oBAAoB,CAC1B,OAAiB,EACjB,KAAwB,EACxB,cAAwB,EAAE;QAE1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,CAAE,GAAG,EAAE,KAAK,CAAE,EAAkB,EAAE;YAChH,MAAM,sBAAsB,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,GAAG,EAAE,KAAM,EAAE,YAAY,CAAC,CAAC;YACrG,OAAO;gBACL,MAAM,EAAE,CAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAE;gBAC3D,OAAO,EAAE,CAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAE;gBAC9D,OAAO,EAAE,CAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAE;gBAC9D,WAAW,EAAE,CAAE,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,sBAAsB,CAAC,WAAW,CAAE;gBAC1E,YAAY,EAAE,CAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,sBAAsB,CAAC,YAAY,CAAE;gBAC7E,YAAY,EAAE,CAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,sBAAsB,CAAC,YAAY,CAAE;aAC9E,CAAC;QACJ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;QAC1G,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,4BAA4B,CAClC,OAAiB,EACjB,KAAa,EACb,KAA4D,EAC5D,WAAoB;QAEpB,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,KAAsC,EAAE,WAAW,CAAC,CAAC;SAC1G;QACD,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAsC,CAAC,CAAC;SAC1F;QACD,MAAM,SAAS,GAAG,oBAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAEO,8BAA8B,CACpC,IAAc,EACd,KAAoC,EACpC,WAAoB;QAEpB,IAAI,MAAuC,CAAC;QAC5C,IAAI,YAAuC,CAAC;QAC5C,IAAI,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACtC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,EAAE,KAA6B,CAAC,CAAC,CAAC;SAC7G;aAAM;YACL,YAAY,GAAG;gBACb,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,CAAC;wBACP,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,oBAAW,CAAC,SAAS,CAAC,KAAe,CAAC;qBAC3D,CAAC;aACH,CAAC;SACH;QACD,IAAI,WAAW,EAAE;YACf,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,CAAE,YAAY,CAAE,CAAC,CAAC,CAAC,EAAE;gBACjD,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE;gBACtC,YAAY,EAAE,EAAE;aACjB,CAAC;SACH;QAED,OAAO;YACL,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAE,YAAY,CAAE,CAAC,CAAC,CAAC,EAAE;YAC5C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE;YACjC,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACC,CAAC;IACtB,CAAC;IAEO,2BAA2B,CACjC,OAAiB,EACjB,KAAoC;QAEpC,IAAI,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACtC,IAAK,KAA2B,CAAC,QAAQ,KAAK,SAAS,EAAE;gBACvD,MAAM,gBAAgB,GAAG,IAAA,yCAA4B,EAAC,CAAE,sCAAyB,CAAE,CAAC,CAAC;gBACrF,MAAM,qBAAqB,GAAG,IAAI,CAAC,gCAAgC,CACjE,OAAO,EACP,gBAAgB,EACf,KAA2B,CAAC,KAAK,CACnC,CAAC;gBACF,OAAO;oBACL,MAAM,EAAE,qBAAqB,CAAC,MAAM;oBACpC,OAAO,EAAE,qBAAqB,CAAC,OAAO;oBACtC,OAAO,EAAE,qBAAqB,CAAC,OAAO;oBACtC,WAAW,EAAE,EAAE;oBACf,YAAY,EAAE,EAAE;oBAChB,YAAY,EAAE,EAAE;iBACjB,CAAC;aACH;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,sCAAyB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACnF,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,iDAAiD,CACrG,QAAQ,EACR,KAA6B,EAC7B,MAAM,CACP,CAAC;YACF,OAAO;gBACL,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAE,YAAY,CAAE,CAAC,CAAC,CAAC,EAAE;gBAC5C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE;gBACjC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,MAAM,CAAE;gBACzC,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,EAAE;gBAChB,YAAY,EAAE,EAAE;aACjB,CAAC;SACH;QACD,OAAO;YACL,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC;oBACR,OAAO;oBACP,SAAS,EAAE,sCAAyB;oBACpC,MAAM,EAAE,oBAAW,CAAC,SAAS,CAAC,KAAe,CAAC;iBAC/C,CAAC;YACF,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAEO,gCAAgC,CACtC,OAAiB,EACjB,SAAiC,EACjC,KAA4B;QAE5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACjE,OAAO,IAAI,CAAC,4CAA4C,CAAC,OAAO,EAAE,SAAS,EAAE,KAA4B,CAAC,CAAC;SAC5G;QACD,IAAI,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,mCAAmC,CAAC,OAAO,EAAE,SAAS,EAAE,KAA0B,CAAC,CAAC;SACjG;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAQ,KAA+B,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,SAAS,EAAkB,EAAE;gBAChG,MAAM,mBAAmB,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACjG,OAAO;oBACL,MAAM,EAAE,CAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAE;oBACxD,OAAO,EAAE,CAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAE;oBAC3D,OAAO,EAAE,CAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAE;oBAC3D,WAAW,EAAE,CAAE,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAE;oBACvE,YAAY,EAAE,CAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAE;oBAC1E,YAAY,EAAE,CAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAE;iBAC3E,CAAC;YACJ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAC,CAAC,CAAC;SAClG;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,QAAQ,IAAI,KAAK,EAAE;gBACrB,OAAO,IAAI,CAAC,kCAAkC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAoB,CAAC,CAAC;aAC1F;YACD,OAAO,IAAI,CAAC,kCAAkC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAyB,CAAC,CAAC;SAC/F;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO;YACL,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC/C,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAEO,mCAAmC,CACzC,OAAiB,EACjB,SAAiC,EACjC,QAA2B;QAE3B,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE;YACnC,MAAM,gBAAgB,GAAG,IAAA,yCAA4B,EAAC,CAAE,SAAS,CAAE,CAAC,CAAC;YACrE,MAAM,qBAAqB,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/G,OAAO;gBACL,MAAM,EAAE,qBAAqB,CAAC,MAAM;gBACpC,OAAO,EAAE,qBAAqB,CAAC,OAAO;gBACtC,OAAO,EAAE,qBAAqB,CAAC,OAAO;gBACtC,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,EAAE;gBAChB,YAAY,EAAE,EAAE;aACjB,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACxD,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,iDAAiD,CACrF,QAAQ,EACR,QAAQ,EACR,MAAM,CACP,CAAC;QACF,OAAO;YACL,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAE,YAAY,CAAE,CAAC,CAAC,CAAC,EAAE;YAC5C,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAE,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE;YACjC,OAAO,EAAE,CAAE,MAAM,CAAE;YACnB,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAEO,4CAA4C,CAClD,OAAiB,EACjB,SAAiC,EACjC,SAA8B;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAE,MAAM,CAAE;YACnB,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,QAAQ,EAAkB,EAAE;YACxE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,iDAAiD,CACrF,QAAQ,EACR,QAAQ,EACR,MAAM,CACP,CAAC;YACF,IAAI,YAAY,EAAE;gBAChB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC/B;YACD,IAAI,MAAM,EAAE;gBACV,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1B;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,cAAc,CAAC,CAAC;IACrB,CAAC;IAEO,kCAAkC,CACxC,OAAiB,EACjB,SAAiC,EACjC,KAAuB;QAEvB,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC5E,OAAO;YACL,MAAM,EAAE,CAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,iBAAiB,CAAC,WAAW,CAAE;YACzE,OAAO,EAAE,iBAAiB,CAAC,OAAO;YAClC,OAAO,EAAE;gBACP,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE;gBAC/C,GAAG,iBAAiB,CAAC,OAAO;aAC7B;YACD,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAEO,kCAAkC,CACxC,OAAiB,EACjB,SAAiC,EACjC,WAAwB;QAExB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACjD,OAAO;YACL,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC/C,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;SACjB,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,WAAwB;QAChD,IAAI,cAAsB,CAAC;QAC3B,IAAI,KAAa,CAAC;QAClB,IAAI,OAAO,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE;YAC9D,cAAc,GAAG,kBAAG,CAAC,IAAI,CAAC;YAC1B,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC/C;aAAM;YACL,cAAc,GAAG,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAE,CAAC;YAC7F,KAAK,GAAI,WAAW,CAAC,QAAQ,CAAyB,CAAC,QAAQ,EAAE,CAAC;SACnE;QACD,OAAO,oBAAW,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACpD,CAAC;IAEO,iDAAiD,CACvD,QAAkB,EAClB,QAA2B,EAC3B,MAAc,EACd,mBAAmB,GAAG,KAAK;QAE3B,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAA4B,CAAC;YAC/F,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBACxD,OAAO;oBACL,YAAY,EAAE;wBACZ,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;qBAC3F;iBACF,CAAC;aACH;YACD,OAAO;gBACL,MAAM,EAAE,IAAA,oCAAuB,EAAC,QAAQ,EAAE,aAA2B,CAAC;aACvE,CAAC;SACH;QACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE;YAC/B,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,+BAA+B,CAC1C,QAAQ,EACR,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAmC,EAC/E,MAAM,CACP;gBACD,cAAc,EAAE,IAAI;aACrB,CAAC;SACH;QACD,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAe,CAAC;QACvF,QAAQ,QAAQ,CAAC,QAAQ,EAAE;YACzB,KAAK,OAAO;gBACV,OAAO,EAAE,MAAM,EAAE,IAAA,uCAA0B,EAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC9E,KAAK,IAAI;gBACP,OAAO,EAAE,MAAM,EAAE,IAAA,oCAAuB,EAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC3E,KAAK,KAAK;gBACR,OAAO,EAAE,MAAM,EAAE,IAAA,qCAAwB,EAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC5E,KAAK,IAAI;gBACP,OAAO,EAAE,MAAM,EAAE,IAAA,oCAAuB,EAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC3E,KAAK,KAAK;gBACR,OAAO,EAAE,MAAM,EAAE,IAAA,qCAAwB,EAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC5E;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,oCAAoC,CAC1C,QAAkB,EAClB,QAA2B;QAE3B,QAAQ,QAAQ,CAAC,QAAQ,EAAE;YACzB,KAAK,IAAI,CAAC,CAAC;gBACT,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAgB,CAAC;gBACnF,OAAO;oBACL,YAAY,EAAE;wBACZ,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;qBAC3F;iBACF,CAAC;aACH;YAAC,KAAK,KAAK;gBACV,OAAO;oBACL,MAAM,EAAE,IAAI,CAAC,sBAAsB,CACjC,QAAQ,EACR,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAmC,CAChF;iBACF,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,MAAM,EAAE,IAAA,uCAA0B,EAChC,QAAQ,EACR,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAe,CAC5D;iBACF,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,wBAAwB,CAC9B,KAAuC;QAEvC,IAAI,2BAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,EAAQ,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;SAC3E;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEO,+BAA+B,CACrC,QAAkB,EAClB,SAAyC,EACzC,MAAc;QAEd,IAAI,gBAA+B,CAAC;QACpC,MAAM,oBAAoB,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,UAAU,IAAI,SAAS,CAAC;QACtF,IAAI,oBAAoB,EAAE;YACxB,IAAI,UAA2C,CAAC;YAChD,IAAI;gBACF,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iDAAiD,CAC9E,QAAQ,EACR,SAA8B,EAC9B,MAAM,EACN,IAAI,CACL,CAAC,CAAC;aACJ;YAAC,MAAM;gBACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;aACzE;YACD,gBAAgB,GAAG,IAAA,6CAAgC,EAAC,UAAW,CAAC,CAAC;SAClE;aAAM;YACL,gBAAgB,GAAG,IAAA,6CAAgC,EACjD,IAAA,uCAA0B,EAAC,QAAQ,EAAE,SAAuB,CAAC,CAC9D,CAAC;SACH;QACD,OAAO,IAAA,2CAA8B,EAAC;YACpC,IAAA,oCAAuB,EAAC;gBACtB,IAAA,0CAA6B,EAAC,CAAE,MAAM,CAAE,CAAC;gBACzC,gBAAgB;aACjB,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAC5B,QAAoB,EACpB,SAAyC;QAEzC,IAAI,2BAAY,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAE,SAAkC,CAAC,KAAK,CAAe,CAAC;YAC7G,QAAS,SAAkC,CAAC,QAAQ,EAAE;gBACpD,KAAK,IAAI;oBACP,OAAO,IAAA,uCAA0B,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC7D,KAAK,OAAO;oBACV,OAAO,IAAA,0CAA6B,EAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAChE;oBACE,MAAM,IAAI,KAAK,CAAC,iCAAkC,SAAkC,CAAC,QAAQ,GAAG,CAAC,CAAC;aACrG;SACF;QACD,OAAO,IAAA,0CAA6B,EAAC,QAAQ,EAAE,SAAuB,CAAC,CAAC;IAC1E,CAAC;IAEO,kBAAkB,CAAC,KAAwC;QACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI,KAAK,EAAE;YAClD,OAAO,IAAA,2BAAc,EAClB,KAAqB,CAAC,QAAQ,CAAC,EAChC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAC9C,CAAC;SACH;QACD,IAAI,IAAA,YAAK,EAAC,KAAK,CAAC,EAAE;YAChB,OAAO,oBAAW,CAAC,SAAS,CAAC,KAAe,CAAC,CAAC;SAC/C;QACD,OAAO,IAAA,2BAAc,EAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEO,oBAAoB,CAC1B,OAAiB,EACjB,KAAkE,EAClE,QAAQ,GAAG,KAAK;QAEhB,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC;SAChD;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,CAAE,QAAQ,EAAE,UAAU,CAAE,EAAkB,EAAE;YACpG,MAAM,cAAc,GAAG,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACrG,GAAG,CAAC,MAAM,GAAG,CAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAE,CAAC;YACzD,GAAG,CAAC,OAAO,GAAG,CAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,CAAE,CAAC;YAC5D,GAAG,CAAC,OAAO,GAAG,CAAE,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,CAAE,CAAC;YAC5D,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,IAAI,cAAc,CAAC,aAAa,CAAC;YACtE,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,+BAA+B,CACrC,OAAiB,EACjB,QAAgB,EAChB,UAA2E,EAC3E,QAAQ,GAAG,KAAK;QAEhB,MAAM,SAAS,GAAG,oBAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,2BAAY,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,MAAM,qBAAqB,GAAG;gBAC5B,OAAO;gBACP,SAAS,EAAE,IAAA,yCAA4B,EAAC,CAAE,SAAS,CAAE,CAAC;gBACtD,MAAM,EAAE,QAAQ;aACjB,CAAC;YACF,MAAM,wBAAwB,GAC5B,UACD,CAAC,KAAkC,CAAC;YACrC,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CACzD,QAAQ,EACR,wBAAwB,CAAC,KAAK,EAC9B,IAAI,CACL,CAAC;YACF,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACtG,OAAO;gBACL,OAAO,EAAE,CAAE,qBAAqB,EAAE,GAAG,yBAAyB,CAAC,OAAO,EAAE,GAAG,yBAAyB,CAAC,OAAO,CAAE;gBAC9G,OAAO,EAAE,yBAAyB,CAAC,OAAO;gBAC1C,MAAM,EAAE,yBAAyB,CAAC,MAAM;gBACxC,aAAa,EAAE,IAAI;aACpB,CAAC;SACH;QACD,IAAI,QAAQ,KAAK,IAAI,EAAE;YACrB,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,CAAC;wBACP,UAAU,EAAE,OAAO;wBACnB,UAAU,EAAE,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM;qBAC3D,CAAC;aACH,CAAC;SACH;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;YACnD,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,CAAC;oBACP,UAAU,EAAE,QAAQ;wBAClB,CAAC,CAAC;4BACA,IAAI,EAAE,WAAW;4BACjB,UAAU,EAAE,QAAQ;4BACpB,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;yBAC1C;wBACD,CAAC,CAAC,QAAQ;oBACZ,UAAU,EAAE,YAAY;iBACzB,CAAC;SACH,CAAC;IACJ,CAAC;IAEO,wBAAwB,CAC9B,OAAiB,EACjB,SAAgC;QAEhC,IAAI,CAAC,SAAS,EAAE;YACd,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAC,CAAC;SAC9C;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;aAC7B,MAAM,CAAC,CAAC,GAAuB,EAAE,CAAE,QAAQ,EAAE,cAAc,CAAE,EAAsB,EAAE;YACpF,MAAM,SAAS,GAAG,oBAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;gBACtC,IAAI,2BAAY,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;oBAC/C,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,0CAA0C,CACpF,OAAO,EACP,SAAS,EACT,cAA4D,CAC7D,CAAC;oBACF,OAAO;wBACL,QAAQ,EAAE,CAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAE;wBAC1C,gBAAgB,EAAE,CAAE,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,gBAAgB,CAAE;qBACnE,CAAC;iBACH;gBACD,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,yCAAyC,CACnF,OAAO,EACP,SAAS,EACT,cAAsC,CACvC,CAAC;gBACF,OAAO;oBACL,QAAQ,EAAE,CAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAE;oBAC1C,gBAAgB,EAAE,CAAE,GAAG,GAAG,CAAC,gBAAgB,EAAE,GAAG,gBAAgB,CAAE;iBACnE,CAAC;aACH;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG;gBAClB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;gBAC9B,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;gBAChC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;aAC9B,CAAC;YACF,MAAM,eAAe,GAAG,IAAA,iCAAoB,EAAC;gBAC3C,IAAA,0CAA6B,EAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzE,IAAA,qCAAwB,EACtB,QAAQ,EACR,CAAE,IAAA,0CAA6B,EAAC,CAAE,WAAW,CAAE,CAAC,CAAE,CACnD;aACF,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,CAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAE;gBAC9C,gBAAgB,EAAE,CAAE,GAAG,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAE;aAC3D,CAAC;QACJ,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,0CAA0C,CAChD,OAAiB,EACjB,SAAoB,EACpB,cAA0D;QAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;YAC9B,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;SAC9B,CAAC;QACF,MAAM,qBAAqB,GAAG;YAC5B,OAAO;YACP,SAAS,EAAE,IAAA,yCAA4B,EAAC,CAAE,SAAS,CAAE,CAAC;YACtD,MAAM,EAAE,QAAQ;SACjB,CAAC;QACF,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ;YACzC,cAAc,CAAC,KAAsC,CAAC,SAAS,EAChE;YACA,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CACzD,QAAQ,EACP,cAAc,CAAC,KAAsC,CAAC,SAAS,CACjE,CAAC;YACF,MAAM,eAAe,GAAG,IAAA,iCAAoB,EAAC;gBAC3C,IAAA,0CAA6B,EAAC,CAAE,qBAAqB,CAAE,CAAC;gBACxD,IAAA,qCAAwB,EACtB,QAAQ,EACR,CAAE,IAAA,0CAA6B,EAAC,CAAE,WAAW,CAAE,CAAC,CAAE,CACnD;gBACD,GAAG,qBAAqB,CAAC,QAAQ;aAClC,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,CAAE,eAAe,CAAE;gBAC7B,gBAAgB,EAAE,CAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAE;aAC7E,CAAC;SACH;QACD,MAAM,eAAe,GAAG,IAAA,iCAAoB,EAAC;YAC3C,IAAA,0CAA6B,EAAC,CAAE,qBAAqB,CAAE,CAAC;YACxD,IAAA,qCAAwB,EACtB,QAAQ,EACR,CAAE,IAAA,0CAA6B,EAAC,CAAE,WAAW,CAAE,CAAC,CAAE,CACnD;SACF,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,CAAE,eAAe,CAAE;YAC7B,gBAAgB,EAAE,CAAE,WAAW,CAAE;SAClC,CAAC;IACJ,CAAC;IAEO,yCAAyC,CAC/C,OAAiB,EACjB,SAAoB,EACpB,cAAoC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE;YAC9B,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;SAC9B,CAAC;QACF,MAAM,cAAc,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAChE,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CACzD,QAAQ,EACR,cAAc,CACf,CAAC;QACF,MAAM,eAAe,GAAG,IAAA,iCAAoB,EAAC;YAC3C,IAAA,0CAA6B,EAAC,CAAE,cAAc,CAAE,CAAC;YACjD,IAAA,qCAAwB,EACtB,QAAQ,EACR,CAAE,IAAA,0CAA6B,EAAC,CAAE,WAAW,CAAE,CAAC,CAAE,CACnD;YACD,GAAG,qBAAqB,CAAC,QAAQ;SAClC,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,CAAE,eAAe,CAAE;YAC7B,gBAAgB,EAAE,CAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAE;SAC7E,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,OAAO,oBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAEO,mBAAmB,CAAC,MAAyB,EAAE,OAAiB;QACtE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,EAAU,EAAE,CAAC,CAAC;gBAC9C,OAAO;gBACP,SAAS,EAAE,oBAAW,CAAC,SAAS,CAAC,eAAe,CAAC;gBACjD,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE;aAC9B,CAAC,CAAC,CAAC;SACL;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,CAAE,GAAG,EAAE,KAAK,CAAE,EAAY,EAAE;YAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,GAAG,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAE,CAAC;aAChE;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEO,gCAAgC,CACtC,MAAuB,EACvB,OAAiB,EACjB,OAA8B,EAC9B,YAAuB,EACvB,YAAoC,EACpC,cAAyC,EACzC,kBAA8B;QAE9B,IAAI,QAAQ,GAAc,MAAM,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,IAAA,0CAA6B,EAAC,OAAO,CAAC,CAAC,CAAC;SACvD;QACD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,MAAM,gBAAgB,GAAc,CAAE,IAAA,0CAA6B,EAAC,YAAY,CAAC,CAAE,CAAC;YACpF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,gBAAgB,CAAC,IAAI,CAAC,IAAA,2CAA8B,EAAC,YAAY,CAAC,CAAC,CAAC;aACrE;YACD,QAAQ,CAAC,IAAI,CAAC,IAAA,iCAAoB,EAAC,gBAAgB,CAAC,CAAC,CAAC;SACvD;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,IAAA,2CAA8B,EAAC,OAAO,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,cAAc,EAAE;YAClB,KAAK,MAAM,CAAE,OAAO,EAAE,QAAQ,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;gBAClE,QAAQ,CAAC,OAAO,CAAC,IAAA,uCAA0B,EAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;aACjE;SACF;QACD,IAAI,kBAAkB,EAAE;YACtB,QAAQ,GAAG,CAAE,GAAG,QAAQ,EAAE,GAAG,kBAAkB,CAAE,CAAC;SACnD;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AA9wBD,gDA8wBC"}
@@ -117,7 +117,10 @@ function relationsToFrame(relations) {
117
117
  ...fieldFrame,
118
118
  };
119
119
  }
120
- return fieldFrame;
120
+ return {
121
+ ...obj,
122
+ ...fieldFrame,
123
+ };
121
124
  }, {});
122
125
  }
123
126
  function triplesToNodes(triples) {