@traqula/rules-sparql-1-2 0.0.15 → 0.0.17

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.
package/lib/index.cjs CHANGED
@@ -20,7 +20,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // lib/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- Factory: () => Factory2,
23
+ AstFactory: () => AstFactory2,
24
+ AstTransformer: () => AstTransformer2,
24
25
  completeParseContext: () => completeParseContext,
25
26
  findPatternBoundedVars: () => findPatternBoundedVars2,
26
27
  gram: () => grammar_exports2,
@@ -80,357 +81,8 @@ __export(grammar_exports2, {
80
81
  versionSpecifier: () => versionSpecifier
81
82
  });
82
83
 
83
- // ../rules-sparql-1-1/lib/grammar/index.js
84
- var grammar_exports = {};
85
- __export(grammar_exports, {
86
- add: () => add2,
87
- additiveExpression: () => additiveExpression,
88
- aggregate: () => aggregate,
89
- aggregateAvg: () => aggregateAvg,
90
- aggregateCount: () => aggregateCount,
91
- aggregateGroup_concat: () => aggregateGroup_concat,
92
- aggregateMax: () => aggregateMax,
93
- aggregateMin: () => aggregateMin,
94
- aggregateSample: () => aggregateSample,
95
- aggregateSum: () => aggregateSum,
96
- argList: () => argList,
97
- askQuery: () => askQuery,
98
- baseAggregateFunc: () => baseAggregateFunc,
99
- baseDecl: () => baseDecl2,
100
- bind: () => bind2,
101
- blankNode: () => blankNode,
102
- blankNodePropertyList: () => blankNodePropertyList,
103
- blankNodePropertyListPath: () => blankNodePropertyListPath,
104
- booleanLiteral: () => booleanLiteral,
105
- brackettedExpression: () => brackettedExpression,
106
- builtInAbs: () => builtInAbs,
107
- builtInBnodeSparqlJs: () => builtInBnodeSparqlJs,
108
- builtInBound: () => builtInBound,
109
- builtInCall: () => builtInCall,
110
- builtInCallList: () => builtInCallList,
111
- builtInCeil: () => builtInCeil,
112
- builtInCoalesce: () => builtInCoalesce,
113
- builtInConcat: () => builtInConcat,
114
- builtInContains: () => builtInContains,
115
- builtInDatatype: () => builtInDatatype,
116
- builtInDay: () => builtInDay,
117
- builtInEncode_for_uri: () => builtInEncode_for_uri,
118
- builtInFloor: () => builtInFloor,
119
- builtInHours: () => builtInHours,
120
- builtInIf: () => builtInIf,
121
- builtInIri: () => builtInIri,
122
- builtInIsblank: () => builtInIsblank,
123
- builtInIsiri: () => builtInIsiri,
124
- builtInIsliteral: () => builtInIsliteral,
125
- builtInIsnumeric: () => builtInIsnumeric,
126
- builtInIsuri: () => builtInIsuri,
127
- builtInLang: () => builtInLang,
128
- builtInLangmatches: () => builtInLangmatches,
129
- builtInLcase: () => builtInLcase,
130
- builtInMd5: () => builtInMd5,
131
- builtInMinutes: () => builtInMinutes,
132
- builtInMonth: () => builtInMonth,
133
- builtInNow: () => builtInNow,
134
- builtInRand: () => builtInRand,
135
- builtInRound: () => builtInRound,
136
- builtInSameterm: () => builtInSameterm,
137
- builtInSeconds: () => builtInSeconds,
138
- builtInSha1: () => builtInSha1,
139
- builtInSha256: () => builtInSha256,
140
- builtInSha384: () => builtInSha384,
141
- builtInSha512: () => builtInSha512,
142
- builtInStr: () => builtInStr,
143
- builtInStrafter: () => builtInStrafter,
144
- builtInStrbefore: () => builtInStrbefore,
145
- builtInStrdt: () => builtInStrdt,
146
- builtInStrends: () => builtInStrends,
147
- builtInStrlang: () => builtInStrlang,
148
- builtInStrlen: () => builtInStrlen,
149
- builtInStrstarts: () => builtInStrstarts,
150
- builtInStruuid: () => builtInStruuid,
151
- builtInTimezone: () => builtInTimezone,
152
- builtInTz: () => builtInTz,
153
- builtInUcase: () => builtInUcase,
154
- builtInUri: () => builtInUri,
155
- builtInUuid: () => builtInUuid,
156
- builtInYear: () => builtInYear,
157
- canCreateBlankNodes: () => canCreateBlankNodes,
158
- clear: () => clear2,
159
- collection: () => collection,
160
- collectionPath: () => collectionPath,
161
- conditionalAndExpression: () => conditionalAndExpression,
162
- conditionalOrExpression: () => conditionalOrExpression,
163
- constraint: () => constraint,
164
- constructQuery: () => constructQuery,
165
- constructTemplate: () => constructTemplate,
166
- constructTriples: () => constructTriples,
167
- copy: () => copy2,
168
- create: () => create2,
169
- dataBlock: () => dataBlock,
170
- dataBlockValue: () => dataBlockValue,
171
- datasetClause: () => datasetClause,
172
- datasetClauseStar: () => datasetClauseStar,
173
- datasetClauseUsing: () => datasetClauseUsing,
174
- datasetClauseUsingStar: () => datasetClauseUsingStar,
175
- defaultGraphClause: () => defaultGraphClause,
176
- deleteClause: () => deleteClause2,
177
- deleteData: () => deleteData,
178
- deleteWhere: () => deleteWhere,
179
- describeQuery: () => describeQuery,
180
- drop: () => drop3,
181
- existsFunc: () => existsFunc,
182
- expression: () => expression,
183
- expressionList: () => expressionList,
184
- filter: () => filter3,
185
- funcExpr1: () => funcExpr1,
186
- funcExpr2: () => funcExpr2,
187
- funcExpr2or3: () => funcExpr2or3,
188
- funcExpr3: () => funcExpr3,
189
- funcExpr3or4: () => funcExpr3or4,
190
- funcExprList1: () => funcExprList1,
191
- funcExprOrNil1: () => funcExprOrNil1,
192
- funcGroupGraphPattern: () => funcGroupGraphPattern,
193
- funcNil1: () => funcNil1,
194
- funcVar1: () => funcVar1,
195
- functionCall: () => functionCall,
196
- generatePattern: () => generatePattern,
197
- graphGraphPattern: () => graphGraphPattern,
198
- graphNode: () => graphNode,
199
- graphNodePath: () => graphNodePath,
200
- graphOrDefault: () => graphOrDefault,
201
- graphPatternNotTriples: () => graphPatternNotTriples,
202
- graphRef: () => graphRef,
203
- graphRefAll: () => graphRefAll,
204
- graphTerm: () => graphTerm,
205
- groupClause: () => groupClause,
206
- groupCondition: () => groupCondition,
207
- groupGraphPattern: () => groupGraphPattern,
208
- groupGraphPatternSub: () => groupGraphPatternSub,
209
- groupOrUnionGraphPattern: () => groupOrUnionGraphPattern,
210
- havingClause: () => havingClause,
211
- havingCondition: () => havingCondition,
212
- inlineData: () => inlineData,
213
- inlineDataFull: () => inlineDataFull,
214
- inlineDataOneVar: () => inlineDataOneVar,
215
- insertClause: () => insertClause2,
216
- insertData: () => insertData,
217
- iri: () => iri2,
218
- iriFull: () => iriFull,
219
- iriOrFunction: () => iriOrFunction,
220
- limitClause: () => limitClause,
221
- limitOffsetClauses: () => limitOffsetClauses,
222
- load: () => load2,
223
- minusGraphPattern: () => minusGraphPattern,
224
- modify: () => modify,
225
- move: () => move2,
226
- multiplicativeExpression: () => multiplicativeExpression,
227
- namedGraphClause: () => namedGraphClause,
228
- notExistsFunc: () => notExistsFunc,
229
- numericExpression: () => numericExpression,
230
- numericLiteral: () => numericLiteral,
231
- numericLiteralNegative: () => numericLiteralNegative,
232
- numericLiteralPositive: () => numericLiteralPositive,
233
- numericLiteralUnsigned: () => numericLiteralUnsigned,
234
- object: () => object,
235
- objectList: () => objectList,
236
- objectListPath: () => objectListPath,
237
- objectPath: () => objectPath,
238
- offsetClause: () => offsetClause,
239
- optionalGraphPattern: () => optionalGraphPattern,
240
- orderClause: () => orderClause,
241
- orderCondition: () => orderCondition,
242
- path: () => path,
243
- pathAlternative: () => pathAlternative,
244
- pathChainHelper: () => pathChainHelper,
245
- pathElt: () => pathElt,
246
- pathEltOrInverse: () => pathEltOrInverse,
247
- pathGenerator: () => pathGenerator,
248
- pathMod: () => pathMod,
249
- pathNegatedPropertySet: () => pathNegatedPropertySet,
250
- pathOneInPropertySet: () => pathOneInPropertySet,
251
- pathPrimary: () => pathPrimary,
252
- pathSequence: () => pathSequence,
253
- prefixDecl: () => prefixDecl2,
254
- prefixedName: () => prefixedName,
255
- primaryExpression: () => primaryExpression,
256
- prologue: () => prologue,
257
- propertyList: () => propertyList,
258
- propertyListNotEmpty: () => propertyListNotEmpty,
259
- propertyListPath: () => propertyListPath,
260
- propertyListPathNotEmpty: () => propertyListPathNotEmpty,
261
- quadData: () => quadData,
262
- quadPattern: () => quadPattern,
263
- quads: () => quads,
264
- quadsNotTriples: () => quadsNotTriples,
265
- query: () => query,
266
- queryOrUpdate: () => queryOrUpdate,
267
- queryUnit: () => queryUnit,
268
- rdfLiteral: () => rdfLiteral,
269
- regexExpression: () => regexExpression,
270
- relationalExpression: () => relationalExpression,
271
- selectClause: () => selectClause,
272
- selectQuery: () => selectQuery,
273
- serviceGraphPattern: () => serviceGraphPattern,
274
- solutionModifier: () => solutionModifier,
275
- sourceSelector: () => sourceSelector,
276
- strReplaceExpression: () => strReplaceExpression,
277
- string: () => string,
278
- stringEscapedLexical: () => stringEscapedLexical,
279
- subSelect: () => subSelect,
280
- substringExpression: () => substringExpression,
281
- triplesBlock: () => triplesBlock,
282
- triplesNode: () => triplesNode,
283
- triplesNodePath: () => triplesNodePath,
284
- triplesSameSubject: () => triplesSameSubject,
285
- triplesSameSubjectPath: () => triplesSameSubjectPath,
286
- triplesTemplate: () => triplesTemplate,
287
- unaryExpression: () => unaryExpression,
288
- update: () => update,
289
- update1: () => update1,
290
- updateUnit: () => updateUnit,
291
- usingClause: () => usingClause2,
292
- usingClauseStar: () => usingClauseStar,
293
- valueLogical: () => valueLogical,
294
- valuesClause: () => valuesClause,
295
- varOrIri: () => varOrIri,
296
- varOrTerm: () => varOrTerm,
297
- var_: () => var_,
298
- verb: () => verb,
299
- verbA: () => verbA,
300
- verbPath: () => verbPath,
301
- verbSimple: () => verbSimple,
302
- whereClause: () => whereClause
303
- });
304
-
305
- // ../rules-sparql-1-1/lib/lexer/index.js
306
- var lexer_exports = {};
307
- __export(lexer_exports, {
308
- a: () => a,
309
- add: () => add,
310
- allBaseTokens: () => allBaseTokens,
311
- as: () => as,
312
- ask: () => ask,
313
- baseDecl: () => baseDecl,
314
- bind: () => bind,
315
- builtIn: () => BuiltInCalls_exports,
316
- by: () => by,
317
- clear: () => clear,
318
- construct: () => construct,
319
- copy: () => copy,
320
- create: () => create,
321
- dataClause: () => dataClause,
322
- deleteClause: () => deleteClause,
323
- describe: () => describe,
324
- distinct: () => distinct,
325
- drop: () => drop2,
326
- false_: () => false_,
327
- filter: () => filter2,
328
- from: () => from,
329
- graph: () => graph_exports,
330
- groupByGroup: () => groupByGroup,
331
- having: () => having,
332
- in_: () => in_,
333
- insertClause: () => insertClause,
334
- limit: () => limit,
335
- load: () => load,
336
- loadInto: () => loadInto,
337
- minus: () => minus,
338
- modifyWith: () => modifyWith,
339
- move: () => move,
340
- notIn: () => notIn,
341
- offset: () => offset,
342
- optional: () => optional,
343
- order: () => order,
344
- orderAsc: () => orderAsc,
345
- orderDesc: () => orderDesc,
346
- prefixDecl: () => prefixDecl,
347
- reduced: () => reduced,
348
- select: () => select,
349
- separator: () => separator,
350
- service: () => service,
351
- silent: () => silent,
352
- sparql11LexerBuilder: () => sparql11LexerBuilder,
353
- symbols: () => symbols_exports,
354
- terminals: () => terminals_exports,
355
- to: () => to,
356
- true_: () => true_,
357
- undef: () => undef,
358
- union: () => union,
359
- usingClause: () => usingClause,
360
- values: () => values2,
361
- where: () => where
362
- });
363
-
364
- // ../rules-sparql-1-1/lib/lexer/BuiltInCalls.js
365
- var BuiltInCalls_exports = {};
366
- __export(BuiltInCalls_exports, {
367
- BuiltInCalls: () => BuiltInCalls,
368
- abs: () => abs,
369
- allBuiltInCalls: () => allBuiltInCalls,
370
- avg: () => avg,
371
- bnode: () => bnode,
372
- bound: () => bound,
373
- ceil: () => ceil,
374
- coalesce: () => coalesce,
375
- concat: () => concat,
376
- contains: () => contains,
377
- count: () => count,
378
- datatype: () => datatype,
379
- day: () => day,
380
- encode_for_uri: () => encode_for_uri,
381
- exists: () => exists,
382
- floor: () => floor,
383
- groupConcat: () => groupConcat,
384
- hours: () => hours,
385
- if_: () => if_,
386
- iri: () => iri,
387
- isblank: () => isblank,
388
- isiri: () => isiri,
389
- isliteral: () => isliteral,
390
- isnumeric: () => isnumeric,
391
- isuri: () => isuri,
392
- lang: () => lang,
393
- langmatches: () => langmatches,
394
- lcase: () => lcase,
395
- max: () => max,
396
- md5: () => md5,
397
- min: () => min,
398
- minutes: () => minutes,
399
- month: () => month,
400
- notexists: () => notexists,
401
- now: () => now,
402
- rand: () => rand,
403
- regex: () => regex,
404
- replace: () => replace,
405
- round: () => round,
406
- sameterm: () => sameterm,
407
- sample: () => sample,
408
- seconds: () => seconds,
409
- sha1: () => sha1,
410
- sha256: () => sha256,
411
- sha384: () => sha384,
412
- sha512: () => sha512,
413
- str: () => str,
414
- strafter: () => strafter,
415
- strbefore: () => strbefore,
416
- strdt: () => strdt,
417
- strends: () => strends,
418
- strlang: () => strlang,
419
- strlen: () => strlen,
420
- strstarts: () => strstarts,
421
- struuid: () => struuid,
422
- substr: () => substr,
423
- sum: () => sum,
424
- timezone: () => timezone,
425
- tz: () => tz,
426
- ucase: () => ucase,
427
- uri: () => uri,
428
- uuid: () => uuid,
429
- year: () => year
430
- });
431
-
432
- // ../core/lib/CoreFactory.js
433
- var CoreFactory = class {
84
+ // ../core/lib/AstCoreFactory.js
85
+ var AstCoreFactory = class {
434
86
  wrap(val, loc) {
435
87
  return { val, loc };
436
88
  }
@@ -9767,6 +9419,15 @@ applyMixins(Parser, [
9767
9419
  PerformanceTracer
9768
9420
  ]);
9769
9421
 
9422
+ // ../core/lib/utils.js
9423
+ function unCapitalize(str2) {
9424
+ return str2.charAt(0).toLowerCase() + str2.slice(1);
9425
+ }
9426
+ function createToken2(config) {
9427
+ return createToken(config);
9428
+ }
9429
+ var traqulaIndentation = "When you use this string, you expect traqula to handle indentation after every newline";
9430
+
9770
9431
  // ../core/lib/lexer-builder/LexerBuilder.js
9771
9432
  var LexerBuilder = class _LexerBuilder {
9772
9433
  tokens;
@@ -9864,127 +9525,580 @@ var LexerBuilder = class _LexerBuilder {
9864
9525
  }
9865
9526
  };
9866
9527
 
9867
- // ../core/lib/utils.js
9868
- function unCapitalize(str2) {
9869
- return str2.charAt(0).toLowerCase() + str2.slice(1);
9870
- }
9871
- function createToken2(config) {
9872
- return createToken(config);
9873
- }
9528
+ // ../core/lib/Transformers.js
9529
+ var TransformerType = class {
9530
+ clone(obj) {
9531
+ const newObj = Object.create(Object.getPrototypeOf(obj));
9532
+ Object.defineProperties(newObj, Object.getOwnPropertyDescriptors(obj));
9533
+ return newObj;
9534
+ }
9535
+ safeObjectVisit(value, mapper) {
9536
+ if (value && typeof value === "object") {
9537
+ if (Array.isArray(value)) {
9538
+ return value.map((x) => this.safeObjectVisit(x, mapper));
9539
+ }
9540
+ return mapper(value);
9541
+ }
9542
+ return value;
9543
+ }
9544
+ /**
9545
+ * Recursively transforms all objects that are not arrays. Mapper is called on deeper objects first.
9546
+ * @param startObject object to start iterating from
9547
+ * @param mapper mapper to transform the various objects - argument is a copy of the original
9548
+ * @param preVisitor callback that is evaluated before iterating deeper.
9549
+ * If continues is false, we do not iterate deeper, current object is still mapped. - default: true
9550
+ * If shortcut is true, we do not iterate deeper, nor do we branch out, this mapper will be the last one called.
9551
+ * - Default false
9552
+ */
9553
+ transformObject(startObject, mapper, preVisitor = () => ({})) {
9554
+ let didShortCut = false;
9555
+ const recurse = (curObject) => {
9556
+ const copy3 = this.clone(curObject);
9557
+ const context = preVisitor(copy3);
9558
+ didShortCut = context.shortcut ?? false;
9559
+ const continues = context.continue ?? true;
9560
+ if (continues && !didShortCut) {
9561
+ for (const [key, value] of Object.entries(copy3)) {
9562
+ if (didShortCut) {
9563
+ return copy3;
9564
+ }
9565
+ copy3[key] = this.safeObjectVisit(value, (obj) => recurse(obj));
9566
+ }
9567
+ }
9568
+ return mapper(copy3);
9569
+ };
9570
+ return recurse(startObject);
9571
+ }
9572
+ /**
9573
+ * Visitor that visits all objects. Visits deeper objects first.
9574
+ */
9575
+ visitObject(startObject, visitor, preVisitor = () => ({})) {
9576
+ let didShortCut = false;
9577
+ const recurse = (curObject) => {
9578
+ const context = preVisitor(curObject);
9579
+ didShortCut = context.shortcut ?? false;
9580
+ const continues = context.continue ?? true;
9581
+ if (continues && !didShortCut) {
9582
+ for (const value of Object.values(curObject)) {
9583
+ if (didShortCut) {
9584
+ return;
9585
+ }
9586
+ this.safeObjectVisit(value, (obj) => recurse(obj));
9587
+ }
9588
+ }
9589
+ visitor(curObject);
9590
+ };
9591
+ recurse(startObject);
9592
+ }
9593
+ transformNode(startObject, nodeCallBacks) {
9594
+ const transformWrapper = (curObject) => {
9595
+ const casted = curObject;
9596
+ if (casted.type) {
9597
+ const ogFunc = nodeCallBacks[casted.type]?.transform;
9598
+ if (ogFunc) {
9599
+ return ogFunc(casted);
9600
+ }
9601
+ }
9602
+ return curObject;
9603
+ };
9604
+ const preTransformWrapper = (curObject) => {
9605
+ const casted = curObject;
9606
+ if (casted.type) {
9607
+ const ogFunc = nodeCallBacks[casted.type]?.preVisitor;
9608
+ if (ogFunc) {
9609
+ return ogFunc(casted);
9610
+ }
9611
+ }
9612
+ return {};
9613
+ };
9614
+ return this.transformObject(startObject, transformWrapper, preTransformWrapper);
9615
+ }
9616
+ visitNode(startObject, nodeCallBacks) {
9617
+ const visitWrapper = (curObject) => {
9618
+ const casted = curObject;
9619
+ if (casted.type) {
9620
+ const ogFunc = nodeCallBacks[casted.type]?.visitor;
9621
+ if (ogFunc) {
9622
+ ogFunc(casted);
9623
+ }
9624
+ }
9625
+ };
9626
+ const preVisitWrapper = (curObject) => {
9627
+ const casted = curObject;
9628
+ if (casted.type) {
9629
+ const ogFunc = nodeCallBacks[casted.type]?.preVisitor;
9630
+ if (ogFunc) {
9631
+ return ogFunc(casted);
9632
+ }
9633
+ }
9634
+ return {};
9635
+ };
9636
+ this.visitObject(startObject, visitWrapper, preVisitWrapper);
9637
+ }
9638
+ traverseNodes(currentNode, traverse) {
9639
+ let didShortCut = false;
9640
+ const recurse = (curNode) => {
9641
+ const traverser = traverse[curNode.type];
9642
+ if (traverser) {
9643
+ const { next, shortcut } = traverser(curNode);
9644
+ didShortCut = shortcut ?? false;
9645
+ if (!didShortCut) {
9646
+ for (const node of next ?? []) {
9647
+ if (didShortCut) {
9648
+ return;
9649
+ }
9650
+ recurse(node);
9651
+ }
9652
+ }
9653
+ }
9654
+ };
9655
+ recurse(currentNode);
9656
+ }
9657
+ };
9658
+ var TransformerSubType = class extends TransformerType {
9659
+ transformNodeSpecific(startObject, nodeCallBacks, nodeSpecificCallBacks) {
9660
+ const transformWrapper = (curObject) => {
9661
+ let ogTransform;
9662
+ const casted = curObject;
9663
+ if (casted.type && casted.subType) {
9664
+ const specific = nodeSpecificCallBacks[casted.type];
9665
+ if (specific) {
9666
+ ogTransform = specific[casted.subType]?.transform;
9667
+ }
9668
+ if (!ogTransform) {
9669
+ ogTransform = nodeCallBacks[casted.type]?.transform;
9670
+ }
9671
+ }
9672
+ return ogTransform ? ogTransform(casted) : curObject;
9673
+ };
9674
+ const preVisitWrapper = (curObject) => {
9675
+ let ogPreVisit;
9676
+ const casted = curObject;
9677
+ if (casted.type && casted.subType) {
9678
+ const specific = nodeSpecificCallBacks[casted.type];
9679
+ if (specific) {
9680
+ ogPreVisit = specific[casted.subType]?.preVisitor;
9681
+ }
9682
+ if (!ogPreVisit) {
9683
+ ogPreVisit = nodeCallBacks[casted.type]?.preVisitor;
9684
+ }
9685
+ }
9686
+ return ogPreVisit ? ogPreVisit(casted) : curObject;
9687
+ };
9688
+ return this.transformObject(startObject, transformWrapper, preVisitWrapper);
9689
+ }
9690
+ /**
9691
+ * When both nodeCallBack and NodeSpecific callBack are matched, will only look at nodeSpecifCallback
9692
+ */
9693
+ visitNodeSpecific(startObject, nodeCallBacks, nodeSpecificCallBacks) {
9694
+ const visitWrapper = (curObject) => {
9695
+ let ogTransform;
9696
+ const casted = curObject;
9697
+ if (casted.type && casted.subType) {
9698
+ const specific = nodeSpecificCallBacks[casted.type];
9699
+ if (specific) {
9700
+ ogTransform = specific[casted.subType]?.visitor;
9701
+ }
9702
+ if (!ogTransform) {
9703
+ ogTransform = nodeCallBacks[casted.type]?.visitor;
9704
+ }
9705
+ }
9706
+ if (ogTransform) {
9707
+ ogTransform(casted);
9708
+ }
9709
+ };
9710
+ const preVisitWrapper = (curObject) => {
9711
+ let ogPreVisit;
9712
+ const casted = curObject;
9713
+ if (casted.type && casted.subType) {
9714
+ const specific = nodeSpecificCallBacks[casted.type];
9715
+ if (specific) {
9716
+ ogPreVisit = specific[casted.subType]?.preVisitor;
9717
+ }
9718
+ if (!ogPreVisit) {
9719
+ ogPreVisit = nodeCallBacks[casted.type]?.preVisitor;
9720
+ }
9721
+ }
9722
+ return ogPreVisit ? ogPreVisit(casted) : curObject;
9723
+ };
9724
+ this.visitObject(startObject, visitWrapper, preVisitWrapper);
9725
+ }
9726
+ traverseSubNodes(currentNode, traverseNode, traverseSubNode) {
9727
+ let didShortCut = false;
9728
+ const recurse = (curNode) => {
9729
+ let traverser;
9730
+ const subObj = traverseSubNode[curNode.type];
9731
+ if (subObj) {
9732
+ traverser = subObj[curNode.subType];
9733
+ }
9734
+ if (!traverser) {
9735
+ traverser = traverseNode[curNode.type];
9736
+ }
9737
+ if (traverser) {
9738
+ const { next, shortcut } = traverser(curNode);
9739
+ didShortCut = shortcut ?? false;
9740
+ if (!didShortCut) {
9741
+ for (const node of next ?? []) {
9742
+ if (didShortCut) {
9743
+ return;
9744
+ }
9745
+ recurse(node);
9746
+ }
9747
+ }
9748
+ }
9749
+ };
9750
+ recurse(currentNode);
9751
+ }
9752
+ };
9753
+
9754
+ // ../rules-sparql-1-1/lib/grammar/index.js
9755
+ var grammar_exports = {};
9756
+ __export(grammar_exports, {
9757
+ add: () => add2,
9758
+ additiveExpression: () => additiveExpression,
9759
+ aggregate: () => aggregate,
9760
+ aggregateAvg: () => aggregateAvg,
9761
+ aggregateCount: () => aggregateCount,
9762
+ aggregateGroup_concat: () => aggregateGroup_concat,
9763
+ aggregateMax: () => aggregateMax,
9764
+ aggregateMin: () => aggregateMin,
9765
+ aggregateSample: () => aggregateSample,
9766
+ aggregateSum: () => aggregateSum,
9767
+ argList: () => argList,
9768
+ askQuery: () => askQuery,
9769
+ baseAggregateFunc: () => baseAggregateFunc,
9770
+ baseDecl: () => baseDecl2,
9771
+ bind: () => bind2,
9772
+ blankNode: () => blankNode,
9773
+ blankNodePropertyList: () => blankNodePropertyList,
9774
+ blankNodePropertyListPath: () => blankNodePropertyListPath,
9775
+ booleanLiteral: () => booleanLiteral,
9776
+ brackettedExpression: () => brackettedExpression,
9777
+ builtInAbs: () => builtInAbs,
9778
+ builtInBnodeSparqlJs: () => builtInBnodeSparqlJs,
9779
+ builtInBound: () => builtInBound,
9780
+ builtInCall: () => builtInCall,
9781
+ builtInCallList: () => builtInCallList,
9782
+ builtInCeil: () => builtInCeil,
9783
+ builtInCoalesce: () => builtInCoalesce,
9784
+ builtInConcat: () => builtInConcat,
9785
+ builtInContains: () => builtInContains,
9786
+ builtInDatatype: () => builtInDatatype,
9787
+ builtInDay: () => builtInDay,
9788
+ builtInEncode_for_uri: () => builtInEncode_for_uri,
9789
+ builtInFloor: () => builtInFloor,
9790
+ builtInHours: () => builtInHours,
9791
+ builtInIf: () => builtInIf,
9792
+ builtInIri: () => builtInIri,
9793
+ builtInIsblank: () => builtInIsblank,
9794
+ builtInIsiri: () => builtInIsiri,
9795
+ builtInIsliteral: () => builtInIsliteral,
9796
+ builtInIsnumeric: () => builtInIsnumeric,
9797
+ builtInIsuri: () => builtInIsuri,
9798
+ builtInLang: () => builtInLang,
9799
+ builtInLangmatches: () => builtInLangmatches,
9800
+ builtInLcase: () => builtInLcase,
9801
+ builtInMd5: () => builtInMd5,
9802
+ builtInMinutes: () => builtInMinutes,
9803
+ builtInMonth: () => builtInMonth,
9804
+ builtInNow: () => builtInNow,
9805
+ builtInRand: () => builtInRand,
9806
+ builtInRound: () => builtInRound,
9807
+ builtInSameterm: () => builtInSameterm,
9808
+ builtInSeconds: () => builtInSeconds,
9809
+ builtInSha1: () => builtInSha1,
9810
+ builtInSha256: () => builtInSha256,
9811
+ builtInSha384: () => builtInSha384,
9812
+ builtInSha512: () => builtInSha512,
9813
+ builtInStr: () => builtInStr,
9814
+ builtInStrafter: () => builtInStrafter,
9815
+ builtInStrbefore: () => builtInStrbefore,
9816
+ builtInStrdt: () => builtInStrdt,
9817
+ builtInStrends: () => builtInStrends,
9818
+ builtInStrlang: () => builtInStrlang,
9819
+ builtInStrlen: () => builtInStrlen,
9820
+ builtInStrstarts: () => builtInStrstarts,
9821
+ builtInStruuid: () => builtInStruuid,
9822
+ builtInTimezone: () => builtInTimezone,
9823
+ builtInTz: () => builtInTz,
9824
+ builtInUcase: () => builtInUcase,
9825
+ builtInUri: () => builtInUri,
9826
+ builtInUuid: () => builtInUuid,
9827
+ builtInYear: () => builtInYear,
9828
+ canCreateBlankNodes: () => canCreateBlankNodes,
9829
+ clear: () => clear2,
9830
+ collection: () => collection,
9831
+ collectionPath: () => collectionPath,
9832
+ conditionalAndExpression: () => conditionalAndExpression,
9833
+ conditionalOrExpression: () => conditionalOrExpression,
9834
+ constraint: () => constraint,
9835
+ constructQuery: () => constructQuery,
9836
+ constructTemplate: () => constructTemplate,
9837
+ constructTriples: () => constructTriples,
9838
+ copy: () => copy2,
9839
+ create: () => create2,
9840
+ dataBlock: () => dataBlock,
9841
+ dataBlockValue: () => dataBlockValue,
9842
+ datasetClause: () => datasetClause,
9843
+ datasetClauseStar: () => datasetClauseStar,
9844
+ datasetClauseUsing: () => datasetClauseUsing,
9845
+ datasetClauseUsingStar: () => datasetClauseUsingStar,
9846
+ defaultGraphClause: () => defaultGraphClause,
9847
+ deleteClause: () => deleteClause2,
9848
+ deleteData: () => deleteData,
9849
+ deleteWhere: () => deleteWhere,
9850
+ describeQuery: () => describeQuery,
9851
+ drop: () => drop3,
9852
+ existsFunc: () => existsFunc,
9853
+ expression: () => expression,
9854
+ expressionList: () => expressionList,
9855
+ filter: () => filter3,
9856
+ funcExpr1: () => funcExpr1,
9857
+ funcExpr2: () => funcExpr2,
9858
+ funcExpr2or3: () => funcExpr2or3,
9859
+ funcExpr3: () => funcExpr3,
9860
+ funcExpr3or4: () => funcExpr3or4,
9861
+ funcExprList1: () => funcExprList1,
9862
+ funcExprOrNil1: () => funcExprOrNil1,
9863
+ funcGroupGraphPattern: () => funcGroupGraphPattern,
9864
+ funcNil1: () => funcNil1,
9865
+ funcVar1: () => funcVar1,
9866
+ functionCall: () => functionCall,
9867
+ generatePattern: () => generatePattern,
9868
+ graphGraphPattern: () => graphGraphPattern,
9869
+ graphNode: () => graphNode,
9870
+ graphNodePath: () => graphNodePath,
9871
+ graphOrDefault: () => graphOrDefault,
9872
+ graphPatternNotTriples: () => graphPatternNotTriples,
9873
+ graphRef: () => graphRef,
9874
+ graphRefAll: () => graphRefAll,
9875
+ graphTerm: () => graphTerm,
9876
+ groupClause: () => groupClause,
9877
+ groupCondition: () => groupCondition,
9878
+ groupGraphPattern: () => groupGraphPattern,
9879
+ groupGraphPatternSub: () => groupGraphPatternSub,
9880
+ groupOrUnionGraphPattern: () => groupOrUnionGraphPattern,
9881
+ havingClause: () => havingClause,
9882
+ havingCondition: () => havingCondition,
9883
+ inlineData: () => inlineData,
9884
+ inlineDataFull: () => inlineDataFull,
9885
+ inlineDataOneVar: () => inlineDataOneVar,
9886
+ insertClause: () => insertClause2,
9887
+ insertData: () => insertData,
9888
+ iri: () => iri2,
9889
+ iriFull: () => iriFull,
9890
+ iriOrFunction: () => iriOrFunction,
9891
+ limitClause: () => limitClause,
9892
+ limitOffsetClauses: () => limitOffsetClauses,
9893
+ load: () => load2,
9894
+ minusGraphPattern: () => minusGraphPattern,
9895
+ modify: () => modify,
9896
+ move: () => move2,
9897
+ multiplicativeExpression: () => multiplicativeExpression,
9898
+ namedGraphClause: () => namedGraphClause,
9899
+ notExistsFunc: () => notExistsFunc,
9900
+ numericExpression: () => numericExpression,
9901
+ numericLiteral: () => numericLiteral,
9902
+ numericLiteralNegative: () => numericLiteralNegative,
9903
+ numericLiteralPositive: () => numericLiteralPositive,
9904
+ numericLiteralUnsigned: () => numericLiteralUnsigned,
9905
+ object: () => object,
9906
+ objectList: () => objectList,
9907
+ objectListPath: () => objectListPath,
9908
+ objectPath: () => objectPath,
9909
+ offsetClause: () => offsetClause,
9910
+ optionalGraphPattern: () => optionalGraphPattern,
9911
+ orderClause: () => orderClause,
9912
+ orderCondition: () => orderCondition,
9913
+ path: () => path,
9914
+ pathAlternative: () => pathAlternative,
9915
+ pathChainHelper: () => pathChainHelper,
9916
+ pathElt: () => pathElt,
9917
+ pathEltOrInverse: () => pathEltOrInverse,
9918
+ pathGenerator: () => pathGenerator,
9919
+ pathMod: () => pathMod,
9920
+ pathNegatedPropertySet: () => pathNegatedPropertySet,
9921
+ pathOneInPropertySet: () => pathOneInPropertySet,
9922
+ pathPrimary: () => pathPrimary,
9923
+ pathSequence: () => pathSequence,
9924
+ prefixDecl: () => prefixDecl2,
9925
+ prefixedName: () => prefixedName,
9926
+ primaryExpression: () => primaryExpression,
9927
+ prologue: () => prologue,
9928
+ propertyList: () => propertyList,
9929
+ propertyListNotEmpty: () => propertyListNotEmpty,
9930
+ propertyListPath: () => propertyListPath,
9931
+ propertyListPathNotEmpty: () => propertyListPathNotEmpty,
9932
+ quadData: () => quadData,
9933
+ quadPattern: () => quadPattern,
9934
+ quads: () => quads,
9935
+ quadsNotTriples: () => quadsNotTriples,
9936
+ query: () => query,
9937
+ queryOrUpdate: () => queryOrUpdate,
9938
+ queryUnit: () => queryUnit,
9939
+ rdfLiteral: () => rdfLiteral,
9940
+ regexExpression: () => regexExpression,
9941
+ relationalExpression: () => relationalExpression,
9942
+ selectClause: () => selectClause,
9943
+ selectQuery: () => selectQuery,
9944
+ serviceGraphPattern: () => serviceGraphPattern,
9945
+ solutionModifier: () => solutionModifier,
9946
+ sourceSelector: () => sourceSelector,
9947
+ strReplaceExpression: () => strReplaceExpression,
9948
+ string: () => string,
9949
+ stringEscapedLexical: () => stringEscapedLexical,
9950
+ subSelect: () => subSelect,
9951
+ substringExpression: () => substringExpression,
9952
+ triplesBlock: () => triplesBlock,
9953
+ triplesNode: () => triplesNode,
9954
+ triplesNodePath: () => triplesNodePath,
9955
+ triplesSameSubject: () => triplesSameSubject,
9956
+ triplesSameSubjectPath: () => triplesSameSubjectPath,
9957
+ triplesTemplate: () => triplesTemplate,
9958
+ unaryExpression: () => unaryExpression,
9959
+ update: () => update,
9960
+ update1: () => update1,
9961
+ updateUnit: () => updateUnit,
9962
+ usingClause: () => usingClause2,
9963
+ usingClauseStar: () => usingClauseStar,
9964
+ valueLogical: () => valueLogical,
9965
+ valuesClause: () => valuesClause,
9966
+ varOrIri: () => varOrIri,
9967
+ varOrTerm: () => varOrTerm,
9968
+ var_: () => var_,
9969
+ verb: () => verb,
9970
+ verbA: () => verbA,
9971
+ verbPath: () => verbPath,
9972
+ verbSimple: () => verbSimple,
9973
+ whereClause: () => whereClause
9974
+ });
9874
9975
 
9875
- // ../core/lib/Transformers.js
9876
- var TransformerType = class {
9877
- safeObjectVisit(value, mapper) {
9878
- if (value && typeof value === "object") {
9879
- if (Array.isArray(value)) {
9880
- return value.map((x) => this.safeObjectVisit(x, mapper));
9881
- }
9882
- return mapper(value);
9883
- }
9884
- return value;
9885
- }
9886
- transformNode(curObject, nodeCallBacks) {
9887
- let continueCheck;
9888
- let transformation;
9889
- const casted = curObject;
9890
- if (casted.type) {
9891
- continueCheck = nodeCallBacks[casted.type]?.continue;
9892
- transformation = nodeCallBacks[casted.type]?.transform;
9893
- }
9894
- let shouldContinue = true;
9895
- if (continueCheck) {
9896
- shouldContinue = continueCheck(curObject);
9897
- }
9898
- if (!shouldContinue) {
9899
- return curObject;
9900
- }
9901
- const copy3 = { ...curObject };
9902
- for (const [key, value] of Object.entries(copy3)) {
9903
- copy3[key] = this.safeObjectVisit(value, (obj) => this.transformNode(obj, nodeCallBacks));
9904
- }
9905
- if (transformation) {
9906
- return transformation(copy3);
9907
- }
9908
- return copy3;
9909
- }
9910
- visitNode(curObject, nodeCallBacks) {
9911
- let callback;
9912
- const casted = curObject;
9913
- if (casted.type) {
9914
- callback = nodeCallBacks[casted.type];
9915
- }
9916
- let shouldIterate = true;
9917
- if (callback) {
9918
- shouldIterate = callback(curObject);
9919
- }
9920
- if (shouldIterate) {
9921
- for (const value of Object.values(curObject)) {
9922
- this.safeObjectVisit(value, (obj) => this.visitNode(obj, nodeCallBacks));
9923
- }
9924
- }
9925
- }
9926
- };
9927
- var TransformerSubType = class extends TransformerType {
9928
- // Public visitObjects(curObject: object, visitor: (current: object) => void): void {
9929
- // for (const value of Object.values(curObject)) {
9930
- // this.safeObjectVisit(value, obj => this.visitObjects(obj, visitor));
9931
- // }
9932
- // }
9933
- transformNodeSpecific(curObject, nodeCallBacks, nodeSpecificCallBacks = {}) {
9934
- let continueCheck;
9935
- let transformation;
9936
- const casted = curObject;
9937
- if (casted.type && casted.subType) {
9938
- const specific = nodeSpecificCallBacks[casted.type];
9939
- if (specific) {
9940
- continueCheck = specific[casted.subType]?.continue;
9941
- transformation = specific[casted.subType]?.transform;
9942
- }
9943
- }
9944
- let shouldContinue = true;
9945
- if (continueCheck) {
9946
- shouldContinue = continueCheck(curObject);
9947
- }
9948
- if (!shouldContinue) {
9949
- return curObject;
9950
- }
9951
- const copy3 = { ...curObject };
9952
- for (const [key, value] of Object.entries(copy3)) {
9953
- copy3[key] = this.safeObjectVisit(value, (obj) => this.transformNodeSpecific(obj, nodeCallBacks, nodeSpecificCallBacks));
9954
- }
9955
- if (transformation) {
9956
- return transformation(copy3);
9957
- }
9958
- return copy3;
9959
- }
9960
- /**
9961
- * When both nodeCallBack and NodeSpecific callBack are matched, will only look at nodeSpecifCallback
9962
- */
9963
- visitNodeSpecific(curObject, nodeCallBacks, nodeSpecificCallBacks = {}) {
9964
- let callback;
9965
- const casted = curObject;
9966
- if (casted.type && casted.subType) {
9967
- const specific = nodeSpecificCallBacks[casted.type];
9968
- if (specific) {
9969
- callback = specific[casted.subType];
9970
- }
9971
- }
9972
- if (!callback && casted.type) {
9973
- callback = nodeCallBacks[curObject.type];
9974
- }
9975
- let shouldIterate = true;
9976
- if (callback) {
9977
- shouldIterate = callback(curObject) ?? true;
9978
- }
9979
- if (shouldIterate) {
9980
- for (const value of Object.values(curObject)) {
9981
- this.safeObjectVisit(value, (obj) => this.visitNodeSpecific(obj, nodeCallBacks, nodeSpecificCallBacks));
9982
- }
9983
- }
9984
- }
9985
- };
9976
+ // ../rules-sparql-1-1/lib/lexer/index.js
9977
+ var lexer_exports = {};
9978
+ __export(lexer_exports, {
9979
+ a: () => a,
9980
+ add: () => add,
9981
+ allBaseTokens: () => allBaseTokens,
9982
+ as: () => as,
9983
+ ask: () => ask,
9984
+ baseDecl: () => baseDecl,
9985
+ bind: () => bind,
9986
+ builtIn: () => BuiltInCalls_exports,
9987
+ by: () => by,
9988
+ clear: () => clear,
9989
+ construct: () => construct,
9990
+ copy: () => copy,
9991
+ create: () => create,
9992
+ dataClause: () => dataClause,
9993
+ deleteClause: () => deleteClause,
9994
+ describe: () => describe,
9995
+ distinct: () => distinct,
9996
+ drop: () => drop2,
9997
+ false_: () => false_,
9998
+ filter: () => filter2,
9999
+ from: () => from,
10000
+ graph: () => graph_exports,
10001
+ groupByGroup: () => groupByGroup,
10002
+ having: () => having,
10003
+ in_: () => in_,
10004
+ insertClause: () => insertClause,
10005
+ limit: () => limit,
10006
+ load: () => load,
10007
+ loadInto: () => loadInto,
10008
+ minus: () => minus,
10009
+ modifyWith: () => modifyWith,
10010
+ move: () => move,
10011
+ notIn: () => notIn,
10012
+ offset: () => offset,
10013
+ optional: () => optional,
10014
+ order: () => order,
10015
+ orderAsc: () => orderAsc,
10016
+ orderDesc: () => orderDesc,
10017
+ prefixDecl: () => prefixDecl,
10018
+ reduced: () => reduced,
10019
+ select: () => select,
10020
+ separator: () => separator,
10021
+ service: () => service,
10022
+ silent: () => silent,
10023
+ sparql11LexerBuilder: () => sparql11LexerBuilder,
10024
+ symbols: () => symbols_exports,
10025
+ terminals: () => terminals_exports,
10026
+ to: () => to,
10027
+ true_: () => true_,
10028
+ undef: () => undef,
10029
+ union: () => union,
10030
+ usingClause: () => usingClause,
10031
+ values: () => values2,
10032
+ where: () => where
10033
+ });
9986
10034
 
9987
10035
  // ../rules-sparql-1-1/lib/lexer/BuiltInCalls.js
10036
+ var BuiltInCalls_exports = {};
10037
+ __export(BuiltInCalls_exports, {
10038
+ BuiltInCalls: () => BuiltInCalls,
10039
+ abs: () => abs,
10040
+ allBuiltInCalls: () => allBuiltInCalls,
10041
+ avg: () => avg,
10042
+ bnode: () => bnode,
10043
+ bound: () => bound,
10044
+ ceil: () => ceil,
10045
+ coalesce: () => coalesce,
10046
+ concat: () => concat,
10047
+ contains: () => contains,
10048
+ count: () => count,
10049
+ datatype: () => datatype,
10050
+ day: () => day,
10051
+ encode_for_uri: () => encode_for_uri,
10052
+ exists: () => exists,
10053
+ floor: () => floor,
10054
+ groupConcat: () => groupConcat,
10055
+ hours: () => hours,
10056
+ if_: () => if_,
10057
+ iri: () => iri,
10058
+ isblank: () => isblank,
10059
+ isiri: () => isiri,
10060
+ isliteral: () => isliteral,
10061
+ isnumeric: () => isnumeric,
10062
+ isuri: () => isuri,
10063
+ lang: () => lang,
10064
+ langmatches: () => langmatches,
10065
+ lcase: () => lcase,
10066
+ max: () => max,
10067
+ md5: () => md5,
10068
+ min: () => min,
10069
+ minutes: () => minutes,
10070
+ month: () => month,
10071
+ notexists: () => notexists,
10072
+ now: () => now,
10073
+ rand: () => rand,
10074
+ regex: () => regex,
10075
+ replace: () => replace,
10076
+ round: () => round,
10077
+ sameterm: () => sameterm,
10078
+ sample: () => sample,
10079
+ seconds: () => seconds,
10080
+ sha1: () => sha1,
10081
+ sha256: () => sha256,
10082
+ sha384: () => sha384,
10083
+ sha512: () => sha512,
10084
+ str: () => str,
10085
+ strafter: () => strafter,
10086
+ strbefore: () => strbefore,
10087
+ strdt: () => strdt,
10088
+ strends: () => strends,
10089
+ strlang: () => strlang,
10090
+ strlen: () => strlen,
10091
+ strstarts: () => strstarts,
10092
+ struuid: () => struuid,
10093
+ substr: () => substr,
10094
+ sum: () => sum,
10095
+ timezone: () => timezone,
10096
+ tz: () => tz,
10097
+ ucase: () => ucase,
10098
+ uri: () => uri,
10099
+ uuid: () => uuid,
10100
+ year: () => year
10101
+ });
9988
10102
  var BuiltInCalls;
9989
10103
  (function(BuiltInCalls2) {
9990
10104
  BuiltInCalls2["Str"] = "builtInStr";
@@ -11031,8 +11145,8 @@ function UpdateOperationFactoryMixin(Base) {
11031
11145
  };
11032
11146
  }
11033
11147
 
11034
- // ../rules-sparql-1-1/lib/factory.js
11035
- var Factory = class extends asArg(CoreFactory).call(ContextFactoryMixin).call(ExpressionFactoryMixin).call(GraphRefFactoryMixin).call(PathFactoryMixin).call(PatternFactoryMixin).call(QueryFactoryMixin).call(SolutionModifiersFactoryMixin).call(TermFactoryMixin).call(UpdateOperationFactoryMixin).returns() {
11148
+ // ../rules-sparql-1-1/lib/astFactory.js
11149
+ var AstFactory = class extends asArg(AstCoreFactory).call(ContextFactoryMixin).call(ExpressionFactoryMixin).call(GraphRefFactoryMixin).call(PathFactoryMixin).call(PatternFactoryMixin).call(QueryFactoryMixin).call(SolutionModifiersFactoryMixin).call(TermFactoryMixin).call(UpdateOperationFactoryMixin).returns() {
11036
11150
  alwaysSparql11(obj) {
11037
11151
  return true;
11038
11152
  }
@@ -11129,12 +11243,12 @@ var CommonIRIs;
11129
11243
  CommonIRIs2["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
11130
11244
  CommonIRIs2["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
11131
11245
  })(CommonIRIs || (CommonIRIs = {}));
11132
- var TransformerSparql11 = class extends TransformerSubType {
11246
+ var AstTransformer = class extends TransformerSubType {
11133
11247
  };
11134
11248
 
11135
11249
  // ../rules-sparql-1-1/lib/validation/validators.js
11136
- var F = new Factory();
11137
- var transformer = new TransformerSparql11();
11250
+ var F = new AstFactory();
11251
+ var transformer = new AstTransformer();
11138
11252
  function getAggregatesOfExpression(expression2) {
11139
11253
  if (F.isExpressionAggregate(expression2)) {
11140
11254
  return [expression2];
@@ -11213,77 +11327,69 @@ function queryIsGood(query2) {
11213
11327
  }
11214
11328
  }
11215
11329
  }
11330
+ function notUndefined(some2) {
11331
+ return some2 !== void 0;
11332
+ }
11216
11333
  function findPatternBoundedVars(iter, boundedVars) {
11217
- if (F.isQuery(iter) || F.isUpdate(iter)) {
11218
- if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {
11219
- if (iter.where && iter.variables.some((x) => F.isWildcard(x))) {
11220
- findPatternBoundedVars(iter.where, boundedVars);
11221
- } else {
11222
- for (const v of iter.variables) {
11223
- findPatternBoundedVars(v, boundedVars);
11224
- }
11225
- }
11226
- if (iter.solutionModifiers.group) {
11227
- const grouping = iter.solutionModifiers.group;
11228
- for (const g of grouping.groupings) {
11229
- if ("variable" in g) {
11230
- findPatternBoundedVars(g.variable, boundedVars);
11231
- }
11232
- }
11233
- }
11234
- if (iter.values?.values && iter.values.values.length > 0) {
11235
- const values3 = iter.values.values;
11236
- for (const v of Object.keys(values3[0])) {
11334
+ transformer.traverseSubNodes(iter, {
11335
+ query: (op) => ({ next: [
11336
+ op.solutionModifiers.group
11337
+ ].filter(notUndefined) }),
11338
+ triple: (op) => ({ next: [op.subject, op.predicate, op.object] }),
11339
+ path: (op) => ({ next: op.items }),
11340
+ tripleCollection: (op) => ({ next: [op.identifier, ...op.triples] })
11341
+ }, {
11342
+ query: {
11343
+ select: (op) => ({ next: [
11344
+ ...op.variables.some((x) => F.isWildcard(x)) ? [op.where] : op.variables,
11345
+ op.solutionModifiers.group,
11346
+ op.values
11347
+ ].filter(notUndefined) }),
11348
+ describe: (op) => ({ next: [
11349
+ ...op.variables.some((x) => F.isWildcard(x)) ? [op.where] : op.variables,
11350
+ op.solutionModifiers.group,
11351
+ op.values
11352
+ ].filter(notUndefined) })
11353
+ },
11354
+ solutionModifier: {
11355
+ group: (op) => ({
11356
+ next: op.groupings.filter((g) => "variable" in g).map((x) => x.variable)
11357
+ }),
11358
+ having: (op) => ({ next: op.having }),
11359
+ order: (op) => ({ next: op.orderDefs.map((x) => x.expression) })
11360
+ },
11361
+ pattern: {
11362
+ values: (op) => {
11363
+ for (const v of Object.keys(op.values.at(0) ?? {})) {
11237
11364
  boundedVars.add(v);
11238
11365
  }
11366
+ return {};
11367
+ },
11368
+ bgp: (op) => ({ next: op.triples }),
11369
+ group: (op) => ({ next: op.patterns }),
11370
+ union: (op) => ({ next: op.patterns }),
11371
+ optional: (op) => ({ next: op.patterns }),
11372
+ service: (op) => ({ next: [op.name, ...op.patterns] }),
11373
+ bind: (op) => ({ next: [op.variable] }),
11374
+ graph: (op) => ({ next: [op.name, ...op.patterns] }),
11375
+ minus: (op) => ({ next: op.patterns.slice(0, 1) })
11376
+ },
11377
+ term: {
11378
+ variable: (op) => {
11379
+ boundedVars.add(op.value);
11380
+ return {};
11239
11381
  }
11240
11382
  }
11241
- } else if (F.isTerm(iter)) {
11242
- if (F.isTermVariable(iter)) {
11243
- boundedVars.add(iter.value);
11244
- }
11245
- } else if (F.isTriple(iter)) {
11246
- findPatternBoundedVars(iter.subject, boundedVars);
11247
- findPatternBoundedVars(iter.predicate, boundedVars);
11248
- findPatternBoundedVars(iter.object, boundedVars);
11249
- } else if (F.isPath(iter)) {
11250
- if (!F.isTerm(iter)) {
11251
- for (const item of iter.items) {
11252
- findPatternBoundedVars(item, boundedVars);
11253
- }
11254
- }
11255
- } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {
11256
- for (const triple of iter.triples) {
11257
- findPatternBoundedVars(triple, boundedVars);
11258
- }
11259
- } else if (F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {
11260
- for (const pattern of iter.patterns) {
11261
- findPatternBoundedVars(pattern, boundedVars);
11262
- }
11263
- if (F.isPatternService(iter)) {
11264
- findPatternBoundedVars(iter.name, boundedVars);
11265
- }
11266
- } else if (F.isPatternBind(iter)) {
11267
- findPatternBoundedVars(iter.variable, boundedVars);
11268
- } else if (F.isPatternValues(iter)) {
11269
- for (const variable of Object.keys(iter.values.at(0) ?? {})) {
11270
- boundedVars.add(variable);
11271
- }
11272
- } else if (F.isPatternGraph(iter)) {
11273
- findPatternBoundedVars(iter.name, boundedVars);
11274
- for (const pattern of iter.patterns) {
11275
- findPatternBoundedVars(pattern, boundedVars);
11276
- }
11277
- }
11383
+ });
11278
11384
  }
11279
11385
  function checkNote13(patterns) {
11280
11386
  for (const [index, pattern] of patterns.entries()) {
11281
11387
  if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {
11282
11388
  const bgp = patterns[index - 1];
11283
11389
  const variables = [];
11284
- transformer.visitNodeSpecific(bgp, {}, { term: { variable: (var_2) => {
11390
+ transformer.visitNodeSpecific(bgp, {}, { term: { variable: { visitor: (var_2) => {
11285
11391
  variables.push(var_2);
11286
- } } });
11392
+ } } } });
11287
11393
  if (variables.some((var_2) => var_2.value === pattern.variable.value)) {
11288
11394
  throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);
11289
11395
  }
@@ -11309,12 +11415,12 @@ function updateNoReuseBlankNodeLabels(updateQuery) {
11309
11415
  const operation = update2.operation;
11310
11416
  if (operation.subType === "insertdata") {
11311
11417
  const blankNodesHere = /* @__PURE__ */ new Set();
11312
- transformer.visitNodeSpecific(operation, {}, { term: { blankNode: (blankNode2) => {
11418
+ transformer.visitNodeSpecific(operation, {}, { term: { blankNode: { visitor: (blankNode2) => {
11313
11419
  blankNodesHere.add(blankNode2.label);
11314
11420
  if (blankLabelsUsedInInsertData.has(blankNode2.label)) {
11315
11421
  throw new Error("Detected reuse blank node across different INSERT DATA clauses");
11316
11422
  }
11317
- } } });
11423
+ } } } });
11318
11424
  for (const blankNode2 of blankNodesHere) {
11319
11425
  blankLabelsUsedInInsertData.add(blankNode2);
11320
11426
  }
@@ -11353,22 +11459,22 @@ var rdfLiteral = {
11353
11459
  return OPTION(() => OR([
11354
11460
  { ALT: () => {
11355
11461
  const lang2 = CONSUME(terminals_exports.langTag);
11356
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, lang2), value.value, lang2.image.slice(1).toLowerCase()));
11462
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, lang2), value.value, lang2.image.slice(1).toLowerCase()));
11357
11463
  } },
11358
11464
  { ALT: () => {
11359
11465
  CONSUME(symbols_exports.hathat);
11360
11466
  const iriVal = SUBRULE1(iri2);
11361
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, iriVal), value.value, iriVal));
11467
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
11362
11468
  } }
11363
11469
  ])) ?? value;
11364
11470
  },
11365
- gImpl: ({ SUBRULE, PRINT, PRINT_SPACE_LEFT }) => (ast, { factory }) => {
11366
- factory.printFilter(ast, () => PRINT_SPACE_LEFT(stringEscapedLexical(ast.value)));
11471
+ gImpl: ({ SUBRULE, PRINT, PRINT_SPACE_LEFT }) => (ast, { astFactory }) => {
11472
+ astFactory.printFilter(ast, () => PRINT_SPACE_LEFT(stringEscapedLexical(ast.value)));
11367
11473
  if (ast.langOrIri) {
11368
11474
  if (typeof ast.langOrIri === "string") {
11369
- factory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11475
+ astFactory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11370
11476
  } else {
11371
- factory.printFilter(ast, () => PRINT("^^"));
11477
+ astFactory.printFilter(ast, () => PRINT("^^"));
11372
11478
  SUBRULE(iri2, ast.langOrIri);
11373
11479
  }
11374
11480
  }
@@ -11390,7 +11496,7 @@ var numericLiteralUnsigned = {
11390
11496
  { ALT: () => [CONSUME(terminals_exports.decimal), CommonIRIs.DECIMAL] },
11391
11497
  { ALT: () => [CONSUME(terminals_exports.double), CommonIRIs.DOUBLE] }
11392
11498
  ]);
11393
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11499
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11394
11500
  }
11395
11501
  };
11396
11502
  var numericLiteralPositive = {
@@ -11401,7 +11507,7 @@ var numericLiteralPositive = {
11401
11507
  { ALT: () => [CONSUME(terminals_exports.decimalPositive), CommonIRIs.DECIMAL] },
11402
11508
  { ALT: () => [CONSUME(terminals_exports.doublePositive), CommonIRIs.DOUBLE] }
11403
11509
  ]);
11404
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11510
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11405
11511
  }
11406
11512
  };
11407
11513
  var numericLiteralNegative = {
@@ -11412,7 +11518,7 @@ var numericLiteralNegative = {
11412
11518
  { ALT: () => [CONSUME(terminals_exports.decimalNegative), CommonIRIs.DECIMAL] },
11413
11519
  { ALT: () => [CONSUME(terminals_exports.doubleNegative), CommonIRIs.DOUBLE] }
11414
11520
  ]);
11415
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(parsed[0]), parsed[0].image, C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), parsed[1])));
11521
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
11416
11522
  }
11417
11523
  };
11418
11524
  var booleanLiteral = {
@@ -11422,7 +11528,7 @@ var booleanLiteral = {
11422
11528
  { ALT: () => CONSUME(true_) },
11423
11529
  { ALT: () => CONSUME(false_) }
11424
11530
  ]);
11425
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(token), token.image.toLowerCase(), C.factory.namedNode(C.factory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN)));
11531
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.namedNode(C.astFactory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN)));
11426
11532
  }
11427
11533
  };
11428
11534
  var string = {
@@ -11447,7 +11553,7 @@ var string = {
11447
11553
  } }
11448
11554
  ]);
11449
11555
  return ACTION(() => {
11450
- const F3 = C.factory;
11556
+ const F3 = C.astFactory;
11451
11557
  const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
11452
11558
  switch (char) {
11453
11559
  case "t":
@@ -11474,16 +11580,16 @@ var iri2 = {
11474
11580
  { ALT: () => SUBRULE(iriFull) },
11475
11581
  { ALT: () => SUBRULE(prefixedName) }
11476
11582
  ]),
11477
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => F3.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11583
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => F3.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11478
11584
  };
11479
11585
  var iriFull = {
11480
11586
  name: "iriFull",
11481
11587
  impl: ({ ACTION, CONSUME }) => (C) => {
11482
11588
  const iriToken = CONSUME(terminals_exports.iriRef);
11483
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
11589
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
11484
11590
  },
11485
- gImpl: ({ PRINT }) => (ast, { factory }) => {
11486
- factory.printFilter(ast, () => PRINT("<", ast.value, ">"));
11591
+ gImpl: ({ PRINT }) => (ast, { astFactory: F3 }) => {
11592
+ F3.printFilter(ast, () => PRINT("<", ast.value, ">"));
11487
11593
  }
11488
11594
  };
11489
11595
  var prefixedName = {
@@ -11493,16 +11599,16 @@ var prefixedName = {
11493
11599
  const longName = CONSUME(terminals_exports.pNameLn);
11494
11600
  return ACTION(() => {
11495
11601
  const [prefix, localName] = longName.image.split(":");
11496
- return C.factory.namedNode(C.factory.sourceLocation(longName), localName, prefix);
11602
+ return C.astFactory.namedNode(C.astFactory.sourceLocation(longName), localName, prefix);
11497
11603
  });
11498
11604
  } },
11499
11605
  { ALT: () => {
11500
11606
  const shortName = CONSUME(terminals_exports.pNameNs);
11501
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
11607
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
11502
11608
  } }
11503
11609
  ]),
11504
- gImpl: ({ PRINT_WORD }) => (ast, { factory }) => {
11505
- factory.printFilter(ast, () => PRINT_WORD(ast.prefix, ":", ast.value));
11610
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11611
+ F3.printFilter(ast, () => PRINT_WORD(ast.prefix, ":", ast.value));
11506
11612
  }
11507
11613
  };
11508
11614
  var canCreateBlankNodes = Symbol("canCreateBlankNodes");
@@ -11512,11 +11618,11 @@ var blankNode = {
11512
11618
  const result = OR([
11513
11619
  { ALT: () => {
11514
11620
  const labelToken = CONSUME(terminals_exports.blankNodeLabel);
11515
- return ACTION(() => C.factory.blankNode(labelToken.image.slice(2), C.factory.sourceLocation(labelToken)));
11621
+ return ACTION(() => C.astFactory.blankNode(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
11516
11622
  } },
11517
11623
  { ALT: () => {
11518
11624
  const anonToken = CONSUME(terminals_exports.anon);
11519
- return ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocation(anonToken)));
11625
+ return ACTION(() => C.astFactory.blankNode(void 0, C.astFactory.sourceLocation(anonToken)));
11520
11626
  } }
11521
11627
  ]);
11522
11628
  ACTION(() => {
@@ -11526,15 +11632,15 @@ var blankNode = {
11526
11632
  });
11527
11633
  return result;
11528
11634
  },
11529
- gImpl: ({ PRINT_WORD }) => (ast, { factory }) => {
11530
- factory.printFilter(ast, () => PRINT_WORD("_:", ast.label.replace(/^e_/u, "")));
11635
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory }) => {
11636
+ astFactory.printFilter(ast, () => PRINT_WORD("_:", ast.label.replace(/^e_/u, "")));
11531
11637
  }
11532
11638
  };
11533
11639
  var verbA = {
11534
11640
  name: "VerbA",
11535
11641
  impl: ({ ACTION, CONSUME }) => (C) => {
11536
11642
  const token = CONSUME(a);
11537
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE, void 0));
11643
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.TYPE, void 0));
11538
11644
  }
11539
11645
  };
11540
11646
 
@@ -11551,7 +11657,7 @@ var prologue = {
11551
11657
  ]));
11552
11658
  return result;
11553
11659
  },
11554
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11660
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
11555
11661
  for (const context of ast) {
11556
11662
  if (F3.isContextDefinitionBase(context)) {
11557
11663
  SUBRULE(baseDecl2, context);
@@ -11566,11 +11672,12 @@ var baseDecl2 = {
11566
11672
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11567
11673
  const base = CONSUME(baseDecl);
11568
11674
  const val = SUBRULE(iriFull);
11569
- return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
11675
+ return ACTION(() => C.astFactory.contextDefinitionBase(C.astFactory.sourceLocation(base, val), val));
11570
11676
  },
11571
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
11677
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11572
11678
  F3.printFilter(ast, () => PRINT_WORD("BASE"));
11573
11679
  SUBRULE(iri2, ast.value);
11680
+ F3.printFilter(ast, () => PRINT_WORD("\n"));
11574
11681
  }
11575
11682
  };
11576
11683
  var prefixDecl2 = {
@@ -11579,13 +11686,14 @@ var prefixDecl2 = {
11579
11686
  const prefix = CONSUME(prefixDecl);
11580
11687
  const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
11581
11688
  const value = SUBRULE(iriFull);
11582
- return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
11689
+ return ACTION(() => C.astFactory.contextDefinitionPrefix(C.astFactory.sourceLocation(prefix, value), name, value));
11583
11690
  },
11584
- gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F3 }) => {
11691
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { astFactory: F3 }) => {
11585
11692
  F3.printFilter(ast, () => {
11586
11693
  PRINT_WORDS("PREFIX", `${ast.key}:`);
11587
11694
  });
11588
11695
  SUBRULE(iri2, ast.value);
11696
+ F3.printFilter(ast, () => PRINT_WORDS("\n"));
11589
11697
  }
11590
11698
  };
11591
11699
  var verb = {
@@ -11601,7 +11709,7 @@ var varOrTerm = {
11601
11709
  { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
11602
11710
  { ALT: () => SUBRULE(graphTerm) }
11603
11711
  ]),
11604
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11712
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
11605
11713
  if (F3.isTermVariable(ast)) {
11606
11714
  return SUBRULE(var_, ast);
11607
11715
  }
@@ -11622,9 +11730,9 @@ var var_ = {
11622
11730
  { ALT: () => CONSUME(terminals_exports.var1) },
11623
11731
  { ALT: () => CONSUME(terminals_exports.var2) }
11624
11732
  ]);
11625
- return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
11733
+ return ACTION(() => C.astFactory.variable(varToken.image.slice(1), C.astFactory.sourceLocation(varToken)));
11626
11734
  },
11627
- gImpl: ({ PRINT_WORD }) => (ast, { factory: F3 }) => {
11735
+ gImpl: ({ PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11628
11736
  F3.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
11629
11737
  }
11630
11738
  };
@@ -11638,10 +11746,10 @@ var graphTerm = {
11638
11746
  { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode) },
11639
11747
  { ALT: () => {
11640
11748
  const tokenNil = CONSUME(terminals_exports.nil);
11641
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), CommonIRIs.NIL));
11749
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(tokenNil), CommonIRIs.NIL));
11642
11750
  } }
11643
11751
  ]),
11644
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11752
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
11645
11753
  if (F3.isTermNamed(ast)) {
11646
11754
  SUBRULE(iri2, ast);
11647
11755
  } else if (F3.isTermLiteral(ast)) {
@@ -11661,14 +11769,14 @@ function datasetClauseUsing(name, token) {
11661
11769
  return OR([
11662
11770
  { ALT: () => {
11663
11771
  const iri3 = SUBRULE(defaultGraphClause);
11664
- return ACTION(() => C.factory.wrap({ clauseType: "default", value: iri3 }, C.factory.sourceLocation(start, iri3)));
11772
+ return ACTION(() => C.astFactory.wrap({ clauseType: "default", value: iri3 }, C.astFactory.sourceLocation(start, iri3)));
11665
11773
  } },
11666
11774
  { ALT: () => {
11667
11775
  const namedClause = SUBRULE(namedGraphClause);
11668
- return ACTION(() => C.factory.wrap({
11776
+ return ACTION(() => C.astFactory.wrap({
11669
11777
  clauseType: "named",
11670
11778
  value: namedClause.val
11671
- }, C.factory.sourceLocation(start, namedClause)));
11779
+ }, C.astFactory.sourceLocation(start, namedClause)));
11672
11780
  } }
11673
11781
  ]);
11674
11782
  }
@@ -11689,9 +11797,9 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11689
11797
  const clause = SUBRULE(subRule);
11690
11798
  clauses.push(clause);
11691
11799
  });
11692
- return ACTION(() => C.factory.datasetClauses(clauses.map((clause) => clause.val), C.factory.sourceLocation(...clauses)));
11800
+ return ACTION(() => C.astFactory.datasetClauses(clauses.map((clause) => clause.val), C.astFactory.sourceLocation(...clauses)));
11693
11801
  },
11694
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
11802
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
11695
11803
  for (const clause of ast.clauses) {
11696
11804
  F3.printFilter(ast, () => PRINT_WORD(fromUsing));
11697
11805
  if (clause.clauseType === "named") {
@@ -11709,7 +11817,7 @@ var namedGraphClause = {
11709
11817
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11710
11818
  const named2 = CONSUME(graph_exports.named);
11711
11819
  const iri3 = SUBRULE(sourceSelector);
11712
- return ACTION(() => C.factory.wrap(iri3, C.factory.sourceLocation(named2, iri3)));
11820
+ return ACTION(() => C.astFactory.wrap(iri3, C.astFactory.sourceLocation(named2, iri3)));
11713
11821
  }
11714
11822
  };
11715
11823
  var sourceSelector = {
@@ -11726,7 +11834,7 @@ function funcExpr1(func) {
11726
11834
  CONSUME(symbols_exports.LParen);
11727
11835
  const arg = SUBRULE(expression);
11728
11836
  const close = CONSUME(symbols_exports.RParen);
11729
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11837
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11730
11838
  }
11731
11839
  };
11732
11840
  }
@@ -11740,7 +11848,7 @@ function funcExpr2(func) {
11740
11848
  CONSUME(symbols_exports.comma);
11741
11849
  const arg2 = SUBRULE2(expression);
11742
11850
  const close = CONSUME(symbols_exports.RParen);
11743
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
11851
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg1, arg2], C.astFactory.sourceLocation(operator, close)));
11744
11852
  }
11745
11853
  };
11746
11854
  }
@@ -11756,7 +11864,7 @@ function funcExpr3(func) {
11756
11864
  CONSUME2(symbols_exports.comma);
11757
11865
  const arg3 = SUBRULE3(expression);
11758
11866
  const close = CONSUME(symbols_exports.RParen);
11759
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
11867
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg1, arg2, arg3], C.astFactory.sourceLocation(operator, close)));
11760
11868
  }
11761
11869
  };
11762
11870
  }
@@ -11768,7 +11876,7 @@ function funcVar1(func) {
11768
11876
  CONSUME(symbols_exports.LParen);
11769
11877
  const arg = SUBRULE(var_);
11770
11878
  const close = CONSUME(symbols_exports.RParen);
11771
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11879
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11772
11880
  }
11773
11881
  };
11774
11882
  }
@@ -11782,11 +11890,11 @@ function funcExprOrNil1(func) {
11782
11890
  CONSUME(symbols_exports.LParen);
11783
11891
  const arg = SUBRULE(expression);
11784
11892
  const close = CONSUME(symbols_exports.RParen);
11785
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11893
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [arg], C.astFactory.sourceLocation(operator, close)));
11786
11894
  } },
11787
11895
  { ALT: () => {
11788
11896
  const nil2 = CONSUME(terminals_exports.nil);
11789
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11897
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil2)));
11790
11898
  } }
11791
11899
  ]);
11792
11900
  }
@@ -11798,7 +11906,7 @@ function funcNil1(func) {
11798
11906
  impl: ({ ACTION, CONSUME }) => (C) => {
11799
11907
  const operator = CONSUME(func);
11800
11908
  const nil2 = CONSUME(terminals_exports.nil);
11801
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11909
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil2)));
11802
11910
  }
11803
11911
  };
11804
11912
  }
@@ -11808,7 +11916,7 @@ function funcExprList1(func) {
11808
11916
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11809
11917
  const operator = CONSUME(func);
11810
11918
  const args = SUBRULE(expressionList);
11811
- return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
11919
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, args.val, C.astFactory.sourceLocation(operator, args)));
11812
11920
  }
11813
11921
  };
11814
11922
  }
@@ -11826,7 +11934,7 @@ function funcExpr2or3(func) {
11826
11934
  return SUBRULE3(expression);
11827
11935
  });
11828
11936
  const close = CONSUME(symbols_exports.RParen);
11829
- return ACTION(() => C.factory.expressionOperation(operator.image, arg3 ? [arg1, arg2, arg3] : [arg1, arg2], C.factory.sourceLocation(operator, close)));
11937
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, arg3 ? [arg1, arg2, arg3] : [arg1, arg2], C.astFactory.sourceLocation(operator, close)));
11830
11938
  }
11831
11939
  };
11832
11940
  }
@@ -11846,7 +11954,7 @@ function funcExpr3or4(func) {
11846
11954
  return SUBRULE4(expression);
11847
11955
  });
11848
11956
  const close = CONSUME(symbols_exports.RParen);
11849
- return ACTION(() => C.factory.expressionOperation(operator.image, arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
11957
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3], C.astFactory.sourceLocation(operator, close)));
11850
11958
  }
11851
11959
  };
11852
11960
  }
@@ -11856,7 +11964,7 @@ function funcGroupGraphPattern(func) {
11856
11964
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11857
11965
  const operator = CONSUME(func);
11858
11966
  const group = SUBRULE(groupGraphPattern);
11859
- return ACTION(() => C.factory.expressionPatternOperation(operator.image, group, C.factory.sourceLocation(operator, group)));
11967
+ return ACTION(() => C.astFactory.expressionPatternOperation(operator.image, group, C.astFactory.sourceLocation(operator, group)));
11860
11968
  }
11861
11969
  };
11862
11970
  }
@@ -11869,7 +11977,7 @@ function baseAggregateFunc(func) {
11869
11977
  const distinct2 = OPTION(() => CONSUME(distinct));
11870
11978
  const expr1 = SUBRULE(expression);
11871
11979
  const close = CONSUME(symbols_exports.RParen);
11872
- return ACTION(() => C.factory.aggregate(operator.image, distinct2 !== void 0, expr1, void 0, C.factory.sourceLocation(operator, close)));
11980
+ return ACTION(() => C.astFactory.aggregate(operator.image, distinct2 !== void 0, expr1, void 0, C.astFactory.sourceLocation(operator, close)));
11873
11981
  }
11874
11982
  };
11875
11983
  }
@@ -12009,17 +12117,17 @@ var aggregateCount = {
12009
12117
  const expressionVal = OR([
12010
12118
  { ALT: () => {
12011
12119
  const starToken = CONSUME(symbols_exports.star);
12012
- return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
12120
+ return ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(starToken)));
12013
12121
  } },
12014
12122
  { ALT: () => SUBRULE(expression) }
12015
12123
  ]);
12016
12124
  const closeToken = CONSUME(symbols_exports.RParen);
12017
12125
  return ACTION(() => {
12018
- const F3 = C.factory;
12019
- if (C.factory.isWildcard(expressionVal)) {
12020
- return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.factory.sourceLocation(operatorToken, closeToken));
12126
+ const F3 = C.astFactory;
12127
+ if (C.astFactory.isWildcard(expressionVal)) {
12128
+ return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.astFactory.sourceLocation(operatorToken, closeToken));
12021
12129
  }
12022
- return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.factory.sourceLocation(operatorToken, closeToken));
12130
+ return F3.aggregate(operatorToken.image, Boolean(distinctToken), expressionVal, void 0, C.astFactory.sourceLocation(operatorToken, closeToken));
12023
12131
  });
12024
12132
  }
12025
12133
  };
@@ -12043,7 +12151,7 @@ var aggregateGroup_concat = {
12043
12151
  });
12044
12152
  const closeToken = CONSUME(symbols_exports.RParen);
12045
12153
  return ACTION(() => {
12046
- const F3 = C.factory;
12154
+ const F3 = C.astFactory;
12047
12155
  return F3.aggregate(operatorToken.image, Boolean(distinctToken), expr, sep?.value ?? " ", F3.sourceLocation(operatorToken, closeToken));
12048
12156
  });
12049
12157
  }
@@ -12073,7 +12181,7 @@ var aggregate = {
12073
12181
  });
12074
12182
  return result;
12075
12183
  },
12076
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12184
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12077
12185
  F3.printFilter(ast, () => {
12078
12186
  PRINT_WORD(ast.aggregation.toUpperCase(), "(");
12079
12187
  if (ast.distinct) {
@@ -12100,7 +12208,7 @@ var path = {
12100
12208
  };
12101
12209
  var pathGenerator = {
12102
12210
  name: "path",
12103
- gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F3 }, braces = true) => {
12211
+ gImpl: ({ PRINT, SUBRULE }) => (ast, { astFactory: F3 }, braces = true) => {
12104
12212
  if (F3.isTerm(ast) && F3.isTermNamed(ast)) {
12105
12213
  SUBRULE(iri2, ast);
12106
12214
  } else {
@@ -12149,7 +12257,7 @@ function pathChainHelper(name, SEP, subType, subRule) {
12149
12257
  tailEnd = SUBRULE2(subRule);
12150
12258
  tail.push(tailEnd);
12151
12259
  });
12152
- return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12260
+ return ACTION(() => tail.length === 0 ? head2 : C.astFactory.path(subType, [head2, ...tail], C.astFactory.sourceLocation(head2, tailEnd)));
12153
12261
  }
12154
12262
  };
12155
12263
  }
@@ -12160,7 +12268,7 @@ var pathEltOrInverse = {
12160
12268
  { ALT: () => {
12161
12269
  const hat2 = CONSUME(symbols_exports.hat);
12162
12270
  const item = SUBRULE2(pathElt);
12163
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12271
+ return ACTION(() => C.astFactory.path("^", [item], C.astFactory.sourceLocation(hat2, item)));
12164
12272
  } }
12165
12273
  ])
12166
12274
  };
@@ -12171,7 +12279,7 @@ var pathElt = {
12171
12279
  impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12172
12280
  const item = SUBRULE(pathPrimary);
12173
12281
  const modification = OPTION(() => SUBRULE(pathMod));
12174
- return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12282
+ return ACTION(() => modification === void 0 ? item : C.astFactory.path(modification.image, [item], C.astFactory.sourceLocation(item, modification)));
12175
12283
  }
12176
12284
  };
12177
12285
  var pathMod = {
@@ -12203,7 +12311,7 @@ var pathNegatedPropertySet = {
12203
12311
  return OR([
12204
12312
  { ALT: () => {
12205
12313
  const noAlternative = SUBRULE1(pathOneInPropertySet);
12206
- return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12314
+ return ACTION(() => C.astFactory.path("!", [noAlternative], C.astFactory.sourceLocation(exclamation2, noAlternative)));
12207
12315
  } },
12208
12316
  { ALT: () => {
12209
12317
  const open = CONSUME(symbols_exports.LParen);
@@ -12216,7 +12324,7 @@ var pathNegatedPropertySet = {
12216
12324
  });
12217
12325
  const close = CONSUME(symbols_exports.RParen);
12218
12326
  return ACTION(() => {
12219
- const F3 = C.factory;
12327
+ const F3 = C.astFactory;
12220
12328
  if (tail.length === 0) {
12221
12329
  return F3.path("!", [head2], F3.sourceLocation(exclamation2, close));
12222
12330
  }
@@ -12237,7 +12345,7 @@ var pathOneInPropertySet = {
12237
12345
  { ALT: () => SUBRULE2(iri2) },
12238
12346
  { ALT: () => SUBRULE2(verbA) }
12239
12347
  ]);
12240
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12348
+ return ACTION(() => C.astFactory.path("^", [item], C.astFactory.sourceLocation(hat2, item)));
12241
12349
  } }
12242
12350
  ])
12243
12351
  };
@@ -12262,33 +12370,35 @@ function triplesDotSeperated(triplesSameSubjectSubrule) {
12262
12370
  });
12263
12371
  }
12264
12372
  });
12265
- return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12373
+ return ACTION(() => C.astFactory.patternBgp(triples, C.astFactory.sourceLocation(...triples, dotToken)));
12266
12374
  };
12267
12375
  }
12268
12376
  var triplesBlock = {
12269
12377
  name: "triplesBlock",
12270
12378
  impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
12271
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12379
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { astFactory: F3 }) => {
12272
12380
  for (const [index, triple] of ast.triples.entries()) {
12273
12381
  HANDLE_LOC(triple, () => {
12274
12382
  const nextTriple = ast.triples.at(index);
12275
12383
  if (F3.isTripleCollection(triple)) {
12276
12384
  SUBRULE(graphNodePath, triple);
12277
- F3.printFilter(triple, () => PRINT_WORD("."));
12385
+ F3.printFilter(triple, () => PRINT_WORD(".\n"));
12278
12386
  } else {
12279
12387
  SUBRULE(graphNodePath, triple.subject);
12388
+ F3.printFilter(triple, () => PRINT_WORD(""));
12280
12389
  if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
12281
12390
  SUBRULE(varOrTerm, triple.predicate);
12282
12391
  } else {
12283
12392
  SUBRULE(pathGenerator, triple.predicate, void 0);
12284
12393
  }
12394
+ F3.printFilter(triple, () => PRINT_WORD(""));
12285
12395
  SUBRULE(graphNodePath, triple.object);
12286
12396
  if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12287
- F3.printFilter(ast, () => PRINT_WORD("."));
12397
+ F3.printFilter(ast, () => PRINT_WORD(".\n"));
12288
12398
  } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12289
12399
  F3.printFilter(ast, () => PRINT_WORD(","));
12290
12400
  } else {
12291
- F3.printFilter(ast, () => PRINT_WORD(";"));
12401
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
12292
12402
  }
12293
12403
  }
12294
12404
  });
@@ -12301,24 +12411,24 @@ function triplesSameSubjectImpl(name, allowPaths) {
12301
12411
  impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12302
12412
  { ALT: () => {
12303
12413
  const subject = SUBRULE(varOrTerm);
12304
- const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.factory.dematerialized(subject)));
12414
+ const res = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => C.astFactory.dematerialized(subject)));
12305
12415
  return ACTION(() => {
12306
12416
  if (res.length > 0) {
12307
12417
  res[0].subject = subject;
12308
- res[0].loc = C.factory.sourceLocation(subject, res[0]);
12418
+ res[0].loc = C.astFactory.sourceLocation(subject, res[0]);
12309
12419
  }
12310
12420
  return res;
12311
12421
  });
12312
12422
  } },
12313
12423
  { ALT: () => {
12314
12424
  const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
12315
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.factory.graphNodeIdentifier(subjectNode)));
12425
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, ACTION(() => C.astFactory.graphNodeIdentifier(subjectNode)));
12316
12426
  return ACTION(() => {
12317
12427
  if (restNode.length === 0) {
12318
12428
  return [subjectNode];
12319
12429
  }
12320
12430
  restNode[0].subject = subjectNode;
12321
- restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12431
+ restNode[0].loc = C.astFactory.sourceLocation(subjectNode, restNode[0]);
12322
12432
  return restNode;
12323
12433
  });
12324
12434
  } }
@@ -12402,7 +12512,7 @@ function objectImpl(name, allowPaths) {
12402
12512
  name,
12403
12513
  impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
12404
12514
  const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
12405
- return ACTION(() => C.factory.triple(subject, predicate, node));
12515
+ return ACTION(() => C.astFactory.triple(subject, predicate, node));
12406
12516
  }
12407
12517
  };
12408
12518
  }
@@ -12419,7 +12529,7 @@ function collectionImpl(name, allowPaths) {
12419
12529
  });
12420
12530
  const endToken = CONSUME(symbols_exports.RParen);
12421
12531
  return ACTION(() => {
12422
- const F3 = C.factory;
12532
+ const F3 = C.astFactory;
12423
12533
  const triples = [];
12424
12534
  const predFirst = F3.namedNode(F3.sourceLocationNoMaterialize(), CommonIRIs.FIRST, void 0);
12425
12535
  const predRest = F3.namedNode(F3.sourceLocationNoMaterialize(), CommonIRIs.REST, void 0);
@@ -12443,7 +12553,7 @@ function collectionImpl(name, allowPaths) {
12443
12553
  return F3.tripleCollectionList(listHead, triples, F3.sourceLocation(startToken, endToken));
12444
12554
  });
12445
12555
  },
12446
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12556
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12447
12557
  F3.printFilter(ast, () => PRINT_WORD("("));
12448
12558
  for (const [idx, triple] of ast.triples.entries()) {
12449
12559
  if (idx % 2 === 0) {
@@ -12474,13 +12584,17 @@ function blankNodePropertyListImpl(name, allowPaths) {
12474
12584
  name,
12475
12585
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12476
12586
  const startToken = CONSUME(symbols_exports.LSquare);
12477
- const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12587
+ const blankNode2 = ACTION(() => C.astFactory.blankNode(void 0, C.astFactory.sourceLocationNoMaterialize()));
12478
12588
  const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode2);
12479
12589
  const endToken = CONSUME(symbols_exports.RSquare);
12480
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(blankNode2, propList, C.factory.sourceLocation(startToken, endToken)));
12590
+ return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(blankNode2, propList, C.astFactory.sourceLocation(startToken, endToken)));
12481
12591
  },
12482
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12483
- F3.printFilter(ast, () => PRINT("["));
12592
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC, PRINT_ON_EMPTY }) => (ast, c) => {
12593
+ const { astFactory: F3, indentInc } = c;
12594
+ F3.printFilter(ast, () => {
12595
+ c[traqulaIndentation] += indentInc;
12596
+ PRINT("[\n");
12597
+ });
12484
12598
  for (const triple of ast.triples) {
12485
12599
  HANDLE_LOC(triple, () => {
12486
12600
  if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
@@ -12488,11 +12602,15 @@ function blankNodePropertyListImpl(name, allowPaths) {
12488
12602
  } else {
12489
12603
  SUBRULE(pathGenerator, triple.predicate, void 0);
12490
12604
  }
12605
+ F3.printFilter(triple, () => PRINT_WORD(""));
12491
12606
  SUBRULE(graphNodePath, triple.object);
12492
- F3.printFilter(ast, () => PRINT_WORD(";"));
12607
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
12493
12608
  });
12494
12609
  }
12495
- F3.printFilter(ast, () => PRINT("]"));
12610
+ F3.printFilter(ast, () => {
12611
+ c[traqulaIndentation] -= indentInc;
12612
+ PRINT_ON_EMPTY("]");
12613
+ });
12496
12614
  }
12497
12615
  };
12498
12616
  }
@@ -12509,7 +12627,7 @@ function graphNodeImpl(name, allowPaths) {
12509
12627
  ALT: () => SUBRULE(triplesNodeRule)
12510
12628
  }
12511
12629
  ]),
12512
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12630
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
12513
12631
  if (F3.isTerm(ast)) {
12514
12632
  SUBRULE(varOrTerm, ast);
12515
12633
  } else {
@@ -12527,9 +12645,9 @@ var whereClause = {
12527
12645
  impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12528
12646
  const where2 = OPTION(() => CONSUME(where));
12529
12647
  const group = SUBRULE(groupGraphPattern);
12530
- return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12648
+ return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where2, group)));
12531
12649
  },
12532
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12650
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12533
12651
  F3.printFilter(ast, () => PRINT_WORD("WHERE"));
12534
12652
  SUBRULE(groupGraphPattern, ast.val);
12535
12653
  }
@@ -12543,19 +12661,26 @@ var groupGraphPattern = {
12543
12661
  { ALT: () => SUBRULE(groupGraphPatternSub) }
12544
12662
  ]);
12545
12663
  const close = CONSUME(symbols_exports.RCurly);
12546
- return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12664
+ return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));
12547
12665
  },
12548
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12549
- F3.printFilter(ast, () => PRINT_WORD("{"));
12666
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
12667
+ const { astFactory: F3, indentInc } = C;
12668
+ F3.printFilter(ast, () => {
12669
+ C[traqulaIndentation] += indentInc;
12670
+ PRINT_WORD("{\n");
12671
+ });
12550
12672
  for (const pattern of ast.patterns) {
12551
12673
  SUBRULE(generatePattern, pattern);
12552
12674
  }
12553
- F3.printFilter(ast, () => PRINT_WORD("}"));
12675
+ F3.printFilter(ast, () => {
12676
+ C[traqulaIndentation] -= indentInc;
12677
+ PRINT_ON_EMPTY("}\n");
12678
+ });
12554
12679
  }
12555
12680
  };
12556
12681
  var generatePattern = {
12557
12682
  name: "generatePattern",
12558
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12683
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
12559
12684
  if (ast.type === "query") {
12560
12685
  SUBRULE(query, F3.querySelect({
12561
12686
  context: [],
@@ -12644,9 +12769,9 @@ var optionalGraphPattern = {
12644
12769
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12645
12770
  const optional2 = CONSUME(optional);
12646
12771
  const group = SUBRULE(groupGraphPattern);
12647
- return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12772
+ return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional2, group)));
12648
12773
  },
12649
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12774
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12650
12775
  F3.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12651
12776
  SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
12652
12777
  }
@@ -12657,9 +12782,9 @@ var graphGraphPattern = {
12657
12782
  const graph2 = CONSUME(graph_exports.graph);
12658
12783
  const name = SUBRULE(varOrIri);
12659
12784
  const group = SUBRULE(groupGraphPattern);
12660
- return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12785
+ return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph2, group)));
12661
12786
  },
12662
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12787
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12663
12788
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
12664
12789
  SUBRULE(varOrTerm, ast.name);
12665
12790
  SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
@@ -12675,9 +12800,9 @@ var serviceGraphPattern = {
12675
12800
  }) ?? false;
12676
12801
  const name = SUBRULE1(varOrIri);
12677
12802
  const group = SUBRULE1(groupGraphPattern);
12678
- return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12803
+ return ACTION(() => C.astFactory.patternService(name, group.patterns, silent2, C.astFactory.sourceLocation(service2, group)));
12679
12804
  },
12680
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12805
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12681
12806
  F3.printFilter(ast, () => {
12682
12807
  PRINT_WORD("SERVICE");
12683
12808
  if (ast.silent) {
@@ -12697,14 +12822,14 @@ var bind2 = {
12697
12822
  CONSUME(as);
12698
12823
  const variable = SUBRULE(var_);
12699
12824
  const close = CONSUME(symbols_exports.RParen);
12700
- return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
12825
+ return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind3, close)));
12701
12826
  },
12702
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12827
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12703
12828
  F3.printFilter(ast, () => PRINT_WORD("BIND", "("));
12704
12829
  SUBRULE(expression, ast.expression);
12705
12830
  F3.printFilter(ast, () => PRINT_WORD("AS"));
12706
12831
  SUBRULE(var_, ast.variable);
12707
- F3.printFilter(ast, () => PRINT_WORD(")"));
12832
+ F3.printFilter(ast, () => PRINT_WORD(")\n"));
12708
12833
  }
12709
12834
  };
12710
12835
  var inlineData = {
@@ -12712,16 +12837,19 @@ var inlineData = {
12712
12837
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12713
12838
  const values3 = CONSUME(values2);
12714
12839
  const datablock = SUBRULE(dataBlock);
12715
- return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
12840
+ return ACTION(() => C.astFactory.patternValues(datablock.val, C.astFactory.sourceLocation(values3, datablock)));
12716
12841
  },
12717
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12842
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
12843
+ const { astFactory: F3, indentInc } = C;
12718
12844
  const variables = Object.keys(ast.values.at(0) ?? {});
12719
12845
  F3.printFilter(ast, () => {
12846
+ PRINT_ON_EMPTY("");
12720
12847
  PRINT_WORD("VALUES", "(");
12721
12848
  for (const variable of variables) {
12722
12849
  PRINT_WORD(`?${variable}`);
12723
12850
  }
12724
- PRINT_WORD(")", "{");
12851
+ C[traqulaIndentation] += indentInc;
12852
+ PRINT_WORD(")", "{\n");
12725
12853
  });
12726
12854
  for (const mapping of ast.values) {
12727
12855
  F3.printFilter(ast, () => PRINT_WORD("("));
@@ -12732,9 +12860,12 @@ var inlineData = {
12732
12860
  SUBRULE(graphNodePath, mapping[variable]);
12733
12861
  }
12734
12862
  }
12735
- F3.printFilter(ast, () => PRINT_WORD(")"));
12863
+ F3.printFilter(ast, () => PRINT_WORD(")\n"));
12736
12864
  }
12737
- F3.printFilter(ast, () => PRINT_WORD("}"));
12865
+ F3.printFilter(ast, () => {
12866
+ C[traqulaIndentation] -= indentInc;
12867
+ PRINT_ON_EMPTY("}\n");
12868
+ });
12738
12869
  }
12739
12870
  };
12740
12871
  var dataBlock = {
@@ -12757,7 +12888,7 @@ var inlineDataOneVar = {
12757
12888
  });
12758
12889
  });
12759
12890
  const close = CONSUME(symbols_exports.RCurly);
12760
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
12891
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(varVal, close)));
12761
12892
  }
12762
12893
  };
12763
12894
  var inlineDataFull = {
@@ -12774,7 +12905,7 @@ var inlineDataFull = {
12774
12905
  res.push({});
12775
12906
  });
12776
12907
  const close = CONSUME1(symbols_exports.RCurly);
12777
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
12908
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(nil2, close)));
12778
12909
  } },
12779
12910
  { ALT: () => {
12780
12911
  const open = CONSUME1(symbols_exports.LParen);
@@ -12806,7 +12937,7 @@ var inlineDataFull = {
12806
12937
  });
12807
12938
  });
12808
12939
  const close = CONSUME2(symbols_exports.RCurly);
12809
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
12940
+ return ACTION(() => C.astFactory.wrap(res, C.astFactory.sourceLocation(open, close)));
12810
12941
  } }
12811
12942
  ]);
12812
12943
  }
@@ -12829,9 +12960,9 @@ var minusGraphPattern = {
12829
12960
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12830
12961
  const minus2 = CONSUME(minus);
12831
12962
  const group = SUBRULE(groupGraphPattern);
12832
- return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
12963
+ return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus2, group)));
12833
12964
  },
12834
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12965
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12835
12966
  F3.printFilter(ast, () => PRINT_WORD("MINUS"));
12836
12967
  SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
12837
12968
  }
@@ -12847,9 +12978,9 @@ var groupOrUnionGraphPattern = {
12847
12978
  const group2 = SUBRULE2(groupGraphPattern);
12848
12979
  groups.push(group2);
12849
12980
  });
12850
- return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(groups, C.factory.sourceLocation(group, groups.at(-1))));
12981
+ return ACTION(() => groups.length === 1 ? groups[0] : C.astFactory.patternUnion(groups, C.astFactory.sourceLocation(group, groups.at(-1))));
12851
12982
  },
12852
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12983
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12853
12984
  if (F3.isPatternUnion(ast)) {
12854
12985
  const [head2, ...tail] = ast.patterns;
12855
12986
  SUBRULE(groupGraphPattern, head2);
@@ -12867,12 +12998,12 @@ var filter3 = {
12867
12998
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12868
12999
  const filterToken = CONSUME(filter2);
12869
13000
  const expression2 = SUBRULE(constraint);
12870
- return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
13001
+ return ACTION(() => C.astFactory.patternFilter(expression2, C.astFactory.sourceLocation(filterToken, expression2)));
12871
13002
  },
12872
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13003
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12873
13004
  F3.printFilter(ast, () => PRINT_WORD("FILTER ("));
12874
13005
  SUBRULE(expression, ast.expression);
12875
- F3.printFilter(ast, () => PRINT_WORD(")"));
13006
+ F3.printFilter(ast, () => PRINT_WORD(")\n"));
12876
13007
  }
12877
13008
  };
12878
13009
  var constraint = {
@@ -12888,7 +13019,7 @@ var functionCall = {
12888
13019
  impl: ({ ACTION, SUBRULE }) => (C) => {
12889
13020
  const func = SUBRULE(iri2);
12890
13021
  const args = SUBRULE(argList);
12891
- return ACTION(() => C.factory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.factory.sourceLocation(func, args)));
13022
+ return ACTION(() => C.astFactory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.astFactory.sourceLocation(func, args)));
12892
13023
  }
12893
13024
  };
12894
13025
 
@@ -12898,7 +13029,7 @@ var argList = {
12898
13029
  impl: ({ ACTION, CONSUME, SUBRULE1, OPTION, OR, AT_LEAST_ONE_SEP }) => (C) => OR([
12899
13030
  { ALT: () => {
12900
13031
  const nil2 = CONSUME(terminals_exports.nil);
12901
- return ACTION(() => C.factory.wrap({ args: [], distinct: false }, C.factory.sourceLocation(nil2)));
13032
+ return ACTION(() => C.astFactory.wrap({ args: [], distinct: false }, C.astFactory.sourceLocation(nil2)));
12902
13033
  } },
12903
13034
  { ALT: () => {
12904
13035
  const args = [];
@@ -12915,10 +13046,10 @@ var argList = {
12915
13046
  }
12916
13047
  });
12917
13048
  const close = CONSUME(symbols_exports.RParen);
12918
- return ACTION(() => C.factory.wrap({ args, distinct: distinct2 }, C.factory.sourceLocation(open, close)));
13049
+ return ACTION(() => C.astFactory.wrap({ args, distinct: distinct2 }, C.astFactory.sourceLocation(open, close)));
12919
13050
  } }
12920
13051
  ]),
12921
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13052
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12922
13053
  F3.printFilter(ast, () => {
12923
13054
  PRINT_WORD("(");
12924
13055
  if (ast.val.distinct) {
@@ -12941,7 +13072,7 @@ var expressionList = {
12941
13072
  impl: ({ ACTION, CONSUME, MANY, OR, SUBRULE1, SUBRULE2 }) => (C) => OR([
12942
13073
  { ALT: () => {
12943
13074
  const nil2 = CONSUME(terminals_exports.nil);
12944
- return ACTION(() => C.factory.wrap([], C.factory.sourceLocation(nil2)));
13075
+ return ACTION(() => C.astFactory.wrap([], C.astFactory.sourceLocation(nil2)));
12945
13076
  } },
12946
13077
  { ALT: () => {
12947
13078
  const open = CONSUME(symbols_exports.LParen);
@@ -12953,7 +13084,7 @@ var expressionList = {
12953
13084
  args.push(expr);
12954
13085
  });
12955
13086
  const close = CONSUME(symbols_exports.RParen);
12956
- return ACTION(() => C.factory.wrap(args, C.factory.sourceLocation(open, close)));
13087
+ return ACTION(() => C.astFactory.wrap(args, C.astFactory.sourceLocation(open, close)));
12957
13088
  } }
12958
13089
  ])
12959
13090
  };
@@ -12962,7 +13093,7 @@ var prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
12962
13093
  var expression = {
12963
13094
  name: "expression",
12964
13095
  impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
12965
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13096
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
12966
13097
  if (F3.isTerm(ast)) {
12967
13098
  SUBRULE(varOrTerm, ast);
12968
13099
  } else if (F3.isExpressionOperator(ast)) {
@@ -13027,7 +13158,7 @@ var conditionalOrExpression = {
13027
13158
  impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(() => SUBRULE1(conditionalAndExpression), () => {
13028
13159
  CONSUME(symbols_exports.logicOr);
13029
13160
  const args = SUBRULE2(conditionalAndExpression);
13030
- return (left) => ACTION(() => C.factory.expressionOperation("||", [left, args], C.factory.sourceLocation(left, args)));
13161
+ return (left) => ACTION(() => C.astFactory.expressionOperation("||", [left, args], C.astFactory.sourceLocation(left, args)));
13031
13162
  }, ACTION, MANY)
13032
13163
  };
13033
13164
  var conditionalAndExpression = {
@@ -13035,7 +13166,7 @@ var conditionalAndExpression = {
13035
13166
  impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(() => SUBRULE1(valueLogical), () => {
13036
13167
  CONSUME(symbols_exports.logicAnd);
13037
13168
  const arg = SUBRULE2(valueLogical);
13038
- return (left) => ACTION(() => C.factory.expressionOperation("&&", [left, arg], C.factory.sourceLocation(left, arg)));
13169
+ return (left) => ACTION(() => C.astFactory.expressionOperation("&&", [left, arg], C.astFactory.sourceLocation(left, arg)));
13039
13170
  }, ACTION, MANY)
13040
13171
  };
13041
13172
  var valueLogical = {
@@ -13057,7 +13188,7 @@ var relationalExpression = {
13057
13188
  { ALT: () => CONSUME(symbols_exports.greaterThanEqual) }
13058
13189
  ]);
13059
13190
  const expr = SUBRULE2(numericExpression);
13060
- return ACTION(() => C.factory.expressionOperation(operator.image, [args1, expr], C.factory.sourceLocation(args1, expr)));
13191
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, expr], C.astFactory.sourceLocation(args1, expr)));
13061
13192
  } },
13062
13193
  { ALT: () => {
13063
13194
  const operator = OR3([
@@ -13065,7 +13196,7 @@ var relationalExpression = {
13065
13196
  { ALT: () => CONSUME(notIn) }
13066
13197
  ]);
13067
13198
  const args = SUBRULE1(expressionList);
13068
- return ACTION(() => C.factory.expressionOperation(operator.image, [args1, ...args.val], C.factory.sourceLocation(args1, args)));
13199
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, ...args.val], C.astFactory.sourceLocation(args1, args)));
13069
13200
  } }
13070
13201
  ]));
13071
13202
  return expression2 ?? args1;
@@ -13084,7 +13215,7 @@ var additiveExpression = {
13084
13215
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13085
13216
  ]);
13086
13217
  const arg = SUBRULE2(multiplicativeExpression);
13087
- return ACTION(() => (left) => C.factory.expressionOperation(operator.image, [left, arg], C.factory.sourceLocation(left, arg)));
13218
+ return ACTION(() => (left) => C.astFactory.expressionOperation(operator.image, [left, arg], C.astFactory.sourceLocation(left, arg)));
13088
13219
  } },
13089
13220
  { ALT: () => {
13090
13221
  const { operator, startInt } = OR3([
@@ -13115,9 +13246,9 @@ var additiveExpression = {
13115
13246
  { ALT: () => CONSUME(symbols_exports.slash) }
13116
13247
  ]);
13117
13248
  const innerExpr = SUBRULE1(unaryExpression);
13118
- return ACTION(() => (leftInner) => C.factory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.factory.sourceLocation(leftInner, innerExpr)));
13249
+ return ACTION(() => (leftInner) => C.astFactory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.astFactory.sourceLocation(leftInner, innerExpr)));
13119
13250
  }, ACTION, MANY2);
13120
- return (left) => C.factory.expressionOperation(operator, [left, multiplicativeExpr], C.factory.sourceLocation(left, multiplicativeExpr));
13251
+ return (left) => C.astFactory.expressionOperation(operator, [left, multiplicativeExpr], C.astFactory.sourceLocation(left, multiplicativeExpr));
13121
13252
  } }
13122
13253
  ]), ACTION, MANY1)
13123
13254
  };
@@ -13134,7 +13265,7 @@ var multiplicativeExpression = {
13134
13265
  subType: "operation",
13135
13266
  operator: operator.image,
13136
13267
  args: [left, expr],
13137
- loc: C.factory.sourceLocation(left, expr)
13268
+ loc: C.astFactory.sourceLocation(left, expr)
13138
13269
  });
13139
13270
  }, ACTION, MANY)
13140
13271
  };
@@ -13149,7 +13280,7 @@ var unaryExpression = {
13149
13280
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13150
13281
  ]);
13151
13282
  const expr = SUBRULE2(primaryExpression);
13152
- return ACTION(() => C.factory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.factory.sourceLocation(operator, expr)));
13283
+ return ACTION(() => C.astFactory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.astFactory.sourceLocation(operator, expr)));
13153
13284
  } }
13154
13285
  ])
13155
13286
  };
@@ -13172,7 +13303,7 @@ var brackettedExpression = {
13172
13303
  const expr = SUBRULE(expression);
13173
13304
  const close = CONSUME(symbols_exports.RParen);
13174
13305
  return ACTION(() => {
13175
- expr.loc = C.factory.sourceLocation(open, close);
13306
+ expr.loc = C.astFactory.sourceLocation(open, close);
13176
13307
  return expr;
13177
13308
  });
13178
13309
  }
@@ -13194,13 +13325,13 @@ var iriOrFunction = {
13194
13325
  function: iriVal,
13195
13326
  args: args.val.args,
13196
13327
  distinct: distinct2,
13197
- loc: C.factory.sourceLocation(iriVal, args)
13328
+ loc: C.astFactory.sourceLocation(iriVal, args)
13198
13329
  };
13199
13330
  });
13200
13331
  });
13201
13332
  return functionCall2 ?? iriVal;
13202
13333
  },
13203
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13334
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
13204
13335
  if (F3.isTermNamed(ast)) {
13205
13336
  SUBRULE(iri2, ast);
13206
13337
  } else {
@@ -13253,11 +13384,14 @@ var groupClause = {
13253
13384
  type: "solutionModifier",
13254
13385
  subType: "group",
13255
13386
  groupings,
13256
- loc: C.factory.sourceLocation(start, groupings.at(-1))
13387
+ loc: C.astFactory.sourceLocation(start, groupings.at(-1))
13257
13388
  }));
13258
13389
  },
13259
- gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F3 }) => {
13260
- F3.printFilter(ast, () => PRINT_WORDS("GROUP", "BY"));
13390
+ gImpl: ({ PRINT_WORDS, SUBRULE, PRINT_ON_EMPTY }) => (ast, { astFactory: F3 }) => {
13391
+ F3.printFilter(ast, () => {
13392
+ PRINT_ON_EMPTY("");
13393
+ PRINT_WORDS("GROUP", "BY");
13394
+ });
13261
13395
  for (const grouping of ast.groupings) {
13262
13396
  if (F3.isExpression(grouping)) {
13263
13397
  SUBRULE(expression, grouping);
@@ -13291,7 +13425,7 @@ var groupCondition = {
13291
13425
  return {
13292
13426
  variable,
13293
13427
  value: expressionValue,
13294
- loc: C.factory.sourceLocation(open, close)
13428
+ loc: C.astFactory.sourceLocation(open, close)
13295
13429
  };
13296
13430
  }
13297
13431
  return expressionValue;
@@ -13310,10 +13444,13 @@ var havingClause = {
13310
13444
  expressions.push(SUBRULE(havingCondition));
13311
13445
  });
13312
13446
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13313
- return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having2, expressions.at(-1))));
13447
+ return ACTION(() => C.astFactory.solutionModifierHaving(expressions, C.astFactory.sourceLocation(having2, expressions.at(-1))));
13314
13448
  },
13315
- gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F3 }) => {
13316
- F3.printFilter(ast, () => PRINT_WORD("HAVING"));
13449
+ gImpl: ({ PRINT_WORD, PRINT_ON_EMPTY, SUBRULE }) => (ast, { astFactory: F3 }) => {
13450
+ F3.printFilter(ast, () => {
13451
+ PRINT_ON_EMPTY("");
13452
+ PRINT_WORD("HAVING");
13453
+ });
13317
13454
  for (const having2 of ast.having) {
13318
13455
  SUBRULE(expression, having2);
13319
13456
  }
@@ -13334,10 +13471,13 @@ var orderClause = {
13334
13471
  orderings.push(SUBRULE1(orderCondition));
13335
13472
  });
13336
13473
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13337
- return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order2, orderings.at(-1))));
13474
+ return ACTION(() => C.astFactory.solutionModifierOrder(orderings, C.astFactory.sourceLocation(order2, orderings.at(-1))));
13338
13475
  },
13339
- gImpl: ({ PRINT_WORDS, SUBRULE }) => (ast, { factory: F3 }) => {
13340
- F3.printFilter(ast, () => PRINT_WORDS("ORDER", "BY"));
13476
+ gImpl: ({ PRINT_WORDS, PRINT_ON_EMPTY, SUBRULE }) => (ast, { astFactory: F3 }) => {
13477
+ F3.printFilter(ast, () => {
13478
+ PRINT_ON_EMPTY("");
13479
+ PRINT_WORDS("ORDER", "BY");
13480
+ });
13341
13481
  for (const ordering of ast.orderDefs) {
13342
13482
  if (ordering.descending) {
13343
13483
  F3.printFilter(ast, () => PRINT_WORDS("DESC"));
@@ -13368,7 +13508,7 @@ var orderCondition = {
13368
13508
  return ACTION(() => ({
13369
13509
  expression: expr,
13370
13510
  descending: descending[0],
13371
- loc: C.factory.sourceLocation(descending[1], expr)
13511
+ loc: C.astFactory.sourceLocation(descending[1], expr)
13372
13512
  }));
13373
13513
  } },
13374
13514
  { ALT: () => {
@@ -13387,16 +13527,17 @@ var limitOffsetClauses = {
13387
13527
  { ALT: () => {
13388
13528
  const limit2 = SUBRULE1(limitClause);
13389
13529
  const offset2 = OPTION1(() => SUBRULE1(offsetClause));
13390
- return ACTION(() => C.factory.solutionModifierLimitOffset(limit2.val, offset2?.val, C.factory.sourceLocation(limit2, ...offset2 ? [offset2] : [])));
13530
+ return ACTION(() => C.astFactory.solutionModifierLimitOffset(limit2.val, offset2?.val, C.astFactory.sourceLocation(limit2, ...offset2 ? [offset2] : [])));
13391
13531
  } },
13392
13532
  { ALT: () => {
13393
13533
  const offset2 = SUBRULE2(offsetClause);
13394
13534
  const limit2 = OPTION2(() => SUBRULE2(limitClause));
13395
- return ACTION(() => C.factory.solutionModifierLimitOffset(limit2?.val, offset2.val, C.factory.sourceLocation(offset2, limit2)));
13535
+ return ACTION(() => C.astFactory.solutionModifierLimitOffset(limit2?.val, offset2.val, C.astFactory.sourceLocation(offset2, limit2)));
13396
13536
  } }
13397
13537
  ]),
13398
- gImpl: ({ PRINT_WORDS }) => (ast, { factory: F3 }) => {
13538
+ gImpl: ({ PRINT_WORDS, PRINT_ON_EMPTY }) => (ast, { astFactory: F3 }) => {
13399
13539
  F3.printFilter(ast, () => {
13540
+ PRINT_ON_EMPTY("");
13400
13541
  if (ast.limit) {
13401
13542
  PRINT_WORDS("LIMIT", String(ast.limit));
13402
13543
  }
@@ -13412,7 +13553,7 @@ var limitClause = {
13412
13553
  const offset2 = CONSUME(limit);
13413
13554
  const value = CONSUME(terminals_exports.integer);
13414
13555
  const val = Number.parseInt(value.image, 10);
13415
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset2, value)));
13556
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(offset2, value)));
13416
13557
  }
13417
13558
  };
13418
13559
  var offsetClause = {
@@ -13421,7 +13562,7 @@ var offsetClause = {
13421
13562
  const offset2 = CONSUME(offset);
13422
13563
  const value = CONSUME(terminals_exports.integer);
13423
13564
  const val = Number.parseInt(value.image, 10);
13424
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(offset2, value)));
13565
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(offset2, value)));
13425
13566
  }
13426
13567
  };
13427
13568
 
@@ -13446,10 +13587,10 @@ var query = {
13446
13587
  ...subType,
13447
13588
  type: "query",
13448
13589
  ...values3 && { values: values3 },
13449
- loc: C.factory.sourceLocation(prologueValues.at(0), subType, values3)
13590
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values3)
13450
13591
  }));
13451
13592
  },
13452
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13593
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
13453
13594
  SUBRULE(prologue, ast.context);
13454
13595
  if (F3.isQuerySelect(ast)) {
13455
13596
  SUBRULE(selectQuery, ast);
@@ -13479,13 +13620,13 @@ var selectQuery = {
13479
13620
  solutionModifiers: modifiers,
13480
13621
  datasets: from2,
13481
13622
  ...selectVal.val,
13482
- loc: C.factory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13623
+ loc: C.astFactory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13483
13624
  };
13484
13625
  queryIsGood(ret);
13485
13626
  return ret;
13486
13627
  });
13487
13628
  },
13488
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13629
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
13489
13630
  SUBRULE(selectClause, F3.wrap({
13490
13631
  variables: ast.variables,
13491
13632
  distinct: ast.distinct,
@@ -13503,14 +13644,14 @@ var subSelect = {
13503
13644
  const where2 = SUBRULE(whereClause);
13504
13645
  const modifiers = SUBRULE(solutionModifier);
13505
13646
  const values3 = SUBRULE(valuesClause);
13506
- return ACTION(() => C.factory.querySelect({
13647
+ return ACTION(() => C.astFactory.querySelect({
13507
13648
  where: where2.val,
13508
- datasets: C.factory.datasetClauses([], C.factory.sourceLocation()),
13649
+ datasets: C.astFactory.datasetClauses([], C.astFactory.sourceLocation()),
13509
13650
  context: [],
13510
13651
  solutionModifiers: modifiers,
13511
13652
  ...selectVal.val,
13512
13653
  ...values3 && { values: values3 }
13513
- }, C.factory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values3)));
13654
+ }, C.astFactory.sourceLocation(selectVal, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values3)));
13514
13655
  }
13515
13656
  };
13516
13657
  var selectClause = {
@@ -13541,7 +13682,7 @@ var selectClause = {
13541
13682
  const star2 = CONSUME(symbols_exports.star);
13542
13683
  return ACTION(() => {
13543
13684
  last2 = star2;
13544
- return { variables: [C.factory.wildcard(C.factory.sourceLocation(star2))], ...distRed };
13685
+ return { variables: [C.astFactory.wildcard(C.astFactory.sourceLocation(star2))], ...distRed };
13545
13686
  });
13546
13687
  } },
13547
13688
  { ALT: () => {
@@ -13571,7 +13712,7 @@ var selectClause = {
13571
13712
  throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);
13572
13713
  }
13573
13714
  usedVars.push(variable);
13574
- variables.push(C.factory.patternBind(expr, variable, C.factory.sourceLocation(open, last2)));
13715
+ variables.push(C.astFactory.patternBind(expr, variable, C.astFactory.sourceLocation(open, last2)));
13575
13716
  });
13576
13717
  } }
13577
13718
  ]));
@@ -13579,9 +13720,9 @@ var selectClause = {
13579
13720
  } }
13580
13721
  ]);
13581
13722
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13582
- return ACTION(() => C.factory.wrap(val, C.factory.sourceLocation(select2, last2)));
13723
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(select2, last2)));
13583
13724
  },
13584
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13725
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13585
13726
  F3.printFilter(ast, () => {
13586
13727
  PRINT_WORD("SELECT");
13587
13728
  if (ast.val.distinct) {
@@ -13621,7 +13762,7 @@ var constructQuery = {
13621
13762
  datasets: from2,
13622
13763
  where: where2.val,
13623
13764
  solutionModifiers: modifiers,
13624
- loc: C.factory.sourceLocation(construct2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13765
+ loc: C.astFactory.sourceLocation(construct2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13625
13766
  }));
13626
13767
  } },
13627
13768
  { ALT: () => {
@@ -13633,19 +13774,26 @@ var constructQuery = {
13633
13774
  subType: "construct",
13634
13775
  template: template.val,
13635
13776
  datasets: from2,
13636
- where: C.factory.patternGroup([template.val], C.factory.sourceLocation()),
13777
+ where: C.astFactory.patternGroup([template.val], C.astFactory.sourceLocation()),
13637
13778
  solutionModifiers: modifiers,
13638
- loc: C.factory.sourceLocation(construct2, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13779
+ loc: C.astFactory.sourceLocation(construct2, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13639
13780
  }));
13640
13781
  } }
13641
13782
  ]);
13642
13783
  },
13643
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13784
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
13785
+ const { astFactory: F3, indentInc } = C;
13644
13786
  F3.printFilter(ast, () => PRINT_WORD("CONSTRUCT"));
13645
13787
  if (!F3.isSourceLocationNoMaterialize(ast.where.loc)) {
13646
- F3.printFilter(ast, () => PRINT_WORD("{"));
13788
+ F3.printFilter(ast, () => {
13789
+ C[traqulaIndentation] += indentInc;
13790
+ PRINT_WORD("{\n");
13791
+ });
13647
13792
  SUBRULE(triplesBlock, ast.template);
13648
- F3.printFilter(ast, () => PRINT_WORD("}"));
13793
+ F3.printFilter(ast, () => {
13794
+ C[traqulaIndentation] -= indentInc;
13795
+ PRINT_ON_EMPTY("}\n");
13796
+ });
13649
13797
  }
13650
13798
  SUBRULE(datasetClauseStar, ast.datasets);
13651
13799
  if (F3.isSourceLocationNoMaterialize(ast.where.loc)) {
@@ -13670,7 +13818,7 @@ var describeQuery = {
13670
13818
  } },
13671
13819
  { ALT: () => {
13672
13820
  const star2 = CONSUME(symbols_exports.star);
13673
- return [ACTION(() => C.factory.wildcard(C.factory.sourceLocation(star2)))];
13821
+ return [ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(star2)))];
13674
13822
  } }
13675
13823
  ]);
13676
13824
  const from2 = SUBRULE1(datasetClauseStar);
@@ -13682,10 +13830,10 @@ var describeQuery = {
13682
13830
  datasets: from2,
13683
13831
  ...where2 && { where: where2.val },
13684
13832
  solutionModifiers: modifiers,
13685
- loc: C.factory.sourceLocation(describe2, ...variables, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13833
+ loc: C.astFactory.sourceLocation(describe2, ...variables, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13686
13834
  }));
13687
13835
  },
13688
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13836
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13689
13837
  F3.printFilter(ast, () => PRINT_WORD("DESCRIBE"));
13690
13838
  if (F3.isWildcard(ast.variables[0])) {
13691
13839
  F3.printFilter(ast, () => PRINT_WORD("*"));
@@ -13713,10 +13861,10 @@ var askQuery = {
13713
13861
  datasets: from2,
13714
13862
  where: where2.val,
13715
13863
  solutionModifiers: modifiers,
13716
- loc: C.factory.sourceLocation(ask2, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13864
+ loc: C.astFactory.sourceLocation(ask2, from2, where2, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
13717
13865
  }));
13718
13866
  },
13719
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13867
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13720
13868
  F3.printFilter(ast, () => PRINT_WORD("ASK"));
13721
13869
  SUBRULE(datasetClauseStar, ast.datasets);
13722
13870
  SUBRULE(whereClause, F3.wrap(ast.where, ast.loc));
@@ -13733,7 +13881,7 @@ var constructTemplate = {
13733
13881
  const open = CONSUME(symbols_exports.LCurly);
13734
13882
  const triples = OPTION(() => SUBRULE1(constructTriples));
13735
13883
  const close = CONSUME(symbols_exports.RCurly);
13736
- return ACTION(() => C.factory.wrap(triples ?? C.factory.patternBgp([], C.factory.sourceLocation()), C.factory.sourceLocation(open, close)));
13884
+ return ACTION(() => C.astFactory.wrap(triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocation()), C.astFactory.sourceLocation(open, close)));
13737
13885
  }
13738
13886
  };
13739
13887
  var constructTriples = {
@@ -13770,13 +13918,13 @@ var update = {
13770
13918
  const update2 = {
13771
13919
  type: "update",
13772
13920
  updates,
13773
- loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
13921
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
13774
13922
  };
13775
13923
  updateNoReuseBlankNodeLabels(update2);
13776
13924
  return update2;
13777
13925
  });
13778
13926
  },
13779
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13927
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13780
13928
  const [head2, ...tail] = ast.updates;
13781
13929
  if (head2) {
13782
13930
  SUBRULE(prologue, head2.context);
@@ -13856,9 +14004,9 @@ var load2 = {
13856
14004
  CONSUME(loadInto);
13857
14005
  return SUBRULE1(graphRef);
13858
14006
  });
13859
- return ACTION(() => C.factory.updateOperationLoad(C.factory.sourceLocation(loadToken, source, destination), source, Boolean(silent2), destination));
14007
+ return ACTION(() => C.astFactory.updateOperationLoad(C.astFactory.sourceLocation(loadToken, source, destination), source, Boolean(silent2), destination));
13860
14008
  },
13861
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14009
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13862
14010
  F3.printFilter(ast, () => {
13863
14011
  PRINT_WORD("LOAD");
13864
14012
  if (ast.silent) {
@@ -13879,9 +14027,9 @@ function clearOrDrop(operation) {
13879
14027
  const opToken = CONSUME(operation);
13880
14028
  const silent2 = OPTION(() => CONSUME(silent));
13881
14029
  const destination = SUBRULE1(graphRefAll);
13882
- return ACTION(() => C.factory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent2), destination, C.factory.sourceLocation(opToken, destination)));
14030
+ return ACTION(() => C.astFactory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent2), destination, C.astFactory.sourceLocation(opToken, destination)));
13883
14031
  },
13884
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14032
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13885
14033
  F3.printFilter(ast, () => {
13886
14034
  PRINT_WORD(operation.name.toUpperCase());
13887
14035
  if (ast.silent) {
@@ -13900,9 +14048,9 @@ var create2 = {
13900
14048
  const createToken3 = CONSUME(create);
13901
14049
  const silent2 = OPTION(() => CONSUME(silent));
13902
14050
  const destination = SUBRULE1(graphRef);
13903
- return ACTION(() => C.factory.updateOperationCreate(destination, Boolean(silent2), C.factory.sourceLocation(createToken3, destination)));
14051
+ return ACTION(() => C.astFactory.updateOperationCreate(destination, Boolean(silent2), C.astFactory.sourceLocation(createToken3, destination)));
13904
14052
  },
13905
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14053
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13906
14054
  F3.printFilter(ast, () => {
13907
14055
  PRINT_WORD("CREATE");
13908
14056
  if (ast.silent) {
@@ -13921,9 +14069,9 @@ function copyMoveAddOperation(operation) {
13921
14069
  const source = SUBRULE1(graphOrDefault);
13922
14070
  CONSUME(to);
13923
14071
  const destination = SUBRULE2(graphOrDefault);
13924
- return ACTION(() => C.factory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent2), C.factory.sourceLocation(op, destination)));
14072
+ return ACTION(() => C.astFactory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent2), C.astFactory.sourceLocation(op, destination)));
13925
14073
  },
13926
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14074
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
13927
14075
  F3.printFilter(ast, () => {
13928
14076
  PRINT_WORD(operation.name.toUpperCase());
13929
14077
  if (ast.silent) {
@@ -13945,7 +14093,7 @@ var quadPattern = {
13945
14093
  const open = CONSUME(symbols_exports.LCurly);
13946
14094
  const val = SUBRULE1(quads);
13947
14095
  const close = CONSUME(symbols_exports.RCurly);
13948
- return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14096
+ return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
13949
14097
  }
13950
14098
  };
13951
14099
  var quadData = {
@@ -13956,7 +14104,7 @@ var quadData = {
13956
14104
  const val = SUBRULE1(quads);
13957
14105
  ACTION(() => couldParseVars && C.parseMode.add("canParseVars"));
13958
14106
  const close = CONSUME(symbols_exports.RCurly);
13959
- return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14107
+ return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
13960
14108
  }
13961
14109
  };
13962
14110
  function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
@@ -13973,12 +14121,26 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
13973
14121
  if (name !== "insertData") {
13974
14122
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
13975
14123
  }
13976
- return ACTION(() => C.factory.updateOperationInsDelDataWhere(subType, data.val, C.factory.sourceLocation(insDelToken, data)));
14124
+ return ACTION(() => C.astFactory.updateOperationInsDelDataWhere(subType, data.val, C.astFactory.sourceLocation(insDelToken, data)));
13977
14125
  },
13978
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13979
- F3.printFilter(ast, () => PRINT_WORD(subType === "insertdata" ? "INSERT DATA" : subType === "deletedata" ? "DELETE DATA" : "DELETE WHERE", "{"));
14126
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14127
+ const { astFactory: F3, indentInc } = C;
14128
+ F3.printFilter(ast, () => {
14129
+ C[traqulaIndentation] += indentInc;
14130
+ if (subType === "insertdata") {
14131
+ PRINT_WORD("INSERT DATA");
14132
+ } else if (subType === "deletedata") {
14133
+ PRINT_WORD("DELETE DATA");
14134
+ } else if (subType === "deletewhere") {
14135
+ PRINT_WORD("DELETE WHERE");
14136
+ }
14137
+ PRINT_WORD("{\n");
14138
+ });
13980
14139
  SUBRULE(quads, F3.wrap(ast.data, ast.loc));
13981
- F3.printFilter(ast, () => PRINT_WORD("}"));
14140
+ F3.printFilter(ast, () => {
14141
+ C[traqulaIndentation] -= indentInc;
14142
+ PRINT_ON_EMPTY("}\n");
14143
+ });
13982
14144
  }
13983
14145
  };
13984
14146
  }
@@ -14007,22 +14169,35 @@ var modify = {
14007
14169
  const using = SUBRULE1(usingClauseStar);
14008
14170
  CONSUME(where);
14009
14171
  const where2 = SUBRULE1(groupGraphPattern);
14010
- return ACTION(() => C.factory.updateOperationModify(C.factory.sourceLocation(graph2?.withToken, del, insert, where2), insert?.val ?? [], del?.val ?? [], where2, using, graph2?.graph));
14172
+ return ACTION(() => C.astFactory.updateOperationModify(C.astFactory.sourceLocation(graph2?.withToken, del, insert, where2), insert?.val ?? [], del?.val ?? [], where2, using, graph2?.graph));
14011
14173
  },
14012
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14174
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14175
+ const { astFactory: F3, indentInc } = C;
14013
14176
  if (ast.graph) {
14014
14177
  F3.printFilter(ast, () => PRINT_WORD("WITH"));
14015
14178
  SUBRULE(iri2, ast.graph);
14016
14179
  }
14017
14180
  if (ast.delete.length > 0) {
14018
- F3.printFilter(ast, () => PRINT_WORD("DELETE", "{"));
14181
+ F3.printFilter(ast, () => {
14182
+ C[traqulaIndentation] += indentInc;
14183
+ PRINT_WORD("DELETE", "{\n");
14184
+ });
14019
14185
  SUBRULE(quads, F3.wrap(ast.delete, ast.loc));
14020
- F3.printFilter(ast, () => PRINT_WORD("}"));
14186
+ F3.printFilter(ast, () => {
14187
+ C[traqulaIndentation] -= indentInc;
14188
+ PRINT_ON_EMPTY("}\n");
14189
+ });
14021
14190
  }
14022
14191
  if (ast.insert.length > 0) {
14023
- F3.printFilter(ast, () => PRINT_WORD("INSERT", "{"));
14192
+ F3.printFilter(ast, () => {
14193
+ C[traqulaIndentation] += indentInc;
14194
+ PRINT_WORD("INSERT", "{\n");
14195
+ });
14024
14196
  SUBRULE(quads, F3.wrap(ast.insert, ast.loc));
14025
- F3.printFilter(ast, () => PRINT_WORD("}"));
14197
+ F3.printFilter(ast, () => {
14198
+ C[traqulaIndentation] -= indentInc;
14199
+ PRINT_ON_EMPTY("}\n");
14200
+ });
14026
14201
  }
14027
14202
  SUBRULE(usingClauseStar, ast.from);
14028
14203
  F3.printFilter(ast, () => PRINT_WORD("WHERE"));
@@ -14036,7 +14211,7 @@ var deleteClause2 = {
14036
14211
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14037
14212
  const del = SUBRULE(quadPattern);
14038
14213
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14039
- return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
14214
+ return ACTION(() => C.astFactory.wrap(del.val, C.astFactory.sourceLocation(delToken, del)));
14040
14215
  }
14041
14216
  };
14042
14217
  var insertClause2 = {
@@ -14044,7 +14219,7 @@ var insertClause2 = {
14044
14219
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14045
14220
  const insertToken = CONSUME(insertClause);
14046
14221
  const insert = SUBRULE(quadPattern);
14047
- return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
14222
+ return ACTION(() => C.astFactory.wrap(insert.val, C.astFactory.sourceLocation(insertToken, insert)));
14048
14223
  }
14049
14224
  };
14050
14225
  var graphOrDefault = {
@@ -14052,12 +14227,12 @@ var graphOrDefault = {
14052
14227
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => OR([
14053
14228
  { ALT: () => {
14054
14229
  const def = CONSUME(graph_exports.default_);
14055
- return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
14230
+ return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
14056
14231
  } },
14057
14232
  { ALT: () => {
14058
14233
  const graph2 = OPTION(() => CONSUME(graph_exports.graph));
14059
14234
  const name = SUBRULE1(iri2);
14060
- return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph2, name)));
14235
+ return ACTION(() => C.astFactory.graphRefSpecific(name, C.astFactory.sourceLocation(graph2, name)));
14061
14236
  } }
14062
14237
  ])
14063
14238
  };
@@ -14066,9 +14241,9 @@ var graphRef = {
14066
14241
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14067
14242
  const graph2 = CONSUME(graph_exports.graph);
14068
14243
  const val = SUBRULE(iri2);
14069
- return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph2, val)));
14244
+ return ACTION(() => C.astFactory.graphRefSpecific(val, C.astFactory.sourceLocation(graph2, val)));
14070
14245
  },
14071
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14246
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14072
14247
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
14073
14248
  SUBRULE(iri2, ast.graph);
14074
14249
  }
@@ -14079,18 +14254,18 @@ var graphRefAll = {
14079
14254
  { ALT: () => SUBRULE(graphRef) },
14080
14255
  { ALT: () => {
14081
14256
  const def = CONSUME(graph_exports.default_);
14082
- return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
14257
+ return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
14083
14258
  } },
14084
14259
  { ALT: () => {
14085
14260
  const named2 = CONSUME(graph_exports.named);
14086
- return ACTION(() => C.factory.graphRefNamed(C.factory.sourceLocation(named2)));
14261
+ return ACTION(() => C.astFactory.graphRefNamed(C.astFactory.sourceLocation(named2)));
14087
14262
  } },
14088
14263
  { ALT: () => {
14089
14264
  const graphAll2 = CONSUME(graph_exports.graphAll);
14090
- return ACTION(() => C.factory.graphRefAll(C.factory.sourceLocation(graphAll2)));
14265
+ return ACTION(() => C.astFactory.graphRefAll(C.astFactory.sourceLocation(graphAll2)));
14091
14266
  } }
14092
14267
  ]),
14093
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14268
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14094
14269
  if (F3.isGraphRefSpecific(ast)) {
14095
14270
  SUBRULE(graphRef, ast);
14096
14271
  } else if (F3.isGraphRefDefault(ast)) {
@@ -14127,9 +14302,9 @@ var quads = {
14127
14302
  ACTION(() => quads2.push(triples));
14128
14303
  });
14129
14304
  });
14130
- return ACTION(() => C.factory.wrap(quads2, C.factory.sourceLocation(quads2.at(0), last2)));
14305
+ return ACTION(() => C.astFactory.wrap(quads2, C.astFactory.sourceLocation(quads2.at(0), last2)));
14131
14306
  },
14132
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14307
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
14133
14308
  for (const quad of ast.val) {
14134
14309
  if (F3.isPattern(quad)) {
14135
14310
  SUBRULE(triplesBlock, quad);
@@ -14147,14 +14322,21 @@ var quadsNotTriples = {
14147
14322
  CONSUME(symbols_exports.LCurly);
14148
14323
  const triples = OPTION(() => SUBRULE1(triplesTemplate));
14149
14324
  const close = CONSUME(symbols_exports.RCurly);
14150
- return ACTION(() => C.factory.graphQuads(name, triples ?? C.factory.patternBgp([], C.factory.sourceLocationNoMaterialize()), C.factory.sourceLocation(graph2, close)));
14325
+ return ACTION(() => C.astFactory.graphQuads(name, triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocationNoMaterialize()), C.astFactory.sourceLocation(graph2, close)));
14151
14326
  },
14152
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14327
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
14328
+ const { astFactory: F3, indentInc } = C;
14153
14329
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
14154
14330
  SUBRULE(varOrTerm, ast.graph);
14155
- F3.printFilter(ast, () => PRINT_WORD("{"));
14331
+ F3.printFilter(ast, () => {
14332
+ C[traqulaIndentation] += indentInc;
14333
+ PRINT_WORD("{\n");
14334
+ });
14156
14335
  SUBRULE(triplesBlock, ast.triples);
14157
- F3.printFilter(ast, () => PRINT_WORD("}"));
14336
+ F3.printFilter(ast, () => {
14337
+ C[traqulaIndentation] -= indentInc;
14338
+ PRINT_ON_EMPTY("}\n");
14339
+ });
14158
14340
  }
14159
14341
  };
14160
14342
 
@@ -14177,7 +14359,7 @@ var queryOrUpdate = {
14177
14359
  ...subType,
14178
14360
  type: "query",
14179
14361
  ...values3 && { values: values3 },
14180
- loc: C.factory.sourceLocation(prologueValues.at(0), subType, values3)
14362
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values3)
14181
14363
  }));
14182
14364
  } },
14183
14365
  { ALT: () => {
@@ -14201,7 +14383,7 @@ var queryOrUpdate = {
14201
14383
  const update2 = {
14202
14384
  type: "update",
14203
14385
  updates,
14204
- loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14386
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
14205
14387
  };
14206
14388
  updateNoReuseBlankNodeLabels(update2);
14207
14389
  return update2;
@@ -14209,7 +14391,7 @@ var queryOrUpdate = {
14209
14391
  } }
14210
14392
  ]);
14211
14393
  },
14212
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14394
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
14213
14395
  if (F3.isQuery(ast)) {
14214
14396
  SUBRULE(query, ast);
14215
14397
  } else {
@@ -14273,8 +14455,78 @@ var LANG_DIR = createToken2({
14273
14455
  });
14274
14456
  var sparql12LexerBuilder = LexerBuilder.create(lexer_exports.sparql11LexerBuilder).addBefore(lexer_exports.symbols.logicAnd, tilde, annotationOpen, annotationClose, tripleTermOpen, tripleTermClose, reificationOpen, reificationClose, version).addBefore(lexer_exports.builtIn.langmatches, buildInLangDir, buildInStrLangDir, buildInHasLangDir, buildInHasLang, buildInIsTRIPLE, buildInTRIPLE, buildInSUBJECT, buildInPREDICATE, buildInOBJECT).addBefore(lexer_exports.terminals.langTag, LANG_DIR).delete(lexer_exports.terminals.langTag);
14275
14457
 
14458
+ // lib/AstFactory.js
14459
+ var AstFactory2 = class extends AstFactory {
14460
+ termTriple(subject, predicate, object3, loc) {
14461
+ return {
14462
+ type: "term",
14463
+ subType: "triple",
14464
+ subject,
14465
+ predicate,
14466
+ object: object3,
14467
+ loc
14468
+ };
14469
+ }
14470
+ isTermTriple(obj) {
14471
+ return this.isOfSubType(obj, "term", "triple");
14472
+ }
14473
+ tripleCollectionReifiedTriple(loc, subject, predicate, object3, reifier2) {
14474
+ return {
14475
+ type: "tripleCollection",
14476
+ subType: "reifiedTriple",
14477
+ triples: [this.triple(subject, predicate, object3)],
14478
+ identifier: reifier2 ?? this.blankNode(void 0, this.sourceLocationNoMaterialize()),
14479
+ loc
14480
+ };
14481
+ }
14482
+ isTripleCollectionReifiedTriple(obj) {
14483
+ return this.isOfSubType(obj, "tripleCollection", "reifiedTriple");
14484
+ }
14485
+ tripleCollectionBlankNodeProperties(identifier, triples, loc) {
14486
+ return {
14487
+ type: "tripleCollection",
14488
+ subType: "blankNodeProperties",
14489
+ triples,
14490
+ identifier,
14491
+ loc
14492
+ };
14493
+ }
14494
+ /**
14495
+ * Overwritten triple constructor to always contain an empty annotations list
14496
+ */
14497
+ triple = (subject, predicate, object3, loc) => ({
14498
+ type: "triple",
14499
+ subject,
14500
+ predicate,
14501
+ object: object3,
14502
+ annotations: [],
14503
+ loc: loc ?? this.sourceLocation(subject, predicate, object3)
14504
+ });
14505
+ annotatedTriple(subject, predicate, object3, annotations, loc) {
14506
+ return {
14507
+ type: "triple",
14508
+ subject,
14509
+ predicate,
14510
+ object: object3,
14511
+ annotations: annotations ?? [],
14512
+ loc: loc ?? this.sourceLocation(subject, predicate, object3, ...annotations ?? [])
14513
+ };
14514
+ }
14515
+ contextDefinitionVersion(version2, loc) {
14516
+ return {
14517
+ type: "contextDef",
14518
+ subType: "version",
14519
+ version: version2,
14520
+ loc
14521
+ };
14522
+ }
14523
+ isContextDefinitionVersion(obj) {
14524
+ return this.isOfSubType(obj, "contextDef", "version");
14525
+ }
14526
+ };
14527
+
14276
14528
  // lib/validators.js
14277
- var F2 = new Factory();
14529
+ var F2 = new AstFactory2();
14278
14530
  function isLangDir(dir) {
14279
14531
  return dir === "ltr" || dir === "rtl";
14280
14532
  }
@@ -14318,6 +14570,11 @@ function findPatternBoundedVars2(iter, boundedVars) {
14318
14570
  if (F2.isTermVariable(iter)) {
14319
14571
  boundedVars.add(iter.value);
14320
14572
  }
14573
+ if (F2.isTermTriple(iter)) {
14574
+ findPatternBoundedVars2(iter.subject, boundedVars);
14575
+ findPatternBoundedVars2(iter.predicate, boundedVars);
14576
+ findPatternBoundedVars2(iter.object, boundedVars);
14577
+ }
14321
14578
  } else if (F2.isTriple(iter)) {
14322
14579
  findPatternBoundedVars2(iter.subject, boundedVars);
14323
14580
  findPatternBoundedVars2(iter.predicate, boundedVars);
@@ -14362,11 +14619,11 @@ var versionDecl = {
14362
14619
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14363
14620
  const versionToken = CONSUME(version);
14364
14621
  const identifier = SUBRULE(versionSpecifier);
14365
- return ACTION(() => C.factory.contextDefinitionVersion(identifier.val, C.factory.sourceLocation(versionToken, identifier)));
14622
+ return ACTION(() => C.astFactory.contextDefinitionVersion(identifier.val, C.astFactory.sourceLocation(versionToken, identifier)));
14366
14623
  },
14367
- gImpl: ({ PRINT_WORDS }) => (ast, { factory: F3 }) => {
14624
+ gImpl: ({ PRINT_WORDS }) => (ast, { astFactory: F3 }) => {
14368
14625
  F3.printFilter(ast, () => {
14369
- PRINT_WORDS("VERSION", `${grammar_exports.stringEscapedLexical(ast.version)}`);
14626
+ PRINT_WORDS("VERSION", `${grammar_exports.stringEscapedLexical(ast.version)}`, "\n");
14370
14627
  });
14371
14628
  }
14372
14629
  };
@@ -14377,7 +14634,7 @@ var versionSpecifier = {
14377
14634
  { ALT: () => CONSUME(lexer_exports.terminals.stringLiteral1) },
14378
14635
  { ALT: () => CONSUME(lexer_exports.terminals.stringLiteral2) }
14379
14636
  ]);
14380
- return ACTION(() => C.factory.wrap(token.image.slice(1, -1), C.factory.sourceLocation(token)));
14637
+ return ACTION(() => C.astFactory.wrap(token.image.slice(1, -1), C.astFactory.sourceLocation(token)));
14381
14638
  }
14382
14639
  };
14383
14640
  var prologue2 = {
@@ -14393,7 +14650,7 @@ var prologue2 = {
14393
14650
  ]));
14394
14651
  return result;
14395
14652
  },
14396
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14653
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F3 }) => {
14397
14654
  for (const context of ast) {
14398
14655
  if (F3.isContextDefinitionBase(context)) {
14399
14656
  SUBRULE(grammar_exports.baseDecl, context);
@@ -14410,7 +14667,7 @@ function reifiedTripleBlockImpl(name, allowPath) {
14410
14667
  name,
14411
14668
  impl: ({ ACTION, SUBRULE }) => (C) => {
14412
14669
  const triple = SUBRULE(reifiedTriple);
14413
- const properties = SUBRULE(allowPath ? grammar_exports.propertyListPath : grammar_exports.propertyList, ACTION(() => C.factory.dematerialized(triple.identifier)));
14670
+ const properties = SUBRULE(allowPath ? grammar_exports.propertyListPath : grammar_exports.propertyList, ACTION(() => C.astFactory.dematerialized(triple.identifier)));
14414
14671
  return ACTION(() => [triple, ...properties]);
14415
14672
  }
14416
14673
  };
@@ -14433,7 +14690,7 @@ var reifier = {
14433
14690
  if (reifier2 === void 0 && !C.parseMode.has("canCreateBlankNodes")) {
14434
14691
  throw new Error("Cannot create blanknodes in current parse mode");
14435
14692
  }
14436
- return C.factory.wrap(reifier2 ?? C.factory.blankNode(void 0, C.factory.sourceLocation()), C.factory.sourceLocation(tildeToken, reifier2));
14693
+ return C.astFactory.wrap(reifier2 ?? C.astFactory.blankNode(void 0, C.astFactory.sourceLocation()), C.astFactory.sourceLocation(tildeToken, reifier2));
14437
14694
  });
14438
14695
  }
14439
14696
  };
@@ -14463,7 +14720,7 @@ function objectImpl2(name, allowPaths) {
14463
14720
  const objectVal = SUBRULE(allowPaths ? graphNodePath2 : graphNode2);
14464
14721
  const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);
14465
14722
  return ACTION(() => {
14466
- const F3 = C.factory;
14723
+ const F3 = C.astFactory;
14467
14724
  if (F3.isPathPure(predicate) && annotationVal.length > 0) {
14468
14725
  throw new Error("Note 17 violation");
14469
14726
  }
@@ -14492,7 +14749,7 @@ function annotationImpl(name, allowPaths) {
14492
14749
  if (!currentReifier && !C.parseMode.has("canCreateBlankNodes")) {
14493
14750
  throw new Error("Cannot create blanknodes in current parse mode");
14494
14751
  }
14495
- currentReifier = currentReifier ?? C.factory.blankNode(void 0, C.factory.sourceLocation());
14752
+ currentReifier = currentReifier ?? C.astFactory.blankNode(void 0, C.astFactory.sourceLocation());
14496
14753
  });
14497
14754
  const block = SUBRULE(allowPaths ? annotationBlockPath : annotationBlock, currentReifier);
14498
14755
  ACTION(() => {
@@ -14504,7 +14761,7 @@ function annotationImpl(name, allowPaths) {
14504
14761
  });
14505
14762
  return annotations;
14506
14763
  },
14507
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14764
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14508
14765
  for (const annotation2 of ast) {
14509
14766
  if (F3.isTripleCollectionBlankNodeProperties(annotation2)) {
14510
14767
  SUBRULE(annotationBlockPath, annotation2);
@@ -14525,11 +14782,18 @@ function annotationBlockImpl(name, allowPaths) {
14525
14782
  const open = CONSUME(annotationOpen);
14526
14783
  const res = SUBRULE(allowPaths ? grammar_exports.propertyListPathNotEmpty : grammar_exports.propertyListNotEmpty, arg);
14527
14784
  const close = CONSUME(annotationClose);
14528
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(arg, res, C.factory.sourceLocation(open, close)));
14785
+ return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(arg, res, C.astFactory.sourceLocation(open, close)));
14529
14786
  },
14530
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
14531
- F3.printFilter(ast, () => PRINT_WORD("{|"));
14532
- for (const triple of ast.triples) {
14787
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC, PRINT_ON_EMPTY }) => (ast, C) => {
14788
+ const { astFactory: F3, indentInc } = C;
14789
+ F3.printFilter(ast, () => {
14790
+ PRINT_WORD("{|");
14791
+ if (ast.triples.length > 1) {
14792
+ C[traqulaIndentation] += indentInc;
14793
+ PRINT_WORD("\n");
14794
+ }
14795
+ });
14796
+ function printTriple(triple) {
14533
14797
  HANDLE_LOC(triple, () => {
14534
14798
  if (F3.isTerm(triple.predicate)) {
14535
14799
  SUBRULE(graphNodePath2, triple.predicate);
@@ -14537,10 +14801,21 @@ function annotationBlockImpl(name, allowPaths) {
14537
14801
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
14538
14802
  }
14539
14803
  SUBRULE(graphNodePath2, triple.object);
14540
- F3.printFilter(ast, () => PRINT_WORD(";"));
14541
14804
  });
14542
14805
  }
14543
- F3.printFilter(ast, () => PRINT_WORD("|}"));
14806
+ const [head2, ...tail] = ast.triples;
14807
+ printTriple(head2);
14808
+ for (const triple of tail) {
14809
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
14810
+ printTriple(triple);
14811
+ }
14812
+ F3.printFilter(ast, () => {
14813
+ if (ast.triples.length > 1) {
14814
+ PRINT_ON_EMPTY("|}\n");
14815
+ } else {
14816
+ PRINT_WORD("|}");
14817
+ }
14818
+ });
14544
14819
  }
14545
14820
  };
14546
14821
  }
@@ -14560,7 +14835,7 @@ var graphNodePath2 = {
14560
14835
  { ALT: () => $.SUBRULE(reifiedTriple) }
14561
14836
  ]),
14562
14837
  gImpl: ($) => (ast, C) => {
14563
- if (C.factory.isTripleCollectionReifiedTriple(ast)) {
14838
+ if (C.astFactory.isTripleCollectionReifiedTriple(ast)) {
14564
14839
  $.SUBRULE(reifiedTriple, ast);
14565
14840
  } else {
14566
14841
  grammar_exports.graphNodePath.gImpl($)(ast, C);
@@ -14578,7 +14853,7 @@ var varOrTerm2 = {
14578
14853
  { ALT: () => SUBRULE(grammar_exports.blankNode) },
14579
14854
  { ALT: () => {
14580
14855
  const token = CONSUME(lexer_exports.terminals.nil);
14581
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.NIL));
14856
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.NIL));
14582
14857
  } },
14583
14858
  { ALT: () => SUBRULE(tripleTerm) }
14584
14859
  ])
@@ -14597,10 +14872,10 @@ var reifiedTriple = {
14597
14872
  if (reifierVal === void 0 && !C.parseMode.has("canCreateBlankNodes")) {
14598
14873
  throw new Error("Cannot create blanknodes in current parse mode");
14599
14874
  }
14600
- return C.factory.tripleCollectionReifiedTriple(C.factory.sourceLocation(open, close), subject, predicate, object3, reifierVal?.val);
14875
+ return C.astFactory.tripleCollectionReifiedTriple(C.astFactory.sourceLocation(open, close), subject, predicate, object3, reifierVal?.val);
14601
14876
  });
14602
14877
  },
14603
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14878
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14604
14879
  F3.printFilter(ast, () => PRINT_WORD("<<"));
14605
14880
  const triple = ast.triples[0];
14606
14881
  SUBRULE(graphNodePath2, triple.subject);
@@ -14639,9 +14914,9 @@ var tripleTerm = {
14639
14914
  const predicate = SUBRULE(grammar_exports.verb);
14640
14915
  const object3 = SUBRULE(tripleTermObject);
14641
14916
  const close = CONSUME(tripleTermClose);
14642
- return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
14917
+ return ACTION(() => C.astFactory.termTriple(subject, predicate, object3, C.astFactory.sourceLocation(open, close)));
14643
14918
  },
14644
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14919
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F3 }) => {
14645
14920
  F3.printFilter(ast, () => PRINT_WORD("<<("));
14646
14921
  SUBRULE(graphNodePath2, ast.subject);
14647
14922
  SUBRULE(graphNodePath2, ast.predicate);
@@ -14674,12 +14949,12 @@ var tripleTermData = {
14674
14949
  { ALT: () => SUBRULE(grammar_exports.iri) },
14675
14950
  { ALT: () => {
14676
14951
  const token = CONSUME(lexer_exports.a);
14677
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), CommonIRIs.TYPE));
14952
+ return ACTION(() => C.astFactory.namedNode(C.astFactory.sourceLocation(token), CommonIRIs.TYPE));
14678
14953
  } }
14679
14954
  ]);
14680
14955
  const object3 = SUBRULE(tripleTermDataObject);
14681
14956
  const close = CONSUME(tripleTermClose);
14682
- return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
14957
+ return ACTION(() => C.astFactory.termTriple(subject, predicate, object3, C.astFactory.sourceLocation(open, close)));
14683
14958
  }
14684
14959
  };
14685
14960
  var tripleTermDataSubject = {
@@ -14711,7 +14986,7 @@ var exprTripleTerm = {
14711
14986
  const predicate = SUBRULE(grammar_exports.verb);
14712
14987
  const object3 = SUBRULE(exprTripleTermObject);
14713
14988
  const close = CONSUME(tripleTermClose);
14714
- return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
14989
+ return ACTION(() => C.astFactory.termTriple(subject, predicate, object3, C.astFactory.sourceLocation(open, close)));
14715
14990
  }
14716
14991
  };
14717
14992
  var exprTripleTermSubject = {
@@ -14761,7 +15036,7 @@ var rdfLiteral2 = {
14761
15036
  { ALT: () => {
14762
15037
  const langTag2 = CONSUME(LANG_DIR);
14763
15038
  return ACTION(() => {
14764
- const literal = C.factory.literalTerm(C.factory.sourceLocation(value, langTag2), value.value, langTag2.image.slice(1).toLowerCase());
15039
+ const literal = C.astFactory.literalTerm(C.astFactory.sourceLocation(value, langTag2), value.value, langTag2.image.slice(1).toLowerCase());
14765
15040
  langTagHasCorrectRange(literal);
14766
15041
  return literal;
14767
15042
  });
@@ -14769,7 +15044,7 @@ var rdfLiteral2 = {
14769
15044
  { ALT: () => {
14770
15045
  CONSUME(lexer_exports.symbols.hathat);
14771
15046
  const iriVal = SUBRULE(grammar_exports.iri);
14772
- return ACTION(() => C.factory.literalTerm(C.factory.sourceLocation(value, iriVal), value.value, iriVal));
15047
+ return ACTION(() => C.astFactory.literalTerm(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
14773
15048
  } }
14774
15049
  ])) ?? value;
14775
15050
  }
@@ -14781,7 +15056,7 @@ var unaryExpression2 = {
14781
15056
  { ALT: () => {
14782
15057
  const operator = CONSUME(lexer_exports.symbols.exclamation);
14783
15058
  const expr = SUBRULE1(unaryExpression2);
14784
- return ACTION(() => C.factory.expressionOperation("!", [expr], C.factory.sourceLocation(operator, expr)));
15059
+ return ACTION(() => C.astFactory.expressionOperation("!", [expr], C.astFactory.sourceLocation(operator, expr)));
14785
15060
  } },
14786
15061
  { ALT: () => {
14787
15062
  const operator = OR2([
@@ -14789,34 +15064,36 @@ var unaryExpression2 = {
14789
15064
  { ALT: () => CONSUME(lexer_exports.symbols.opMinus) }
14790
15065
  ]);
14791
15066
  const expr = SUBRULE2(primaryExpression2);
14792
- return ACTION(() => C.factory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.factory.sourceLocation(operator, expr)));
15067
+ return ACTION(() => C.astFactory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.astFactory.sourceLocation(operator, expr)));
14793
15068
  } }
14794
15069
  ])
14795
15070
  };
14796
15071
  var generateTriplesBlock = {
14797
15072
  name: "triplesBlock",
14798
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
15073
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { astFactory: F3 }) => {
14799
15074
  for (const [index, triple] of ast.triples.entries()) {
14800
15075
  HANDLE_LOC(triple, () => {
14801
15076
  const nextTriple = ast.triples.at(index);
14802
15077
  if (F3.isTripleCollection(triple)) {
14803
15078
  SUBRULE(graphNodePath2, triple);
14804
- F3.printFilter(triple, () => PRINT_WORD("."));
15079
+ F3.printFilter(triple, () => PRINT_WORD(".\n"));
14805
15080
  } else {
14806
15081
  SUBRULE(graphNodePath2, triple.subject);
15082
+ F3.printFilter(ast, () => PRINT_WORD(""));
14807
15083
  if (F3.isPathPure(triple.predicate)) {
14808
15084
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
14809
15085
  } else {
14810
15086
  SUBRULE(graphNodePath2, triple.predicate);
14811
15087
  }
15088
+ F3.printFilter(ast, () => PRINT_WORD(""));
14812
15089
  SUBRULE(graphNodePath2, triple.object);
14813
15090
  SUBRULE(annotationPath, triple.annotations ?? []);
14814
15091
  if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
14815
- F3.printFilter(ast, () => PRINT_WORD("."));
15092
+ F3.printFilter(ast, () => PRINT_WORD(".\n"));
14816
15093
  } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
14817
15094
  F3.printFilter(ast, () => PRINT_WORD(","));
14818
15095
  } else {
14819
- F3.printFilter(ast, () => PRINT_WORD(";"));
15096
+ F3.printFilter(ast, () => PRINT_WORD(";\n"));
14820
15097
  }
14821
15098
  }
14822
15099
  });
@@ -14826,7 +15103,7 @@ var generateTriplesBlock = {
14826
15103
  var generateGraphTerm = {
14827
15104
  name: "graphTerm",
14828
15105
  gImpl: ($) => (ast, C) => {
14829
- if (C.factory.isTermTriple(ast)) {
15106
+ if (C.astFactory.isTermTriple(ast)) {
14830
15107
  $.SUBRULE(tripleTerm, ast);
14831
15108
  } else {
14832
15109
  grammar_exports.graphTerm.gImpl($)(ast, C);
@@ -14834,88 +15111,22 @@ var generateGraphTerm = {
14834
15111
  }
14835
15112
  };
14836
15113
 
14837
- // lib/Factory.js
14838
- var Factory2 = class extends Factory {
14839
- termTriple(subject, predicate, object3, loc) {
14840
- return {
14841
- type: "term",
14842
- subType: "triple",
14843
- subject,
14844
- predicate,
14845
- object: object3,
14846
- loc
14847
- };
14848
- }
14849
- isTermTriple(obj) {
14850
- return this.isOfSubType(obj, "term", "triple");
14851
- }
14852
- tripleCollectionReifiedTriple(loc, subject, predicate, object3, reifier2) {
14853
- return {
14854
- type: "tripleCollection",
14855
- subType: "reifiedTriple",
14856
- triples: [this.triple(subject, predicate, object3)],
14857
- identifier: reifier2 ?? this.blankNode(void 0, this.sourceLocationNoMaterialize()),
14858
- loc
14859
- };
14860
- }
14861
- isTripleCollectionReifiedTriple(obj) {
14862
- return this.isOfSubType(obj, "tripleCollection", "reifiedTriple");
14863
- }
14864
- tripleCollectionBlankNodeProperties(identifier, triples, loc) {
14865
- return {
14866
- type: "tripleCollection",
14867
- subType: "blankNodeProperties",
14868
- triples,
14869
- identifier,
14870
- loc
14871
- };
14872
- }
14873
- /**
14874
- * Overwritten triple constructor to always contain an empty annotations list
14875
- */
14876
- triple = (subject, predicate, object3, loc) => ({
14877
- type: "triple",
14878
- subject,
14879
- predicate,
14880
- object: object3,
14881
- annotations: [],
14882
- loc: loc ?? this.sourceLocation(subject, predicate, object3)
14883
- });
14884
- annotatedTriple(subject, predicate, object3, annotations, loc) {
14885
- return {
14886
- type: "triple",
14887
- subject,
14888
- predicate,
14889
- object: object3,
14890
- annotations: annotations ?? [],
14891
- loc: loc ?? this.sourceLocation(subject, predicate, object3, ...annotations ?? [])
14892
- };
14893
- }
14894
- contextDefinitionVersion(version2, loc) {
14895
- return {
14896
- type: "contextDef",
14897
- subType: "version",
14898
- version: version2,
14899
- loc
14900
- };
14901
- }
14902
- isContextDefinitionVersion(obj) {
14903
- return this.isOfSubType(obj, "contextDef", "version");
14904
- }
14905
- };
14906
-
14907
15114
  // lib/parserUtils.js
14908
15115
  function completeParseContext(context) {
14909
15116
  return {
14910
- factory: context.factory ?? new Factory2(),
15117
+ astFactory: context.astFactory ?? new AstFactory2(),
14911
15118
  baseIRI: context.baseIRI,
14912
15119
  prefixes: { ...context.prefixes },
14913
15120
  origSource: context.origSource ?? "",
14914
15121
  offset: context.offset,
14915
15122
  parseMode: context.parseMode ? new Set(context.parseMode) : /* @__PURE__ */ new Set(["canParseVars", "canCreateBlankNodes"]),
14916
- skipValidation: context.skipValidation ?? false
15123
+ skipValidation: context.skipValidation ?? false,
15124
+ indentInc: context.indentInc ?? 2,
15125
+ [traqulaIndentation]: context[traqulaIndentation] ?? 0
14917
15126
  };
14918
15127
  }
15128
+ var AstTransformer2 = class extends TransformerSubType {
15129
+ };
14919
15130
  /*! Bundled license information:
14920
15131
 
14921
15132
  lodash-es/lodash.js: