@traqula/rules-sparql-1-1 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +0 -2
  2. package/lib/Sparql11types.d.ts +373 -62
  3. package/lib/Sparql11types.js.map +1 -1
  4. package/lib/SparqlParser.d.ts +4 -4
  5. package/lib/SparqlParser.js +2 -2
  6. package/lib/SparqlParser.js.map +1 -1
  7. package/lib/expressionHelpers.d.ts +2 -2
  8. package/lib/expressionHelpers.js +19 -21
  9. package/lib/expressionHelpers.js.map +1 -1
  10. package/lib/factory.d.ts +66 -66
  11. package/lib/factory.js.map +1 -1
  12. package/lib/factoryMixins/ContextFactory.d.ts +1 -1
  13. package/lib/factoryMixins/ContextFactory.js.map +1 -1
  14. package/lib/factoryMixins/ExpressionFactory.d.ts +1 -1
  15. package/lib/factoryMixins/ExpressionFactory.js.map +1 -1
  16. package/lib/factoryMixins/GraphRefFactory.d.ts +1 -1
  17. package/lib/factoryMixins/GraphRefFactory.js.map +1 -1
  18. package/lib/factoryMixins/PathFactory.d.ts +1 -1
  19. package/lib/factoryMixins/PathFactory.js.map +1 -1
  20. package/lib/factoryMixins/Patternfactory.d.ts +1 -1
  21. package/lib/factoryMixins/Patternfactory.js.map +1 -1
  22. package/lib/factoryMixins/QueryFactory.d.ts +1 -1
  23. package/lib/factoryMixins/QueryFactory.js.map +1 -1
  24. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +1 -1
  25. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -1
  26. package/lib/factoryMixins/TermFactory.d.ts +1 -1
  27. package/lib/factoryMixins/TermFactory.js.map +1 -1
  28. package/lib/factoryMixins/UpdateOperationFactory.d.ts +1 -1
  29. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -1
  30. package/lib/grammar/builtIn.d.ts +2 -2
  31. package/lib/grammar/builtIn.js +66 -66
  32. package/lib/grammar/builtIn.js.map +1 -1
  33. package/lib/grammar/dataSetClause.d.ts +2 -2
  34. package/lib/grammar/dataSetClause.js +7 -7
  35. package/lib/grammar/dataSetClause.js.map +1 -1
  36. package/lib/grammar/expression.d.ts +2 -2
  37. package/lib/grammar/expression.js +47 -47
  38. package/lib/grammar/expression.js.map +1 -1
  39. package/lib/grammar/general.d.ts +2 -2
  40. package/lib/grammar/general.js +25 -25
  41. package/lib/grammar/general.js.map +1 -1
  42. package/lib/grammar/index.d.ts +2 -2
  43. package/lib/grammar/index.js +2 -2
  44. package/lib/grammar/index.js.map +1 -1
  45. package/lib/grammar/literals.d.ts +2 -2
  46. package/lib/grammar/literals.js +10 -10
  47. package/lib/grammar/literals.js.map +1 -1
  48. package/lib/grammar/propertyPaths.d.ts +3 -3
  49. package/lib/grammar/propertyPaths.js +19 -19
  50. package/lib/grammar/propertyPaths.js.map +1 -1
  51. package/lib/grammar/{queryUnit/queryUnit.d.ts → queryUnit.d.ts} +2 -2
  52. package/lib/grammar/{queryUnit/queryUnit.js → queryUnit.js} +67 -67
  53. package/lib/grammar/queryUnit.js.map +1 -0
  54. package/lib/grammar/solutionModifier.d.ts +2 -2
  55. package/lib/grammar/solutionModifier.js +29 -29
  56. package/lib/grammar/solutionModifier.js.map +1 -1
  57. package/lib/grammar/tripleBlock.d.ts +10 -10
  58. package/lib/grammar/tripleBlock.js +37 -37
  59. package/lib/grammar/tripleBlock.js.map +1 -1
  60. package/lib/grammar/{updateUnit/updateUnit.d.ts → updateUnit.d.ts} +2 -2
  61. package/lib/grammar/{updateUnit/updateUnit.js → updateUnit.js} +78 -78
  62. package/lib/grammar/updateUnit.js.map +1 -0
  63. package/lib/grammar/whereClause.d.ts +2 -2
  64. package/lib/grammar/whereClause.js +69 -69
  65. package/lib/grammar/whereClause.js.map +1 -1
  66. package/lib/index.cjs +1485 -1487
  67. package/lib/index.d.ts +1 -2
  68. package/lib/index.js +1 -2
  69. package/lib/index.js.map +1 -1
  70. package/lib/lexer/graph.d.ts +1 -1
  71. package/lib/lexer/lexer.d.ts +1 -1
  72. package/lib/lexer/terminals.d.ts +69 -0
  73. package/lib/lexer/terminals.js +69 -0
  74. package/lib/lexer/terminals.js.map +1 -1
  75. package/lib/sparql11HelperTypes.d.ts +68 -0
  76. package/lib/sparql11HelperTypes.js +2 -0
  77. package/lib/sparql11HelperTypes.js.map +1 -0
  78. package/lib/utils.d.ts +11 -0
  79. package/lib/utils.js +14 -0
  80. package/lib/utils.js.map +1 -1
  81. package/lib/validation/validators.d.ts +1 -1
  82. package/lib/validation/validators.js.map +1 -1
  83. package/package.json +3 -3
  84. package/lib/RoundTripTypes.d.ts +0 -379
  85. package/lib/RoundTripTypes.js +0 -2
  86. package/lib/RoundTripTypes.js.map +0 -1
  87. package/lib/grammar/queryUnit/queryUnit.js.map +0 -1
  88. package/lib/grammar/updateUnit/updateUnit.js.map +0 -1
  89. package/lib/grammar-helpers/utils.d.ts +0 -12
  90. package/lib/grammar-helpers/utils.js +0 -16
  91. package/lib/grammar-helpers/utils.js.map +0 -1
package/lib/index.cjs CHANGED
@@ -11382,7 +11382,28 @@ function updateNoReuseBlankNodeLabels(updateQuery) {
11382
11382
  }
11383
11383
  }
11384
11384
 
11385
- // lib/grammar-helpers/utils.ts
11385
+ // lib/utils.ts
11386
+ function sparqlCodepointEscape(input) {
11387
+ const sanitizedInput = input.replaceAll(
11388
+ /\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{8})/gu,
11389
+ (_, unicode4, unicode8) => {
11390
+ if (unicode4) {
11391
+ const charCode2 = Number.parseInt(unicode4, 16);
11392
+ return String.fromCodePoint(charCode2);
11393
+ }
11394
+ const charCode = Number.parseInt(unicode8, 16);
11395
+ if (charCode < 65535) {
11396
+ return String.fromCodePoint(charCode);
11397
+ }
11398
+ const substractedCharCode = charCode - 65536;
11399
+ return String.fromCodePoint(55296 + (substractedCharCode >> 10), 56320 + (substractedCharCode & 1023));
11400
+ }
11401
+ );
11402
+ if (/[\uD800-\uDBFF](?:[^\uDC00-\uDFFF]|$)/u.test(sanitizedInput)) {
11403
+ throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);
11404
+ }
11405
+ return sanitizedInput;
11406
+ }
11386
11407
  var CommonIRIs = /* @__PURE__ */ ((CommonIRIs2) => {
11387
11408
  CommonIRIs2["BOOLEAN"] = "http://www.w3.org/2001/XMLSchema#boolean";
11388
11409
  CommonIRIs2["INTEGER"] = "http://www.w3.org/2001/XMLSchema#integer";
@@ -11393,7 +11414,6 @@ var CommonIRIs = /* @__PURE__ */ ((CommonIRIs2) => {
11393
11414
  CommonIRIs2["REST"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest";
11394
11415
  CommonIRIs2["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
11395
11416
  CommonIRIs2["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
11396
- CommonIRIs2["REIFIES"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies";
11397
11417
  return CommonIRIs2;
11398
11418
  })(CommonIRIs || {});
11399
11419
 
@@ -11424,7 +11444,7 @@ function stringEscapedLexical(str2) {
11424
11444
  var rdfLiteral = {
11425
11445
  name: "rdfLiteral",
11426
11446
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
11427
- const value = SUBRULE1(string, void 0);
11447
+ const value = SUBRULE1(string);
11428
11448
  return OPTION(() => OR([
11429
11449
  { ALT: () => {
11430
11450
  const lang2 = CONSUME(terminals_exports.langTag);
@@ -11436,7 +11456,7 @@ var rdfLiteral = {
11436
11456
  } },
11437
11457
  { ALT: () => {
11438
11458
  CONSUME(symbols_exports.hathat);
11439
- const iriVal = SUBRULE1(iri2, void 0);
11459
+ const iriVal = SUBRULE1(iri2);
11440
11460
  return ACTION(() => C.factory.literalTerm(
11441
11461
  C.factory.sourceLocation(value, iriVal),
11442
11462
  value.value,
@@ -11452,7 +11472,7 @@ var rdfLiteral = {
11452
11472
  factory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11453
11473
  } else {
11454
11474
  factory.printFilter(ast, () => PRINT("^^"));
11455
- SUBRULE(iri2, ast.langOrIri, void 0);
11475
+ SUBRULE(iri2, ast.langOrIri);
11456
11476
  }
11457
11477
  }
11458
11478
  }
@@ -11460,9 +11480,9 @@ var rdfLiteral = {
11460
11480
  var numericLiteral = {
11461
11481
  name: "numericLiteral",
11462
11482
  impl: ({ SUBRULE, OR }) => () => OR([
11463
- { ALT: () => SUBRULE(numericLiteralUnsigned, void 0) },
11464
- { ALT: () => SUBRULE(numericLiteralPositive, void 0) },
11465
- { ALT: () => SUBRULE(numericLiteralNegative, void 0) }
11483
+ { ALT: () => SUBRULE(numericLiteralUnsigned) },
11484
+ { ALT: () => SUBRULE(numericLiteralPositive) },
11485
+ { ALT: () => SUBRULE(numericLiteralNegative) }
11466
11486
  ])
11467
11487
  };
11468
11488
  var numericLiteralUnsigned = {
@@ -11570,10 +11590,10 @@ var string = {
11570
11590
  var iri2 = {
11571
11591
  name: "iri",
11572
11592
  impl: ({ SUBRULE, OR }) => () => OR([
11573
- { ALT: () => SUBRULE(iriFull, void 0) },
11574
- { ALT: () => SUBRULE(prefixedName, void 0) }
11593
+ { ALT: () => SUBRULE(iriFull) },
11594
+ { ALT: () => SUBRULE(prefixedName) }
11575
11595
  ]),
11576
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => F2.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast, void 0) : SUBRULE(iriFull, ast, void 0)
11596
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => F2.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11577
11597
  };
11578
11598
  var iriFull = {
11579
11599
  name: "iriFull",
@@ -11645,11 +11665,11 @@ function datasetClauseUsing(name, token) {
11645
11665
  const start = CONSUME(token);
11646
11666
  return OR([
11647
11667
  { ALT: () => {
11648
- const iri3 = SUBRULE(defaultGraphClause, void 0);
11668
+ const iri3 = SUBRULE(defaultGraphClause);
11649
11669
  return ACTION(() => C.factory.wrap({ clauseType: "default", value: iri3 }, C.factory.sourceLocation(start, iri3)));
11650
11670
  } },
11651
11671
  { ALT: () => {
11652
- const namedClause = SUBRULE(namedGraphClause, void 0);
11672
+ const namedClause = SUBRULE(namedGraphClause);
11653
11673
  return ACTION(() => C.factory.wrap({
11654
11674
  clauseType: "named",
11655
11675
  value: namedClause.val
@@ -11662,7 +11682,7 @@ function datasetClauseUsing(name, token) {
11662
11682
  var datasetClause = datasetClauseUsing("datasetClause", from);
11663
11683
  var defaultGraphClause = {
11664
11684
  name: "defaultGraphClause",
11665
- impl: ({ SUBRULE }) => () => SUBRULE(sourceSelector, void 0)
11685
+ impl: ({ SUBRULE }) => () => SUBRULE(sourceSelector)
11666
11686
  };
11667
11687
  var usingClause2 = datasetClauseUsing("usingClause", usingClause);
11668
11688
  function datasetClauseUsingStar(name, subRule, fromUsing) {
@@ -11671,7 +11691,7 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11671
11691
  impl: ({ ACTION, MANY, SUBRULE }) => (C) => {
11672
11692
  const clauses = [];
11673
11693
  MANY(() => {
11674
- const clause = SUBRULE(subRule, void 0);
11694
+ const clause = SUBRULE(subRule);
11675
11695
  clauses.push(clause);
11676
11696
  });
11677
11697
  return ACTION(() => C.factory.datasetClauses(
@@ -11685,7 +11705,7 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11685
11705
  if (clause.clauseType === "named") {
11686
11706
  F2.printFilter(ast, () => PRINT_WORD("NAMED"));
11687
11707
  }
11688
- SUBRULE(iri2, clause.value, void 0);
11708
+ SUBRULE(iri2, clause.value);
11689
11709
  }
11690
11710
  }
11691
11711
  };
@@ -11696,1389 +11716,1390 @@ var namedGraphClause = {
11696
11716
  name: "namedGraphClause",
11697
11717
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11698
11718
  const named2 = CONSUME(graph_exports.named);
11699
- const iri3 = SUBRULE(sourceSelector, void 0);
11719
+ const iri3 = SUBRULE(sourceSelector);
11700
11720
  return ACTION(() => C.factory.wrap(iri3, C.factory.sourceLocation(named2, iri3)));
11701
11721
  }
11702
11722
  };
11703
11723
  var sourceSelector = {
11704
11724
  name: "sourceSelector",
11705
- impl: ({ SUBRULE }) => () => SUBRULE(iri2, void 0)
11725
+ impl: ({ SUBRULE }) => () => SUBRULE(iri2)
11706
11726
  };
11707
11727
 
11708
- // lib/grammar/general.ts
11709
- var prologue = {
11710
- name: "prologue",
11711
- impl: ({ SUBRULE, MANY, OR }) => () => {
11712
- const result = [];
11713
- MANY(() => OR([
11714
- { ALT: () => result.push(SUBRULE(baseDecl2, void 0)) },
11715
- // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
11716
- // We might need to check this.
11717
- { ALT: () => result.push(SUBRULE(prefixDecl2, void 0)) }
11718
- ]));
11719
- return result;
11720
- },
11721
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11722
- for (const context of ast) {
11723
- if (F2.isContextDefinitionBase(context)) {
11724
- SUBRULE(baseDecl2, context, void 0);
11725
- } else if (F2.isContextDefinitionPrefix(context)) {
11726
- SUBRULE(prefixDecl2, context, void 0);
11727
- }
11728
+ // lib/expressionHelpers.ts
11729
+ function funcExpr1(func) {
11730
+ return {
11731
+ name: unCapitalize(func.name),
11732
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11733
+ const operator = CONSUME(func);
11734
+ CONSUME(symbols_exports.LParen);
11735
+ const arg = SUBRULE(expression);
11736
+ const close = CONSUME(symbols_exports.RParen);
11737
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11728
11738
  }
11729
- }
11730
- };
11731
- var baseDecl2 = {
11732
- name: "baseDecl",
11733
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11734
- const base = CONSUME(baseDecl);
11735
- const val = SUBRULE(iriFull, void 0);
11736
- return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
11737
- },
11738
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
11739
- F2.printFilter(ast, () => PRINT_WORD("BASE"));
11740
- SUBRULE(iri2, ast.value, void 0);
11741
- }
11742
- };
11743
- var prefixDecl2 = {
11744
- name: "prefixDecl",
11745
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11746
- const prefix = CONSUME(prefixDecl);
11747
- const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
11748
- const value = SUBRULE(iriFull, void 0);
11749
- return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
11750
- },
11751
- gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F2 }) => {
11752
- F2.printFilter(ast, () => {
11753
- PRINT_WORDS("PREFIX", `${ast.key}:`);
11754
- });
11755
- SUBRULE(iri2, ast.value, void 0);
11756
- }
11757
- };
11758
- var verb = {
11759
- name: "verb",
11760
- impl: ({ SUBRULE, OR }) => () => OR([
11761
- { ALT: () => SUBRULE(varOrIri, void 0) },
11762
- { ALT: () => SUBRULE(verbA, void 0) }
11763
- ])
11764
- };
11765
- var varOrTerm = {
11766
- name: "varOrTerm",
11767
- impl: ({ SUBRULE, OR }) => (C) => OR([
11768
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_, void 0) },
11769
- { ALT: () => SUBRULE(graphTerm, void 0) }
11770
- ]),
11771
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11772
- if (F2.isTermVariable(ast)) {
11773
- return SUBRULE(var_, ast, void 0);
11739
+ };
11740
+ }
11741
+ function funcExpr2(func) {
11742
+ return {
11743
+ name: unCapitalize(func.name),
11744
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {
11745
+ const operator = CONSUME(func);
11746
+ CONSUME(symbols_exports.LParen);
11747
+ const arg1 = SUBRULE1(expression);
11748
+ CONSUME(symbols_exports.comma);
11749
+ const arg2 = SUBRULE2(expression);
11750
+ const close = CONSUME(symbols_exports.RParen);
11751
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
11774
11752
  }
11775
- return SUBRULE(graphTerm, ast, void 0);
11776
- }
11777
- };
11778
- var varOrIri = {
11779
- name: "varOrIri",
11780
- impl: ({ SUBRULE, OR }) => (C) => OR([
11781
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_, void 0) },
11782
- { ALT: () => SUBRULE(iri2, void 0) }
11783
- ])
11784
- };
11785
- var var_ = {
11786
- name: "var",
11787
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
11788
- const varToken = OR([
11789
- { ALT: () => CONSUME(terminals_exports.var1) },
11790
- { ALT: () => CONSUME(terminals_exports.var2) }
11791
- ]);
11792
- return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
11793
- },
11794
- gImpl: ({ PRINT_WORD }) => (ast, { factory: F2 }) => {
11795
- F2.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
11796
- }
11797
- };
11798
- var graphTerm = {
11799
- name: "graphTerm",
11800
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
11801
- { ALT: () => SUBRULE(iri2, void 0) },
11802
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
11803
- { ALT: () => SUBRULE(numericLiteral, void 0) },
11804
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
11805
- { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode, void 0) },
11806
- { ALT: () => {
11807
- const tokenNil = CONSUME(terminals_exports.nil);
11808
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
11809
- } }
11810
- ]),
11811
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11812
- if (F2.isTermNamed(ast)) {
11813
- SUBRULE(iri2, ast, void 0);
11814
- } else if (F2.isTermLiteral(ast)) {
11815
- SUBRULE(rdfLiteral, ast, void 0);
11816
- } else if (F2.isTermBlank(ast)) {
11817
- SUBRULE(blankNode, ast, void 0);
11753
+ };
11754
+ }
11755
+ function funcExpr3(func) {
11756
+ return {
11757
+ name: unCapitalize(func.name),
11758
+ impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {
11759
+ const operator = CONSUME(func);
11760
+ CONSUME(symbols_exports.LParen);
11761
+ const arg1 = SUBRULE1(expression);
11762
+ CONSUME1(symbols_exports.comma);
11763
+ const arg2 = SUBRULE2(expression);
11764
+ CONSUME2(symbols_exports.comma);
11765
+ const arg3 = SUBRULE3(expression);
11766
+ const close = CONSUME(symbols_exports.RParen);
11767
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
11818
11768
  }
11819
- }
11820
- };
11821
-
11822
- // lib/grammar/propertyPaths.ts
11823
- var path = {
11824
- name: "path",
11825
- impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative, void 0)
11826
- };
11827
- var pathGenerator = {
11828
- name: "path",
11829
- gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F2 }, braces = true) => {
11830
- if (F2.isTerm(ast) && F2.isTermNamed(ast)) {
11831
- SUBRULE(iri2, ast, void 0);
11832
- } else {
11833
- F2.printFilter(ast, () => braces && PRINT("("));
11834
- switch (ast.subType) {
11835
- case "|":
11836
- case "/": {
11837
- const [head2, ...tail] = ast.items;
11838
- SUBRULE(pathGenerator, head2, braces);
11839
- for (const val of tail) {
11840
- F2.printFilter(ast, () => PRINT(ast.subType));
11841
- SUBRULE(pathGenerator, val, braces);
11842
- }
11843
- break;
11844
- }
11845
- case "^":
11846
- F2.printFilter(ast, () => PRINT("^"));
11847
- SUBRULE(pathGenerator, ast.items[0], braces);
11848
- break;
11849
- case "?":
11850
- case "*":
11851
- case "+":
11852
- SUBRULE(pathGenerator, ast.items[0], braces);
11853
- F2.printFilter(ast, () => PRINT(ast.subType));
11854
- break;
11855
- case "!":
11856
- F2.printFilter(ast, () => PRINT("!"));
11857
- F2.printFilter(ast, () => PRINT("("));
11858
- SUBRULE(pathGenerator, ast.items[0], false);
11859
- F2.printFilter(ast, () => PRINT(")"));
11860
- break;
11861
- }
11862
- F2.printFilter(ast, () => braces && PRINT(")"));
11769
+ };
11770
+ }
11771
+ function funcVar1(func) {
11772
+ return {
11773
+ name: unCapitalize(func.name),
11774
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11775
+ const operator = CONSUME(func);
11776
+ CONSUME(symbols_exports.LParen);
11777
+ const arg = SUBRULE(var_);
11778
+ const close = CONSUME(symbols_exports.RParen);
11779
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11863
11780
  }
11864
- }
11865
- };
11866
- function pathChainHelper(name, SEP, subType, subRule) {
11781
+ };
11782
+ }
11783
+ function funcExprOrNil1(func) {
11867
11784
  return {
11868
- name,
11869
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, MANY }) => (C) => {
11870
- const head2 = SUBRULE1(subRule, void 0);
11871
- let tailEnd = head2;
11872
- const tail = [];
11873
- MANY(() => {
11874
- CONSUME(SEP);
11875
- tailEnd = SUBRULE2(subRule, void 0);
11876
- tail.push(tailEnd);
11785
+ name: unCapitalize(func.name),
11786
+ impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
11787
+ const operator = CONSUME(func);
11788
+ return OR([
11789
+ { ALT: () => {
11790
+ CONSUME(symbols_exports.LParen);
11791
+ const arg = SUBRULE(expression);
11792
+ const close = CONSUME(symbols_exports.RParen);
11793
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11794
+ } },
11795
+ { ALT: () => {
11796
+ const nil2 = CONSUME(terminals_exports.nil);
11797
+ return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11798
+ } }
11799
+ ]);
11800
+ }
11801
+ };
11802
+ }
11803
+ function funcNil1(func) {
11804
+ return {
11805
+ name: unCapitalize(func.name),
11806
+ impl: ({ ACTION, CONSUME }) => (C) => {
11807
+ const operator = CONSUME(func);
11808
+ const nil2 = CONSUME(terminals_exports.nil);
11809
+ return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11810
+ }
11811
+ };
11812
+ }
11813
+ function funcExprList1(func) {
11814
+ return {
11815
+ name: unCapitalize(func.name),
11816
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11817
+ const operator = CONSUME(func);
11818
+ const args = SUBRULE(expressionList);
11819
+ return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
11820
+ }
11821
+ };
11822
+ }
11823
+ function funcExpr2or3(func) {
11824
+ return {
11825
+ name: unCapitalize(func.name),
11826
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => (C) => {
11827
+ const operator = CONSUME(func);
11828
+ CONSUME(symbols_exports.LParen);
11829
+ const arg1 = SUBRULE1(expression);
11830
+ CONSUME1(symbols_exports.comma);
11831
+ const arg2 = SUBRULE2(expression);
11832
+ const arg3 = OPTION(() => {
11833
+ CONSUME2(symbols_exports.comma);
11834
+ return SUBRULE3(expression);
11877
11835
  });
11878
- return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
11836
+ const close = CONSUME(symbols_exports.RParen);
11837
+ return ACTION(() => C.factory.expressionOperation(
11838
+ operator.image,
11839
+ arg3 ? [arg1, arg2, arg3] : [arg1, arg2],
11840
+ C.factory.sourceLocation(operator, close)
11841
+ ));
11879
11842
  }
11880
11843
  };
11881
11844
  }
11882
- var pathEltOrInverse = {
11883
- name: "pathEltOrInverse",
11884
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR }) => (C) => OR([
11885
- { ALT: () => SUBRULE1(pathElt, void 0) },
11886
- { ALT: () => {
11887
- const hat2 = CONSUME(symbols_exports.hat);
11888
- const item = SUBRULE2(pathElt, void 0);
11889
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
11890
- } }
11891
- ])
11892
- };
11893
- var pathSequence = pathChainHelper("pathSequence", symbols_exports.slash, "/", pathEltOrInverse);
11894
- var pathAlternative = pathChainHelper("pathAlternative", symbols_exports.pipe, "|", pathSequence);
11895
- var pathElt = {
11896
- name: "pathElt",
11897
- impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
11898
- const item = SUBRULE(pathPrimary, void 0);
11899
- const modification = OPTION(() => SUBRULE(pathMod, void 0));
11900
- return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
11901
- }
11902
- };
11903
- var pathMod = {
11904
- name: "pathMod",
11905
- impl: ({ CONSUME, OR }) => () => OR([
11906
- { ALT: () => CONSUME(symbols_exports.question) },
11907
- { ALT: () => CONSUME(symbols_exports.star) },
11908
- { ALT: () => CONSUME(symbols_exports.opPlus) }
11909
- ])
11910
- };
11911
- var pathPrimary = {
11912
- name: "pathPrimary",
11913
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
11914
- { ALT: () => SUBRULE(iri2, void 0) },
11915
- { ALT: () => SUBRULE(verbA, void 0) },
11916
- { ALT: () => SUBRULE(pathNegatedPropertySet, void 0) },
11917
- { ALT: () => {
11845
+ function funcExpr3or4(func) {
11846
+ return {
11847
+ name: unCapitalize(func.name),
11848
+ impl: ({
11849
+ ACTION,
11850
+ CONSUME,
11851
+ SUBRULE1,
11852
+ SUBRULE2,
11853
+ SUBRULE3,
11854
+ SUBRULE4,
11855
+ CONSUME1,
11856
+ OPTION,
11857
+ CONSUME2,
11858
+ CONSUME3
11859
+ }) => (C) => {
11860
+ const operator = CONSUME(func);
11918
11861
  CONSUME(symbols_exports.LParen);
11919
- const resRecursive = SUBRULE(path, void 0);
11920
- CONSUME(symbols_exports.RParen);
11921
- return resRecursive;
11922
- } }
11923
- ])
11924
- };
11925
- var pathNegatedPropertySet = {
11926
- name: "pathNegatedPropertySet",
11927
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, OR, MANY }) => (C) => {
11928
- const exclamation2 = CONSUME(symbols_exports.exclamation);
11929
- return OR([
11930
- { ALT: () => {
11931
- const noAlternative = SUBRULE1(pathOneInPropertySet, void 0);
11932
- return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
11933
- } },
11934
- { ALT: () => {
11935
- const open = CONSUME(symbols_exports.LParen);
11936
- const head2 = SUBRULE2(pathOneInPropertySet, void 0);
11937
- const tail = [];
11938
- MANY(() => {
11939
- CONSUME(symbols_exports.pipe);
11940
- const item = SUBRULE3(pathOneInPropertySet, void 0);
11941
- tail.push(item);
11942
- });
11943
- const close = CONSUME(symbols_exports.RParen);
11944
- return ACTION(() => {
11945
- const F2 = C.factory;
11946
- if (tail.length === 0) {
11947
- return F2.path("!", [head2], F2.sourceLocation(exclamation2, close));
11948
- }
11949
- return F2.path(
11950
- "!",
11951
- [F2.path("|", [head2, ...tail], F2.sourceLocation(open, close))],
11952
- F2.sourceLocation(exclamation2, close)
11953
- );
11954
- });
11955
- } }
11956
- ]);
11957
- }
11958
- };
11959
- var pathOneInPropertySet = {
11960
- name: "pathOneInPropertySet",
11961
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
11962
- { ALT: () => SUBRULE1(iri2, void 0) },
11963
- { ALT: () => SUBRULE1(verbA, void 0) },
11964
- { ALT: () => {
11965
- const hat2 = CONSUME(symbols_exports.hat);
11966
- const item = OR2([
11967
- { ALT: () => SUBRULE2(iri2, void 0) },
11968
- { ALT: () => SUBRULE2(verbA, void 0) }
11969
- ]);
11970
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
11971
- } }
11972
- ])
11973
- };
11974
-
11975
- // lib/grammar/tripleBlock.ts
11976
- function triplesDotSeperated(triplesSameSubjectSubrule) {
11977
- return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
11978
- const triples = [];
11979
- let parsedDot = true;
11980
- let dotToken;
11981
- AT_LEAST_ONE({
11982
- GATE: () => parsedDot,
11983
- DEF: () => {
11984
- parsedDot = false;
11985
- const template = SUBRULE(triplesSameSubjectSubrule, void 0);
11986
- ACTION(() => {
11987
- triples.push(...template);
11988
- });
11989
- OPTION(() => {
11990
- dotToken = CONSUME(symbols_exports.dot);
11991
- parsedDot = true;
11992
- });
11993
- }
11994
- });
11995
- return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
11996
- };
11997
- }
11998
- var triplesBlock = {
11999
- name: "triplesBlock",
12000
- impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, void 0),
12001
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12002
- for (const [index, triple] of ast.triples.entries()) {
12003
- HANDLE_LOC(triple, () => {
12004
- const nextTriple = ast.triples.at(index);
12005
- if (F2.isTripleCollection(triple)) {
12006
- SUBRULE(graphNodePath, triple, void 0);
12007
- F2.printFilter(triple, () => PRINT_WORD("."));
12008
- } else {
12009
- SUBRULE(graphNodePath, triple.subject, void 0);
12010
- if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12011
- SUBRULE(varOrTerm, triple.predicate, void 0);
12012
- } else {
12013
- SUBRULE(pathGenerator, triple.predicate, void 0);
12014
- }
12015
- SUBRULE(graphNodePath, triple.object, void 0);
12016
- if (nextTriple === void 0 || F2.isTripleCollection(nextTriple) || !F2.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12017
- F2.printFilter(ast, () => PRINT_WORD("."));
12018
- } else if (F2.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12019
- F2.printFilter(ast, () => PRINT_WORD(","));
12020
- } else {
12021
- F2.printFilter(ast, () => PRINT_WORD(";"));
12022
- }
12023
- }
11862
+ const arg1 = SUBRULE1(expression);
11863
+ CONSUME1(symbols_exports.comma);
11864
+ const arg2 = SUBRULE2(expression);
11865
+ CONSUME2(symbols_exports.comma);
11866
+ const arg3 = SUBRULE3(expression);
11867
+ const arg4 = OPTION(() => {
11868
+ CONSUME3(symbols_exports.comma);
11869
+ return SUBRULE4(expression);
12024
11870
  });
11871
+ const close = CONSUME(symbols_exports.RParen);
11872
+ return ACTION(() => C.factory.expressionOperation(
11873
+ operator.image,
11874
+ arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3],
11875
+ C.factory.sourceLocation(operator, close)
11876
+ ));
12025
11877
  }
12026
- }
12027
- };
12028
- function triplesSameSubjectImpl(name, allowPaths) {
12029
- return {
12030
- name,
12031
- impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12032
- { ALT: () => {
12033
- const subject = SUBRULE(varOrTerm, void 0);
12034
- const res = SUBRULE(
12035
- allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
12036
- { subject: ACTION(() => C.factory.dematerialized(subject)) }
12037
- );
12038
- return ACTION(() => {
12039
- if (res.length > 0) {
12040
- res[0].subject = subject;
12041
- res[0].loc = C.factory.sourceLocation(subject, res[0]);
12042
- }
12043
- return res;
12044
- });
12045
- } },
12046
- { ALT: () => {
12047
- const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode, void 0);
12048
- const restNode = SUBRULE(
12049
- allowPaths ? propertyListPath : propertyList,
12050
- { subject: ACTION(() => C.factory.graphNodeIdentifier(subjectNode)) }
12051
- );
12052
- return ACTION(() => {
12053
- if (restNode.length === 0) {
12054
- return [subjectNode];
12055
- }
12056
- restNode[0].subject = subjectNode;
12057
- restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12058
- return restNode;
12059
- });
12060
- } }
12061
- ])
12062
- };
12063
- }
12064
- var triplesSameSubject = triplesSameSubjectImpl("triplesSameSubject", false);
12065
- var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", true);
12066
- var triplesTemplate = {
12067
- name: "triplesTemplate",
12068
- impl: triplesDotSeperated(triplesSameSubject)
12069
- };
12070
- function propertyListImpl(name, allowPaths) {
12071
- return {
12072
- name,
12073
- impl: ({ SUBRULE, OPTION }) => (_, arg) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, arg)) ?? []
12074
11878
  };
12075
11879
  }
12076
- var propertyList = propertyListImpl("propertyList", false);
12077
- var propertyListPath = propertyListImpl("propertyListPath", true);
12078
- function propertyListNotEmptyImplementation(name, allowPaths) {
11880
+ function funcGroupGraphPattern(func) {
12079
11881
  return {
12080
- name,
12081
- impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, arg) => {
12082
- const result = [];
12083
- let parsedSemi = true;
12084
- AT_LEAST_ONE({
12085
- GATE: () => parsedSemi,
12086
- DEF: () => {
12087
- parsedSemi = false;
12088
- const predicate = allowPaths ? OR1([
12089
- { ALT: () => SUBRULE1(verbPath, void 0) },
12090
- { ALT: () => SUBRULE1(verbSimple, void 0) }
12091
- ]) : SUBRULE1(verb, void 0);
12092
- const triples = SUBRULE1(
12093
- allowPaths ? objectListPath : objectList,
12094
- ACTION(() => ({ subject: arg.subject, predicate }))
12095
- );
12096
- MANY2(() => {
12097
- CONSUME(symbols_exports.semi);
12098
- parsedSemi = true;
12099
- });
12100
- ACTION(() => {
12101
- result.push(...triples);
12102
- });
12103
- }
12104
- });
12105
- return result;
11882
+ name: unCapitalize(func.name),
11883
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11884
+ const operator = CONSUME(func);
11885
+ const group = SUBRULE(groupGraphPattern);
11886
+ return ACTION(() => C.factory.expressionPatternOperation(
11887
+ operator.image,
11888
+ group,
11889
+ C.factory.sourceLocation(operator, group)
11890
+ ));
12106
11891
  }
12107
11892
  };
12108
11893
  }
12109
- var propertyListNotEmpty = propertyListNotEmptyImplementation("propertyListNotEmpty", false);
12110
- var propertyListPathNotEmpty = propertyListNotEmptyImplementation("propertyListPathNotEmpty", true);
12111
- var verbPath = {
12112
- name: "verbPath",
12113
- impl: ({ SUBRULE }) => () => SUBRULE(path, void 0)
12114
- };
12115
- var verbSimple = {
12116
- name: "verbSimple",
12117
- impl: ({ SUBRULE }) => () => SUBRULE(var_, void 0)
12118
- };
12119
- function objectListImpl(name, allowPaths) {
11894
+ function baseAggregateFunc(func) {
12120
11895
  return {
12121
- name,
12122
- impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, arg) => {
12123
- const objects = [];
12124
- AT_LEAST_ONE_SEP({
12125
- SEP: symbols_exports.comma,
12126
- DEF: () => {
12127
- const objectTriple = SUBRULE(allowPaths ? objectPath : object, arg);
12128
- ACTION(() => {
12129
- objects.push(objectTriple);
12130
- });
12131
- }
12132
- });
12133
- return objects;
11896
+ name: unCapitalize(func.name),
11897
+ impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
11898
+ const operator = CONSUME(func);
11899
+ CONSUME(symbols_exports.LParen);
11900
+ const distinct2 = OPTION(() => CONSUME(distinct));
11901
+ const expr1 = SUBRULE(expression);
11902
+ const close = CONSUME(symbols_exports.RParen);
11903
+ return ACTION(() => C.factory.aggregate(
11904
+ operator.image,
11905
+ distinct2 !== void 0,
11906
+ expr1,
11907
+ void 0,
11908
+ C.factory.sourceLocation(operator, close)
11909
+ ));
12134
11910
  }
12135
11911
  };
12136
11912
  }
12137
- var objectList = objectListImpl("objectList", false);
12138
- var objectListPath = objectListImpl("objectListPath", true);
12139
- function objectImpl(name, allowPaths) {
12140
- return {
12141
- name,
12142
- impl: ({ ACTION, SUBRULE }) => (C, arg) => {
12143
- const node = SUBRULE(allowPaths ? graphNodePath : graphNode, void 0);
12144
- return ACTION(() => C.factory.triple(arg.subject, arg.predicate, node));
12145
- }
12146
- };
12147
- }
12148
- var object = objectImpl("object", false);
12149
- var objectPath = objectImpl("objectPath", true);
12150
- function collectionImpl(name, allowPaths) {
12151
- return {
12152
- name,
12153
- impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {
12154
- const terms = [];
12155
- const startToken = CONSUME(symbols_exports.LParen);
12156
- AT_LEAST_ONE(() => {
12157
- terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode, void 0));
12158
- });
12159
- const endToken = CONSUME(symbols_exports.RParen);
12160
- return ACTION(() => {
12161
- const F2 = C.factory;
12162
- const triples = [];
12163
- const predFirst = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" /* FIRST */, void 0);
12164
- const predRest = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" /* REST */, void 0);
12165
- const predNil = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */, void 0);
12166
- const listHead = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12167
- let iterHead = listHead;
12168
- for (const [index, term] of terms.entries()) {
12169
- const lastInList = index === terms.length - 1;
12170
- const headTriple = F2.triple(
12171
- iterHead,
12172
- predFirst,
12173
- term
12174
- );
12175
- triples.push(headTriple);
12176
- if (lastInList) {
12177
- const nilTriple = F2.triple(iterHead, predRest, predNil);
12178
- triples.push(nilTriple);
12179
- } else {
12180
- const tail = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12181
- const linkTriple = F2.triple(iterHead, predRest, tail);
12182
- triples.push(linkTriple);
12183
- iterHead = tail;
12184
- }
12185
- }
12186
- return F2.tripleCollectionList(listHead, triples, F2.sourceLocation(startToken, endToken));
12187
- });
12188
- },
12189
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12190
- F2.printFilter(ast, () => PRINT_WORD("("));
12191
- for (const [idx, triple] of ast.triples.entries()) {
12192
- if (idx % 2 === 0) {
12193
- SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object, void 0);
12194
- }
12195
- }
12196
- F2.printFilter(ast, () => PRINT_WORD(")"));
12197
- }
12198
- };
12199
- }
12200
- var collection = collectionImpl("collection", false);
12201
- var collectionPath = collectionImpl("collectionPath", true);
12202
- function triplesNodeImpl(name, allowPaths) {
12203
- return {
12204
- name,
12205
- impl: ({ SUBRULE, OR }) => () => OR([
12206
- { ALT: () => SUBRULE(allowPaths ? collectionPath : collection, void 0) },
12207
- { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, void 0) }
12208
- ]),
12209
- gImpl: ({ SUBRULE }) => (ast) => ast.subType === "list" ? SUBRULE(allowPaths ? collectionPath : collection, ast, void 0) : SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast, void 0)
12210
- };
11913
+
11914
+ // lib/grammar/builtIn.ts
11915
+ var builtInStr = funcExpr1(BuildinCalls_exports.str);
11916
+ var builtInLang = funcExpr1(BuildinCalls_exports.lang);
11917
+ var builtInLangmatches = funcExpr2(BuildinCalls_exports.langmatches);
11918
+ var builtInDatatype = funcExpr1(BuildinCalls_exports.datatype);
11919
+ var builtInBound = funcVar1(BuildinCalls_exports.bound);
11920
+ var builtInIri = funcExpr1(BuildinCalls_exports.iri);
11921
+ var builtInUri = funcExpr1(BuildinCalls_exports.uri);
11922
+ var builtInBnodeSparqlJs = funcExprOrNil1(BuildinCalls_exports.bnode);
11923
+ var builtInRand = funcNil1(BuildinCalls_exports.rand);
11924
+ var builtInAbs = funcExpr1(BuildinCalls_exports.abs);
11925
+ var builtInCeil = funcExpr1(BuildinCalls_exports.ceil);
11926
+ var builtInFloor = funcExpr1(BuildinCalls_exports.floor);
11927
+ var builtInRound = funcExpr1(BuildinCalls_exports.round);
11928
+ var builtInConcat = funcExprList1(BuildinCalls_exports.concat);
11929
+ var builtInStrlen = funcExpr1(BuildinCalls_exports.strlen);
11930
+ var builtInUcase = funcExpr1(BuildinCalls_exports.ucase);
11931
+ var builtInLcase = funcExpr1(BuildinCalls_exports.lcase);
11932
+ var builtInEncode_for_uri = funcExpr1(BuildinCalls_exports.encode_for_uri);
11933
+ var builtInContains = funcExpr2(BuildinCalls_exports.contains);
11934
+ var builtInStrstarts = funcExpr2(BuildinCalls_exports.strstarts);
11935
+ var builtInStrends = funcExpr2(BuildinCalls_exports.strends);
11936
+ var builtInStrbefore = funcExpr2(BuildinCalls_exports.strbefore);
11937
+ var builtInStrafter = funcExpr2(BuildinCalls_exports.strafter);
11938
+ var builtInYear = funcExpr1(BuildinCalls_exports.year);
11939
+ var builtInMonth = funcExpr1(BuildinCalls_exports.month);
11940
+ var builtInDay = funcExpr1(BuildinCalls_exports.day);
11941
+ var builtInHours = funcExpr1(BuildinCalls_exports.hours);
11942
+ var builtInMinutes = funcExpr1(BuildinCalls_exports.minutes);
11943
+ var builtInSeconds = funcExpr1(BuildinCalls_exports.seconds);
11944
+ var builtInTimezone = funcExpr1(BuildinCalls_exports.timezone);
11945
+ var builtInTz = funcExpr1(BuildinCalls_exports.tz);
11946
+ var builtInNow = funcNil1(BuildinCalls_exports.now);
11947
+ var builtInUuid = funcNil1(BuildinCalls_exports.uuid);
11948
+ var builtInStruuid = funcNil1(BuildinCalls_exports.struuid);
11949
+ var builtInMd5 = funcExpr1(BuildinCalls_exports.md5);
11950
+ var builtInSha1 = funcExpr1(BuildinCalls_exports.sha1);
11951
+ var builtInSha256 = funcExpr1(BuildinCalls_exports.sha256);
11952
+ var builtInSha384 = funcExpr1(BuildinCalls_exports.sha384);
11953
+ var builtInSha512 = funcExpr1(BuildinCalls_exports.sha512);
11954
+ var builtInCoalesce = funcExprList1(BuildinCalls_exports.coalesce);
11955
+ var builtInIf = funcExpr3(BuildinCalls_exports.if_);
11956
+ var builtInStrlang = funcExpr2(BuildinCalls_exports.strlang);
11957
+ var builtInStrdt = funcExpr2(BuildinCalls_exports.strdt);
11958
+ var builtInSameterm = funcExpr2(BuildinCalls_exports.sameterm);
11959
+ var builtInIsiri = funcExpr1(BuildinCalls_exports.isiri);
11960
+ var builtInIsuri = funcExpr1(BuildinCalls_exports.isuri);
11961
+ var builtInIsblank = funcExpr1(BuildinCalls_exports.isblank);
11962
+ var builtInIsliteral = funcExpr1(BuildinCalls_exports.isliteral);
11963
+ var builtInIsnumeric = funcExpr1(BuildinCalls_exports.isnumeric);
11964
+ function builtInCallList(SUBRULE) {
11965
+ return [
11966
+ { ALT: () => SUBRULE(aggregate) },
11967
+ { ALT: () => SUBRULE(builtInStr) },
11968
+ { ALT: () => SUBRULE(builtInLang) },
11969
+ { ALT: () => SUBRULE(builtInLangmatches) },
11970
+ { ALT: () => SUBRULE(builtInDatatype) },
11971
+ { ALT: () => SUBRULE(builtInBound) },
11972
+ { ALT: () => SUBRULE(builtInIri) },
11973
+ { ALT: () => SUBRULE(builtInUri) },
11974
+ { ALT: () => SUBRULE(builtInBnodeSparqlJs) },
11975
+ { ALT: () => SUBRULE(builtInRand) },
11976
+ { ALT: () => SUBRULE(builtInAbs) },
11977
+ { ALT: () => SUBRULE(builtInCeil) },
11978
+ { ALT: () => SUBRULE(builtInFloor) },
11979
+ { ALT: () => SUBRULE(builtInRound) },
11980
+ { ALT: () => SUBRULE(builtInConcat) },
11981
+ { ALT: () => SUBRULE(substringExpression) },
11982
+ { ALT: () => SUBRULE(builtInStrlen) },
11983
+ { ALT: () => SUBRULE(strReplaceExpression) },
11984
+ { ALT: () => SUBRULE(builtInUcase) },
11985
+ { ALT: () => SUBRULE(builtInLcase) },
11986
+ { ALT: () => SUBRULE(builtInEncode_for_uri) },
11987
+ { ALT: () => SUBRULE(builtInContains) },
11988
+ { ALT: () => SUBRULE(builtInStrstarts) },
11989
+ { ALT: () => SUBRULE(builtInStrends) },
11990
+ { ALT: () => SUBRULE(builtInStrbefore) },
11991
+ { ALT: () => SUBRULE(builtInStrafter) },
11992
+ { ALT: () => SUBRULE(builtInYear) },
11993
+ { ALT: () => SUBRULE(builtInMonth) },
11994
+ { ALT: () => SUBRULE(builtInDay) },
11995
+ { ALT: () => SUBRULE(builtInHours) },
11996
+ { ALT: () => SUBRULE(builtInMinutes) },
11997
+ { ALT: () => SUBRULE(builtInSeconds) },
11998
+ { ALT: () => SUBRULE(builtInTimezone) },
11999
+ { ALT: () => SUBRULE(builtInTz) },
12000
+ { ALT: () => SUBRULE(builtInNow) },
12001
+ { ALT: () => SUBRULE(builtInUuid) },
12002
+ { ALT: () => SUBRULE(builtInStruuid) },
12003
+ { ALT: () => SUBRULE(builtInMd5) },
12004
+ { ALT: () => SUBRULE(builtInSha1) },
12005
+ { ALT: () => SUBRULE(builtInSha256) },
12006
+ { ALT: () => SUBRULE(builtInSha384) },
12007
+ { ALT: () => SUBRULE(builtInSha512) },
12008
+ { ALT: () => SUBRULE(builtInCoalesce) },
12009
+ { ALT: () => SUBRULE(builtInIf) },
12010
+ { ALT: () => SUBRULE(builtInStrlang) },
12011
+ { ALT: () => SUBRULE(builtInStrdt) },
12012
+ { ALT: () => SUBRULE(builtInSameterm) },
12013
+ { ALT: () => SUBRULE(builtInIsiri) },
12014
+ { ALT: () => SUBRULE(builtInIsuri) },
12015
+ { ALT: () => SUBRULE(builtInIsblank) },
12016
+ { ALT: () => SUBRULE(builtInIsliteral) },
12017
+ { ALT: () => SUBRULE(builtInIsnumeric) },
12018
+ { ALT: () => SUBRULE(regexExpression) },
12019
+ { ALT: () => SUBRULE(existsFunc) },
12020
+ { ALT: () => SUBRULE(notExistsFunc) }
12021
+ ];
12211
12022
  }
12212
- var triplesNode = triplesNodeImpl("triplesNode", false);
12213
- var triplesNodePath = triplesNodeImpl("triplesNodePath", true);
12214
- function blankNodePropertyListImpl(name, allowPaths) {
12215
- const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
12216
- return {
12217
- name,
12218
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12219
- const startToken = CONSUME(symbols_exports.LSquare);
12220
- const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12221
- const propList = SUBRULE(propertyPathNotEmptyImpl, { subject: blankNode2 });
12222
- const endToken = CONSUME(symbols_exports.RSquare);
12223
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
12224
- blankNode2,
12225
- propList,
12226
- C.factory.sourceLocation(startToken, endToken)
12227
- ));
12228
- },
12229
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12230
- F2.printFilter(ast, () => PRINT("["));
12231
- for (const triple of ast.triples) {
12232
- HANDLE_LOC(triple, () => {
12233
- if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12234
- SUBRULE(varOrTerm, triple.predicate, void 0);
12235
- } else {
12236
- SUBRULE(pathGenerator, triple.predicate, void 0);
12237
- }
12238
- SUBRULE(graphNodePath, triple.object, void 0);
12239
- F2.printFilter(ast, () => PRINT_WORD(";"));
12240
- });
12241
- }
12242
- F2.printFilter(ast, () => PRINT("]"));
12023
+ var builtInCall = {
12024
+ name: "builtInCall",
12025
+ impl: ({ OR, SUBRULE, cache }) => () => {
12026
+ const cached = cache.get(builtInCall);
12027
+ if (cached) {
12028
+ return OR(cached);
12243
12029
  }
12244
- };
12245
- }
12246
- var blankNodePropertyList = blankNodePropertyListImpl("blankNodePropertyList", false);
12247
- var blankNodePropertyListPath = blankNodePropertyListImpl("blankNodePropertyListPath", true);
12248
- function graphNodeImpl(name, allowPaths) {
12249
- const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
12250
- return {
12251
- name,
12252
- impl: ({ SUBRULE, OR }) => (C) => OR([
12253
- { ALT: () => SUBRULE(varOrTerm, void 0) },
12254
- {
12255
- GATE: () => C.parseMode.has("canCreateBlankNodes"),
12256
- ALT: () => SUBRULE(triplesNodeRule, void 0)
12257
- }
12258
- ]),
12259
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12260
- if (F2.isTerm(ast)) {
12261
- SUBRULE(varOrTerm, ast, void 0);
12262
- } else {
12263
- SUBRULE(triplesNodeRule, ast, void 0);
12030
+ const builtIns = builtInCallList(SUBRULE);
12031
+ cache.set(builtInCall, builtIns);
12032
+ return OR(builtIns);
12033
+ }
12034
+ };
12035
+ var regexExpression = funcExpr2or3(BuildinCalls_exports.regex);
12036
+ var substringExpression = funcExpr2or3(BuildinCalls_exports.substr);
12037
+ var strReplaceExpression = funcExpr3or4(BuildinCalls_exports.replace);
12038
+ var existsFunc = funcGroupGraphPattern(BuildinCalls_exports.exists);
12039
+ var notExistsFunc = funcGroupGraphPattern(BuildinCalls_exports.notexists);
12040
+ var aggregateCount = {
12041
+ name: unCapitalize(BuildinCalls_exports.count.name),
12042
+ impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
12043
+ const operatorToken = CONSUME(BuildinCalls_exports.count);
12044
+ CONSUME(symbols_exports.LParen);
12045
+ const distinctToken = OPTION(() => CONSUME(distinct));
12046
+ const expressionVal = OR([
12047
+ { ALT: () => {
12048
+ const starToken = CONSUME(symbols_exports.star);
12049
+ return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
12050
+ } },
12051
+ { ALT: () => SUBRULE(expression) }
12052
+ ]);
12053
+ const closeToken = CONSUME(symbols_exports.RParen);
12054
+ return ACTION(() => {
12055
+ const F2 = C.factory;
12056
+ if (C.factory.isWildcard(expressionVal)) {
12057
+ return F2.aggregate(
12058
+ operatorToken.image,
12059
+ Boolean(distinctToken),
12060
+ expressionVal,
12061
+ void 0,
12062
+ C.factory.sourceLocation(operatorToken, closeToken)
12063
+ );
12264
12064
  }
12265
- }
12266
- };
12267
- }
12268
- var graphNode = graphNodeImpl("graphNode", false);
12269
- var graphNodePath = graphNodeImpl("graphNodePath", true);
12270
-
12271
- // lib/grammar/whereClause.ts
12272
- var whereClause = {
12273
- name: "whereClause",
12274
- impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12275
- const where2 = OPTION(() => CONSUME(where));
12276
- const group = SUBRULE(groupGraphPattern, void 0);
12277
- return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12278
- },
12279
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12280
- F2.printFilter(ast, () => PRINT_WORD("WHERE"));
12281
- SUBRULE(groupGraphPattern, ast.val, void 0);
12065
+ return F2.aggregate(
12066
+ operatorToken.image,
12067
+ Boolean(distinctToken),
12068
+ expressionVal,
12069
+ void 0,
12070
+ C.factory.sourceLocation(operatorToken, closeToken)
12071
+ );
12072
+ });
12282
12073
  }
12283
12074
  };
12284
- var groupGraphPattern = {
12285
- name: "groupGraphPattern",
12286
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
12287
- const open = CONSUME(symbols_exports.LCurly);
12288
- const patterns = OR([
12289
- { ALT: () => [SUBRULE(subSelect, void 0)] },
12290
- { ALT: () => SUBRULE(groupGraphPatternSub, void 0) }
12075
+ var aggregateSum = baseAggregateFunc(BuildinCalls_exports.sum);
12076
+ var aggregateMin = baseAggregateFunc(BuildinCalls_exports.min);
12077
+ var aggregateMax = baseAggregateFunc(BuildinCalls_exports.max);
12078
+ var aggregateAvg = baseAggregateFunc(BuildinCalls_exports.avg);
12079
+ var aggregateSample = baseAggregateFunc(BuildinCalls_exports.sample);
12080
+ var aggregateGroup_concat = {
12081
+ name: unCapitalize(BuildinCalls_exports.groupConcat.name),
12082
+ impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
12083
+ const operatorToken = CONSUME(BuildinCalls_exports.groupConcat);
12084
+ CONSUME(symbols_exports.LParen);
12085
+ const distinctToken = OPTION1(() => CONSUME(distinct));
12086
+ const expr = SUBRULE(expression);
12087
+ const sep = OPTION2(() => {
12088
+ CONSUME(symbols_exports.semi);
12089
+ CONSUME(separator);
12090
+ CONSUME(symbols_exports.equal);
12091
+ return SUBRULE(string);
12092
+ });
12093
+ const closeToken = CONSUME(symbols_exports.RParen);
12094
+ return ACTION(() => {
12095
+ const F2 = C.factory;
12096
+ return F2.aggregate(
12097
+ operatorToken.image,
12098
+ Boolean(distinctToken),
12099
+ expr,
12100
+ sep?.value ?? " ",
12101
+ F2.sourceLocation(operatorToken, closeToken)
12102
+ );
12103
+ });
12104
+ }
12105
+ };
12106
+ var aggregate = {
12107
+ name: "aggregate",
12108
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => {
12109
+ const wasInAggregate = ACTION(() => C.parseMode.has("inAggregate"));
12110
+ ACTION(() => C.parseMode.add("inAggregate"));
12111
+ const result = OR([
12112
+ { ALT: () => SUBRULE(aggregateCount) },
12113
+ { ALT: () => SUBRULE(aggregateSum) },
12114
+ { ALT: () => SUBRULE(aggregateMin) },
12115
+ { ALT: () => SUBRULE(aggregateMax) },
12116
+ { ALT: () => SUBRULE(aggregateAvg) },
12117
+ { ALT: () => SUBRULE(aggregateSample) },
12118
+ { ALT: () => SUBRULE(aggregateGroup_concat) }
12291
12119
  ]);
12292
- const close = CONSUME(symbols_exports.RCurly);
12293
- return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12120
+ ACTION(() => !wasInAggregate && C.parseMode.delete("inAggregate"));
12121
+ ACTION(() => {
12122
+ if (!C.parseMode.has("canParseAggregate")) {
12123
+ throw new Error("Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.");
12124
+ }
12125
+ if (C.parseMode.has("inAggregate")) {
12126
+ throw new Error("An aggregate function is not allowed within an aggregate function.");
12127
+ }
12128
+ });
12129
+ return result;
12294
12130
  },
12295
12131
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12296
- F2.printFilter(ast, () => PRINT_WORD("{"));
12297
- for (const pattern of ast.patterns) {
12298
- SUBRULE(generatePattern, pattern, void 0);
12132
+ F2.printFilter(ast, () => {
12133
+ PRINT_WORD(ast.aggregation, "(");
12134
+ if (ast.distinct) {
12135
+ PRINT_WORD("DISTINCT");
12136
+ }
12137
+ });
12138
+ const arg = ast.expression[0];
12139
+ if (F2.isWildcard(arg)) {
12140
+ F2.printFilter(ast, () => PRINT_WORD("*"));
12141
+ } else {
12142
+ SUBRULE(expression, arg);
12299
12143
  }
12300
- F2.printFilter(ast, () => PRINT_WORD("}"));
12144
+ if (F2.isExpressionAggregateSeparator(ast)) {
12145
+ F2.printFilter(ast, () => PRINT_WORD(";", "SEPARATOR", "=", stringEscapedLexical(ast.separator)));
12146
+ }
12147
+ F2.printFilter(ast, () => PRINT_WORD(")"));
12301
12148
  }
12302
12149
  };
12303
- var generatePattern = {
12304
- name: "generatePattern",
12150
+
12151
+ // lib/grammar/general.ts
12152
+ var prologue = {
12153
+ name: "prologue",
12154
+ impl: ({ SUBRULE, MANY, OR }) => () => {
12155
+ const result = [];
12156
+ MANY(() => OR([
12157
+ { ALT: () => result.push(SUBRULE(baseDecl2)) },
12158
+ // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
12159
+ // We might need to check this.
12160
+ { ALT: () => result.push(SUBRULE(prefixDecl2)) }
12161
+ ]));
12162
+ return result;
12163
+ },
12305
12164
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12306
- if (ast.type === "query") {
12307
- SUBRULE(query, F2.querySelect({
12308
- context: [],
12309
- datasets: F2.datasetClauses([], F2.sourceLocation()),
12310
- where: ast.where,
12311
- variables: ast.variables,
12312
- solutionModifiers: ast.solutionModifiers,
12313
- values: ast.values,
12314
- distinct: ast.distinct,
12315
- reduced: ast.reduced
12316
- }, ast.loc), void 0);
12317
- } else if (ast.subType === "group") {
12318
- SUBRULE(groupGraphPattern, ast, void 0);
12319
- } else if (ast.subType === "bgp") {
12320
- SUBRULE(triplesBlock, ast, void 0);
12321
- } else {
12322
- SUBRULE(graphPatternNotTriples, ast, void 0);
12165
+ for (const context of ast) {
12166
+ if (F2.isContextDefinitionBase(context)) {
12167
+ SUBRULE(baseDecl2, context);
12168
+ } else if (F2.isContextDefinitionPrefix(context)) {
12169
+ SUBRULE(prefixDecl2, context);
12170
+ }
12323
12171
  }
12324
12172
  }
12325
12173
  };
12326
- var groupGraphPatternSub = {
12327
- name: "groupGraphPatternSub",
12328
- impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
12329
- const patterns = [];
12330
- const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock, void 0));
12331
- if (bgpPattern) {
12332
- patterns.push(bgpPattern);
12333
- }
12334
- MANY(() => {
12335
- const notTriples = SUBRULE(graphPatternNotTriples, void 0);
12336
- patterns.push(notTriples);
12337
- OPTION2(() => CONSUME(symbols_exports.dot));
12338
- const moreTriples = OPTION3(() => SUBRULE2(triplesBlock, void 0));
12339
- if (moreTriples) {
12340
- patterns.push(moreTriples);
12341
- }
12174
+ var baseDecl2 = {
12175
+ name: "baseDecl",
12176
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12177
+ const base = CONSUME(baseDecl);
12178
+ const val = SUBRULE(iriFull);
12179
+ return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
12180
+ },
12181
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12182
+ F2.printFilter(ast, () => PRINT_WORD("BASE"));
12183
+ SUBRULE(iri2, ast.value);
12184
+ }
12185
+ };
12186
+ var prefixDecl2 = {
12187
+ name: "prefixDecl",
12188
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12189
+ const prefix = CONSUME(prefixDecl);
12190
+ const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
12191
+ const value = SUBRULE(iriFull);
12192
+ return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
12193
+ },
12194
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F2 }) => {
12195
+ F2.printFilter(ast, () => {
12196
+ PRINT_WORDS("PREFIX", `${ast.key}:`);
12342
12197
  });
12343
- ACTION(() => checkNote13(patterns));
12344
- return patterns;
12198
+ SUBRULE(iri2, ast.value);
12345
12199
  }
12346
12200
  };
12347
- var graphPatternNotTriples = {
12348
- name: "graphPatternNotTriples",
12201
+ var verb = {
12202
+ name: "verb",
12349
12203
  impl: ({ SUBRULE, OR }) => () => OR([
12350
- { ALT: () => SUBRULE(groupOrUnionGraphPattern, void 0) },
12351
- { ALT: () => SUBRULE(optionalGraphPattern, void 0) },
12352
- { ALT: () => SUBRULE(minusGraphPattern, void 0) },
12353
- { ALT: () => SUBRULE(graphGraphPattern, void 0) },
12354
- { ALT: () => SUBRULE(serviceGraphPattern, void 0) },
12355
- { ALT: () => SUBRULE(filter3, void 0) },
12356
- { ALT: () => SUBRULE(bind2, void 0) },
12357
- { ALT: () => SUBRULE(inlineData, void 0) }
12204
+ { ALT: () => SUBRULE(varOrIri) },
12205
+ { ALT: () => SUBRULE(verbA) }
12206
+ ])
12207
+ };
12208
+ var varOrTerm = {
12209
+ name: "varOrTerm",
12210
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12211
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
12212
+ { ALT: () => SUBRULE(graphTerm) }
12358
12213
  ]),
12359
- gImpl: ({ SUBRULE }) => (ast) => {
12360
- switch (ast.subType) {
12361
- case "group":
12362
- case "union":
12363
- SUBRULE(groupOrUnionGraphPattern, ast, void 0);
12364
- break;
12365
- case "optional":
12366
- SUBRULE(optionalGraphPattern, ast, void 0);
12367
- break;
12368
- case "minus":
12369
- SUBRULE(minusGraphPattern, ast, void 0);
12370
- break;
12371
- case "graph":
12372
- SUBRULE(graphGraphPattern, ast, void 0);
12373
- break;
12374
- case "service":
12375
- SUBRULE(serviceGraphPattern, ast, void 0);
12376
- break;
12377
- case "filter":
12378
- SUBRULE(filter3, ast, void 0);
12379
- break;
12380
- case "bind":
12381
- SUBRULE(bind2, ast, void 0);
12382
- break;
12383
- case "values":
12384
- SUBRULE(inlineData, ast, void 0);
12385
- break;
12214
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12215
+ if (F2.isTermVariable(ast)) {
12216
+ return SUBRULE(var_, ast);
12386
12217
  }
12218
+ return SUBRULE(graphTerm, ast);
12387
12219
  }
12388
12220
  };
12389
- var optionalGraphPattern = {
12390
- name: "optionalGraphPattern",
12391
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12392
- const optional2 = CONSUME(optional);
12393
- const group = SUBRULE(groupGraphPattern, void 0);
12394
- return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12395
- },
12396
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12397
- F2.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12398
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12399
- }
12221
+ var varOrIri = {
12222
+ name: "varOrIri",
12223
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12224
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
12225
+ { ALT: () => SUBRULE(iri2) }
12226
+ ])
12400
12227
  };
12401
- var graphGraphPattern = {
12402
- name: "graphGraphPattern",
12403
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12404
- const graph2 = CONSUME(graph_exports.graph);
12405
- const name = SUBRULE(varOrIri, void 0);
12406
- const group = SUBRULE(groupGraphPattern, void 0);
12407
- return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12228
+ var var_ = {
12229
+ name: "var",
12230
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
12231
+ const varToken = OR([
12232
+ { ALT: () => CONSUME(terminals_exports.var1) },
12233
+ { ALT: () => CONSUME(terminals_exports.var2) }
12234
+ ]);
12235
+ return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
12408
12236
  },
12409
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12410
- F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
12411
- SUBRULE(varOrTerm, ast.name, void 0);
12412
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12237
+ gImpl: ({ PRINT_WORD }) => (ast, { factory: F2 }) => {
12238
+ F2.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
12413
12239
  }
12414
12240
  };
12415
- var serviceGraphPattern = {
12416
- name: "serviceGraphPattern",
12417
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
12418
- const service2 = CONSUME(service);
12419
- const silent2 = OPTION(() => {
12420
- CONSUME(silent);
12421
- return true;
12422
- }) ?? false;
12423
- const name = SUBRULE1(varOrIri, void 0);
12424
- const group = SUBRULE1(groupGraphPattern, void 0);
12425
- return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12426
- },
12427
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12428
- F2.printFilter(ast, () => {
12429
- PRINT_WORD("SERVICE");
12430
- if (ast.silent) {
12431
- PRINT_WORD("SILENT");
12432
- }
12433
- });
12434
- SUBRULE(varOrTerm, ast.name, void 0);
12435
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12241
+ var graphTerm = {
12242
+ name: "graphTerm",
12243
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
12244
+ { ALT: () => SUBRULE(iri2) },
12245
+ { ALT: () => SUBRULE(rdfLiteral) },
12246
+ { ALT: () => SUBRULE(numericLiteral) },
12247
+ { ALT: () => SUBRULE(booleanLiteral) },
12248
+ { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode) },
12249
+ { ALT: () => {
12250
+ const tokenNil = CONSUME(terminals_exports.nil);
12251
+ return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
12252
+ } }
12253
+ ]),
12254
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12255
+ if (F2.isTermNamed(ast)) {
12256
+ SUBRULE(iri2, ast);
12257
+ } else if (F2.isTermLiteral(ast)) {
12258
+ SUBRULE(rdfLiteral, ast);
12259
+ } else if (F2.isTermBlank(ast)) {
12260
+ SUBRULE(blankNode, ast);
12261
+ }
12436
12262
  }
12437
12263
  };
12438
- var bind2 = {
12439
- name: "bind",
12440
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12441
- const bind3 = CONSUME(bind);
12442
- CONSUME(symbols_exports.LParen);
12443
- const expressionVal = SUBRULE(expression, void 0);
12444
- CONSUME(as);
12445
- const variable = SUBRULE(var_, void 0);
12446
- const close = CONSUME(symbols_exports.RParen);
12447
- return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
12448
- },
12449
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12450
- F2.printFilter(ast, () => PRINT_WORD("BIND", "("));
12451
- SUBRULE(expression, ast.expression, void 0);
12452
- F2.printFilter(ast, () => PRINT_WORD("AS"));
12453
- SUBRULE(var_, ast.variable, void 0);
12454
- F2.printFilter(ast, () => PRINT_WORD(")"));
12455
- }
12264
+
12265
+ // lib/grammar/propertyPaths.ts
12266
+ var path = {
12267
+ name: "path",
12268
+ impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative)
12456
12269
  };
12457
- var inlineData = {
12458
- name: "inlineData",
12459
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12460
- const values3 = CONSUME(values2);
12461
- const datablock = SUBRULE(dataBlock, void 0);
12462
- return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
12463
- },
12464
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12465
- const variables = Object.keys(ast.values[0]);
12466
- F2.printFilter(ast, () => {
12467
- PRINT_WORD("VALUES", "(");
12468
- for (const variable of variables) {
12469
- PRINT_WORD(`?${variable}`);
12470
- }
12471
- PRINT_WORD(")", "{");
12472
- });
12473
- for (const mapping of ast.values) {
12474
- F2.printFilter(ast, () => PRINT_WORD("("));
12475
- for (const variable of variables) {
12476
- if (mapping[variable] === void 0) {
12477
- F2.printFilter(ast, () => PRINT_WORD("UNDEF"));
12478
- } else {
12479
- SUBRULE(graphNodePath, mapping[variable], void 0);
12270
+ var pathGenerator = {
12271
+ name: "path",
12272
+ gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F2 }, braces = true) => {
12273
+ if (F2.isTerm(ast) && F2.isTermNamed(ast)) {
12274
+ SUBRULE(iri2, ast);
12275
+ } else {
12276
+ F2.printFilter(ast, () => braces && PRINT("("));
12277
+ switch (ast.subType) {
12278
+ case "|":
12279
+ case "/": {
12280
+ const [head2, ...tail] = ast.items;
12281
+ SUBRULE(pathGenerator, head2, braces);
12282
+ for (const val of tail) {
12283
+ F2.printFilter(ast, () => PRINT(ast.subType));
12284
+ SUBRULE(pathGenerator, val, braces);
12285
+ }
12286
+ break;
12480
12287
  }
12288
+ case "^":
12289
+ F2.printFilter(ast, () => PRINT("^"));
12290
+ SUBRULE(pathGenerator, ast.items[0], braces);
12291
+ break;
12292
+ case "?":
12293
+ case "*":
12294
+ case "+":
12295
+ SUBRULE(pathGenerator, ast.items[0], braces);
12296
+ F2.printFilter(ast, () => PRINT(ast.subType));
12297
+ break;
12298
+ case "!":
12299
+ F2.printFilter(ast, () => PRINT("!"));
12300
+ F2.printFilter(ast, () => PRINT("("));
12301
+ SUBRULE(pathGenerator, ast.items[0], false);
12302
+ F2.printFilter(ast, () => PRINT(")"));
12303
+ break;
12481
12304
  }
12482
- F2.printFilter(ast, () => PRINT_WORD(")"));
12305
+ F2.printFilter(ast, () => braces && PRINT(")"));
12483
12306
  }
12484
- F2.printFilter(ast, () => PRINT_WORD("}"));
12485
12307
  }
12486
12308
  };
12487
- var dataBlock = {
12488
- name: "dataBlock",
12489
- impl: ({ SUBRULE, OR }) => () => OR([
12490
- { ALT: () => SUBRULE(inlineDataOneVar, void 0) },
12491
- { ALT: () => SUBRULE(inlineDataFull, void 0) }
12309
+ function pathChainHelper(name, SEP, subType, subRule) {
12310
+ return {
12311
+ name,
12312
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, MANY }) => (C) => {
12313
+ const head2 = SUBRULE1(subRule);
12314
+ let tailEnd = head2;
12315
+ const tail = [];
12316
+ MANY(() => {
12317
+ CONSUME(SEP);
12318
+ tailEnd = SUBRULE2(subRule);
12319
+ tail.push(tailEnd);
12320
+ });
12321
+ return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12322
+ }
12323
+ };
12324
+ }
12325
+ var pathEltOrInverse = {
12326
+ name: "pathEltOrInverse",
12327
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR }) => (C) => OR([
12328
+ { ALT: () => SUBRULE1(pathElt) },
12329
+ { ALT: () => {
12330
+ const hat2 = CONSUME(symbols_exports.hat);
12331
+ const item = SUBRULE2(pathElt);
12332
+ return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12333
+ } }
12492
12334
  ])
12493
12335
  };
12494
- var inlineDataOneVar = {
12495
- name: "inlineDataOneVar",
12496
- impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
12497
- const res = [];
12498
- const varVal = SUBRULE(var_, void 0);
12499
- CONSUME(symbols_exports.LCurly);
12500
- MANY(() => {
12501
- const value = SUBRULE(dataBlockValue, void 0);
12502
- ACTION(() => {
12503
- res.push({ [varVal.value]: value });
12504
- });
12505
- });
12506
- const close = CONSUME(symbols_exports.RCurly);
12507
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
12336
+ var pathSequence = pathChainHelper("pathSequence", symbols_exports.slash, "/", pathEltOrInverse);
12337
+ var pathAlternative = pathChainHelper("pathAlternative", symbols_exports.pipe, "|", pathSequence);
12338
+ var pathElt = {
12339
+ name: "pathElt",
12340
+ impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12341
+ const item = SUBRULE(pathPrimary);
12342
+ const modification = OPTION(() => SUBRULE(pathMod));
12343
+ return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12508
12344
  }
12509
12345
  };
12510
- var inlineDataFull = {
12511
- name: "inlineDataFull",
12512
- impl: ({
12513
- ACTION,
12514
- OR,
12515
- MANY1,
12516
- MANY2,
12517
- MANY3,
12518
- MANY4,
12519
- SUBRULE,
12520
- CONSUME1,
12521
- CONSUME2
12522
- }) => (C) => {
12523
- const res = [];
12524
- const vars = [];
12346
+ var pathMod = {
12347
+ name: "pathMod",
12348
+ impl: ({ CONSUME, OR }) => () => OR([
12349
+ { ALT: () => CONSUME(symbols_exports.question) },
12350
+ { ALT: () => CONSUME(symbols_exports.star) },
12351
+ { ALT: () => CONSUME(symbols_exports.opPlus) }
12352
+ ])
12353
+ };
12354
+ var pathPrimary = {
12355
+ name: "pathPrimary",
12356
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12357
+ { ALT: () => SUBRULE(iri2) },
12358
+ { ALT: () => SUBRULE(verbA) },
12359
+ { ALT: () => SUBRULE(pathNegatedPropertySet) },
12360
+ { ALT: () => {
12361
+ CONSUME(symbols_exports.LParen);
12362
+ const resRecursive = SUBRULE(path);
12363
+ CONSUME(symbols_exports.RParen);
12364
+ return resRecursive;
12365
+ } }
12366
+ ])
12367
+ };
12368
+ var pathNegatedPropertySet = {
12369
+ name: "pathNegatedPropertySet",
12370
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, OR, MANY }) => (C) => {
12371
+ const exclamation2 = CONSUME(symbols_exports.exclamation);
12525
12372
  return OR([
12526
12373
  { ALT: () => {
12527
- const nil2 = CONSUME1(terminals_exports.nil);
12528
- CONSUME1(symbols_exports.LCurly);
12529
- MANY1(() => {
12530
- CONSUME2(terminals_exports.nil);
12531
- res.push({});
12532
- });
12533
- const close = CONSUME1(symbols_exports.RCurly);
12534
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
12374
+ const noAlternative = SUBRULE1(pathOneInPropertySet);
12375
+ return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12535
12376
  } },
12536
12377
  { ALT: () => {
12537
- const open = CONSUME1(symbols_exports.LParen);
12538
- MANY2(() => {
12539
- vars.push(SUBRULE(var_, void 0));
12378
+ const open = CONSUME(symbols_exports.LParen);
12379
+ const head2 = SUBRULE2(pathOneInPropertySet);
12380
+ const tail = [];
12381
+ MANY(() => {
12382
+ CONSUME(symbols_exports.pipe);
12383
+ const item = SUBRULE3(pathOneInPropertySet);
12384
+ tail.push(item);
12540
12385
  });
12541
- CONSUME1(symbols_exports.RParen);
12542
- CONSUME2(symbols_exports.LCurly);
12543
- MANY3(() => {
12544
- let parsedValues = 0;
12545
- const currentRow = {};
12546
- CONSUME2(symbols_exports.LParen);
12547
- MANY4(() => {
12548
- if (parsedValues >= vars.length) {
12549
- throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
12550
- }
12551
- const value = SUBRULE(dataBlockValue, void 0);
12552
- ACTION(() => {
12553
- currentRow[vars[parsedValues].value] = value;
12554
- parsedValues++;
12555
- });
12556
- });
12557
- CONSUME2(symbols_exports.RParen);
12558
- ACTION(() => {
12559
- res.push(currentRow);
12560
- if (vars.length !== parsedValues) {
12561
- throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
12562
- }
12563
- });
12386
+ const close = CONSUME(symbols_exports.RParen);
12387
+ return ACTION(() => {
12388
+ const F2 = C.factory;
12389
+ if (tail.length === 0) {
12390
+ return F2.path("!", [head2], F2.sourceLocation(exclamation2, close));
12391
+ }
12392
+ return F2.path(
12393
+ "!",
12394
+ [F2.path("|", [head2, ...tail], F2.sourceLocation(open, close))],
12395
+ F2.sourceLocation(exclamation2, close)
12396
+ );
12564
12397
  });
12565
- const close = CONSUME2(symbols_exports.RCurly);
12566
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
12567
12398
  } }
12568
12399
  ]);
12569
12400
  }
12570
12401
  };
12571
- var dataBlockValue = {
12572
- name: "dataBlockValue",
12573
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12574
- { ALT: () => SUBRULE(iri2, void 0) },
12575
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
12576
- { ALT: () => SUBRULE(numericLiteral, void 0) },
12577
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
12402
+ var pathOneInPropertySet = {
12403
+ name: "pathOneInPropertySet",
12404
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
12405
+ { ALT: () => SUBRULE1(iri2) },
12406
+ { ALT: () => SUBRULE1(verbA) },
12578
12407
  { ALT: () => {
12579
- CONSUME(undef);
12580
- return void 0;
12408
+ const hat2 = CONSUME(symbols_exports.hat);
12409
+ const item = OR2([
12410
+ { ALT: () => SUBRULE2(iri2) },
12411
+ { ALT: () => SUBRULE2(verbA) }
12412
+ ]);
12413
+ return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12581
12414
  } }
12582
12415
  ])
12583
12416
  };
12584
- var minusGraphPattern = {
12585
- name: "minusGraphPattern",
12586
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12587
- const minus2 = CONSUME(minus);
12588
- const group = SUBRULE(groupGraphPattern, void 0);
12589
- return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
12590
- },
12591
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12592
- F2.printFilter(ast, () => PRINT_WORD("MINUS"));
12593
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12594
- }
12595
- };
12596
- var groupOrUnionGraphPattern = {
12597
- name: "groupOrUnionGraphPattern",
12598
- impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
12599
- const groups = [];
12600
- const group = SUBRULE1(groupGraphPattern, void 0);
12601
- groups.push(group);
12602
- MANY(() => {
12603
- CONSUME(union);
12604
- const group2 = SUBRULE2(groupGraphPattern, void 0);
12605
- groups.push(group2);
12606
- });
12607
- return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(
12608
- groups,
12609
- C.factory.sourceLocation(group, groups.at(-1))
12610
- ));
12611
- },
12612
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12613
- if (F2.isPatternUnion(ast)) {
12614
- const [head2, ...tail] = ast.patterns;
12615
- SUBRULE(groupGraphPattern, head2, void 0);
12616
- for (const pattern of tail) {
12617
- F2.printFilter(ast, () => PRINT_WORD("UNION"));
12618
- SUBRULE(groupGraphPattern, pattern, void 0);
12619
- }
12620
- } else {
12621
- SUBRULE(groupGraphPattern, ast, void 0);
12622
- }
12623
- }
12624
- };
12625
- var filter3 = {
12626
- name: "filter",
12627
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12628
- const filterToken = CONSUME(filter2);
12629
- const expression2 = SUBRULE(constraint, void 0);
12630
- return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
12631
- },
12632
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12633
- F2.printFilter(ast, () => PRINT_WORD("FILTER ("));
12634
- SUBRULE(expression, ast.expression, void 0);
12635
- F2.printFilter(ast, () => PRINT_WORD(")"));
12636
- }
12637
- };
12638
- var constraint = {
12639
- name: "constraint",
12640
- impl: ({ SUBRULE, OR }) => () => OR([
12641
- { ALT: () => SUBRULE(brackettedExpression, void 0) },
12642
- { ALT: () => SUBRULE(builtInCall, void 0) },
12643
- { ALT: () => SUBRULE(functionCall, void 0) }
12644
- ])
12645
- };
12646
- var functionCall = {
12647
- name: "functionCall",
12648
- impl: ({ ACTION, SUBRULE }) => (C) => {
12649
- const func = SUBRULE(iri2, void 0);
12650
- const args = SUBRULE(argList, void 0);
12651
- return ACTION(() => C.factory.expressionFunctionCall(
12652
- func,
12653
- args.val.args,
12654
- args.val.distinct,
12655
- C.factory.sourceLocation(func, args)
12656
- ));
12657
- }
12658
- };
12659
12417
 
12660
- // lib/expressionHelpers.ts
12661
- function funcExpr1(func) {
12662
- return {
12663
- name: unCapitalize(func.name),
12664
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12665
- const operator = CONSUME(func);
12666
- CONSUME(symbols_exports.LParen);
12667
- const arg = SUBRULE(expression, void 0);
12668
- const close = CONSUME(symbols_exports.RParen);
12669
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12670
- }
12418
+ // lib/grammar/tripleBlock.ts
12419
+ function triplesDotSeperated(triplesSameSubjectSubrule) {
12420
+ return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
12421
+ const triples = [];
12422
+ let parsedDot = true;
12423
+ let dotToken;
12424
+ AT_LEAST_ONE({
12425
+ GATE: () => parsedDot,
12426
+ DEF: () => {
12427
+ parsedDot = false;
12428
+ const template = SUBRULE(triplesSameSubjectSubrule);
12429
+ ACTION(() => {
12430
+ triples.push(...template);
12431
+ });
12432
+ OPTION(() => {
12433
+ dotToken = CONSUME(symbols_exports.dot);
12434
+ parsedDot = true;
12435
+ });
12436
+ }
12437
+ });
12438
+ return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12671
12439
  };
12672
12440
  }
12673
- function funcExpr2(func) {
12674
- return {
12675
- name: unCapitalize(func.name),
12676
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {
12677
- const operator = CONSUME(func);
12678
- CONSUME(symbols_exports.LParen);
12679
- const arg1 = SUBRULE1(expression, void 0);
12680
- CONSUME(symbols_exports.comma);
12681
- const arg2 = SUBRULE2(expression, void 0);
12682
- const close = CONSUME(symbols_exports.RParen);
12683
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
12441
+ var triplesBlock = {
12442
+ name: "triplesBlock",
12443
+ impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
12444
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12445
+ for (const [index, triple] of ast.triples.entries()) {
12446
+ HANDLE_LOC(triple, () => {
12447
+ const nextTriple = ast.triples.at(index);
12448
+ if (F2.isTripleCollection(triple)) {
12449
+ SUBRULE(graphNodePath, triple);
12450
+ F2.printFilter(triple, () => PRINT_WORD("."));
12451
+ } else {
12452
+ SUBRULE(graphNodePath, triple.subject);
12453
+ if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12454
+ SUBRULE(varOrTerm, triple.predicate);
12455
+ } else {
12456
+ SUBRULE(pathGenerator, triple.predicate, void 0);
12457
+ }
12458
+ SUBRULE(graphNodePath, triple.object);
12459
+ if (nextTriple === void 0 || F2.isTripleCollection(nextTriple) || !F2.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12460
+ F2.printFilter(ast, () => PRINT_WORD("."));
12461
+ } else if (F2.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12462
+ F2.printFilter(ast, () => PRINT_WORD(","));
12463
+ } else {
12464
+ F2.printFilter(ast, () => PRINT_WORD(";"));
12465
+ }
12466
+ }
12467
+ });
12684
12468
  }
12685
- };
12686
- }
12687
- function funcExpr3(func) {
12469
+ }
12470
+ };
12471
+ function triplesSameSubjectImpl(name, allowPaths) {
12688
12472
  return {
12689
- name: unCapitalize(func.name),
12690
- impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {
12691
- const operator = CONSUME(func);
12692
- CONSUME(symbols_exports.LParen);
12693
- const arg1 = SUBRULE1(expression, void 0);
12694
- CONSUME1(symbols_exports.comma);
12695
- const arg2 = SUBRULE2(expression, void 0);
12696
- CONSUME2(symbols_exports.comma);
12697
- const arg3 = SUBRULE3(expression, void 0);
12698
- const close = CONSUME(symbols_exports.RParen);
12699
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
12700
- }
12473
+ name,
12474
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12475
+ { ALT: () => {
12476
+ const subject = SUBRULE(varOrTerm);
12477
+ const res = SUBRULE(
12478
+ allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
12479
+ ACTION(() => C.factory.dematerialized(subject))
12480
+ );
12481
+ return ACTION(() => {
12482
+ if (res.length > 0) {
12483
+ res[0].subject = subject;
12484
+ res[0].loc = C.factory.sourceLocation(subject, res[0]);
12485
+ }
12486
+ return res;
12487
+ });
12488
+ } },
12489
+ { ALT: () => {
12490
+ const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
12491
+ const restNode = SUBRULE(
12492
+ allowPaths ? propertyListPath : propertyList,
12493
+ ACTION(() => C.factory.graphNodeIdentifier(subjectNode))
12494
+ );
12495
+ return ACTION(() => {
12496
+ if (restNode.length === 0) {
12497
+ return [subjectNode];
12498
+ }
12499
+ restNode[0].subject = subjectNode;
12500
+ restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12501
+ return restNode;
12502
+ });
12503
+ } }
12504
+ ])
12701
12505
  };
12702
12506
  }
12703
- function funcVar1(func) {
12507
+ var triplesSameSubject = triplesSameSubjectImpl("triplesSameSubject", false);
12508
+ var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", true);
12509
+ var triplesTemplate = {
12510
+ name: "triplesTemplate",
12511
+ impl: triplesDotSeperated(triplesSameSubject)
12512
+ };
12513
+ function propertyListImpl(name, allowPaths) {
12704
12514
  return {
12705
- name: unCapitalize(func.name),
12706
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12707
- const operator = CONSUME(func);
12708
- CONSUME(symbols_exports.LParen);
12709
- const arg = SUBRULE(var_, void 0);
12710
- const close = CONSUME(symbols_exports.RParen);
12711
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12712
- }
12515
+ name,
12516
+ impl: ({ SUBRULE, OPTION }) => (_, subject) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? []
12713
12517
  };
12714
12518
  }
12715
- function funcExprOrNil1(func) {
12519
+ var propertyList = propertyListImpl("propertyList", false);
12520
+ var propertyListPath = propertyListImpl("propertyListPath", true);
12521
+ function propertyListNotEmptyImplementation(name, allowPaths) {
12716
12522
  return {
12717
- name: unCapitalize(func.name),
12718
- impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
12719
- const operator = CONSUME(func);
12720
- return OR([
12721
- { ALT: () => {
12722
- CONSUME(symbols_exports.LParen);
12723
- const arg = SUBRULE(expression, void 0);
12724
- const close = CONSUME(symbols_exports.RParen);
12725
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12726
- } },
12727
- { ALT: () => {
12728
- const nil2 = CONSUME(terminals_exports.nil);
12729
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12730
- } }
12731
- ]);
12523
+ name,
12524
+ impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, subject) => {
12525
+ const result = [];
12526
+ let parsedSemi = true;
12527
+ AT_LEAST_ONE({
12528
+ GATE: () => parsedSemi,
12529
+ DEF: () => {
12530
+ parsedSemi = false;
12531
+ const predicate = allowPaths ? OR1([
12532
+ { ALT: () => SUBRULE1(verbPath) },
12533
+ { ALT: () => SUBRULE1(verbSimple) }
12534
+ ]) : SUBRULE1(verb);
12535
+ const triples = SUBRULE1(
12536
+ allowPaths ? objectListPath : objectList,
12537
+ subject,
12538
+ predicate
12539
+ );
12540
+ MANY2(() => {
12541
+ CONSUME(symbols_exports.semi);
12542
+ parsedSemi = true;
12543
+ });
12544
+ ACTION(() => {
12545
+ result.push(...triples);
12546
+ });
12547
+ }
12548
+ });
12549
+ return result;
12732
12550
  }
12733
12551
  };
12734
12552
  }
12735
- function funcNil1(func) {
12553
+ var propertyListNotEmpty = propertyListNotEmptyImplementation("propertyListNotEmpty", false);
12554
+ var propertyListPathNotEmpty = propertyListNotEmptyImplementation("propertyListPathNotEmpty", true);
12555
+ var verbPath = {
12556
+ name: "verbPath",
12557
+ impl: ({ SUBRULE }) => () => SUBRULE(path)
12558
+ };
12559
+ var verbSimple = {
12560
+ name: "verbSimple",
12561
+ impl: ({ SUBRULE }) => () => SUBRULE(var_)
12562
+ };
12563
+ function objectListImpl(name, allowPaths) {
12736
12564
  return {
12737
- name: unCapitalize(func.name),
12738
- impl: ({ ACTION, CONSUME }) => (C) => {
12739
- const operator = CONSUME(func);
12740
- const nil2 = CONSUME(terminals_exports.nil);
12741
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12565
+ name,
12566
+ impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, subj, pred) => {
12567
+ const objects = [];
12568
+ AT_LEAST_ONE_SEP({
12569
+ SEP: symbols_exports.comma,
12570
+ DEF: () => {
12571
+ const objectTriple = SUBRULE(allowPaths ? objectPath : object, subj, pred);
12572
+ ACTION(() => {
12573
+ objects.push(objectTriple);
12574
+ });
12575
+ }
12576
+ });
12577
+ return objects;
12742
12578
  }
12743
12579
  };
12744
12580
  }
12745
- function funcExprList1(func) {
12581
+ var objectList = objectListImpl("objectList", false);
12582
+ var objectListPath = objectListImpl("objectListPath", true);
12583
+ function objectImpl(name, allowPaths) {
12746
12584
  return {
12747
- name: unCapitalize(func.name),
12748
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12749
- const operator = CONSUME(func);
12750
- const args = SUBRULE(expressionList, void 0);
12751
- return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
12585
+ name,
12586
+ impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
12587
+ const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
12588
+ return ACTION(() => C.factory.triple(subject, predicate, node));
12752
12589
  }
12753
12590
  };
12754
12591
  }
12755
- function funcExpr2or3(func) {
12592
+ var object = objectImpl("object", false);
12593
+ var objectPath = objectImpl("objectPath", true);
12594
+ function collectionImpl(name, allowPaths) {
12756
12595
  return {
12757
- name: unCapitalize(func.name),
12758
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => (C) => {
12759
- const operator = CONSUME(func);
12760
- CONSUME(symbols_exports.LParen);
12761
- const arg1 = SUBRULE1(expression, void 0);
12762
- CONSUME1(symbols_exports.comma);
12763
- const arg2 = SUBRULE2(expression, void 0);
12764
- const arg3 = OPTION(() => {
12765
- CONSUME2(symbols_exports.comma);
12766
- return SUBRULE3(expression, void 0);
12596
+ name,
12597
+ impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {
12598
+ const terms = [];
12599
+ const startToken = CONSUME(symbols_exports.LParen);
12600
+ AT_LEAST_ONE(() => {
12601
+ terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));
12767
12602
  });
12768
- const close = CONSUME(symbols_exports.RParen);
12769
- return ACTION(() => C.factory.expressionOperation(
12770
- operator.image,
12771
- arg3 ? [arg1, arg2, arg3] : [arg1, arg2],
12772
- C.factory.sourceLocation(operator, close)
12773
- ));
12603
+ const endToken = CONSUME(symbols_exports.RParen);
12604
+ return ACTION(() => {
12605
+ const F2 = C.factory;
12606
+ const triples = [];
12607
+ const predFirst = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" /* FIRST */, void 0);
12608
+ const predRest = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" /* REST */, void 0);
12609
+ const predNil = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */, void 0);
12610
+ const listHead = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12611
+ let iterHead = listHead;
12612
+ for (const [index, term] of terms.entries()) {
12613
+ const lastInList = index === terms.length - 1;
12614
+ const headTriple = F2.triple(
12615
+ iterHead,
12616
+ predFirst,
12617
+ term
12618
+ );
12619
+ triples.push(headTriple);
12620
+ if (lastInList) {
12621
+ const nilTriple = F2.triple(iterHead, predRest, predNil);
12622
+ triples.push(nilTriple);
12623
+ } else {
12624
+ const tail = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12625
+ const linkTriple = F2.triple(iterHead, predRest, tail);
12626
+ triples.push(linkTriple);
12627
+ iterHead = tail;
12628
+ }
12629
+ }
12630
+ return F2.tripleCollectionList(listHead, triples, F2.sourceLocation(startToken, endToken));
12631
+ });
12632
+ },
12633
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12634
+ F2.printFilter(ast, () => PRINT_WORD("("));
12635
+ for (const [idx, triple] of ast.triples.entries()) {
12636
+ if (idx % 2 === 0) {
12637
+ SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object);
12638
+ }
12639
+ }
12640
+ F2.printFilter(ast, () => PRINT_WORD(")"));
12774
12641
  }
12775
12642
  };
12776
12643
  }
12777
- function funcExpr3or4(func) {
12644
+ var collection = collectionImpl("collection", false);
12645
+ var collectionPath = collectionImpl("collectionPath", true);
12646
+ function triplesNodeImpl(name, allowPaths) {
12778
12647
  return {
12779
- name: unCapitalize(func.name),
12780
- impl: ({
12781
- ACTION,
12782
- CONSUME,
12783
- SUBRULE1,
12784
- SUBRULE2,
12785
- SUBRULE3,
12786
- SUBRULE4,
12787
- CONSUME1,
12788
- OPTION,
12789
- CONSUME2,
12790
- CONSUME3
12791
- }) => (C) => {
12792
- const operator = CONSUME(func);
12793
- CONSUME(symbols_exports.LParen);
12794
- const arg1 = SUBRULE1(expression, void 0);
12795
- CONSUME1(symbols_exports.comma);
12796
- const arg2 = SUBRULE2(expression, void 0);
12797
- CONSUME2(symbols_exports.comma);
12798
- const arg3 = SUBRULE3(expression, void 0);
12799
- const arg4 = OPTION(() => {
12800
- CONSUME3(symbols_exports.comma);
12801
- return SUBRULE4(expression, void 0);
12802
- });
12803
- const close = CONSUME(symbols_exports.RParen);
12804
- return ACTION(() => C.factory.expressionOperation(
12805
- operator.image,
12806
- arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3],
12807
- C.factory.sourceLocation(operator, close)
12808
- ));
12809
- }
12648
+ name,
12649
+ impl: ({ SUBRULE, OR }) => () => OR([
12650
+ { ALT: () => SUBRULE(allowPaths ? collectionPath : collection) },
12651
+ { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList) }
12652
+ ]),
12653
+ gImpl: ({ SUBRULE }) => (ast) => ast.subType === "list" ? SUBRULE(allowPaths ? collectionPath : collection, ast) : SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast)
12810
12654
  };
12811
12655
  }
12812
- function funcGroupGraphPattern(func) {
12656
+ var triplesNode = triplesNodeImpl("triplesNode", false);
12657
+ var triplesNodePath = triplesNodeImpl("triplesNodePath", true);
12658
+ function blankNodePropertyListImpl(name, allowPaths) {
12659
+ const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
12813
12660
  return {
12814
- name: unCapitalize(func.name),
12661
+ name,
12815
12662
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12816
- const operator = CONSUME(func);
12817
- const group = SUBRULE(groupGraphPattern, void 0);
12818
- return ACTION(() => C.factory.expressionPatternOperation(
12819
- operator.image,
12820
- group,
12821
- C.factory.sourceLocation(operator, group)
12663
+ const startToken = CONSUME(symbols_exports.LSquare);
12664
+ const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12665
+ const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode2);
12666
+ const endToken = CONSUME(symbols_exports.RSquare);
12667
+ return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
12668
+ blankNode2,
12669
+ propList,
12670
+ C.factory.sourceLocation(startToken, endToken)
12822
12671
  ));
12672
+ },
12673
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12674
+ F2.printFilter(ast, () => PRINT("["));
12675
+ for (const triple of ast.triples) {
12676
+ HANDLE_LOC(triple, () => {
12677
+ if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12678
+ SUBRULE(varOrTerm, triple.predicate);
12679
+ } else {
12680
+ SUBRULE(pathGenerator, triple.predicate, void 0);
12681
+ }
12682
+ SUBRULE(graphNodePath, triple.object);
12683
+ F2.printFilter(ast, () => PRINT_WORD(";"));
12684
+ });
12685
+ }
12686
+ F2.printFilter(ast, () => PRINT("]"));
12823
12687
  }
12824
12688
  };
12825
12689
  }
12826
- function baseAggregateFunc(func) {
12690
+ var blankNodePropertyList = blankNodePropertyListImpl("blankNodePropertyList", false);
12691
+ var blankNodePropertyListPath = blankNodePropertyListImpl("blankNodePropertyListPath", true);
12692
+ function graphNodeImpl(name, allowPaths) {
12693
+ const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
12827
12694
  return {
12828
- name: unCapitalize(func.name),
12829
- impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
12830
- const operator = CONSUME(func);
12831
- CONSUME(symbols_exports.LParen);
12832
- const distinct2 = OPTION(() => CONSUME(distinct));
12833
- const expr1 = SUBRULE(expression, void 0);
12834
- const close = CONSUME(symbols_exports.RParen);
12835
- return ACTION(() => C.factory.aggregate(
12836
- operator.image,
12837
- distinct2 !== void 0,
12838
- expr1,
12839
- void 0,
12840
- C.factory.sourceLocation(operator, close)
12841
- ));
12695
+ name,
12696
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12697
+ { ALT: () => SUBRULE(varOrTerm) },
12698
+ {
12699
+ GATE: () => C.parseMode.has("canCreateBlankNodes"),
12700
+ ALT: () => SUBRULE(triplesNodeRule)
12701
+ }
12702
+ ]),
12703
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12704
+ if (F2.isTerm(ast)) {
12705
+ SUBRULE(varOrTerm, ast);
12706
+ } else {
12707
+ SUBRULE(triplesNodeRule, ast);
12708
+ }
12842
12709
  }
12843
12710
  };
12844
12711
  }
12712
+ var graphNode = graphNodeImpl("graphNode", false);
12713
+ var graphNodePath = graphNodeImpl("graphNodePath", true);
12845
12714
 
12846
- // lib/grammar/builtIn.ts
12847
- var builtInStr = funcExpr1(BuildinCalls_exports.str);
12848
- var builtInLang = funcExpr1(BuildinCalls_exports.lang);
12849
- var builtInLangmatches = funcExpr2(BuildinCalls_exports.langmatches);
12850
- var builtInDatatype = funcExpr1(BuildinCalls_exports.datatype);
12851
- var builtInBound = funcVar1(BuildinCalls_exports.bound);
12852
- var builtInIri = funcExpr1(BuildinCalls_exports.iri);
12853
- var builtInUri = funcExpr1(BuildinCalls_exports.uri);
12854
- var builtInBnodeSparqlJs = funcExprOrNil1(BuildinCalls_exports.bnode);
12855
- var builtInRand = funcNil1(BuildinCalls_exports.rand);
12856
- var builtInAbs = funcExpr1(BuildinCalls_exports.abs);
12857
- var builtInCeil = funcExpr1(BuildinCalls_exports.ceil);
12858
- var builtInFloor = funcExpr1(BuildinCalls_exports.floor);
12859
- var builtInRound = funcExpr1(BuildinCalls_exports.round);
12860
- var builtInConcat = funcExprList1(BuildinCalls_exports.concat);
12861
- var builtInStrlen = funcExpr1(BuildinCalls_exports.strlen);
12862
- var builtInUcase = funcExpr1(BuildinCalls_exports.ucase);
12863
- var builtInLcase = funcExpr1(BuildinCalls_exports.lcase);
12864
- var builtInEncode_for_uri = funcExpr1(BuildinCalls_exports.encode_for_uri);
12865
- var builtInContains = funcExpr2(BuildinCalls_exports.contains);
12866
- var builtInStrstarts = funcExpr2(BuildinCalls_exports.strstarts);
12867
- var builtInStrends = funcExpr2(BuildinCalls_exports.strends);
12868
- var builtInStrbefore = funcExpr2(BuildinCalls_exports.strbefore);
12869
- var builtInStrafter = funcExpr2(BuildinCalls_exports.strafter);
12870
- var builtInYear = funcExpr1(BuildinCalls_exports.year);
12871
- var builtInMonth = funcExpr1(BuildinCalls_exports.month);
12872
- var builtInDay = funcExpr1(BuildinCalls_exports.day);
12873
- var builtInHours = funcExpr1(BuildinCalls_exports.hours);
12874
- var builtInMinutes = funcExpr1(BuildinCalls_exports.minutes);
12875
- var builtInSeconds = funcExpr1(BuildinCalls_exports.seconds);
12876
- var builtInTimezone = funcExpr1(BuildinCalls_exports.timezone);
12877
- var builtInTz = funcExpr1(BuildinCalls_exports.tz);
12878
- var builtInNow = funcNil1(BuildinCalls_exports.now);
12879
- var builtInUuid = funcNil1(BuildinCalls_exports.uuid);
12880
- var builtInStruuid = funcNil1(BuildinCalls_exports.struuid);
12881
- var builtInMd5 = funcExpr1(BuildinCalls_exports.md5);
12882
- var builtInSha1 = funcExpr1(BuildinCalls_exports.sha1);
12883
- var builtInSha256 = funcExpr1(BuildinCalls_exports.sha256);
12884
- var builtInSha384 = funcExpr1(BuildinCalls_exports.sha384);
12885
- var builtInSha512 = funcExpr1(BuildinCalls_exports.sha512);
12886
- var builtInCoalesce = funcExprList1(BuildinCalls_exports.coalesce);
12887
- var builtInIf = funcExpr3(BuildinCalls_exports.if_);
12888
- var builtInStrlang = funcExpr2(BuildinCalls_exports.strlang);
12889
- var builtInStrdt = funcExpr2(BuildinCalls_exports.strdt);
12890
- var builtInSameterm = funcExpr2(BuildinCalls_exports.sameterm);
12891
- var builtInIsiri = funcExpr1(BuildinCalls_exports.isiri);
12892
- var builtInIsuri = funcExpr1(BuildinCalls_exports.isuri);
12893
- var builtInIsblank = funcExpr1(BuildinCalls_exports.isblank);
12894
- var builtInIsliteral = funcExpr1(BuildinCalls_exports.isliteral);
12895
- var builtInIsnumeric = funcExpr1(BuildinCalls_exports.isnumeric);
12896
- function builtInCallList(SUBRULE) {
12897
- return [
12898
- { ALT: () => SUBRULE(aggregate, void 0) },
12899
- { ALT: () => SUBRULE(builtInStr, void 0) },
12900
- { ALT: () => SUBRULE(builtInLang, void 0) },
12901
- { ALT: () => SUBRULE(builtInLangmatches, void 0) },
12902
- { ALT: () => SUBRULE(builtInDatatype, void 0) },
12903
- { ALT: () => SUBRULE(builtInBound, void 0) },
12904
- { ALT: () => SUBRULE(builtInIri, void 0) },
12905
- { ALT: () => SUBRULE(builtInUri, void 0) },
12906
- { ALT: () => SUBRULE(builtInBnodeSparqlJs, void 0) },
12907
- { ALT: () => SUBRULE(builtInRand, void 0) },
12908
- { ALT: () => SUBRULE(builtInAbs, void 0) },
12909
- { ALT: () => SUBRULE(builtInCeil, void 0) },
12910
- { ALT: () => SUBRULE(builtInFloor, void 0) },
12911
- { ALT: () => SUBRULE(builtInRound, void 0) },
12912
- { ALT: () => SUBRULE(builtInConcat, void 0) },
12913
- { ALT: () => SUBRULE(substringExpression, void 0) },
12914
- { ALT: () => SUBRULE(builtInStrlen, void 0) },
12915
- { ALT: () => SUBRULE(strReplaceExpression, void 0) },
12916
- { ALT: () => SUBRULE(builtInUcase, void 0) },
12917
- { ALT: () => SUBRULE(builtInLcase, void 0) },
12918
- { ALT: () => SUBRULE(builtInEncode_for_uri, void 0) },
12919
- { ALT: () => SUBRULE(builtInContains, void 0) },
12920
- { ALT: () => SUBRULE(builtInStrstarts, void 0) },
12921
- { ALT: () => SUBRULE(builtInStrends, void 0) },
12922
- { ALT: () => SUBRULE(builtInStrbefore, void 0) },
12923
- { ALT: () => SUBRULE(builtInStrafter, void 0) },
12924
- { ALT: () => SUBRULE(builtInYear, void 0) },
12925
- { ALT: () => SUBRULE(builtInMonth, void 0) },
12926
- { ALT: () => SUBRULE(builtInDay, void 0) },
12927
- { ALT: () => SUBRULE(builtInHours, void 0) },
12928
- { ALT: () => SUBRULE(builtInMinutes, void 0) },
12929
- { ALT: () => SUBRULE(builtInSeconds, void 0) },
12930
- { ALT: () => SUBRULE(builtInTimezone, void 0) },
12931
- { ALT: () => SUBRULE(builtInTz, void 0) },
12932
- { ALT: () => SUBRULE(builtInNow, void 0) },
12933
- { ALT: () => SUBRULE(builtInUuid, void 0) },
12934
- { ALT: () => SUBRULE(builtInStruuid, void 0) },
12935
- { ALT: () => SUBRULE(builtInMd5, void 0) },
12936
- { ALT: () => SUBRULE(builtInSha1, void 0) },
12937
- { ALT: () => SUBRULE(builtInSha256, void 0) },
12938
- { ALT: () => SUBRULE(builtInSha384, void 0) },
12939
- { ALT: () => SUBRULE(builtInSha512, void 0) },
12940
- { ALT: () => SUBRULE(builtInCoalesce, void 0) },
12941
- { ALT: () => SUBRULE(builtInIf, void 0) },
12942
- { ALT: () => SUBRULE(builtInStrlang, void 0) },
12943
- { ALT: () => SUBRULE(builtInStrdt, void 0) },
12944
- { ALT: () => SUBRULE(builtInSameterm, void 0) },
12945
- { ALT: () => SUBRULE(builtInIsiri, void 0) },
12946
- { ALT: () => SUBRULE(builtInIsuri, void 0) },
12947
- { ALT: () => SUBRULE(builtInIsblank, void 0) },
12948
- { ALT: () => SUBRULE(builtInIsliteral, void 0) },
12949
- { ALT: () => SUBRULE(builtInIsnumeric, void 0) },
12950
- { ALT: () => SUBRULE(regexExpression, void 0) },
12951
- { ALT: () => SUBRULE(existsFunc, void 0) },
12952
- { ALT: () => SUBRULE(notExistsFunc, void 0) }
12953
- ];
12954
- }
12955
- var builtInCall = {
12956
- name: "builtInCall",
12957
- impl: ({ OR, SUBRULE, cache }) => () => {
12958
- const cached = cache.get(builtInCall);
12959
- if (cached) {
12960
- return OR(cached);
12961
- }
12962
- const builtIns = builtInCallList(SUBRULE);
12963
- cache.set(builtInCall, builtIns);
12964
- return OR(builtIns);
12715
+ // lib/grammar/whereClause.ts
12716
+ var whereClause = {
12717
+ name: "whereClause",
12718
+ impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12719
+ const where2 = OPTION(() => CONSUME(where));
12720
+ const group = SUBRULE(groupGraphPattern);
12721
+ return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12722
+ },
12723
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12724
+ F2.printFilter(ast, () => PRINT_WORD("WHERE"));
12725
+ SUBRULE(groupGraphPattern, ast.val);
12965
12726
  }
12966
12727
  };
12967
- var regexExpression = funcExpr2or3(BuildinCalls_exports.regex);
12968
- var substringExpression = funcExpr2or3(BuildinCalls_exports.substr);
12969
- var strReplaceExpression = funcExpr3or4(BuildinCalls_exports.replace);
12970
- var existsFunc = funcGroupGraphPattern(BuildinCalls_exports.exists);
12971
- var notExistsFunc = funcGroupGraphPattern(BuildinCalls_exports.notexists);
12972
- var aggregateCount = {
12973
- name: unCapitalize(BuildinCalls_exports.count.name),
12974
- impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
12975
- const operatorToken = CONSUME(BuildinCalls_exports.count);
12976
- CONSUME(symbols_exports.LParen);
12977
- const distinctToken = OPTION(() => CONSUME(distinct));
12978
- const expressionVal = OR([
12979
- { ALT: () => {
12980
- const starToken = CONSUME(symbols_exports.star);
12981
- return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
12982
- } },
12983
- { ALT: () => SUBRULE(expression, void 0) }
12728
+ var groupGraphPattern = {
12729
+ name: "groupGraphPattern",
12730
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
12731
+ const open = CONSUME(symbols_exports.LCurly);
12732
+ const patterns = OR([
12733
+ { ALT: () => [SUBRULE(subSelect)] },
12734
+ { ALT: () => SUBRULE(groupGraphPatternSub) }
12984
12735
  ]);
12985
- const closeToken = CONSUME(symbols_exports.RParen);
12986
- return ACTION(() => {
12987
- const F2 = C.factory;
12988
- if (C.factory.isWildcard(expressionVal)) {
12989
- return F2.aggregate(
12990
- operatorToken.image,
12991
- Boolean(distinctToken),
12992
- expressionVal,
12993
- void 0,
12994
- C.factory.sourceLocation(operatorToken, closeToken)
12995
- );
12736
+ const close = CONSUME(symbols_exports.RCurly);
12737
+ return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12738
+ },
12739
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12740
+ F2.printFilter(ast, () => PRINT_WORD("{"));
12741
+ for (const pattern of ast.patterns) {
12742
+ SUBRULE(generatePattern, pattern);
12743
+ }
12744
+ F2.printFilter(ast, () => PRINT_WORD("}"));
12745
+ }
12746
+ };
12747
+ var generatePattern = {
12748
+ name: "generatePattern",
12749
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12750
+ if (ast.type === "query") {
12751
+ SUBRULE(query, F2.querySelect({
12752
+ context: [],
12753
+ datasets: F2.datasetClauses([], F2.sourceLocation()),
12754
+ where: ast.where,
12755
+ variables: ast.variables,
12756
+ solutionModifiers: ast.solutionModifiers,
12757
+ values: ast.values,
12758
+ distinct: ast.distinct,
12759
+ reduced: ast.reduced
12760
+ }, ast.loc));
12761
+ } else if (ast.subType === "group") {
12762
+ SUBRULE(groupGraphPattern, ast);
12763
+ } else if (ast.subType === "bgp") {
12764
+ SUBRULE(triplesBlock, ast);
12765
+ } else {
12766
+ SUBRULE(graphPatternNotTriples, ast);
12767
+ }
12768
+ }
12769
+ };
12770
+ var groupGraphPatternSub = {
12771
+ name: "groupGraphPatternSub",
12772
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
12773
+ const patterns = [];
12774
+ const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock));
12775
+ if (bgpPattern) {
12776
+ patterns.push(bgpPattern);
12777
+ }
12778
+ MANY(() => {
12779
+ const notTriples = SUBRULE(graphPatternNotTriples);
12780
+ patterns.push(notTriples);
12781
+ OPTION2(() => CONSUME(symbols_exports.dot));
12782
+ const moreTriples = OPTION3(() => SUBRULE2(triplesBlock));
12783
+ if (moreTriples) {
12784
+ patterns.push(moreTriples);
12785
+ }
12786
+ });
12787
+ ACTION(() => checkNote13(patterns));
12788
+ return patterns;
12789
+ }
12790
+ };
12791
+ var graphPatternNotTriples = {
12792
+ name: "graphPatternNotTriples",
12793
+ impl: ({ SUBRULE, OR }) => () => OR([
12794
+ { ALT: () => SUBRULE(groupOrUnionGraphPattern) },
12795
+ { ALT: () => SUBRULE(optionalGraphPattern) },
12796
+ { ALT: () => SUBRULE(minusGraphPattern) },
12797
+ { ALT: () => SUBRULE(graphGraphPattern) },
12798
+ { ALT: () => SUBRULE(serviceGraphPattern) },
12799
+ { ALT: () => SUBRULE(filter3) },
12800
+ { ALT: () => SUBRULE(bind2) },
12801
+ { ALT: () => SUBRULE(inlineData) }
12802
+ ]),
12803
+ gImpl: ({ SUBRULE }) => (ast) => {
12804
+ switch (ast.subType) {
12805
+ case "group":
12806
+ case "union":
12807
+ SUBRULE(groupOrUnionGraphPattern, ast);
12808
+ break;
12809
+ case "optional":
12810
+ SUBRULE(optionalGraphPattern, ast);
12811
+ break;
12812
+ case "minus":
12813
+ SUBRULE(minusGraphPattern, ast);
12814
+ break;
12815
+ case "graph":
12816
+ SUBRULE(graphGraphPattern, ast);
12817
+ break;
12818
+ case "service":
12819
+ SUBRULE(serviceGraphPattern, ast);
12820
+ break;
12821
+ case "filter":
12822
+ SUBRULE(filter3, ast);
12823
+ break;
12824
+ case "bind":
12825
+ SUBRULE(bind2, ast);
12826
+ break;
12827
+ case "values":
12828
+ SUBRULE(inlineData, ast);
12829
+ break;
12830
+ }
12831
+ }
12832
+ };
12833
+ var optionalGraphPattern = {
12834
+ name: "optionalGraphPattern",
12835
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12836
+ const optional2 = CONSUME(optional);
12837
+ const group = SUBRULE(groupGraphPattern);
12838
+ return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12839
+ },
12840
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12841
+ F2.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12842
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
12843
+ }
12844
+ };
12845
+ var graphGraphPattern = {
12846
+ name: "graphGraphPattern",
12847
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12848
+ const graph2 = CONSUME(graph_exports.graph);
12849
+ const name = SUBRULE(varOrIri);
12850
+ const group = SUBRULE(groupGraphPattern);
12851
+ return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12852
+ },
12853
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12854
+ F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
12855
+ SUBRULE(varOrTerm, ast.name);
12856
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
12857
+ }
12858
+ };
12859
+ var serviceGraphPattern = {
12860
+ name: "serviceGraphPattern",
12861
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
12862
+ const service2 = CONSUME(service);
12863
+ const silent2 = OPTION(() => {
12864
+ CONSUME(silent);
12865
+ return true;
12866
+ }) ?? false;
12867
+ const name = SUBRULE1(varOrIri);
12868
+ const group = SUBRULE1(groupGraphPattern);
12869
+ return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12870
+ },
12871
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12872
+ F2.printFilter(ast, () => {
12873
+ PRINT_WORD("SERVICE");
12874
+ if (ast.silent) {
12875
+ PRINT_WORD("SILENT");
12996
12876
  }
12997
- return F2.aggregate(
12998
- operatorToken.image,
12999
- Boolean(distinctToken),
13000
- expressionVal,
13001
- void 0,
13002
- C.factory.sourceLocation(operatorToken, closeToken)
13003
- );
13004
12877
  });
12878
+ SUBRULE(varOrTerm, ast.name);
12879
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
13005
12880
  }
13006
12881
  };
13007
- var aggregateSum = baseAggregateFunc(BuildinCalls_exports.sum);
13008
- var aggregateMin = baseAggregateFunc(BuildinCalls_exports.min);
13009
- var aggregateMax = baseAggregateFunc(BuildinCalls_exports.max);
13010
- var aggregateAvg = baseAggregateFunc(BuildinCalls_exports.avg);
13011
- var aggregateSample = baseAggregateFunc(BuildinCalls_exports.sample);
13012
- var aggregateGroup_concat = {
13013
- name: unCapitalize(BuildinCalls_exports.groupConcat.name),
13014
- impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
13015
- const operatorToken = CONSUME(BuildinCalls_exports.groupConcat);
12882
+ var bind2 = {
12883
+ name: "bind",
12884
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12885
+ const bind3 = CONSUME(bind);
13016
12886
  CONSUME(symbols_exports.LParen);
13017
- const distinctToken = OPTION1(() => CONSUME(distinct));
13018
- const expr = SUBRULE(expression, void 0);
13019
- const sep = OPTION2(() => {
13020
- CONSUME(symbols_exports.semi);
13021
- CONSUME(separator);
13022
- CONSUME(symbols_exports.equal);
13023
- return SUBRULE(string, void 0);
12887
+ const expressionVal = SUBRULE(expression);
12888
+ CONSUME(as);
12889
+ const variable = SUBRULE(var_);
12890
+ const close = CONSUME(symbols_exports.RParen);
12891
+ return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
12892
+ },
12893
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12894
+ F2.printFilter(ast, () => PRINT_WORD("BIND", "("));
12895
+ SUBRULE(expression, ast.expression);
12896
+ F2.printFilter(ast, () => PRINT_WORD("AS"));
12897
+ SUBRULE(var_, ast.variable);
12898
+ F2.printFilter(ast, () => PRINT_WORD(")"));
12899
+ }
12900
+ };
12901
+ var inlineData = {
12902
+ name: "inlineData",
12903
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12904
+ const values3 = CONSUME(values2);
12905
+ const datablock = SUBRULE(dataBlock);
12906
+ return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
12907
+ },
12908
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12909
+ const variables = Object.keys(ast.values[0]);
12910
+ F2.printFilter(ast, () => {
12911
+ PRINT_WORD("VALUES", "(");
12912
+ for (const variable of variables) {
12913
+ PRINT_WORD(`?${variable}`);
12914
+ }
12915
+ PRINT_WORD(")", "{");
13024
12916
  });
13025
- const closeToken = CONSUME(symbols_exports.RParen);
13026
- return ACTION(() => {
13027
- const F2 = C.factory;
13028
- return F2.aggregate(
13029
- operatorToken.image,
13030
- Boolean(distinctToken),
13031
- expr,
13032
- sep?.value ?? " ",
13033
- F2.sourceLocation(operatorToken, closeToken)
13034
- );
12917
+ for (const mapping of ast.values) {
12918
+ F2.printFilter(ast, () => PRINT_WORD("("));
12919
+ for (const variable of variables) {
12920
+ if (mapping[variable] === void 0) {
12921
+ F2.printFilter(ast, () => PRINT_WORD("UNDEF"));
12922
+ } else {
12923
+ SUBRULE(graphNodePath, mapping[variable]);
12924
+ }
12925
+ }
12926
+ F2.printFilter(ast, () => PRINT_WORD(")"));
12927
+ }
12928
+ F2.printFilter(ast, () => PRINT_WORD("}"));
12929
+ }
12930
+ };
12931
+ var dataBlock = {
12932
+ name: "dataBlock",
12933
+ impl: ({ SUBRULE, OR }) => () => OR([
12934
+ { ALT: () => SUBRULE(inlineDataOneVar) },
12935
+ { ALT: () => SUBRULE(inlineDataFull) }
12936
+ ])
12937
+ };
12938
+ var inlineDataOneVar = {
12939
+ name: "inlineDataOneVar",
12940
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
12941
+ const res = [];
12942
+ const varVal = SUBRULE(var_);
12943
+ CONSUME(symbols_exports.LCurly);
12944
+ MANY(() => {
12945
+ const value = SUBRULE(dataBlockValue);
12946
+ ACTION(() => {
12947
+ res.push({ [varVal.value]: value });
12948
+ });
13035
12949
  });
12950
+ const close = CONSUME(symbols_exports.RCurly);
12951
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
13036
12952
  }
13037
12953
  };
13038
- var aggregate = {
13039
- name: "aggregate",
13040
- impl: ({ ACTION, SUBRULE, OR }) => (C) => {
13041
- const wasInAggregate = ACTION(() => C.parseMode.has("inAggregate"));
13042
- ACTION(() => C.parseMode.add("inAggregate"));
13043
- const result = OR([
13044
- { ALT: () => SUBRULE(aggregateCount, void 0) },
13045
- { ALT: () => SUBRULE(aggregateSum, void 0) },
13046
- { ALT: () => SUBRULE(aggregateMin, void 0) },
13047
- { ALT: () => SUBRULE(aggregateMax, void 0) },
13048
- { ALT: () => SUBRULE(aggregateAvg, void 0) },
13049
- { ALT: () => SUBRULE(aggregateSample, void 0) },
13050
- { ALT: () => SUBRULE(aggregateGroup_concat, void 0) }
12954
+ var inlineDataFull = {
12955
+ name: "inlineDataFull",
12956
+ impl: ({
12957
+ ACTION,
12958
+ OR,
12959
+ MANY1,
12960
+ MANY2,
12961
+ MANY3,
12962
+ MANY4,
12963
+ SUBRULE,
12964
+ CONSUME1,
12965
+ CONSUME2
12966
+ }) => (C) => {
12967
+ const res = [];
12968
+ const vars = [];
12969
+ return OR([
12970
+ { ALT: () => {
12971
+ const nil2 = CONSUME1(terminals_exports.nil);
12972
+ CONSUME1(symbols_exports.LCurly);
12973
+ MANY1(() => {
12974
+ CONSUME2(terminals_exports.nil);
12975
+ res.push({});
12976
+ });
12977
+ const close = CONSUME1(symbols_exports.RCurly);
12978
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
12979
+ } },
12980
+ { ALT: () => {
12981
+ const open = CONSUME1(symbols_exports.LParen);
12982
+ MANY2(() => {
12983
+ vars.push(SUBRULE(var_));
12984
+ });
12985
+ CONSUME1(symbols_exports.RParen);
12986
+ CONSUME2(symbols_exports.LCurly);
12987
+ MANY3(() => {
12988
+ let parsedValues = 0;
12989
+ const currentRow = {};
12990
+ CONSUME2(symbols_exports.LParen);
12991
+ MANY4(() => {
12992
+ if (parsedValues >= vars.length) {
12993
+ throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
12994
+ }
12995
+ const value = SUBRULE(dataBlockValue);
12996
+ ACTION(() => {
12997
+ currentRow[vars[parsedValues].value] = value;
12998
+ parsedValues++;
12999
+ });
13000
+ });
13001
+ CONSUME2(symbols_exports.RParen);
13002
+ ACTION(() => {
13003
+ res.push(currentRow);
13004
+ if (vars.length !== parsedValues) {
13005
+ throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
13006
+ }
13007
+ });
13008
+ });
13009
+ const close = CONSUME2(symbols_exports.RCurly);
13010
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
13011
+ } }
13051
13012
  ]);
13052
- ACTION(() => !wasInAggregate && C.parseMode.delete("inAggregate"));
13053
- ACTION(() => {
13054
- if (!C.parseMode.has("canParseAggregate")) {
13055
- throw new Error("Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.");
13056
- }
13057
- if (C.parseMode.has("inAggregate")) {
13058
- throw new Error("An aggregate function is not allowed within an aggregate function.");
13059
- }
13013
+ }
13014
+ };
13015
+ var dataBlockValue = {
13016
+ name: "dataBlockValue",
13017
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
13018
+ { ALT: () => SUBRULE(iri2) },
13019
+ { ALT: () => SUBRULE(rdfLiteral) },
13020
+ { ALT: () => SUBRULE(numericLiteral) },
13021
+ { ALT: () => SUBRULE(booleanLiteral) },
13022
+ { ALT: () => {
13023
+ CONSUME(undef);
13024
+ return void 0;
13025
+ } }
13026
+ ])
13027
+ };
13028
+ var minusGraphPattern = {
13029
+ name: "minusGraphPattern",
13030
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13031
+ const minus2 = CONSUME(minus);
13032
+ const group = SUBRULE(groupGraphPattern);
13033
+ return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
13034
+ },
13035
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13036
+ F2.printFilter(ast, () => PRINT_WORD("MINUS"));
13037
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
13038
+ }
13039
+ };
13040
+ var groupOrUnionGraphPattern = {
13041
+ name: "groupOrUnionGraphPattern",
13042
+ impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
13043
+ const groups = [];
13044
+ const group = SUBRULE1(groupGraphPattern);
13045
+ groups.push(group);
13046
+ MANY(() => {
13047
+ CONSUME(union);
13048
+ const group2 = SUBRULE2(groupGraphPattern);
13049
+ groups.push(group2);
13060
13050
  });
13061
- return result;
13051
+ return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(
13052
+ groups,
13053
+ C.factory.sourceLocation(group, groups.at(-1))
13054
+ ));
13062
13055
  },
13063
13056
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13064
- F2.printFilter(ast, () => {
13065
- PRINT_WORD(ast.aggregation, "(");
13066
- if (ast.distinct) {
13067
- PRINT_WORD("DISTINCT");
13057
+ if (F2.isPatternUnion(ast)) {
13058
+ const [head2, ...tail] = ast.patterns;
13059
+ SUBRULE(groupGraphPattern, head2);
13060
+ for (const pattern of tail) {
13061
+ F2.printFilter(ast, () => PRINT_WORD("UNION"));
13062
+ SUBRULE(groupGraphPattern, pattern);
13068
13063
  }
13069
- });
13070
- const arg = ast.expression[0];
13071
- if (F2.isWildcard(arg)) {
13072
- F2.printFilter(ast, () => PRINT_WORD("*"));
13073
13064
  } else {
13074
- SUBRULE(expression, arg, void 0);
13075
- }
13076
- if (F2.isExpressionAggregateSeparator(ast)) {
13077
- F2.printFilter(ast, () => PRINT_WORD(";", "SEPARATOR", "=", stringEscapedLexical(ast.separator)));
13065
+ SUBRULE(groupGraphPattern, ast);
13078
13066
  }
13067
+ }
13068
+ };
13069
+ var filter3 = {
13070
+ name: "filter",
13071
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13072
+ const filterToken = CONSUME(filter2);
13073
+ const expression2 = SUBRULE(constraint);
13074
+ return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
13075
+ },
13076
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13077
+ F2.printFilter(ast, () => PRINT_WORD("FILTER ("));
13078
+ SUBRULE(expression, ast.expression);
13079
13079
  F2.printFilter(ast, () => PRINT_WORD(")"));
13080
13080
  }
13081
13081
  };
13082
+ var constraint = {
13083
+ name: "constraint",
13084
+ impl: ({ SUBRULE, OR }) => () => OR([
13085
+ { ALT: () => SUBRULE(brackettedExpression) },
13086
+ { ALT: () => SUBRULE(builtInCall) },
13087
+ { ALT: () => SUBRULE(functionCall) }
13088
+ ])
13089
+ };
13090
+ var functionCall = {
13091
+ name: "functionCall",
13092
+ impl: ({ ACTION, SUBRULE }) => (C) => {
13093
+ const func = SUBRULE(iri2);
13094
+ const args = SUBRULE(argList);
13095
+ return ACTION(() => C.factory.expressionFunctionCall(
13096
+ func,
13097
+ args.val.args,
13098
+ args.val.distinct,
13099
+ C.factory.sourceLocation(func, args)
13100
+ ));
13101
+ }
13102
+ };
13082
13103
 
13083
13104
  // lib/grammar/expression.ts
13084
13105
  var argList = {
@@ -13098,7 +13119,7 @@ var argList = {
13098
13119
  AT_LEAST_ONE_SEP({
13099
13120
  SEP: symbols_exports.comma,
13100
13121
  DEF: () => {
13101
- const arg = SUBRULE1(expression, void 0);
13122
+ const arg = SUBRULE1(expression);
13102
13123
  args.push(arg);
13103
13124
  }
13104
13125
  });
@@ -13115,11 +13136,11 @@ var argList = {
13115
13136
  });
13116
13137
  const [head2, ...tail] = ast.val.args;
13117
13138
  if (head2) {
13118
- SUBRULE(expression, head2, void 0);
13139
+ SUBRULE(expression, head2);
13119
13140
  }
13120
13141
  for (const expr of tail) {
13121
13142
  F2.printFilter(ast, () => PRINT_WORD(","));
13122
- SUBRULE(expression, expr, void 0);
13143
+ SUBRULE(expression, expr);
13123
13144
  }
13124
13145
  F2.printFilter(ast, () => PRINT_WORD(")"));
13125
13146
  }
@@ -13133,11 +13154,11 @@ var expressionList = {
13133
13154
  } },
13134
13155
  { ALT: () => {
13135
13156
  const open = CONSUME(symbols_exports.LParen);
13136
- const expr1 = SUBRULE1(expression, void 0);
13157
+ const expr1 = SUBRULE1(expression);
13137
13158
  const args = [expr1];
13138
13159
  MANY(() => {
13139
13160
  CONSUME(symbols_exports.comma);
13140
- const expr = SUBRULE2(expression, void 0);
13161
+ const expr = SUBRULE2(expression);
13141
13162
  args.push(expr);
13142
13163
  });
13143
13164
  const close = CONSUME(symbols_exports.RParen);
@@ -13149,15 +13170,15 @@ var infixOperators = /* @__PURE__ */ new Set(["in", "notin", "||", "&&", "=", "!
13149
13170
  var prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
13150
13171
  var expression = {
13151
13172
  name: "expression",
13152
- impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression, void 0),
13173
+ impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
13153
13174
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13154
13175
  if (F2.isTerm(ast)) {
13155
- SUBRULE(varOrTerm, ast, void 0);
13176
+ SUBRULE(varOrTerm, ast);
13156
13177
  } else if (F2.isExpressionOperator(ast)) {
13157
13178
  if (infixOperators.has(ast.operator)) {
13158
13179
  const [left, ...right] = ast.args;
13159
13180
  F2.printFilter(ast, () => PRINT_WORD("("));
13160
- SUBRULE(expression, left, void 0);
13181
+ SUBRULE(expression, left);
13161
13182
  F2.printFilter(ast, () => {
13162
13183
  if (ast.operator === "notin") {
13163
13184
  PRINT_WORD("NOT IN");
@@ -13168,35 +13189,35 @@ var expression = {
13168
13189
  }
13169
13190
  });
13170
13191
  if (right.length === 1) {
13171
- SUBRULE(expression, right[0], void 0);
13192
+ SUBRULE(expression, right[0]);
13172
13193
  } else {
13173
- SUBRULE(argList, F2.wrap({ args: right, distinct: false }, ast.loc), void 0);
13194
+ SUBRULE(argList, F2.wrap({ args: right, distinct: false }, ast.loc));
13174
13195
  }
13175
13196
  F2.printFilter(ast, () => PRINT_WORD(")"));
13176
13197
  } else if (prefixOperator.has(ast.operator)) {
13177
13198
  const [expr] = ast.args;
13178
13199
  F2.printFilter(ast, () => PRINT_WORD(ast.operator));
13179
- SUBRULE(expression, expr, void 0);
13200
+ SUBRULE(expression, expr);
13180
13201
  } else {
13181
13202
  F2.printFilter(ast, () => PRINT_WORD(ast.operator, "("));
13182
13203
  const [head2, ...tail] = ast.args;
13183
13204
  if (head2) {
13184
- SUBRULE(expression, head2, void 0);
13205
+ SUBRULE(expression, head2);
13185
13206
  }
13186
13207
  for (const arg of tail) {
13187
13208
  F2.printFilter(ast, () => PRINT_WORD(","));
13188
- SUBRULE(expression, arg, void 0);
13209
+ SUBRULE(expression, arg);
13189
13210
  }
13190
13211
  F2.printFilter(ast, () => PRINT_WORD(")"));
13191
13212
  }
13192
13213
  } else if (F2.isExpressionPatternOperation(ast)) {
13193
13214
  const patterns = ast.args;
13194
13215
  F2.printFilter(ast, () => PRINT_WORD(ast.operator === "exists" ? "EXISTS" : "NOT EXISTS"));
13195
- SUBRULE(groupGraphPattern, patterns, void 0);
13216
+ SUBRULE(groupGraphPattern, patterns);
13196
13217
  } else if (F2.isExpressionFunctionCall(ast)) {
13197
- SUBRULE(iriOrFunction, ast, void 0);
13218
+ SUBRULE(iriOrFunction, ast);
13198
13219
  } else if (F2.isExpressionAggregate(ast)) {
13199
- SUBRULE(aggregate, ast, void 0);
13220
+ SUBRULE(aggregate, ast);
13200
13221
  }
13201
13222
  }
13202
13223
  };
@@ -13213,10 +13234,10 @@ function constructLeftDeep(startGenerator, restGenerator, ACTION, MANY) {
13213
13234
  var conditionalOrExpression = {
13214
13235
  name: "conditionalOrExpression",
13215
13236
  impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(
13216
- () => SUBRULE1(conditionalAndExpression, void 0),
13237
+ () => SUBRULE1(conditionalAndExpression),
13217
13238
  () => {
13218
13239
  CONSUME(symbols_exports.logicOr);
13219
- const args = SUBRULE2(conditionalAndExpression, void 0);
13240
+ const args = SUBRULE2(conditionalAndExpression);
13220
13241
  return (left) => ACTION(() => C.factory.expressionOperation("||", [left, args], C.factory.sourceLocation(left, args)));
13221
13242
  },
13222
13243
  ACTION,
@@ -13226,10 +13247,10 @@ var conditionalOrExpression = {
13226
13247
  var conditionalAndExpression = {
13227
13248
  name: "conditionalAndExpression",
13228
13249
  impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(
13229
- () => SUBRULE1(valueLogical, void 0),
13250
+ () => SUBRULE1(valueLogical),
13230
13251
  () => {
13231
13252
  CONSUME(symbols_exports.logicAnd);
13232
- const arg = SUBRULE2(valueLogical, void 0);
13253
+ const arg = SUBRULE2(valueLogical);
13233
13254
  return (left) => ACTION(() => C.factory.expressionOperation("&&", [left, arg], C.factory.sourceLocation(left, arg)));
13234
13255
  },
13235
13256
  ACTION,
@@ -13238,12 +13259,12 @@ var conditionalAndExpression = {
13238
13259
  };
13239
13260
  var valueLogical = {
13240
13261
  name: "valueLogical",
13241
- impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression, void 0)
13262
+ impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression)
13242
13263
  };
13243
13264
  var relationalExpression = {
13244
13265
  name: "relationalExpression",
13245
13266
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3 }) => (C) => {
13246
- const args1 = SUBRULE1(numericExpression, void 0);
13267
+ const args1 = SUBRULE1(numericExpression);
13247
13268
  const expression2 = OPTION(() => OR1([
13248
13269
  { ALT: () => {
13249
13270
  const operator = OR2([
@@ -13254,7 +13275,7 @@ var relationalExpression = {
13254
13275
  { ALT: () => CONSUME(symbols_exports.lessThanEqual) },
13255
13276
  { ALT: () => CONSUME(symbols_exports.greaterThanEqual) }
13256
13277
  ]);
13257
- const expr = SUBRULE2(numericExpression, void 0);
13278
+ const expr = SUBRULE2(numericExpression);
13258
13279
  return ACTION(() => C.factory.expressionOperation(
13259
13280
  operator.image,
13260
13281
  [args1, expr],
@@ -13266,7 +13287,7 @@ var relationalExpression = {
13266
13287
  { ALT: () => CONSUME(in_) },
13267
13288
  { ALT: () => CONSUME(notIn) }
13268
13289
  ]);
13269
- const args = SUBRULE1(expressionList, void 0);
13290
+ const args = SUBRULE1(expressionList);
13270
13291
  return ACTION(() => C.factory.expressionOperation(
13271
13292
  operator.image,
13272
13293
  [args1, ...args.val],
@@ -13279,25 +13300,25 @@ var relationalExpression = {
13279
13300
  };
13280
13301
  var numericExpression = {
13281
13302
  name: "numericExpression",
13282
- impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression, void 0)
13303
+ impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression)
13283
13304
  };
13284
13305
  var additiveExpression = {
13285
13306
  name: "additiveExpression",
13286
13307
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OR1, OR2, OR3, OR4 }) => (C) => constructLeftDeep(
13287
- () => SUBRULE1(multiplicativeExpression, void 0),
13308
+ () => SUBRULE1(multiplicativeExpression),
13288
13309
  () => OR1([
13289
13310
  { ALT: () => {
13290
13311
  const operator = OR2([
13291
13312
  { ALT: () => CONSUME(symbols_exports.opPlus) },
13292
13313
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13293
13314
  ]);
13294
- const arg = SUBRULE2(multiplicativeExpression, void 0);
13315
+ const arg = SUBRULE2(multiplicativeExpression);
13295
13316
  return ACTION(() => (left) => C.factory.expressionOperation(operator.image, [left, arg], C.factory.sourceLocation(left, arg)));
13296
13317
  } },
13297
13318
  { ALT: () => {
13298
13319
  const { operator, startInt } = OR3([
13299
13320
  { ALT: () => {
13300
- const integer2 = SUBRULE(numericLiteralPositive, void 0);
13321
+ const integer2 = SUBRULE(numericLiteralPositive);
13301
13322
  return ACTION(() => {
13302
13323
  integer2.value = integer2.value.replace(/^\+/u, "");
13303
13324
  return {
@@ -13307,7 +13328,7 @@ var additiveExpression = {
13307
13328
  });
13308
13329
  } },
13309
13330
  { ALT: () => {
13310
- const integer2 = SUBRULE(numericLiteralNegative, void 0);
13331
+ const integer2 = SUBRULE(numericLiteralNegative);
13311
13332
  return ACTION(() => {
13312
13333
  integer2.value = integer2.value.replace(/^-/u, "");
13313
13334
  return {
@@ -13324,7 +13345,7 @@ var additiveExpression = {
13324
13345
  { ALT: () => CONSUME(symbols_exports.star) },
13325
13346
  { ALT: () => CONSUME(symbols_exports.slash) }
13326
13347
  ]);
13327
- const innerExpr = SUBRULE1(unaryExpression, void 0);
13348
+ const innerExpr = SUBRULE1(unaryExpression);
13328
13349
  return ACTION(() => (leftInner) => C.factory.expressionOperation(
13329
13350
  innerOperator.image,
13330
13351
  [leftInner, innerExpr],
@@ -13348,13 +13369,13 @@ var additiveExpression = {
13348
13369
  var multiplicativeExpression = {
13349
13370
  name: "multiplicativeExpression",
13350
13371
  impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OR }) => (C) => constructLeftDeep(
13351
- () => SUBRULE1(unaryExpression, void 0),
13372
+ () => SUBRULE1(unaryExpression),
13352
13373
  () => {
13353
13374
  const operator = OR([
13354
13375
  { ALT: () => CONSUME(symbols_exports.star) },
13355
13376
  { ALT: () => CONSUME(symbols_exports.slash) }
13356
13377
  ]);
13357
- const expr = SUBRULE2(unaryExpression, void 0);
13378
+ const expr = SUBRULE2(unaryExpression);
13358
13379
  return (left) => ({
13359
13380
  type: "expression",
13360
13381
  subType: "operation",
@@ -13370,14 +13391,14 @@ var multiplicativeExpression = {
13370
13391
  var unaryExpression = {
13371
13392
  name: "unaryExpression",
13372
13393
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
13373
- { ALT: () => SUBRULE1(primaryExpression, void 0) },
13394
+ { ALT: () => SUBRULE1(primaryExpression) },
13374
13395
  { ALT: () => {
13375
13396
  const operator = OR2([
13376
13397
  { ALT: () => CONSUME(symbols_exports.exclamation) },
13377
13398
  { ALT: () => CONSUME(symbols_exports.opPlus) },
13378
13399
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13379
13400
  ]);
13380
- const expr = SUBRULE2(primaryExpression, void 0);
13401
+ const expr = SUBRULE2(primaryExpression);
13381
13402
  return ACTION(() => ({
13382
13403
  type: "expression",
13383
13404
  subType: "operation",
@@ -13391,20 +13412,20 @@ var unaryExpression = {
13391
13412
  var primaryExpression = {
13392
13413
  name: "primaryExpression",
13393
13414
  impl: ({ SUBRULE, OR }) => () => OR([
13394
- { ALT: () => SUBRULE(brackettedExpression, void 0) },
13395
- { ALT: () => SUBRULE(builtInCall, void 0) },
13396
- { ALT: () => SUBRULE(iriOrFunction, void 0) },
13397
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
13398
- { ALT: () => SUBRULE(numericLiteral, void 0) },
13399
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
13400
- { ALT: () => SUBRULE(var_, void 0) }
13415
+ { ALT: () => SUBRULE(brackettedExpression) },
13416
+ { ALT: () => SUBRULE(builtInCall) },
13417
+ { ALT: () => SUBRULE(iriOrFunction) },
13418
+ { ALT: () => SUBRULE(rdfLiteral) },
13419
+ { ALT: () => SUBRULE(numericLiteral) },
13420
+ { ALT: () => SUBRULE(booleanLiteral) },
13421
+ { ALT: () => SUBRULE(var_) }
13401
13422
  ])
13402
13423
  };
13403
13424
  var brackettedExpression = {
13404
13425
  name: "brackettedExpression",
13405
13426
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13406
13427
  const open = CONSUME(symbols_exports.LParen);
13407
- const expr = SUBRULE(expression, void 0);
13428
+ const expr = SUBRULE(expression);
13408
13429
  const close = CONSUME(symbols_exports.RParen);
13409
13430
  return ACTION(() => {
13410
13431
  expr.loc = C.factory.sourceLocation(open, close);
@@ -13415,9 +13436,9 @@ var brackettedExpression = {
13415
13436
  var iriOrFunction = {
13416
13437
  name: "iriOrFunction",
13417
13438
  impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
13418
- const iriVal = SUBRULE(iri2, void 0);
13439
+ const iriVal = SUBRULE(iri2);
13419
13440
  const functionCall2 = OPTION(() => {
13420
- const args = SUBRULE(argList, void 0);
13441
+ const args = SUBRULE(argList);
13421
13442
  return ACTION(() => {
13422
13443
  const distinct2 = args.val.distinct;
13423
13444
  if (!C.parseMode.has("canParseAggregate") && distinct2) {
@@ -13437,10 +13458,10 @@ var iriOrFunction = {
13437
13458
  },
13438
13459
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13439
13460
  if (F2.isTermNamed(ast)) {
13440
- SUBRULE(iri2, ast, void 0);
13461
+ SUBRULE(iri2, ast);
13441
13462
  } else {
13442
- SUBRULE(iri2, ast.function, void 0);
13443
- SUBRULE(argList, F2.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc), void 0);
13463
+ SUBRULE(iri2, ast.function);
13464
+ SUBRULE(argList, F2.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc));
13444
13465
  }
13445
13466
  }
13446
13467
  };
@@ -13449,10 +13470,10 @@ var iriOrFunction = {
13449
13470
  var solutionModifier = {
13450
13471
  name: "solutionModifier",
13451
13472
  impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {
13452
- const group = OPTION1(() => SUBRULE(groupClause, void 0));
13453
- const having2 = OPTION2(() => SUBRULE(havingClause, void 0));
13454
- const order2 = OPTION3(() => SUBRULE(orderClause, void 0));
13455
- const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses, void 0));
13473
+ const group = OPTION1(() => SUBRULE(groupClause));
13474
+ const having2 = OPTION2(() => SUBRULE(havingClause));
13475
+ const order2 = OPTION3(() => SUBRULE(orderClause));
13476
+ const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses));
13456
13477
  return ACTION(() => ({
13457
13478
  ...limitOffset && { limitOffset },
13458
13479
  ...group && { group },
@@ -13462,16 +13483,16 @@ var solutionModifier = {
13462
13483
  },
13463
13484
  gImpl: ({ SUBRULE }) => (ast) => {
13464
13485
  if (ast.group) {
13465
- SUBRULE(groupClause, ast.group, void 0);
13486
+ SUBRULE(groupClause, ast.group);
13466
13487
  }
13467
13488
  if (ast.having) {
13468
- SUBRULE(havingClause, ast.having, void 0);
13489
+ SUBRULE(havingClause, ast.having);
13469
13490
  }
13470
13491
  if (ast.order) {
13471
- SUBRULE(orderClause, ast.order, void 0);
13492
+ SUBRULE(orderClause, ast.order);
13472
13493
  }
13473
13494
  if (ast.limitOffset) {
13474
- SUBRULE(limitOffsetClauses, ast.limitOffset, void 0);
13495
+ SUBRULE(limitOffsetClauses, ast.limitOffset);
13475
13496
  }
13476
13497
  }
13477
13498
  };
@@ -13482,7 +13503,7 @@ var groupClause = {
13482
13503
  const start = CONSUME(groupByGroup);
13483
13504
  CONSUME(by);
13484
13505
  AT_LEAST_ONE(() => {
13485
- groupings.push(SUBRULE1(groupCondition, void 0));
13506
+ groupings.push(SUBRULE1(groupCondition));
13486
13507
  });
13487
13508
  return ACTION(() => ({
13488
13509
  type: "solutionModifier",
@@ -13495,12 +13516,12 @@ var groupClause = {
13495
13516
  F2.printFilter(ast, () => PRINT_WORDS("GROUP", "BY"));
13496
13517
  for (const grouping of ast.groupings) {
13497
13518
  if (F2.isExpression(grouping)) {
13498
- SUBRULE(expression, grouping, void 0);
13519
+ SUBRULE(expression, grouping);
13499
13520
  } else {
13500
13521
  F2.printFilter(ast, () => PRINT_WORDS("("));
13501
- SUBRULE(expression, grouping.value, void 0);
13522
+ SUBRULE(expression, grouping.value);
13502
13523
  F2.printFilter(ast, () => PRINT_WORDS("AS"));
13503
- SUBRULE(var_, grouping.variable, void 0);
13524
+ SUBRULE(var_, grouping.variable);
13504
13525
  F2.printFilter(ast, () => PRINT_WORDS(")"));
13505
13526
  }
13506
13527
  }
@@ -13509,16 +13530,16 @@ var groupClause = {
13509
13530
  var groupCondition = {
13510
13531
  name: "groupCondition",
13511
13532
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => (C) => OR([
13512
- { ALT: () => SUBRULE(builtInCall, void 0) },
13513
- { ALT: () => SUBRULE(functionCall, void 0) },
13514
- { ALT: () => SUBRULE2(var_, void 0) },
13533
+ { ALT: () => SUBRULE(builtInCall) },
13534
+ { ALT: () => SUBRULE(functionCall) },
13535
+ { ALT: () => SUBRULE2(var_) },
13515
13536
  {
13516
13537
  ALT: () => {
13517
13538
  const open = CONSUME(symbols_exports.LParen);
13518
- const expressionValue = SUBRULE(expression, void 0);
13539
+ const expressionValue = SUBRULE(expression);
13519
13540
  const variable = OPTION(() => {
13520
13541
  CONSUME(as);
13521
- return SUBRULE1(var_, void 0);
13542
+ return SUBRULE1(var_);
13522
13543
  });
13523
13544
  const close = CONSUME(symbols_exports.RParen);
13524
13545
  return ACTION(() => {
@@ -13542,7 +13563,7 @@ var havingClause = {
13542
13563
  const expressions = [];
13543
13564
  const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
13544
13565
  AT_LEAST_ONE(() => {
13545
- expressions.push(SUBRULE(havingCondition, void 0));
13566
+ expressions.push(SUBRULE(havingCondition));
13546
13567
  });
13547
13568
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13548
13569
  return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having2, expressions.at(-1))));
@@ -13550,13 +13571,13 @@ var havingClause = {
13550
13571
  gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F2 }) => {
13551
13572
  F2.printFilter(ast, () => PRINT_WORD("HAVING"));
13552
13573
  for (const having2 of ast.having) {
13553
- SUBRULE(expression, having2, void 0);
13574
+ SUBRULE(expression, having2);
13554
13575
  }
13555
13576
  }
13556
13577
  };
13557
13578
  var havingCondition = {
13558
13579
  name: "havingCondition",
13559
- impl: ({ SUBRULE }) => () => SUBRULE(constraint, void 0)
13580
+ impl: ({ SUBRULE }) => () => SUBRULE(constraint)
13560
13581
  };
13561
13582
  var orderClause = {
13562
13583
  name: "orderClause",
@@ -13566,7 +13587,7 @@ var orderClause = {
13566
13587
  const orderings = [];
13567
13588
  const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
13568
13589
  AT_LEAST_ONE(() => {
13569
- orderings.push(SUBRULE1(orderCondition, void 0));
13590
+ orderings.push(SUBRULE1(orderCondition));
13570
13591
  });
13571
13592
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13572
13593
  return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order2, orderings.at(-1))));
@@ -13580,7 +13601,7 @@ var orderClause = {
13580
13601
  F2.printFilter(ast, () => PRINT_WORDS("ASC"));
13581
13602
  }
13582
13603
  F2.printFilter(ast, () => PRINT_WORDS("("));
13583
- SUBRULE(expression, ordering.expression, void 0);
13604
+ SUBRULE(expression, ordering.expression);
13584
13605
  F2.printFilter(ast, () => PRINT_WORDS(")"));
13585
13606
  }
13586
13607
  }
@@ -13599,7 +13620,7 @@ var orderCondition = {
13599
13620
  return [true, token];
13600
13621
  } }
13601
13622
  ]);
13602
- const expr = SUBRULE(brackettedExpression, void 0);
13623
+ const expr = SUBRULE(brackettedExpression);
13603
13624
  return ACTION(() => ({
13604
13625
  expression: expr,
13605
13626
  descending: descending[0],
@@ -13607,11 +13628,11 @@ var orderCondition = {
13607
13628
  }));
13608
13629
  } },
13609
13630
  { ALT: () => {
13610
- const expr = SUBRULE(constraint, void 0);
13631
+ const expr = SUBRULE(constraint);
13611
13632
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
13612
13633
  } },
13613
13634
  { ALT: () => {
13614
- const expr = SUBRULE(var_, void 0);
13635
+ const expr = SUBRULE(var_);
13615
13636
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
13616
13637
  } }
13617
13638
  ])
@@ -13620,8 +13641,8 @@ var limitOffsetClauses = {
13620
13641
  name: "limitOffsetClauses",
13621
13642
  impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => OR([
13622
13643
  { ALT: () => {
13623
- const limit2 = SUBRULE1(limitClause, void 0);
13624
- const offset2 = OPTION1(() => SUBRULE1(offsetClause, void 0));
13644
+ const limit2 = SUBRULE1(limitClause);
13645
+ const offset2 = OPTION1(() => SUBRULE1(offsetClause));
13625
13646
  return ACTION(() => C.factory.solutionModifierLimitOffset(
13626
13647
  limit2.val,
13627
13648
  offset2?.val,
@@ -13629,8 +13650,8 @@ var limitOffsetClauses = {
13629
13650
  ));
13630
13651
  } },
13631
13652
  { ALT: () => {
13632
- const offset2 = SUBRULE2(offsetClause, void 0);
13633
- const limit2 = OPTION2(() => SUBRULE2(limitClause, void 0));
13653
+ const offset2 = SUBRULE2(offsetClause);
13654
+ const limit2 = OPTION2(() => SUBRULE2(limitClause));
13634
13655
  return ACTION(() => C.factory.solutionModifierLimitOffset(
13635
13656
  limit2?.val,
13636
13657
  offset2.val,
@@ -13668,22 +13689,22 @@ var offsetClause = {
13668
13689
  }
13669
13690
  };
13670
13691
 
13671
- // lib/grammar/queryUnit/queryUnit.ts
13692
+ // lib/grammar/queryUnit.ts
13672
13693
  var queryUnit = {
13673
13694
  name: "queryUnit",
13674
- impl: ({ SUBRULE }) => () => SUBRULE(query, void 0)
13695
+ impl: ({ SUBRULE }) => () => SUBRULE(query)
13675
13696
  };
13676
13697
  var query = {
13677
13698
  name: "query",
13678
13699
  impl: ({ ACTION, SUBRULE, OR }) => (C) => {
13679
- const prologueValues = SUBRULE(prologue, void 0);
13700
+ const prologueValues = SUBRULE(prologue);
13680
13701
  const subType = OR([
13681
- { ALT: () => SUBRULE(selectQuery, void 0) },
13682
- { ALT: () => SUBRULE(constructQuery, void 0) },
13683
- { ALT: () => SUBRULE(describeQuery, void 0) },
13684
- { ALT: () => SUBRULE(askQuery, void 0) }
13702
+ { ALT: () => SUBRULE(selectQuery) },
13703
+ { ALT: () => SUBRULE(constructQuery) },
13704
+ { ALT: () => SUBRULE(describeQuery) },
13705
+ { ALT: () => SUBRULE(askQuery) }
13685
13706
  ]);
13686
- const values3 = SUBRULE(valuesClause, void 0);
13707
+ const values3 = SUBRULE(valuesClause);
13687
13708
  return ACTION(() => ({
13688
13709
  context: prologueValues,
13689
13710
  ...subType,
@@ -13697,28 +13718,28 @@ var query = {
13697
13718
  }));
13698
13719
  },
13699
13720
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13700
- SUBRULE(prologue, ast.context, void 0);
13721
+ SUBRULE(prologue, ast.context);
13701
13722
  if (F2.isQuerySelect(ast)) {
13702
- SUBRULE(selectQuery, ast, void 0);
13723
+ SUBRULE(selectQuery, ast);
13703
13724
  } else if (F2.isQueryConstruct(ast)) {
13704
- SUBRULE(constructQuery, ast, void 0);
13725
+ SUBRULE(constructQuery, ast);
13705
13726
  } else if (F2.isQueryDescribe(ast)) {
13706
- SUBRULE(describeQuery, ast, void 0);
13727
+ SUBRULE(describeQuery, ast);
13707
13728
  } else if (F2.isQueryAsk(ast)) {
13708
- SUBRULE(askQuery, ast, void 0);
13729
+ SUBRULE(askQuery, ast);
13709
13730
  }
13710
13731
  if (ast.values) {
13711
- SUBRULE(inlineData, ast.values, void 0);
13732
+ SUBRULE(inlineData, ast.values);
13712
13733
  }
13713
13734
  }
13714
13735
  };
13715
13736
  var selectQuery = {
13716
13737
  name: "selectQuery",
13717
13738
  impl: ({ ACTION, SUBRULE }) => (C) => {
13718
- const selectVal = SUBRULE(selectClause, void 0);
13719
- const from2 = SUBRULE(datasetClauseStar, void 0);
13720
- const where2 = SUBRULE(whereClause, void 0);
13721
- const modifiers = SUBRULE(solutionModifier, void 0);
13739
+ const selectVal = SUBRULE(selectClause);
13740
+ const from2 = SUBRULE(datasetClauseStar);
13741
+ const where2 = SUBRULE(whereClause);
13742
+ const modifiers = SUBRULE(solutionModifier);
13722
13743
  return ACTION(() => {
13723
13744
  const ret = {
13724
13745
  subType: "select",
@@ -13744,19 +13765,19 @@ var selectQuery = {
13744
13765
  variables: ast.variables,
13745
13766
  distinct: ast.distinct,
13746
13767
  reduced: ast.reduced
13747
- }, F2.sourceLocation(...ast.variables)), void 0);
13748
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
13749
- SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc), void 0);
13750
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
13768
+ }, F2.sourceLocation(...ast.variables)));
13769
+ SUBRULE(datasetClauseStar, ast.datasets);
13770
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc));
13771
+ SUBRULE(solutionModifier, ast.solutionModifiers);
13751
13772
  }
13752
13773
  };
13753
13774
  var subSelect = {
13754
13775
  name: "subSelect",
13755
13776
  impl: ({ ACTION, SUBRULE }) => (C) => {
13756
- const selectVal = SUBRULE(selectClause, void 0);
13757
- const where2 = SUBRULE(whereClause, void 0);
13758
- const modifiers = SUBRULE(solutionModifier, void 0);
13759
- const values3 = SUBRULE(valuesClause, void 0);
13777
+ const selectVal = SUBRULE(selectClause);
13778
+ const where2 = SUBRULE(whereClause);
13779
+ const modifiers = SUBRULE(solutionModifier);
13780
+ const values3 = SUBRULE(valuesClause);
13760
13781
  return ACTION(() => C.factory.querySelect({
13761
13782
  where: where2.val,
13762
13783
  datasets: C.factory.datasetClauses([], C.factory.sourceLocation()),
@@ -13821,7 +13842,7 @@ var selectClause = {
13821
13842
  const variables = [];
13822
13843
  AT_LEAST_ONE(() => OR3([
13823
13844
  { ALT: () => {
13824
- const raw = SUBRULE1(var_, void 0);
13845
+ const raw = SUBRULE1(var_);
13825
13846
  ACTION(() => {
13826
13847
  if (usedVars.some((v) => v.value === raw.value)) {
13827
13848
  throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);
@@ -13833,9 +13854,9 @@ var selectClause = {
13833
13854
  } },
13834
13855
  { ALT: () => {
13835
13856
  const open = CONSUME(symbols_exports.LParen);
13836
- const expr = SUBRULE1(expression, void 0);
13857
+ const expr = SUBRULE1(expression);
13837
13858
  CONSUME(as);
13838
- const variable = SUBRULE2(var_, void 0);
13859
+ const variable = SUBRULE2(var_);
13839
13860
  const close = CONSUME(symbols_exports.RParen);
13840
13861
  ACTION(() => {
13841
13862
  last2 = close;
@@ -13866,12 +13887,12 @@ var selectClause = {
13866
13887
  if (F2.isWildcard(variable)) {
13867
13888
  F2.printFilter(ast, () => PRINT_WORD("*"));
13868
13889
  } else if (F2.isTerm(variable)) {
13869
- SUBRULE(var_, variable, void 0);
13890
+ SUBRULE(var_, variable);
13870
13891
  } else {
13871
13892
  F2.printFilter(ast, () => PRINT_WORD("("));
13872
- SUBRULE(expression, variable.expression, void 0);
13893
+ SUBRULE(expression, variable.expression);
13873
13894
  F2.printFilter(ast, () => PRINT_WORD("AS"));
13874
- SUBRULE(var_, variable.variable, void 0);
13895
+ SUBRULE(var_, variable.variable);
13875
13896
  F2.printFilter(ast, () => PRINT_WORD(")"));
13876
13897
  }
13877
13898
  }
@@ -13883,10 +13904,10 @@ var constructQuery = {
13883
13904
  const construct2 = CONSUME(construct);
13884
13905
  return OR([
13885
13906
  { ALT: () => {
13886
- const template = SUBRULE1(constructTemplate, void 0);
13887
- const from2 = SUBRULE1(datasetClauseStar, void 0);
13888
- const where2 = SUBRULE1(whereClause, void 0);
13889
- const modifiers = SUBRULE1(solutionModifier, void 0);
13907
+ const template = SUBRULE1(constructTemplate);
13908
+ const from2 = SUBRULE1(datasetClauseStar);
13909
+ const where2 = SUBRULE1(whereClause);
13910
+ const modifiers = SUBRULE1(solutionModifier);
13890
13911
  return ACTION(() => ({
13891
13912
  subType: "construct",
13892
13913
  template: template.val,
@@ -13904,10 +13925,10 @@ var constructQuery = {
13904
13925
  }));
13905
13926
  } },
13906
13927
  { ALT: () => {
13907
- const from2 = SUBRULE2(datasetClauseStar, void 0);
13928
+ const from2 = SUBRULE2(datasetClauseStar);
13908
13929
  CONSUME(where);
13909
- const template = SUBRULE2(constructTemplate, void 0);
13910
- const modifiers = SUBRULE2(solutionModifier, void 0);
13930
+ const template = SUBRULE2(constructTemplate);
13931
+ const modifiers = SUBRULE2(solutionModifier);
13911
13932
  return ACTION(() => ({
13912
13933
  subType: "construct",
13913
13934
  template: template.val,
@@ -13930,16 +13951,16 @@ var constructQuery = {
13930
13951
  F2.printFilter(ast, () => PRINT_WORD("CONSTRUCT"));
13931
13952
  if (!F2.isSourceLocationNoMaterialize(ast.where.loc)) {
13932
13953
  F2.printFilter(ast, () => PRINT_WORD("{"));
13933
- SUBRULE(triplesBlock, ast.template, void 0);
13954
+ SUBRULE(triplesBlock, ast.template);
13934
13955
  F2.printFilter(ast, () => PRINT_WORD("}"));
13935
13956
  }
13936
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
13957
+ SUBRULE(datasetClauseStar, ast.datasets);
13937
13958
  if (F2.isSourceLocationNoMaterialize(ast.where.loc)) {
13938
- SUBRULE(whereClause, F2.wrap(F2.patternGroup([ast.template], ast.template.loc), ast.template.loc), void 0);
13959
+ SUBRULE(whereClause, F2.wrap(F2.patternGroup([ast.template], ast.template.loc), ast.template.loc));
13939
13960
  } else {
13940
- SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc), void 0);
13961
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc));
13941
13962
  }
13942
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
13963
+ SUBRULE(solutionModifier, ast.solutionModifiers);
13943
13964
  }
13944
13965
  };
13945
13966
  var describeQuery = {
@@ -13950,7 +13971,7 @@ var describeQuery = {
13950
13971
  { ALT: () => {
13951
13972
  const variables2 = [];
13952
13973
  AT_LEAST_ONE(() => {
13953
- variables2.push(SUBRULE1(varOrIri, void 0));
13974
+ variables2.push(SUBRULE1(varOrIri));
13954
13975
  });
13955
13976
  return variables2;
13956
13977
  } },
@@ -13959,9 +13980,9 @@ var describeQuery = {
13959
13980
  return [ACTION(() => C.factory.wildcard(C.factory.sourceLocation(star2)))];
13960
13981
  } }
13961
13982
  ]);
13962
- const from2 = SUBRULE1(datasetClauseStar, void 0);
13963
- const where2 = OPTION(() => SUBRULE1(whereClause, void 0));
13964
- const modifiers = SUBRULE1(solutionModifier, void 0);
13983
+ const from2 = SUBRULE1(datasetClauseStar);
13984
+ const where2 = OPTION(() => SUBRULE1(whereClause));
13985
+ const modifiers = SUBRULE1(solutionModifier);
13965
13986
  return ACTION(() => ({
13966
13987
  subType: "describe",
13967
13988
  variables,
@@ -13986,23 +14007,23 @@ var describeQuery = {
13986
14007
  F2.printFilter(ast, () => PRINT_WORD("*"));
13987
14008
  } else {
13988
14009
  for (const variable of ast.variables) {
13989
- SUBRULE(varOrTerm, variable, void 0);
14010
+ SUBRULE(varOrTerm, variable);
13990
14011
  }
13991
14012
  }
13992
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14013
+ SUBRULE(datasetClauseStar, ast.datasets);
13993
14014
  if (ast.where) {
13994
- SUBRULE(whereClause, F2.wrap(ast.where, ast.loc), void 0);
14015
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.loc));
13995
14016
  }
13996
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14017
+ SUBRULE(solutionModifier, ast.solutionModifiers);
13997
14018
  }
13998
14019
  };
13999
14020
  var askQuery = {
14000
14021
  name: "askQuery",
14001
14022
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14002
14023
  const ask2 = CONSUME(ask);
14003
- const from2 = SUBRULE(datasetClauseStar, void 0);
14004
- const where2 = SUBRULE(whereClause, void 0);
14005
- const modifiers = SUBRULE(solutionModifier, void 0);
14024
+ const from2 = SUBRULE(datasetClauseStar);
14025
+ const where2 = SUBRULE(whereClause);
14026
+ const modifiers = SUBRULE(solutionModifier);
14006
14027
  return ACTION(() => ({
14007
14028
  subType: "ask",
14008
14029
  datasets: from2,
@@ -14021,20 +14042,20 @@ var askQuery = {
14021
14042
  },
14022
14043
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14023
14044
  F2.printFilter(ast, () => PRINT_WORD("ASK"));
14024
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14025
- SUBRULE(whereClause, F2.wrap(ast.where, ast.loc), void 0);
14026
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14045
+ SUBRULE(datasetClauseStar, ast.datasets);
14046
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.loc));
14047
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14027
14048
  }
14028
14049
  };
14029
14050
  var valuesClause = {
14030
14051
  name: "valuesClause",
14031
- impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(inlineData, void 0))
14052
+ impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(inlineData))
14032
14053
  };
14033
14054
  var constructTemplate = {
14034
14055
  name: "constructTemplate",
14035
14056
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14036
14057
  const open = CONSUME(symbols_exports.LCurly);
14037
- const triples = OPTION(() => SUBRULE1(constructTriples, void 0));
14058
+ const triples = OPTION(() => SUBRULE1(constructTriples));
14038
14059
  const close = CONSUME(symbols_exports.RCurly);
14039
14060
  return ACTION(() => C.factory.wrap(
14040
14061
  triples ?? C.factory.patternBgp([], C.factory.sourceLocation()),
@@ -14047,27 +14068,27 @@ var constructTriples = {
14047
14068
  impl: triplesTemplate.impl
14048
14069
  };
14049
14070
 
14050
- // lib/grammar/updateUnit/updateUnit.ts
14071
+ // lib/grammar/updateUnit.ts
14051
14072
  var updateUnit = {
14052
14073
  name: "updateUnit",
14053
- impl: ({ SUBRULE }) => () => SUBRULE(update, void 0)
14074
+ impl: ({ SUBRULE }) => () => SUBRULE(update)
14054
14075
  };
14055
14076
  var update = {
14056
14077
  name: "update",
14057
14078
  impl: ({ ACTION, SUBRULE, SUBRULE1, SUBRULE2, CONSUME, OPTION1, MANY }) => (C) => {
14058
14079
  const updates = [];
14059
- const prologueValues = SUBRULE1(prologue, void 0);
14080
+ const prologueValues = SUBRULE1(prologue);
14060
14081
  updates.push({ context: prologueValues });
14061
14082
  let parsedSemi = true;
14062
14083
  MANY({
14063
14084
  GATE: () => parsedSemi,
14064
14085
  DEF: () => {
14065
14086
  parsedSemi = false;
14066
- updates.at(-1).operation = SUBRULE(update1, void 0);
14087
+ updates.at(-1).operation = SUBRULE(update1);
14067
14088
  OPTION1(() => {
14068
14089
  CONSUME(symbols_exports.semi);
14069
14090
  parsedSemi = true;
14070
- const innerPrologue = SUBRULE2(prologue, void 0);
14091
+ const innerPrologue = SUBRULE2(prologue);
14071
14092
  updates.push({ context: innerPrologue });
14072
14093
  });
14073
14094
  }
@@ -14089,9 +14110,9 @@ var update = {
14089
14110
  },
14090
14111
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14091
14112
  for (const update2 of ast.updates) {
14092
- SUBRULE(prologue, update2.context, void 0);
14113
+ SUBRULE(prologue, update2.context);
14093
14114
  if (update2.operation) {
14094
- SUBRULE(update1, update2.operation, void 0);
14115
+ SUBRULE(update1, update2.operation);
14095
14116
  F2.printFilter(ast, () => PRINT_WORD(" ;\n"));
14096
14117
  }
14097
14118
  }
@@ -14100,52 +14121,52 @@ var update = {
14100
14121
  var update1 = {
14101
14122
  name: "update1",
14102
14123
  impl: ({ SUBRULE, OR }) => () => OR([
14103
- { ALT: () => SUBRULE(load2, void 0) },
14104
- { ALT: () => SUBRULE(clear2, void 0) },
14105
- { ALT: () => SUBRULE(drop3, void 0) },
14106
- { ALT: () => SUBRULE(add2, void 0) },
14107
- { ALT: () => SUBRULE(move2, void 0) },
14108
- { ALT: () => SUBRULE(copy2, void 0) },
14109
- { ALT: () => SUBRULE(create2, void 0) },
14110
- { ALT: () => SUBRULE(insertData, void 0) },
14111
- { ALT: () => SUBRULE(deleteData, void 0) },
14112
- { ALT: () => SUBRULE(deleteWhere, void 0) },
14113
- { ALT: () => SUBRULE(modify, void 0) }
14124
+ { ALT: () => SUBRULE(load2) },
14125
+ { ALT: () => SUBRULE(clear2) },
14126
+ { ALT: () => SUBRULE(drop3) },
14127
+ { ALT: () => SUBRULE(add2) },
14128
+ { ALT: () => SUBRULE(move2) },
14129
+ { ALT: () => SUBRULE(copy2) },
14130
+ { ALT: () => SUBRULE(create2) },
14131
+ { ALT: () => SUBRULE(insertData) },
14132
+ { ALT: () => SUBRULE(deleteData) },
14133
+ { ALT: () => SUBRULE(deleteWhere) },
14134
+ { ALT: () => SUBRULE(modify) }
14114
14135
  ]),
14115
14136
  gImpl: ({ SUBRULE }) => (ast) => {
14116
14137
  switch (ast.subType) {
14117
14138
  case "load":
14118
- SUBRULE(load2, ast, void 0);
14139
+ SUBRULE(load2, ast);
14119
14140
  break;
14120
14141
  case "clear":
14121
- SUBRULE(clear2, ast, void 0);
14142
+ SUBRULE(clear2, ast);
14122
14143
  break;
14123
14144
  case "drop":
14124
- SUBRULE(drop3, ast, void 0);
14145
+ SUBRULE(drop3, ast);
14125
14146
  break;
14126
14147
  case "add":
14127
- SUBRULE(add2, ast, void 0);
14148
+ SUBRULE(add2, ast);
14128
14149
  break;
14129
14150
  case "move":
14130
- SUBRULE(move2, ast, void 0);
14151
+ SUBRULE(move2, ast);
14131
14152
  break;
14132
14153
  case "copy":
14133
- SUBRULE(copy2, ast, void 0);
14154
+ SUBRULE(copy2, ast);
14134
14155
  break;
14135
14156
  case "create":
14136
- SUBRULE(create2, ast, void 0);
14157
+ SUBRULE(create2, ast);
14137
14158
  break;
14138
14159
  case "insertdata":
14139
- SUBRULE(insertData, ast, void 0);
14160
+ SUBRULE(insertData, ast);
14140
14161
  break;
14141
14162
  case "deletedata":
14142
- SUBRULE(deleteData, ast, void 0);
14163
+ SUBRULE(deleteData, ast);
14143
14164
  break;
14144
14165
  case "deletewhere":
14145
- SUBRULE(deleteWhere, ast, void 0);
14166
+ SUBRULE(deleteWhere, ast);
14146
14167
  break;
14147
14168
  case "modify":
14148
- SUBRULE(modify, ast, void 0);
14169
+ SUBRULE(modify, ast);
14149
14170
  break;
14150
14171
  }
14151
14172
  }
@@ -14155,10 +14176,10 @@ var load2 = {
14155
14176
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION1, OPTION2 }) => (C) => {
14156
14177
  const loadToken = CONSUME(load);
14157
14178
  const silent2 = OPTION1(() => CONSUME(silent));
14158
- const source = SUBRULE1(iri2, void 0);
14179
+ const source = SUBRULE1(iri2);
14159
14180
  const destination = OPTION2(() => {
14160
14181
  CONSUME(loadInto);
14161
- return SUBRULE1(graphRef, void 0);
14182
+ return SUBRULE1(graphRef);
14162
14183
  });
14163
14184
  return ACTION(() => C.factory.updateOperationLoad(
14164
14185
  C.factory.sourceLocation(loadToken, source, destination),
@@ -14174,10 +14195,10 @@ var load2 = {
14174
14195
  PRINT_WORD("SILENT");
14175
14196
  }
14176
14197
  });
14177
- SUBRULE(iri2, ast.source, void 0);
14198
+ SUBRULE(iri2, ast.source);
14178
14199
  if (ast.destination) {
14179
14200
  F2.printFilter(ast, () => PRINT_WORD("INTO"));
14180
- SUBRULE(graphRefAll, ast.destination, void 0);
14201
+ SUBRULE(graphRefAll, ast.destination);
14181
14202
  }
14182
14203
  }
14183
14204
  };
@@ -14187,7 +14208,7 @@ function clearOrDrop(operation) {
14187
14208
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14188
14209
  const opToken = CONSUME(operation);
14189
14210
  const silent2 = OPTION(() => CONSUME(silent));
14190
- const destination = SUBRULE1(graphRefAll, void 0);
14211
+ const destination = SUBRULE1(graphRefAll);
14191
14212
  return ACTION(() => C.factory.updateOperationClearDrop(
14192
14213
  unCapitalize(operation.name),
14193
14214
  Boolean(silent2),
@@ -14202,7 +14223,7 @@ function clearOrDrop(operation) {
14202
14223
  PRINT_WORD("SILENT");
14203
14224
  }
14204
14225
  });
14205
- SUBRULE(graphRefAll, ast.destination, void 0);
14226
+ SUBRULE(graphRefAll, ast.destination);
14206
14227
  }
14207
14228
  };
14208
14229
  }
@@ -14213,7 +14234,7 @@ var create2 = {
14213
14234
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14214
14235
  const createToken3 = CONSUME(create);
14215
14236
  const silent2 = OPTION(() => CONSUME(silent));
14216
- const destination = SUBRULE1(graphRef, void 0);
14237
+ const destination = SUBRULE1(graphRef);
14217
14238
  return ACTION(() => C.factory.updateOperationCreate(
14218
14239
  destination,
14219
14240
  Boolean(silent2),
@@ -14227,7 +14248,7 @@ var create2 = {
14227
14248
  PRINT_WORD("SILENT");
14228
14249
  }
14229
14250
  });
14230
- SUBRULE(graphRefAll, ast.destination, void 0);
14251
+ SUBRULE(graphRefAll, ast.destination);
14231
14252
  }
14232
14253
  };
14233
14254
  function copyMoveAddOperation(operation) {
@@ -14236,9 +14257,9 @@ function copyMoveAddOperation(operation) {
14236
14257
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION }) => (C) => {
14237
14258
  const op = CONSUME(operation);
14238
14259
  const silent2 = OPTION(() => CONSUME(silent));
14239
- const source = SUBRULE1(graphOrDefault, void 0);
14260
+ const source = SUBRULE1(graphOrDefault);
14240
14261
  CONSUME(to);
14241
- const destination = SUBRULE2(graphOrDefault, void 0);
14262
+ const destination = SUBRULE2(graphOrDefault);
14242
14263
  return ACTION(() => C.factory.updateOperationAddMoveCopy(
14243
14264
  unCapitalize(operation.name),
14244
14265
  source,
@@ -14254,9 +14275,9 @@ function copyMoveAddOperation(operation) {
14254
14275
  PRINT_WORD("SILENT");
14255
14276
  }
14256
14277
  });
14257
- SUBRULE(graphRefAll, ast.source, void 0);
14278
+ SUBRULE(graphRefAll, ast.source);
14258
14279
  F2.printFilter(ast, () => PRINT_WORD("TO"));
14259
- SUBRULE(graphRefAll, ast.destination, void 0);
14280
+ SUBRULE(graphRefAll, ast.destination);
14260
14281
  }
14261
14282
  };
14262
14283
  }
@@ -14267,7 +14288,7 @@ var quadPattern = {
14267
14288
  name: "quadPattern",
14268
14289
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
14269
14290
  const open = CONSUME(symbols_exports.LCurly);
14270
- const val = SUBRULE1(quads, void 0);
14291
+ const val = SUBRULE1(quads);
14271
14292
  const close = CONSUME(symbols_exports.RCurly);
14272
14293
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14273
14294
  }
@@ -14277,7 +14298,7 @@ var quadData = {
14277
14298
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
14278
14299
  const open = CONSUME(symbols_exports.LCurly);
14279
14300
  const couldParseVars = ACTION(() => C.parseMode.delete("canParseVars"));
14280
- const val = SUBRULE1(quads, void 0);
14301
+ const val = SUBRULE1(quads);
14281
14302
  ACTION(() => couldParseVars && C.parseMode.add("canParseVars"));
14282
14303
  const close = CONSUME(symbols_exports.RCurly);
14283
14304
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
@@ -14293,7 +14314,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14293
14314
  if (name !== "insertData") {
14294
14315
  couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14295
14316
  }
14296
- const data = SUBRULE1(dataRule, void 0);
14317
+ const data = SUBRULE1(dataRule);
14297
14318
  if (name !== "insertData") {
14298
14319
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14299
14320
  }
@@ -14304,7 +14325,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14304
14325
  subType === "insertdata" ? "INSERT DATA" : subType === "deletedata" ? "DELETE DATA" : "DELETE WHERE",
14305
14326
  "{"
14306
14327
  ));
14307
- SUBRULE(quads, F2.wrap(ast.data, ast.loc), void 0);
14328
+ SUBRULE(quads, F2.wrap(ast.data, ast.loc));
14308
14329
  F2.printFilter(ast, () => PRINT_WORD("}"));
14309
14330
  }
14310
14331
  };
@@ -14317,23 +14338,23 @@ var modify = {
14317
14338
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {
14318
14339
  const graph2 = OPTION1(() => {
14319
14340
  const withToken = CONSUME(modifyWith);
14320
- const graph3 = SUBRULE1(iri2, void 0);
14341
+ const graph3 = SUBRULE1(iri2);
14321
14342
  return { withToken, graph: graph3 };
14322
14343
  });
14323
14344
  const { insert, del } = OR([
14324
14345
  { ALT: () => {
14325
- const del2 = SUBRULE1(deleteClause2, void 0);
14326
- const insert2 = OPTION2(() => SUBRULE1(insertClause2, void 0));
14346
+ const del2 = SUBRULE1(deleteClause2);
14347
+ const insert2 = OPTION2(() => SUBRULE1(insertClause2));
14327
14348
  return { del: del2, insert: insert2 };
14328
14349
  } },
14329
14350
  { ALT: () => {
14330
- const insert2 = SUBRULE2(insertClause2, void 0);
14351
+ const insert2 = SUBRULE2(insertClause2);
14331
14352
  return { insert: insert2, del: void 0 };
14332
14353
  } }
14333
14354
  ]);
14334
- const using = SUBRULE1(usingClauseStar, void 0);
14355
+ const using = SUBRULE1(usingClauseStar);
14335
14356
  CONSUME(where);
14336
- const where2 = SUBRULE1(groupGraphPattern, void 0);
14357
+ const where2 = SUBRULE1(groupGraphPattern);
14337
14358
  return ACTION(() => C.factory.updateOperationModify(
14338
14359
  C.factory.sourceLocation(graph2?.withToken, del, insert, where2),
14339
14360
  insert?.val ?? [],
@@ -14346,21 +14367,21 @@ var modify = {
14346
14367
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14347
14368
  if (ast.graph) {
14348
14369
  F2.printFilter(ast, () => PRINT_WORD("WITH"));
14349
- SUBRULE(iri2, ast.graph, void 0);
14370
+ SUBRULE(iri2, ast.graph);
14350
14371
  }
14351
14372
  if (ast.delete.length > 0) {
14352
14373
  F2.printFilter(ast, () => PRINT_WORD("DELETE", "{"));
14353
- SUBRULE(quads, F2.wrap(ast.delete, ast.loc), void 0);
14374
+ SUBRULE(quads, F2.wrap(ast.delete, ast.loc));
14354
14375
  F2.printFilter(ast, () => PRINT_WORD("}"));
14355
14376
  }
14356
14377
  if (ast.insert.length > 0) {
14357
14378
  F2.printFilter(ast, () => PRINT_WORD("INSERT", "{"));
14358
- SUBRULE(quads, F2.wrap(ast.insert, ast.loc), void 0);
14379
+ SUBRULE(quads, F2.wrap(ast.insert, ast.loc));
14359
14380
  F2.printFilter(ast, () => PRINT_WORD("}"));
14360
14381
  }
14361
- SUBRULE(usingClauseStar, ast.from, void 0);
14382
+ SUBRULE(usingClauseStar, ast.from);
14362
14383
  F2.printFilter(ast, () => PRINT_WORD("WHERE"));
14363
- SUBRULE(groupGraphPattern, ast.where, void 0);
14384
+ SUBRULE(groupGraphPattern, ast.where);
14364
14385
  }
14365
14386
  };
14366
14387
  var deleteClause2 = {
@@ -14368,7 +14389,7 @@ var deleteClause2 = {
14368
14389
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14369
14390
  const delToken = CONSUME(deleteClause);
14370
14391
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14371
- const del = SUBRULE(quadPattern, void 0);
14392
+ const del = SUBRULE(quadPattern);
14372
14393
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14373
14394
  return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
14374
14395
  }
@@ -14377,7 +14398,7 @@ var insertClause2 = {
14377
14398
  name: "insertClause",
14378
14399
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14379
14400
  const insertToken = CONSUME(insertClause);
14380
- const insert = SUBRULE(quadPattern, void 0);
14401
+ const insert = SUBRULE(quadPattern);
14381
14402
  return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
14382
14403
  }
14383
14404
  };
@@ -14390,7 +14411,7 @@ var graphOrDefault = {
14390
14411
  } },
14391
14412
  { ALT: () => {
14392
14413
  const graph2 = OPTION(() => CONSUME(graph_exports.graph));
14393
- const name = SUBRULE1(iri2, void 0);
14414
+ const name = SUBRULE1(iri2);
14394
14415
  return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph2, name)));
14395
14416
  } }
14396
14417
  ])
@@ -14399,18 +14420,18 @@ var graphRef = {
14399
14420
  name: "graphRef",
14400
14421
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14401
14422
  const graph2 = CONSUME(graph_exports.graph);
14402
- const val = SUBRULE(iri2, void 0);
14423
+ const val = SUBRULE(iri2);
14403
14424
  return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph2, val)));
14404
14425
  },
14405
14426
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14406
14427
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
14407
- SUBRULE(iri2, ast.graph, void 0);
14428
+ SUBRULE(iri2, ast.graph);
14408
14429
  }
14409
14430
  };
14410
14431
  var graphRefAll = {
14411
14432
  name: "graphRefAll",
14412
14433
  impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
14413
- { ALT: () => SUBRULE(graphRef, void 0) },
14434
+ { ALT: () => SUBRULE(graphRef) },
14414
14435
  { ALT: () => {
14415
14436
  const def = CONSUME(graph_exports.default_);
14416
14437
  return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
@@ -14426,7 +14447,7 @@ var graphRefAll = {
14426
14447
  ]),
14427
14448
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14428
14449
  if (F2.isGraphRefSpecific(ast)) {
14429
- SUBRULE(graphRef, ast, void 0);
14450
+ SUBRULE(graphRef, ast);
14430
14451
  } else if (F2.isGraphRefDefault(ast)) {
14431
14452
  F2.printFilter(ast, () => PRINT_WORD("DEFAULT"));
14432
14453
  } else if (F2.isGraphRefNamed(ast)) {
@@ -14442,12 +14463,12 @@ var quads = {
14442
14463
  const quads2 = [];
14443
14464
  let last2;
14444
14465
  OPTION1(() => {
14445
- const triples = SUBRULE1(triplesTemplate, void 0);
14466
+ const triples = SUBRULE1(triplesTemplate);
14446
14467
  last2 = triples;
14447
14468
  ACTION(() => quads2.push(triples));
14448
14469
  });
14449
14470
  MANY(() => {
14450
- const notTriples = SUBRULE(quadsNotTriples, void 0);
14471
+ const notTriples = SUBRULE(quadsNotTriples);
14451
14472
  last2 = notTriples;
14452
14473
  quads2.push(notTriples);
14453
14474
  OPTION2(() => {
@@ -14456,7 +14477,7 @@ var quads = {
14456
14477
  return dotToken;
14457
14478
  });
14458
14479
  OPTION3(() => {
14459
- const triples = SUBRULE2(triplesTemplate, void 0);
14480
+ const triples = SUBRULE2(triplesTemplate);
14460
14481
  last2 = triples;
14461
14482
  ACTION(() => quads2.push(triples));
14462
14483
  });
@@ -14466,9 +14487,9 @@ var quads = {
14466
14487
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
14467
14488
  for (const quad of ast.val) {
14468
14489
  if (F2.isPattern(quad)) {
14469
- SUBRULE(triplesBlock, quad, void 0);
14490
+ SUBRULE(triplesBlock, quad);
14470
14491
  } else {
14471
- SUBRULE(quadsNotTriples, quad, void 0);
14492
+ SUBRULE(quadsNotTriples, quad);
14472
14493
  }
14473
14494
  }
14474
14495
  }
@@ -14477,9 +14498,9 @@ var quadsNotTriples = {
14477
14498
  name: "quadsNotTriples",
14478
14499
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14479
14500
  const graph2 = CONSUME(graph_exports.graph);
14480
- const name = SUBRULE1(varOrIri, void 0);
14501
+ const name = SUBRULE1(varOrIri);
14481
14502
  CONSUME(symbols_exports.LCurly);
14482
- const triples = OPTION(() => SUBRULE1(triplesTemplate, void 0));
14503
+ const triples = OPTION(() => SUBRULE1(triplesTemplate));
14483
14504
  const close = CONSUME(symbols_exports.RCurly);
14484
14505
  return ACTION(() => C.factory.graphQuads(
14485
14506
  name,
@@ -14489,9 +14510,9 @@ var quadsNotTriples = {
14489
14510
  },
14490
14511
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14491
14512
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
14492
- SUBRULE(varOrTerm, ast.graph, void 0);
14513
+ SUBRULE(varOrTerm, ast.graph);
14493
14514
  F2.printFilter(ast, () => PRINT_WORD("{"));
14494
- SUBRULE(triplesBlock, ast.triples, void 0);
14515
+ SUBRULE(triplesBlock, ast.triples);
14495
14516
  F2.printFilter(ast, () => PRINT_WORD("}"));
14496
14517
  }
14497
14518
  };
@@ -14514,10 +14535,10 @@ var SparqlParser = class {
14514
14535
  this.F = new Factory();
14515
14536
  }
14516
14537
  parse(query2, context = {}) {
14517
- return this.parser.queryOrUpdate(query2, completeParseContext(context), void 0);
14538
+ return this.parser.queryOrUpdate(query2, completeParseContext(context));
14518
14539
  }
14519
14540
  parsePath(query2, context = {}) {
14520
- const result = this.parser.path(query2, completeParseContext(context), void 0);
14541
+ const result = this.parser.path(query2, completeParseContext(context));
14521
14542
  if (this.F.isPathPure(result)) {
14522
14543
  return {
14523
14544
  ...result,
@@ -14527,29 +14548,6 @@ var SparqlParser = class {
14527
14548
  return result;
14528
14549
  }
14529
14550
  };
14530
-
14531
- // lib/utils.ts
14532
- function sparqlCodepointEscape(input) {
14533
- const sanitizedInput = input.replaceAll(
14534
- /\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{8})/gu,
14535
- (_, unicode4, unicode8) => {
14536
- if (unicode4) {
14537
- const charCode2 = Number.parseInt(unicode4, 16);
14538
- return String.fromCodePoint(charCode2);
14539
- }
14540
- const charCode = Number.parseInt(unicode8, 16);
14541
- if (charCode < 65535) {
14542
- return String.fromCodePoint(charCode);
14543
- }
14544
- const substractedCharCode = charCode - 65536;
14545
- return String.fromCodePoint(55296 + (substractedCharCode >> 10), 56320 + (substractedCharCode & 1023));
14546
- }
14547
- );
14548
- if (/[\uD800-\uDBFF](?:[^\uDC00-\uDFFF]|$)/u.test(sanitizedInput)) {
14549
- throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);
14550
- }
14551
- return sanitizedInput;
14552
- }
14553
14551
  /*! Bundled license information:
14554
14552
 
14555
14553
  lodash-es/lodash.js: