@traqula/parser-sparql-1-1-adjust 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.
package/lib/index.cjs CHANGED
@@ -9491,7 +9491,7 @@ var DynamicParser = class extends EmbeddedActionsParser {
9491
9491
  this.performSelfAnalysis();
9492
9492
  }
9493
9493
  constructSelfRef() {
9494
- const subRuleImpl = (chevrotainSubrule) => (cstDef, arg) => chevrotainSubrule(this[cstDef.name], { ARGS: [this.context, arg] });
9494
+ const subRuleImpl = (chevrotainSubrule) => (cstDef, ...arg) => chevrotainSubrule(this[cstDef.name], { ARGS: [this.context, ...arg] });
9495
9495
  return {
9496
9496
  CONSUME: (tokenType, option) => this.CONSUME(tokenType, option),
9497
9497
  CONSUME1: (tokenType, option) => this.CONSUME1(tokenType, option),
@@ -9678,7 +9678,7 @@ var ParserBuilder = class _ParserBuilder {
9678
9678
  const firstError = errors[0];
9679
9679
  const messageBuilder = ["Parse error"];
9680
9680
  const lineIdx = firstError.token.startLine;
9681
- if (lineIdx !== void 0) {
9681
+ if (lineIdx !== void 0 && !Number.isNaN(lineIdx)) {
9682
9682
  const errorLine = input.split("\n")[lineIdx - 1];
9683
9683
  messageBuilder.push(` on line ${lineIdx}
9684
9684
  ${errorLine}`);
@@ -9713,12 +9713,12 @@ ${firstError.message}`);
9713
9713
  });
9714
9714
  const selfSufficientParser = {};
9715
9715
  for (const rule of Object.values(this.rules)) {
9716
- selfSufficientParser[rule.name] = (input, context, arg) => {
9716
+ selfSufficientParser[rule.name] = (input, context, ...args) => {
9717
9717
  const processedInput = queryPreProcessor(input);
9718
9718
  const lexResult = lexer.tokenize(processedInput);
9719
9719
  parser.input = lexResult.tokens;
9720
9720
  parser.setContext(context);
9721
- const result = parser[rule.name](context, arg);
9721
+ const result = parser[rule.name](context, ...args);
9722
9722
  if (parser.errors.length > 0) {
9723
9723
  if (errorHandler) {
9724
9724
  errorHandler(parser.errors);
@@ -11637,6 +11637,29 @@ function updateNoReuseBlankNodeLabels(updateQuery) {
11637
11637
  }
11638
11638
  }
11639
11639
 
11640
+ // ../../packages/rules-sparql-1-1/lib/utils.ts
11641
+ function sparqlCodepointEscape(input) {
11642
+ const sanitizedInput = input.replaceAll(
11643
+ /\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{8})/gu,
11644
+ (_, unicode4, unicode8) => {
11645
+ if (unicode4) {
11646
+ const charCode2 = Number.parseInt(unicode4, 16);
11647
+ return String.fromCodePoint(charCode2);
11648
+ }
11649
+ const charCode = Number.parseInt(unicode8, 16);
11650
+ if (charCode < 65535) {
11651
+ return String.fromCodePoint(charCode);
11652
+ }
11653
+ const substractedCharCode = charCode - 65536;
11654
+ return String.fromCodePoint(55296 + (substractedCharCode >> 10), 56320 + (substractedCharCode & 1023));
11655
+ }
11656
+ );
11657
+ if (/[\uD800-\uDBFF](?:[^\uDC00-\uDFFF]|$)/u.test(sanitizedInput)) {
11658
+ throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);
11659
+ }
11660
+ return sanitizedInput;
11661
+ }
11662
+
11640
11663
  // ../../packages/rules-sparql-1-1/lib/grammar/literals.ts
11641
11664
  function stringEscapedLexical(str2) {
11642
11665
  const lexical = str2.replaceAll(/["\\\t\n\r\b\f]/gu, (char) => {
@@ -11664,7 +11687,7 @@ function stringEscapedLexical(str2) {
11664
11687
  var rdfLiteral = {
11665
11688
  name: "rdfLiteral",
11666
11689
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
11667
- const value = SUBRULE1(string, void 0);
11690
+ const value = SUBRULE1(string);
11668
11691
  return OPTION(() => OR([
11669
11692
  { ALT: () => {
11670
11693
  const lang2 = CONSUME(terminals_exports.langTag);
@@ -11676,7 +11699,7 @@ var rdfLiteral = {
11676
11699
  } },
11677
11700
  { ALT: () => {
11678
11701
  CONSUME(symbols_exports.hathat);
11679
- const iriVal = SUBRULE1(iri2, void 0);
11702
+ const iriVal = SUBRULE1(iri2);
11680
11703
  return ACTION(() => C.factory.literalTerm(
11681
11704
  C.factory.sourceLocation(value, iriVal),
11682
11705
  value.value,
@@ -11692,7 +11715,7 @@ var rdfLiteral = {
11692
11715
  factory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11693
11716
  } else {
11694
11717
  factory.printFilter(ast, () => PRINT("^^"));
11695
- SUBRULE(iri2, ast.langOrIri, void 0);
11718
+ SUBRULE(iri2, ast.langOrIri);
11696
11719
  }
11697
11720
  }
11698
11721
  }
@@ -11700,9 +11723,9 @@ var rdfLiteral = {
11700
11723
  var numericLiteral = {
11701
11724
  name: "numericLiteral",
11702
11725
  impl: ({ SUBRULE, OR }) => () => OR([
11703
- { ALT: () => SUBRULE(numericLiteralUnsigned, void 0) },
11704
- { ALT: () => SUBRULE(numericLiteralPositive, void 0) },
11705
- { ALT: () => SUBRULE(numericLiteralNegative, void 0) }
11726
+ { ALT: () => SUBRULE(numericLiteralUnsigned) },
11727
+ { ALT: () => SUBRULE(numericLiteralPositive) },
11728
+ { ALT: () => SUBRULE(numericLiteralNegative) }
11706
11729
  ])
11707
11730
  };
11708
11731
  var numericLiteralUnsigned = {
@@ -11810,10 +11833,10 @@ var string = {
11810
11833
  var iri2 = {
11811
11834
  name: "iri",
11812
11835
  impl: ({ SUBRULE, OR }) => () => OR([
11813
- { ALT: () => SUBRULE(iriFull, void 0) },
11814
- { ALT: () => SUBRULE(prefixedName, void 0) }
11836
+ { ALT: () => SUBRULE(iriFull) },
11837
+ { ALT: () => SUBRULE(prefixedName) }
11815
11838
  ]),
11816
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => F2.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast, void 0) : SUBRULE(iriFull, ast, void 0)
11839
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => F2.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11817
11840
  };
11818
11841
  var iriFull = {
11819
11842
  name: "iriFull",
@@ -11885,11 +11908,11 @@ function datasetClauseUsing(name, token) {
11885
11908
  const start = CONSUME(token);
11886
11909
  return OR([
11887
11910
  { ALT: () => {
11888
- const iri3 = SUBRULE(defaultGraphClause, void 0);
11911
+ const iri3 = SUBRULE(defaultGraphClause);
11889
11912
  return ACTION(() => C.factory.wrap({ clauseType: "default", value: iri3 }, C.factory.sourceLocation(start, iri3)));
11890
11913
  } },
11891
11914
  { ALT: () => {
11892
- const namedClause = SUBRULE(namedGraphClause, void 0);
11915
+ const namedClause = SUBRULE(namedGraphClause);
11893
11916
  return ACTION(() => C.factory.wrap({
11894
11917
  clauseType: "named",
11895
11918
  value: namedClause.val
@@ -11902,7 +11925,7 @@ function datasetClauseUsing(name, token) {
11902
11925
  var datasetClause = datasetClauseUsing("datasetClause", from);
11903
11926
  var defaultGraphClause = {
11904
11927
  name: "defaultGraphClause",
11905
- impl: ({ SUBRULE }) => () => SUBRULE(sourceSelector, void 0)
11928
+ impl: ({ SUBRULE }) => () => SUBRULE(sourceSelector)
11906
11929
  };
11907
11930
  var usingClause2 = datasetClauseUsing("usingClause", usingClause);
11908
11931
  function datasetClauseUsingStar(name, subRule, fromUsing) {
@@ -11911,7 +11934,7 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11911
11934
  impl: ({ ACTION, MANY, SUBRULE }) => (C) => {
11912
11935
  const clauses = [];
11913
11936
  MANY(() => {
11914
- const clause = SUBRULE(subRule, void 0);
11937
+ const clause = SUBRULE(subRule);
11915
11938
  clauses.push(clause);
11916
11939
  });
11917
11940
  return ACTION(() => C.factory.datasetClauses(
@@ -11925,7 +11948,7 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11925
11948
  if (clause.clauseType === "named") {
11926
11949
  F2.printFilter(ast, () => PRINT_WORD("NAMED"));
11927
11950
  }
11928
- SUBRULE(iri2, clause.value, void 0);
11951
+ SUBRULE(iri2, clause.value);
11929
11952
  }
11930
11953
  }
11931
11954
  };
@@ -11936,1389 +11959,1390 @@ var namedGraphClause = {
11936
11959
  name: "namedGraphClause",
11937
11960
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11938
11961
  const named2 = CONSUME(graph_exports.named);
11939
- const iri3 = SUBRULE(sourceSelector, void 0);
11962
+ const iri3 = SUBRULE(sourceSelector);
11940
11963
  return ACTION(() => C.factory.wrap(iri3, C.factory.sourceLocation(named2, iri3)));
11941
11964
  }
11942
11965
  };
11943
11966
  var sourceSelector = {
11944
11967
  name: "sourceSelector",
11945
- impl: ({ SUBRULE }) => () => SUBRULE(iri2, void 0)
11968
+ impl: ({ SUBRULE }) => () => SUBRULE(iri2)
11946
11969
  };
11947
11970
 
11948
- // ../../packages/rules-sparql-1-1/lib/grammar/general.ts
11949
- var prologue = {
11950
- name: "prologue",
11951
- impl: ({ SUBRULE, MANY, OR }) => () => {
11952
- const result = [];
11953
- MANY(() => OR([
11954
- { ALT: () => result.push(SUBRULE(baseDecl2, void 0)) },
11955
- // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
11956
- // We might need to check this.
11957
- { ALT: () => result.push(SUBRULE(prefixDecl2, void 0)) }
11958
- ]));
11959
- return result;
11960
- },
11961
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
11962
- for (const context of ast) {
11963
- if (F2.isContextDefinitionBase(context)) {
11964
- SUBRULE(baseDecl2, context, void 0);
11965
- } else if (F2.isContextDefinitionPrefix(context)) {
11966
- SUBRULE(prefixDecl2, context, void 0);
11967
- }
11971
+ // ../../packages/rules-sparql-1-1/lib/expressionHelpers.ts
11972
+ function funcExpr1(func) {
11973
+ return {
11974
+ name: unCapitalize(func.name),
11975
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11976
+ const operator = CONSUME(func);
11977
+ CONSUME(symbols_exports.LParen);
11978
+ const arg = SUBRULE(expression);
11979
+ const close = CONSUME(symbols_exports.RParen);
11980
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11968
11981
  }
11969
- }
11970
- };
11971
- var baseDecl2 = {
11972
- name: "baseDecl",
11973
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11974
- const base = CONSUME(baseDecl);
11975
- const val = SUBRULE(iriFull, void 0);
11976
- return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
11977
- },
11978
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
11979
- F2.printFilter(ast, () => PRINT_WORD("BASE"));
11980
- SUBRULE(iri2, ast.value, void 0);
11981
- }
11982
- };
11983
- var prefixDecl2 = {
11984
- name: "prefixDecl",
11985
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11986
- const prefix = CONSUME(prefixDecl);
11987
- const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
11988
- const value = SUBRULE(iriFull, void 0);
11989
- return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
11990
- },
11991
- gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F2 }) => {
11992
- F2.printFilter(ast, () => {
11993
- PRINT_WORDS("PREFIX", `${ast.key}:`);
11994
- });
11995
- SUBRULE(iri2, ast.value, void 0);
11996
- }
11997
- };
11998
- var verb = {
11999
- name: "verb",
12000
- impl: ({ SUBRULE, OR }) => () => OR([
12001
- { ALT: () => SUBRULE(varOrIri, void 0) },
12002
- { ALT: () => SUBRULE(verbA, void 0) }
12003
- ])
12004
- };
12005
- var varOrTerm = {
12006
- name: "varOrTerm",
12007
- impl: ({ SUBRULE, OR }) => (C) => OR([
12008
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_, void 0) },
12009
- { ALT: () => SUBRULE(graphTerm, void 0) }
12010
- ]),
12011
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12012
- if (F2.isTermVariable(ast)) {
12013
- return SUBRULE(var_, ast, void 0);
11982
+ };
11983
+ }
11984
+ function funcExpr2(func) {
11985
+ return {
11986
+ name: unCapitalize(func.name),
11987
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {
11988
+ const operator = CONSUME(func);
11989
+ CONSUME(symbols_exports.LParen);
11990
+ const arg1 = SUBRULE1(expression);
11991
+ CONSUME(symbols_exports.comma);
11992
+ const arg2 = SUBRULE2(expression);
11993
+ const close = CONSUME(symbols_exports.RParen);
11994
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
12014
11995
  }
12015
- return SUBRULE(graphTerm, ast, void 0);
12016
- }
12017
- };
12018
- var varOrIri = {
12019
- name: "varOrIri",
12020
- impl: ({ SUBRULE, OR }) => (C) => OR([
12021
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_, void 0) },
12022
- { ALT: () => SUBRULE(iri2, void 0) }
12023
- ])
12024
- };
12025
- var var_ = {
12026
- name: "var",
12027
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
12028
- const varToken = OR([
12029
- { ALT: () => CONSUME(terminals_exports.var1) },
12030
- { ALT: () => CONSUME(terminals_exports.var2) }
12031
- ]);
12032
- return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
12033
- },
12034
- gImpl: ({ PRINT_WORD }) => (ast, { factory: F2 }) => {
12035
- F2.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
12036
- }
12037
- };
12038
- var graphTerm = {
12039
- name: "graphTerm",
12040
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
12041
- { ALT: () => SUBRULE(iri2, void 0) },
12042
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
12043
- { ALT: () => SUBRULE(numericLiteral, void 0) },
12044
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
12045
- { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode, void 0) },
12046
- { ALT: () => {
12047
- const tokenNil = CONSUME(terminals_exports.nil);
12048
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
12049
- } }
12050
- ]),
12051
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12052
- if (F2.isTermNamed(ast)) {
12053
- SUBRULE(iri2, ast, void 0);
12054
- } else if (F2.isTermLiteral(ast)) {
12055
- SUBRULE(rdfLiteral, ast, void 0);
12056
- } else if (F2.isTermBlank(ast)) {
12057
- SUBRULE(blankNode, ast, void 0);
11996
+ };
11997
+ }
11998
+ function funcExpr3(func) {
11999
+ return {
12000
+ name: unCapitalize(func.name),
12001
+ impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {
12002
+ const operator = CONSUME(func);
12003
+ CONSUME(symbols_exports.LParen);
12004
+ const arg1 = SUBRULE1(expression);
12005
+ CONSUME1(symbols_exports.comma);
12006
+ const arg2 = SUBRULE2(expression);
12007
+ CONSUME2(symbols_exports.comma);
12008
+ const arg3 = SUBRULE3(expression);
12009
+ const close = CONSUME(symbols_exports.RParen);
12010
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
12058
12011
  }
12059
- }
12060
- };
12061
-
12062
- // ../../packages/rules-sparql-1-1/lib/grammar/propertyPaths.ts
12063
- var path = {
12064
- name: "path",
12065
- impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative, void 0)
12066
- };
12067
- var pathGenerator = {
12068
- name: "path",
12069
- gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F2 }, braces = true) => {
12070
- if (F2.isTerm(ast) && F2.isTermNamed(ast)) {
12071
- SUBRULE(iri2, ast, void 0);
12072
- } else {
12073
- F2.printFilter(ast, () => braces && PRINT("("));
12074
- switch (ast.subType) {
12075
- case "|":
12076
- case "/": {
12077
- const [head2, ...tail] = ast.items;
12078
- SUBRULE(pathGenerator, head2, braces);
12079
- for (const val of tail) {
12080
- F2.printFilter(ast, () => PRINT(ast.subType));
12081
- SUBRULE(pathGenerator, val, braces);
12082
- }
12083
- break;
12084
- }
12085
- case "^":
12086
- F2.printFilter(ast, () => PRINT("^"));
12087
- SUBRULE(pathGenerator, ast.items[0], braces);
12088
- break;
12089
- case "?":
12090
- case "*":
12091
- case "+":
12092
- SUBRULE(pathGenerator, ast.items[0], braces);
12093
- F2.printFilter(ast, () => PRINT(ast.subType));
12094
- break;
12095
- case "!":
12096
- F2.printFilter(ast, () => PRINT("!"));
12097
- F2.printFilter(ast, () => PRINT("("));
12098
- SUBRULE(pathGenerator, ast.items[0], false);
12099
- F2.printFilter(ast, () => PRINT(")"));
12100
- break;
12101
- }
12102
- F2.printFilter(ast, () => braces && PRINT(")"));
12012
+ };
12013
+ }
12014
+ function funcVar1(func) {
12015
+ return {
12016
+ name: unCapitalize(func.name),
12017
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12018
+ const operator = CONSUME(func);
12019
+ CONSUME(symbols_exports.LParen);
12020
+ const arg = SUBRULE(var_);
12021
+ const close = CONSUME(symbols_exports.RParen);
12022
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12103
12023
  }
12104
- }
12105
- };
12106
- function pathChainHelper(name, SEP, subType, subRule) {
12024
+ };
12025
+ }
12026
+ function funcExprOrNil1(func) {
12107
12027
  return {
12108
- name,
12109
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, MANY }) => (C) => {
12110
- const head2 = SUBRULE1(subRule, void 0);
12111
- let tailEnd = head2;
12112
- const tail = [];
12113
- MANY(() => {
12114
- CONSUME(SEP);
12115
- tailEnd = SUBRULE2(subRule, void 0);
12116
- tail.push(tailEnd);
12028
+ name: unCapitalize(func.name),
12029
+ impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
12030
+ const operator = CONSUME(func);
12031
+ return OR([
12032
+ { ALT: () => {
12033
+ CONSUME(symbols_exports.LParen);
12034
+ const arg = SUBRULE(expression);
12035
+ const close = CONSUME(symbols_exports.RParen);
12036
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12037
+ } },
12038
+ { ALT: () => {
12039
+ const nil2 = CONSUME(terminals_exports.nil);
12040
+ return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12041
+ } }
12042
+ ]);
12043
+ }
12044
+ };
12045
+ }
12046
+ function funcNil1(func) {
12047
+ return {
12048
+ name: unCapitalize(func.name),
12049
+ impl: ({ ACTION, CONSUME }) => (C) => {
12050
+ const operator = CONSUME(func);
12051
+ const nil2 = CONSUME(terminals_exports.nil);
12052
+ return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12053
+ }
12054
+ };
12055
+ }
12056
+ function funcExprList1(func) {
12057
+ return {
12058
+ name: unCapitalize(func.name),
12059
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12060
+ const operator = CONSUME(func);
12061
+ const args = SUBRULE(expressionList);
12062
+ return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
12063
+ }
12064
+ };
12065
+ }
12066
+ function funcExpr2or3(func) {
12067
+ return {
12068
+ name: unCapitalize(func.name),
12069
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => (C) => {
12070
+ const operator = CONSUME(func);
12071
+ CONSUME(symbols_exports.LParen);
12072
+ const arg1 = SUBRULE1(expression);
12073
+ CONSUME1(symbols_exports.comma);
12074
+ const arg2 = SUBRULE2(expression);
12075
+ const arg3 = OPTION(() => {
12076
+ CONSUME2(symbols_exports.comma);
12077
+ return SUBRULE3(expression);
12117
12078
  });
12118
- return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12079
+ const close = CONSUME(symbols_exports.RParen);
12080
+ return ACTION(() => C.factory.expressionOperation(
12081
+ operator.image,
12082
+ arg3 ? [arg1, arg2, arg3] : [arg1, arg2],
12083
+ C.factory.sourceLocation(operator, close)
12084
+ ));
12119
12085
  }
12120
12086
  };
12121
12087
  }
12122
- var pathEltOrInverse = {
12123
- name: "pathEltOrInverse",
12124
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR }) => (C) => OR([
12125
- { ALT: () => SUBRULE1(pathElt, void 0) },
12126
- { ALT: () => {
12127
- const hat2 = CONSUME(symbols_exports.hat);
12128
- const item = SUBRULE2(pathElt, void 0);
12129
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12130
- } }
12131
- ])
12132
- };
12133
- var pathSequence = pathChainHelper("pathSequence", symbols_exports.slash, "/", pathEltOrInverse);
12134
- var pathAlternative = pathChainHelper("pathAlternative", symbols_exports.pipe, "|", pathSequence);
12135
- var pathElt = {
12136
- name: "pathElt",
12137
- impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12138
- const item = SUBRULE(pathPrimary, void 0);
12139
- const modification = OPTION(() => SUBRULE(pathMod, void 0));
12140
- return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12141
- }
12142
- };
12143
- var pathMod = {
12144
- name: "pathMod",
12145
- impl: ({ CONSUME, OR }) => () => OR([
12146
- { ALT: () => CONSUME(symbols_exports.question) },
12147
- { ALT: () => CONSUME(symbols_exports.star) },
12148
- { ALT: () => CONSUME(symbols_exports.opPlus) }
12149
- ])
12150
- };
12151
- var pathPrimary = {
12152
- name: "pathPrimary",
12153
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12154
- { ALT: () => SUBRULE(iri2, void 0) },
12155
- { ALT: () => SUBRULE(verbA, void 0) },
12156
- { ALT: () => SUBRULE(pathNegatedPropertySet, void 0) },
12157
- { ALT: () => {
12088
+ function funcExpr3or4(func) {
12089
+ return {
12090
+ name: unCapitalize(func.name),
12091
+ impl: ({
12092
+ ACTION,
12093
+ CONSUME,
12094
+ SUBRULE1,
12095
+ SUBRULE2,
12096
+ SUBRULE3,
12097
+ SUBRULE4,
12098
+ CONSUME1,
12099
+ OPTION,
12100
+ CONSUME2,
12101
+ CONSUME3
12102
+ }) => (C) => {
12103
+ const operator = CONSUME(func);
12158
12104
  CONSUME(symbols_exports.LParen);
12159
- const resRecursive = SUBRULE(path, void 0);
12160
- CONSUME(symbols_exports.RParen);
12161
- return resRecursive;
12162
- } }
12163
- ])
12164
- };
12165
- var pathNegatedPropertySet = {
12166
- name: "pathNegatedPropertySet",
12167
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, OR, MANY }) => (C) => {
12168
- const exclamation2 = CONSUME(symbols_exports.exclamation);
12169
- return OR([
12170
- { ALT: () => {
12171
- const noAlternative = SUBRULE1(pathOneInPropertySet, void 0);
12172
- return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12173
- } },
12174
- { ALT: () => {
12175
- const open = CONSUME(symbols_exports.LParen);
12176
- const head2 = SUBRULE2(pathOneInPropertySet, void 0);
12177
- const tail = [];
12178
- MANY(() => {
12179
- CONSUME(symbols_exports.pipe);
12180
- const item = SUBRULE3(pathOneInPropertySet, void 0);
12181
- tail.push(item);
12182
- });
12183
- const close = CONSUME(symbols_exports.RParen);
12184
- return ACTION(() => {
12185
- const F2 = C.factory;
12186
- if (tail.length === 0) {
12187
- return F2.path("!", [head2], F2.sourceLocation(exclamation2, close));
12188
- }
12189
- return F2.path(
12190
- "!",
12191
- [F2.path("|", [head2, ...tail], F2.sourceLocation(open, close))],
12192
- F2.sourceLocation(exclamation2, close)
12193
- );
12194
- });
12195
- } }
12196
- ]);
12197
- }
12198
- };
12199
- var pathOneInPropertySet = {
12200
- name: "pathOneInPropertySet",
12201
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
12202
- { ALT: () => SUBRULE1(iri2, void 0) },
12203
- { ALT: () => SUBRULE1(verbA, void 0) },
12204
- { ALT: () => {
12205
- const hat2 = CONSUME(symbols_exports.hat);
12206
- const item = OR2([
12207
- { ALT: () => SUBRULE2(iri2, void 0) },
12208
- { ALT: () => SUBRULE2(verbA, void 0) }
12209
- ]);
12210
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12211
- } }
12212
- ])
12213
- };
12214
-
12215
- // ../../packages/rules-sparql-1-1/lib/grammar/tripleBlock.ts
12216
- function triplesDotSeperated(triplesSameSubjectSubrule) {
12217
- return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
12218
- const triples = [];
12219
- let parsedDot = true;
12220
- let dotToken;
12221
- AT_LEAST_ONE({
12222
- GATE: () => parsedDot,
12223
- DEF: () => {
12224
- parsedDot = false;
12225
- const template = SUBRULE(triplesSameSubjectSubrule, void 0);
12226
- ACTION(() => {
12227
- triples.push(...template);
12228
- });
12229
- OPTION(() => {
12230
- dotToken = CONSUME(symbols_exports.dot);
12231
- parsedDot = true;
12232
- });
12233
- }
12234
- });
12235
- return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12236
- };
12237
- }
12238
- var triplesBlock = {
12239
- name: "triplesBlock",
12240
- impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, void 0),
12241
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12242
- for (const [index, triple] of ast.triples.entries()) {
12243
- HANDLE_LOC(triple, () => {
12244
- const nextTriple = ast.triples.at(index);
12245
- if (F2.isTripleCollection(triple)) {
12246
- SUBRULE(graphNodePath, triple, void 0);
12247
- F2.printFilter(triple, () => PRINT_WORD("."));
12248
- } else {
12249
- SUBRULE(graphNodePath, triple.subject, void 0);
12250
- if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12251
- SUBRULE(varOrTerm, triple.predicate, void 0);
12252
- } else {
12253
- SUBRULE(pathGenerator, triple.predicate, void 0);
12254
- }
12255
- SUBRULE(graphNodePath, triple.object, void 0);
12256
- if (nextTriple === void 0 || F2.isTripleCollection(nextTriple) || !F2.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12257
- F2.printFilter(ast, () => PRINT_WORD("."));
12258
- } else if (F2.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12259
- F2.printFilter(ast, () => PRINT_WORD(","));
12260
- } else {
12261
- F2.printFilter(ast, () => PRINT_WORD(";"));
12262
- }
12263
- }
12105
+ const arg1 = SUBRULE1(expression);
12106
+ CONSUME1(symbols_exports.comma);
12107
+ const arg2 = SUBRULE2(expression);
12108
+ CONSUME2(symbols_exports.comma);
12109
+ const arg3 = SUBRULE3(expression);
12110
+ const arg4 = OPTION(() => {
12111
+ CONSUME3(symbols_exports.comma);
12112
+ return SUBRULE4(expression);
12264
12113
  });
12114
+ const close = CONSUME(symbols_exports.RParen);
12115
+ return ACTION(() => C.factory.expressionOperation(
12116
+ operator.image,
12117
+ arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3],
12118
+ C.factory.sourceLocation(operator, close)
12119
+ ));
12265
12120
  }
12266
- }
12267
- };
12268
- function triplesSameSubjectImpl(name, allowPaths) {
12269
- return {
12270
- name,
12271
- impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12272
- { ALT: () => {
12273
- const subject = SUBRULE(varOrTerm, void 0);
12274
- const res = SUBRULE(
12275
- allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
12276
- { subject: ACTION(() => C.factory.dematerialized(subject)) }
12277
- );
12278
- return ACTION(() => {
12279
- if (res.length > 0) {
12280
- res[0].subject = subject;
12281
- res[0].loc = C.factory.sourceLocation(subject, res[0]);
12282
- }
12283
- return res;
12284
- });
12285
- } },
12286
- { ALT: () => {
12287
- const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode, void 0);
12288
- const restNode = SUBRULE(
12289
- allowPaths ? propertyListPath : propertyList,
12290
- { subject: ACTION(() => C.factory.graphNodeIdentifier(subjectNode)) }
12291
- );
12292
- return ACTION(() => {
12293
- if (restNode.length === 0) {
12294
- return [subjectNode];
12295
- }
12296
- restNode[0].subject = subjectNode;
12297
- restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12298
- return restNode;
12299
- });
12300
- } }
12301
- ])
12302
- };
12303
- }
12304
- var triplesSameSubject = triplesSameSubjectImpl("triplesSameSubject", false);
12305
- var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", true);
12306
- var triplesTemplate = {
12307
- name: "triplesTemplate",
12308
- impl: triplesDotSeperated(triplesSameSubject)
12309
- };
12310
- function propertyListImpl(name, allowPaths) {
12311
- return {
12312
- name,
12313
- impl: ({ SUBRULE, OPTION }) => (_, arg) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, arg)) ?? []
12314
12121
  };
12315
12122
  }
12316
- var propertyList = propertyListImpl("propertyList", false);
12317
- var propertyListPath = propertyListImpl("propertyListPath", true);
12318
- function propertyListNotEmptyImplementation(name, allowPaths) {
12123
+ function funcGroupGraphPattern(func) {
12319
12124
  return {
12320
- name,
12321
- impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, arg) => {
12322
- const result = [];
12323
- let parsedSemi = true;
12324
- AT_LEAST_ONE({
12325
- GATE: () => parsedSemi,
12326
- DEF: () => {
12327
- parsedSemi = false;
12328
- const predicate = allowPaths ? OR1([
12329
- { ALT: () => SUBRULE1(verbPath, void 0) },
12330
- { ALT: () => SUBRULE1(verbSimple, void 0) }
12331
- ]) : SUBRULE1(verb, void 0);
12332
- const triples = SUBRULE1(
12333
- allowPaths ? objectListPath : objectList,
12334
- ACTION(() => ({ subject: arg.subject, predicate }))
12335
- );
12336
- MANY2(() => {
12337
- CONSUME(symbols_exports.semi);
12338
- parsedSemi = true;
12339
- });
12340
- ACTION(() => {
12341
- result.push(...triples);
12342
- });
12343
- }
12344
- });
12345
- return result;
12125
+ name: unCapitalize(func.name),
12126
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12127
+ const operator = CONSUME(func);
12128
+ const group = SUBRULE(groupGraphPattern);
12129
+ return ACTION(() => C.factory.expressionPatternOperation(
12130
+ operator.image,
12131
+ group,
12132
+ C.factory.sourceLocation(operator, group)
12133
+ ));
12346
12134
  }
12347
12135
  };
12348
12136
  }
12349
- var propertyListNotEmpty = propertyListNotEmptyImplementation("propertyListNotEmpty", false);
12350
- var propertyListPathNotEmpty = propertyListNotEmptyImplementation("propertyListPathNotEmpty", true);
12351
- var verbPath = {
12352
- name: "verbPath",
12353
- impl: ({ SUBRULE }) => () => SUBRULE(path, void 0)
12354
- };
12355
- var verbSimple = {
12356
- name: "verbSimple",
12357
- impl: ({ SUBRULE }) => () => SUBRULE(var_, void 0)
12358
- };
12359
- function objectListImpl(name, allowPaths) {
12137
+ function baseAggregateFunc(func) {
12360
12138
  return {
12361
- name,
12362
- impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, arg) => {
12363
- const objects = [];
12364
- AT_LEAST_ONE_SEP({
12365
- SEP: symbols_exports.comma,
12366
- DEF: () => {
12367
- const objectTriple = SUBRULE(allowPaths ? objectPath : object, arg);
12368
- ACTION(() => {
12369
- objects.push(objectTriple);
12370
- });
12371
- }
12372
- });
12373
- return objects;
12139
+ name: unCapitalize(func.name),
12140
+ impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
12141
+ const operator = CONSUME(func);
12142
+ CONSUME(symbols_exports.LParen);
12143
+ const distinct2 = OPTION(() => CONSUME(distinct));
12144
+ const expr1 = SUBRULE(expression);
12145
+ const close = CONSUME(symbols_exports.RParen);
12146
+ return ACTION(() => C.factory.aggregate(
12147
+ operator.image,
12148
+ distinct2 !== void 0,
12149
+ expr1,
12150
+ void 0,
12151
+ C.factory.sourceLocation(operator, close)
12152
+ ));
12374
12153
  }
12375
12154
  };
12376
12155
  }
12377
- var objectList = objectListImpl("objectList", false);
12378
- var objectListPath = objectListImpl("objectListPath", true);
12379
- function objectImpl(name, allowPaths) {
12380
- return {
12381
- name,
12382
- impl: ({ ACTION, SUBRULE }) => (C, arg) => {
12383
- const node = SUBRULE(allowPaths ? graphNodePath : graphNode, void 0);
12384
- return ACTION(() => C.factory.triple(arg.subject, arg.predicate, node));
12385
- }
12386
- };
12387
- }
12388
- var object = objectImpl("object", false);
12389
- var objectPath = objectImpl("objectPath", true);
12390
- function collectionImpl(name, allowPaths) {
12391
- return {
12392
- name,
12393
- impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {
12394
- const terms = [];
12395
- const startToken = CONSUME(symbols_exports.LParen);
12396
- AT_LEAST_ONE(() => {
12397
- terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode, void 0));
12398
- });
12399
- const endToken = CONSUME(symbols_exports.RParen);
12400
- return ACTION(() => {
12401
- const F2 = C.factory;
12402
- const triples = [];
12403
- const predFirst = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" /* FIRST */, void 0);
12404
- const predRest = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" /* REST */, void 0);
12405
- const predNil = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */, void 0);
12406
- const listHead = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12407
- let iterHead = listHead;
12408
- for (const [index, term] of terms.entries()) {
12409
- const lastInList = index === terms.length - 1;
12410
- const headTriple = F2.triple(
12411
- iterHead,
12412
- predFirst,
12413
- term
12414
- );
12415
- triples.push(headTriple);
12416
- if (lastInList) {
12417
- const nilTriple = F2.triple(iterHead, predRest, predNil);
12418
- triples.push(nilTriple);
12419
- } else {
12420
- const tail = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12421
- const linkTriple = F2.triple(iterHead, predRest, tail);
12422
- triples.push(linkTriple);
12423
- iterHead = tail;
12424
- }
12425
- }
12426
- return F2.tripleCollectionList(listHead, triples, F2.sourceLocation(startToken, endToken));
12427
- });
12428
- },
12429
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12430
- F2.printFilter(ast, () => PRINT_WORD("("));
12431
- for (const [idx, triple] of ast.triples.entries()) {
12432
- if (idx % 2 === 0) {
12433
- SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object, void 0);
12434
- }
12435
- }
12436
- F2.printFilter(ast, () => PRINT_WORD(")"));
12437
- }
12438
- };
12439
- }
12440
- var collection = collectionImpl("collection", false);
12441
- var collectionPath = collectionImpl("collectionPath", true);
12442
- function triplesNodeImpl(name, allowPaths) {
12443
- return {
12444
- name,
12445
- impl: ({ SUBRULE, OR }) => () => OR([
12446
- { ALT: () => SUBRULE(allowPaths ? collectionPath : collection, void 0) },
12447
- { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, void 0) }
12448
- ]),
12449
- gImpl: ({ SUBRULE }) => (ast) => ast.subType === "list" ? SUBRULE(allowPaths ? collectionPath : collection, ast, void 0) : SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast, void 0)
12450
- };
12156
+
12157
+ // ../../packages/rules-sparql-1-1/lib/grammar/builtIn.ts
12158
+ var builtInStr = funcExpr1(BuildinCalls_exports.str);
12159
+ var builtInLang = funcExpr1(BuildinCalls_exports.lang);
12160
+ var builtInLangmatches = funcExpr2(BuildinCalls_exports.langmatches);
12161
+ var builtInDatatype = funcExpr1(BuildinCalls_exports.datatype);
12162
+ var builtInBound = funcVar1(BuildinCalls_exports.bound);
12163
+ var builtInIri = funcExpr1(BuildinCalls_exports.iri);
12164
+ var builtInUri = funcExpr1(BuildinCalls_exports.uri);
12165
+ var builtInBnodeSparqlJs = funcExprOrNil1(BuildinCalls_exports.bnode);
12166
+ var builtInRand = funcNil1(BuildinCalls_exports.rand);
12167
+ var builtInAbs = funcExpr1(BuildinCalls_exports.abs);
12168
+ var builtInCeil = funcExpr1(BuildinCalls_exports.ceil);
12169
+ var builtInFloor = funcExpr1(BuildinCalls_exports.floor);
12170
+ var builtInRound = funcExpr1(BuildinCalls_exports.round);
12171
+ var builtInConcat = funcExprList1(BuildinCalls_exports.concat);
12172
+ var builtInStrlen = funcExpr1(BuildinCalls_exports.strlen);
12173
+ var builtInUcase = funcExpr1(BuildinCalls_exports.ucase);
12174
+ var builtInLcase = funcExpr1(BuildinCalls_exports.lcase);
12175
+ var builtInEncode_for_uri = funcExpr1(BuildinCalls_exports.encode_for_uri);
12176
+ var builtInContains = funcExpr2(BuildinCalls_exports.contains);
12177
+ var builtInStrstarts = funcExpr2(BuildinCalls_exports.strstarts);
12178
+ var builtInStrends = funcExpr2(BuildinCalls_exports.strends);
12179
+ var builtInStrbefore = funcExpr2(BuildinCalls_exports.strbefore);
12180
+ var builtInStrafter = funcExpr2(BuildinCalls_exports.strafter);
12181
+ var builtInYear = funcExpr1(BuildinCalls_exports.year);
12182
+ var builtInMonth = funcExpr1(BuildinCalls_exports.month);
12183
+ var builtInDay = funcExpr1(BuildinCalls_exports.day);
12184
+ var builtInHours = funcExpr1(BuildinCalls_exports.hours);
12185
+ var builtInMinutes = funcExpr1(BuildinCalls_exports.minutes);
12186
+ var builtInSeconds = funcExpr1(BuildinCalls_exports.seconds);
12187
+ var builtInTimezone = funcExpr1(BuildinCalls_exports.timezone);
12188
+ var builtInTz = funcExpr1(BuildinCalls_exports.tz);
12189
+ var builtInNow = funcNil1(BuildinCalls_exports.now);
12190
+ var builtInUuid = funcNil1(BuildinCalls_exports.uuid);
12191
+ var builtInStruuid = funcNil1(BuildinCalls_exports.struuid);
12192
+ var builtInMd5 = funcExpr1(BuildinCalls_exports.md5);
12193
+ var builtInSha1 = funcExpr1(BuildinCalls_exports.sha1);
12194
+ var builtInSha256 = funcExpr1(BuildinCalls_exports.sha256);
12195
+ var builtInSha384 = funcExpr1(BuildinCalls_exports.sha384);
12196
+ var builtInSha512 = funcExpr1(BuildinCalls_exports.sha512);
12197
+ var builtInCoalesce = funcExprList1(BuildinCalls_exports.coalesce);
12198
+ var builtInIf = funcExpr3(BuildinCalls_exports.if_);
12199
+ var builtInStrlang = funcExpr2(BuildinCalls_exports.strlang);
12200
+ var builtInStrdt = funcExpr2(BuildinCalls_exports.strdt);
12201
+ var builtInSameterm = funcExpr2(BuildinCalls_exports.sameterm);
12202
+ var builtInIsiri = funcExpr1(BuildinCalls_exports.isiri);
12203
+ var builtInIsuri = funcExpr1(BuildinCalls_exports.isuri);
12204
+ var builtInIsblank = funcExpr1(BuildinCalls_exports.isblank);
12205
+ var builtInIsliteral = funcExpr1(BuildinCalls_exports.isliteral);
12206
+ var builtInIsnumeric = funcExpr1(BuildinCalls_exports.isnumeric);
12207
+ function builtInCallList(SUBRULE) {
12208
+ return [
12209
+ { ALT: () => SUBRULE(aggregate) },
12210
+ { ALT: () => SUBRULE(builtInStr) },
12211
+ { ALT: () => SUBRULE(builtInLang) },
12212
+ { ALT: () => SUBRULE(builtInLangmatches) },
12213
+ { ALT: () => SUBRULE(builtInDatatype) },
12214
+ { ALT: () => SUBRULE(builtInBound) },
12215
+ { ALT: () => SUBRULE(builtInIri) },
12216
+ { ALT: () => SUBRULE(builtInUri) },
12217
+ { ALT: () => SUBRULE(builtInBnodeSparqlJs) },
12218
+ { ALT: () => SUBRULE(builtInRand) },
12219
+ { ALT: () => SUBRULE(builtInAbs) },
12220
+ { ALT: () => SUBRULE(builtInCeil) },
12221
+ { ALT: () => SUBRULE(builtInFloor) },
12222
+ { ALT: () => SUBRULE(builtInRound) },
12223
+ { ALT: () => SUBRULE(builtInConcat) },
12224
+ { ALT: () => SUBRULE(substringExpression) },
12225
+ { ALT: () => SUBRULE(builtInStrlen) },
12226
+ { ALT: () => SUBRULE(strReplaceExpression) },
12227
+ { ALT: () => SUBRULE(builtInUcase) },
12228
+ { ALT: () => SUBRULE(builtInLcase) },
12229
+ { ALT: () => SUBRULE(builtInEncode_for_uri) },
12230
+ { ALT: () => SUBRULE(builtInContains) },
12231
+ { ALT: () => SUBRULE(builtInStrstarts) },
12232
+ { ALT: () => SUBRULE(builtInStrends) },
12233
+ { ALT: () => SUBRULE(builtInStrbefore) },
12234
+ { ALT: () => SUBRULE(builtInStrafter) },
12235
+ { ALT: () => SUBRULE(builtInYear) },
12236
+ { ALT: () => SUBRULE(builtInMonth) },
12237
+ { ALT: () => SUBRULE(builtInDay) },
12238
+ { ALT: () => SUBRULE(builtInHours) },
12239
+ { ALT: () => SUBRULE(builtInMinutes) },
12240
+ { ALT: () => SUBRULE(builtInSeconds) },
12241
+ { ALT: () => SUBRULE(builtInTimezone) },
12242
+ { ALT: () => SUBRULE(builtInTz) },
12243
+ { ALT: () => SUBRULE(builtInNow) },
12244
+ { ALT: () => SUBRULE(builtInUuid) },
12245
+ { ALT: () => SUBRULE(builtInStruuid) },
12246
+ { ALT: () => SUBRULE(builtInMd5) },
12247
+ { ALT: () => SUBRULE(builtInSha1) },
12248
+ { ALT: () => SUBRULE(builtInSha256) },
12249
+ { ALT: () => SUBRULE(builtInSha384) },
12250
+ { ALT: () => SUBRULE(builtInSha512) },
12251
+ { ALT: () => SUBRULE(builtInCoalesce) },
12252
+ { ALT: () => SUBRULE(builtInIf) },
12253
+ { ALT: () => SUBRULE(builtInStrlang) },
12254
+ { ALT: () => SUBRULE(builtInStrdt) },
12255
+ { ALT: () => SUBRULE(builtInSameterm) },
12256
+ { ALT: () => SUBRULE(builtInIsiri) },
12257
+ { ALT: () => SUBRULE(builtInIsuri) },
12258
+ { ALT: () => SUBRULE(builtInIsblank) },
12259
+ { ALT: () => SUBRULE(builtInIsliteral) },
12260
+ { ALT: () => SUBRULE(builtInIsnumeric) },
12261
+ { ALT: () => SUBRULE(regexExpression) },
12262
+ { ALT: () => SUBRULE(existsFunc) },
12263
+ { ALT: () => SUBRULE(notExistsFunc) }
12264
+ ];
12451
12265
  }
12452
- var triplesNode = triplesNodeImpl("triplesNode", false);
12453
- var triplesNodePath = triplesNodeImpl("triplesNodePath", true);
12454
- function blankNodePropertyListImpl(name, allowPaths) {
12455
- const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
12456
- return {
12457
- name,
12458
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12459
- const startToken = CONSUME(symbols_exports.LSquare);
12460
- const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12461
- const propList = SUBRULE(propertyPathNotEmptyImpl, { subject: blankNode2 });
12462
- const endToken = CONSUME(symbols_exports.RSquare);
12463
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
12464
- blankNode2,
12465
- propList,
12466
- C.factory.sourceLocation(startToken, endToken)
12467
- ));
12468
- },
12469
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12470
- F2.printFilter(ast, () => PRINT("["));
12471
- for (const triple of ast.triples) {
12472
- HANDLE_LOC(triple, () => {
12473
- if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12474
- SUBRULE(varOrTerm, triple.predicate, void 0);
12475
- } else {
12476
- SUBRULE(pathGenerator, triple.predicate, void 0);
12477
- }
12478
- SUBRULE(graphNodePath, triple.object, void 0);
12479
- F2.printFilter(ast, () => PRINT_WORD(";"));
12480
- });
12481
- }
12482
- F2.printFilter(ast, () => PRINT("]"));
12266
+ var builtInCall = {
12267
+ name: "builtInCall",
12268
+ impl: ({ OR, SUBRULE, cache }) => () => {
12269
+ const cached = cache.get(builtInCall);
12270
+ if (cached) {
12271
+ return OR(cached);
12483
12272
  }
12484
- };
12485
- }
12486
- var blankNodePropertyList = blankNodePropertyListImpl("blankNodePropertyList", false);
12487
- var blankNodePropertyListPath = blankNodePropertyListImpl("blankNodePropertyListPath", true);
12488
- function graphNodeImpl(name, allowPaths) {
12489
- const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
12490
- return {
12491
- name,
12492
- impl: ({ SUBRULE, OR }) => (C) => OR([
12493
- { ALT: () => SUBRULE(varOrTerm, void 0) },
12494
- {
12495
- GATE: () => C.parseMode.has("canCreateBlankNodes"),
12496
- ALT: () => SUBRULE(triplesNodeRule, void 0)
12497
- }
12498
- ]),
12499
- gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12500
- if (F2.isTerm(ast)) {
12501
- SUBRULE(varOrTerm, ast, void 0);
12502
- } else {
12503
- SUBRULE(triplesNodeRule, ast, void 0);
12273
+ const builtIns = builtInCallList(SUBRULE);
12274
+ cache.set(builtInCall, builtIns);
12275
+ return OR(builtIns);
12276
+ }
12277
+ };
12278
+ var regexExpression = funcExpr2or3(BuildinCalls_exports.regex);
12279
+ var substringExpression = funcExpr2or3(BuildinCalls_exports.substr);
12280
+ var strReplaceExpression = funcExpr3or4(BuildinCalls_exports.replace);
12281
+ var existsFunc = funcGroupGraphPattern(BuildinCalls_exports.exists);
12282
+ var notExistsFunc = funcGroupGraphPattern(BuildinCalls_exports.notexists);
12283
+ var aggregateCount = {
12284
+ name: unCapitalize(BuildinCalls_exports.count.name),
12285
+ impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
12286
+ const operatorToken = CONSUME(BuildinCalls_exports.count);
12287
+ CONSUME(symbols_exports.LParen);
12288
+ const distinctToken = OPTION(() => CONSUME(distinct));
12289
+ const expressionVal = OR([
12290
+ { ALT: () => {
12291
+ const starToken = CONSUME(symbols_exports.star);
12292
+ return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
12293
+ } },
12294
+ { ALT: () => SUBRULE(expression) }
12295
+ ]);
12296
+ const closeToken = CONSUME(symbols_exports.RParen);
12297
+ return ACTION(() => {
12298
+ const F2 = C.factory;
12299
+ if (C.factory.isWildcard(expressionVal)) {
12300
+ return F2.aggregate(
12301
+ operatorToken.image,
12302
+ Boolean(distinctToken),
12303
+ expressionVal,
12304
+ void 0,
12305
+ C.factory.sourceLocation(operatorToken, closeToken)
12306
+ );
12504
12307
  }
12505
- }
12506
- };
12507
- }
12508
- var graphNode = graphNodeImpl("graphNode", false);
12509
- var graphNodePath = graphNodeImpl("graphNodePath", true);
12510
-
12511
- // ../../packages/rules-sparql-1-1/lib/grammar/whereClause.ts
12512
- var whereClause = {
12513
- name: "whereClause",
12514
- impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12515
- const where2 = OPTION(() => CONSUME(where));
12516
- const group = SUBRULE(groupGraphPattern, void 0);
12517
- return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12518
- },
12519
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12520
- F2.printFilter(ast, () => PRINT_WORD("WHERE"));
12521
- SUBRULE(groupGraphPattern, ast.val, void 0);
12308
+ return F2.aggregate(
12309
+ operatorToken.image,
12310
+ Boolean(distinctToken),
12311
+ expressionVal,
12312
+ void 0,
12313
+ C.factory.sourceLocation(operatorToken, closeToken)
12314
+ );
12315
+ });
12522
12316
  }
12523
12317
  };
12524
- var groupGraphPattern = {
12525
- name: "groupGraphPattern",
12526
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
12527
- const open = CONSUME(symbols_exports.LCurly);
12528
- const patterns = OR([
12529
- { ALT: () => [SUBRULE(subSelect, void 0)] },
12530
- { ALT: () => SUBRULE(groupGraphPatternSub, void 0) }
12318
+ var aggregateSum = baseAggregateFunc(BuildinCalls_exports.sum);
12319
+ var aggregateMin = baseAggregateFunc(BuildinCalls_exports.min);
12320
+ var aggregateMax = baseAggregateFunc(BuildinCalls_exports.max);
12321
+ var aggregateAvg = baseAggregateFunc(BuildinCalls_exports.avg);
12322
+ var aggregateSample = baseAggregateFunc(BuildinCalls_exports.sample);
12323
+ var aggregateGroup_concat = {
12324
+ name: unCapitalize(BuildinCalls_exports.groupConcat.name),
12325
+ impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
12326
+ const operatorToken = CONSUME(BuildinCalls_exports.groupConcat);
12327
+ CONSUME(symbols_exports.LParen);
12328
+ const distinctToken = OPTION1(() => CONSUME(distinct));
12329
+ const expr = SUBRULE(expression);
12330
+ const sep = OPTION2(() => {
12331
+ CONSUME(symbols_exports.semi);
12332
+ CONSUME(separator);
12333
+ CONSUME(symbols_exports.equal);
12334
+ return SUBRULE(string);
12335
+ });
12336
+ const closeToken = CONSUME(symbols_exports.RParen);
12337
+ return ACTION(() => {
12338
+ const F2 = C.factory;
12339
+ return F2.aggregate(
12340
+ operatorToken.image,
12341
+ Boolean(distinctToken),
12342
+ expr,
12343
+ sep?.value ?? " ",
12344
+ F2.sourceLocation(operatorToken, closeToken)
12345
+ );
12346
+ });
12347
+ }
12348
+ };
12349
+ var aggregate = {
12350
+ name: "aggregate",
12351
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => {
12352
+ const wasInAggregate = ACTION(() => C.parseMode.has("inAggregate"));
12353
+ ACTION(() => C.parseMode.add("inAggregate"));
12354
+ const result = OR([
12355
+ { ALT: () => SUBRULE(aggregateCount) },
12356
+ { ALT: () => SUBRULE(aggregateSum) },
12357
+ { ALT: () => SUBRULE(aggregateMin) },
12358
+ { ALT: () => SUBRULE(aggregateMax) },
12359
+ { ALT: () => SUBRULE(aggregateAvg) },
12360
+ { ALT: () => SUBRULE(aggregateSample) },
12361
+ { ALT: () => SUBRULE(aggregateGroup_concat) }
12531
12362
  ]);
12532
- const close = CONSUME(symbols_exports.RCurly);
12533
- return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12363
+ ACTION(() => !wasInAggregate && C.parseMode.delete("inAggregate"));
12364
+ ACTION(() => {
12365
+ if (!C.parseMode.has("canParseAggregate")) {
12366
+ throw new Error("Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.");
12367
+ }
12368
+ if (C.parseMode.has("inAggregate")) {
12369
+ throw new Error("An aggregate function is not allowed within an aggregate function.");
12370
+ }
12371
+ });
12372
+ return result;
12534
12373
  },
12535
12374
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12536
- F2.printFilter(ast, () => PRINT_WORD("{"));
12537
- for (const pattern of ast.patterns) {
12538
- SUBRULE(generatePattern, pattern, void 0);
12375
+ F2.printFilter(ast, () => {
12376
+ PRINT_WORD(ast.aggregation, "(");
12377
+ if (ast.distinct) {
12378
+ PRINT_WORD("DISTINCT");
12379
+ }
12380
+ });
12381
+ const arg = ast.expression[0];
12382
+ if (F2.isWildcard(arg)) {
12383
+ F2.printFilter(ast, () => PRINT_WORD("*"));
12384
+ } else {
12385
+ SUBRULE(expression, arg);
12539
12386
  }
12540
- F2.printFilter(ast, () => PRINT_WORD("}"));
12387
+ if (F2.isExpressionAggregateSeparator(ast)) {
12388
+ F2.printFilter(ast, () => PRINT_WORD(";", "SEPARATOR", "=", stringEscapedLexical(ast.separator)));
12389
+ }
12390
+ F2.printFilter(ast, () => PRINT_WORD(")"));
12541
12391
  }
12542
12392
  };
12543
- var generatePattern = {
12544
- name: "generatePattern",
12393
+
12394
+ // ../../packages/rules-sparql-1-1/lib/grammar/general.ts
12395
+ var prologue = {
12396
+ name: "prologue",
12397
+ impl: ({ SUBRULE, MANY, OR }) => () => {
12398
+ const result = [];
12399
+ MANY(() => OR([
12400
+ { ALT: () => result.push(SUBRULE(baseDecl2)) },
12401
+ // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
12402
+ // We might need to check this.
12403
+ { ALT: () => result.push(SUBRULE(prefixDecl2)) }
12404
+ ]));
12405
+ return result;
12406
+ },
12545
12407
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12546
- if (ast.type === "query") {
12547
- SUBRULE(query, F2.querySelect({
12548
- context: [],
12549
- datasets: F2.datasetClauses([], F2.sourceLocation()),
12550
- where: ast.where,
12551
- variables: ast.variables,
12552
- solutionModifiers: ast.solutionModifiers,
12553
- values: ast.values,
12554
- distinct: ast.distinct,
12555
- reduced: ast.reduced
12556
- }, ast.loc), void 0);
12557
- } else if (ast.subType === "group") {
12558
- SUBRULE(groupGraphPattern, ast, void 0);
12559
- } else if (ast.subType === "bgp") {
12560
- SUBRULE(triplesBlock, ast, void 0);
12561
- } else {
12562
- SUBRULE(graphPatternNotTriples, ast, void 0);
12408
+ for (const context of ast) {
12409
+ if (F2.isContextDefinitionBase(context)) {
12410
+ SUBRULE(baseDecl2, context);
12411
+ } else if (F2.isContextDefinitionPrefix(context)) {
12412
+ SUBRULE(prefixDecl2, context);
12413
+ }
12563
12414
  }
12564
12415
  }
12565
12416
  };
12566
- var groupGraphPatternSub = {
12567
- name: "groupGraphPatternSub",
12568
- impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
12569
- const patterns = [];
12570
- const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock, void 0));
12571
- if (bgpPattern) {
12572
- patterns.push(bgpPattern);
12573
- }
12574
- MANY(() => {
12575
- const notTriples = SUBRULE(graphPatternNotTriples, void 0);
12576
- patterns.push(notTriples);
12577
- OPTION2(() => CONSUME(symbols_exports.dot));
12578
- const moreTriples = OPTION3(() => SUBRULE2(triplesBlock, void 0));
12579
- if (moreTriples) {
12580
- patterns.push(moreTriples);
12581
- }
12417
+ var baseDecl2 = {
12418
+ name: "baseDecl",
12419
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12420
+ const base = CONSUME(baseDecl);
12421
+ const val = SUBRULE(iriFull);
12422
+ return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
12423
+ },
12424
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12425
+ F2.printFilter(ast, () => PRINT_WORD("BASE"));
12426
+ SUBRULE(iri2, ast.value);
12427
+ }
12428
+ };
12429
+ var prefixDecl2 = {
12430
+ name: "prefixDecl",
12431
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12432
+ const prefix = CONSUME(prefixDecl);
12433
+ const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
12434
+ const value = SUBRULE(iriFull);
12435
+ return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
12436
+ },
12437
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F2 }) => {
12438
+ F2.printFilter(ast, () => {
12439
+ PRINT_WORDS("PREFIX", `${ast.key}:`);
12582
12440
  });
12583
- ACTION(() => checkNote13(patterns));
12584
- return patterns;
12441
+ SUBRULE(iri2, ast.value);
12585
12442
  }
12586
12443
  };
12587
- var graphPatternNotTriples = {
12588
- name: "graphPatternNotTriples",
12444
+ var verb = {
12445
+ name: "verb",
12589
12446
  impl: ({ SUBRULE, OR }) => () => OR([
12590
- { ALT: () => SUBRULE(groupOrUnionGraphPattern, void 0) },
12591
- { ALT: () => SUBRULE(optionalGraphPattern, void 0) },
12592
- { ALT: () => SUBRULE(minusGraphPattern, void 0) },
12593
- { ALT: () => SUBRULE(graphGraphPattern, void 0) },
12594
- { ALT: () => SUBRULE(serviceGraphPattern, void 0) },
12595
- { ALT: () => SUBRULE(filter3, void 0) },
12596
- { ALT: () => SUBRULE(bind2, void 0) },
12597
- { ALT: () => SUBRULE(inlineData, void 0) }
12447
+ { ALT: () => SUBRULE(varOrIri) },
12448
+ { ALT: () => SUBRULE(verbA) }
12449
+ ])
12450
+ };
12451
+ var varOrTerm = {
12452
+ name: "varOrTerm",
12453
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12454
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
12455
+ { ALT: () => SUBRULE(graphTerm) }
12598
12456
  ]),
12599
- gImpl: ({ SUBRULE }) => (ast) => {
12600
- switch (ast.subType) {
12601
- case "group":
12602
- case "union":
12603
- SUBRULE(groupOrUnionGraphPattern, ast, void 0);
12604
- break;
12605
- case "optional":
12606
- SUBRULE(optionalGraphPattern, ast, void 0);
12607
- break;
12608
- case "minus":
12609
- SUBRULE(minusGraphPattern, ast, void 0);
12610
- break;
12611
- case "graph":
12612
- SUBRULE(graphGraphPattern, ast, void 0);
12613
- break;
12614
- case "service":
12615
- SUBRULE(serviceGraphPattern, ast, void 0);
12616
- break;
12617
- case "filter":
12618
- SUBRULE(filter3, ast, void 0);
12619
- break;
12620
- case "bind":
12621
- SUBRULE(bind2, ast, void 0);
12622
- break;
12623
- case "values":
12624
- SUBRULE(inlineData, ast, void 0);
12625
- break;
12457
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12458
+ if (F2.isTermVariable(ast)) {
12459
+ return SUBRULE(var_, ast);
12626
12460
  }
12461
+ return SUBRULE(graphTerm, ast);
12627
12462
  }
12628
12463
  };
12629
- var optionalGraphPattern = {
12630
- name: "optionalGraphPattern",
12631
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12632
- const optional2 = CONSUME(optional);
12633
- const group = SUBRULE(groupGraphPattern, void 0);
12634
- return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12635
- },
12636
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12637
- F2.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12638
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12639
- }
12464
+ var varOrIri = {
12465
+ name: "varOrIri",
12466
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12467
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
12468
+ { ALT: () => SUBRULE(iri2) }
12469
+ ])
12640
12470
  };
12641
- var graphGraphPattern = {
12642
- name: "graphGraphPattern",
12643
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12644
- const graph2 = CONSUME(graph_exports.graph);
12645
- const name = SUBRULE(varOrIri, void 0);
12646
- const group = SUBRULE(groupGraphPattern, void 0);
12647
- return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12471
+ var var_ = {
12472
+ name: "var",
12473
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
12474
+ const varToken = OR([
12475
+ { ALT: () => CONSUME(terminals_exports.var1) },
12476
+ { ALT: () => CONSUME(terminals_exports.var2) }
12477
+ ]);
12478
+ return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
12648
12479
  },
12649
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12650
- F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
12651
- SUBRULE(varOrTerm, ast.name, void 0);
12652
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12480
+ gImpl: ({ PRINT_WORD }) => (ast, { factory: F2 }) => {
12481
+ F2.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
12653
12482
  }
12654
12483
  };
12655
- var serviceGraphPattern = {
12656
- name: "serviceGraphPattern",
12657
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
12658
- const service2 = CONSUME(service);
12659
- const silent2 = OPTION(() => {
12660
- CONSUME(silent);
12661
- return true;
12662
- }) ?? false;
12663
- const name = SUBRULE1(varOrIri, void 0);
12664
- const group = SUBRULE1(groupGraphPattern, void 0);
12665
- return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12666
- },
12667
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12668
- F2.printFilter(ast, () => {
12669
- PRINT_WORD("SERVICE");
12670
- if (ast.silent) {
12671
- PRINT_WORD("SILENT");
12672
- }
12673
- });
12674
- SUBRULE(varOrTerm, ast.name, void 0);
12675
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12484
+ var graphTerm = {
12485
+ name: "graphTerm",
12486
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
12487
+ { ALT: () => SUBRULE(iri2) },
12488
+ { ALT: () => SUBRULE(rdfLiteral) },
12489
+ { ALT: () => SUBRULE(numericLiteral) },
12490
+ { ALT: () => SUBRULE(booleanLiteral) },
12491
+ { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode) },
12492
+ { ALT: () => {
12493
+ const tokenNil = CONSUME(terminals_exports.nil);
12494
+ return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
12495
+ } }
12496
+ ]),
12497
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12498
+ if (F2.isTermNamed(ast)) {
12499
+ SUBRULE(iri2, ast);
12500
+ } else if (F2.isTermLiteral(ast)) {
12501
+ SUBRULE(rdfLiteral, ast);
12502
+ } else if (F2.isTermBlank(ast)) {
12503
+ SUBRULE(blankNode, ast);
12504
+ }
12676
12505
  }
12677
12506
  };
12678
- var bind2 = {
12679
- name: "bind",
12680
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12681
- const bind3 = CONSUME(bind);
12682
- CONSUME(symbols_exports.LParen);
12683
- const expressionVal = SUBRULE(expression, void 0);
12684
- CONSUME(as);
12685
- const variable = SUBRULE(var_, void 0);
12686
- const close = CONSUME(symbols_exports.RParen);
12687
- return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
12688
- },
12689
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12690
- F2.printFilter(ast, () => PRINT_WORD("BIND", "("));
12691
- SUBRULE(expression, ast.expression, void 0);
12692
- F2.printFilter(ast, () => PRINT_WORD("AS"));
12693
- SUBRULE(var_, ast.variable, void 0);
12694
- F2.printFilter(ast, () => PRINT_WORD(")"));
12695
- }
12507
+
12508
+ // ../../packages/rules-sparql-1-1/lib/grammar/propertyPaths.ts
12509
+ var path = {
12510
+ name: "path",
12511
+ impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative)
12696
12512
  };
12697
- var inlineData = {
12698
- name: "inlineData",
12699
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12700
- const values3 = CONSUME(values2);
12701
- const datablock = SUBRULE(dataBlock, void 0);
12702
- return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
12703
- },
12704
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12705
- const variables = Object.keys(ast.values[0]);
12706
- F2.printFilter(ast, () => {
12707
- PRINT_WORD("VALUES", "(");
12708
- for (const variable of variables) {
12709
- PRINT_WORD(`?${variable}`);
12710
- }
12711
- PRINT_WORD(")", "{");
12712
- });
12713
- for (const mapping of ast.values) {
12714
- F2.printFilter(ast, () => PRINT_WORD("("));
12715
- for (const variable of variables) {
12716
- if (mapping[variable] === void 0) {
12717
- F2.printFilter(ast, () => PRINT_WORD("UNDEF"));
12718
- } else {
12719
- SUBRULE(graphNodePath, mapping[variable], void 0);
12513
+ var pathGenerator = {
12514
+ name: "path",
12515
+ gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F2 }, braces = true) => {
12516
+ if (F2.isTerm(ast) && F2.isTermNamed(ast)) {
12517
+ SUBRULE(iri2, ast);
12518
+ } else {
12519
+ F2.printFilter(ast, () => braces && PRINT("("));
12520
+ switch (ast.subType) {
12521
+ case "|":
12522
+ case "/": {
12523
+ const [head2, ...tail] = ast.items;
12524
+ SUBRULE(pathGenerator, head2, braces);
12525
+ for (const val of tail) {
12526
+ F2.printFilter(ast, () => PRINT(ast.subType));
12527
+ SUBRULE(pathGenerator, val, braces);
12528
+ }
12529
+ break;
12720
12530
  }
12531
+ case "^":
12532
+ F2.printFilter(ast, () => PRINT("^"));
12533
+ SUBRULE(pathGenerator, ast.items[0], braces);
12534
+ break;
12535
+ case "?":
12536
+ case "*":
12537
+ case "+":
12538
+ SUBRULE(pathGenerator, ast.items[0], braces);
12539
+ F2.printFilter(ast, () => PRINT(ast.subType));
12540
+ break;
12541
+ case "!":
12542
+ F2.printFilter(ast, () => PRINT("!"));
12543
+ F2.printFilter(ast, () => PRINT("("));
12544
+ SUBRULE(pathGenerator, ast.items[0], false);
12545
+ F2.printFilter(ast, () => PRINT(")"));
12546
+ break;
12721
12547
  }
12722
- F2.printFilter(ast, () => PRINT_WORD(")"));
12548
+ F2.printFilter(ast, () => braces && PRINT(")"));
12723
12549
  }
12724
- F2.printFilter(ast, () => PRINT_WORD("}"));
12725
12550
  }
12726
12551
  };
12727
- var dataBlock = {
12728
- name: "dataBlock",
12729
- impl: ({ SUBRULE, OR }) => () => OR([
12730
- { ALT: () => SUBRULE(inlineDataOneVar, void 0) },
12731
- { ALT: () => SUBRULE(inlineDataFull, void 0) }
12552
+ function pathChainHelper(name, SEP, subType, subRule) {
12553
+ return {
12554
+ name,
12555
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, MANY }) => (C) => {
12556
+ const head2 = SUBRULE1(subRule);
12557
+ let tailEnd = head2;
12558
+ const tail = [];
12559
+ MANY(() => {
12560
+ CONSUME(SEP);
12561
+ tailEnd = SUBRULE2(subRule);
12562
+ tail.push(tailEnd);
12563
+ });
12564
+ return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12565
+ }
12566
+ };
12567
+ }
12568
+ var pathEltOrInverse = {
12569
+ name: "pathEltOrInverse",
12570
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR }) => (C) => OR([
12571
+ { ALT: () => SUBRULE1(pathElt) },
12572
+ { ALT: () => {
12573
+ const hat2 = CONSUME(symbols_exports.hat);
12574
+ const item = SUBRULE2(pathElt);
12575
+ return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12576
+ } }
12732
12577
  ])
12733
12578
  };
12734
- var inlineDataOneVar = {
12735
- name: "inlineDataOneVar",
12736
- impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
12737
- const res = [];
12738
- const varVal = SUBRULE(var_, void 0);
12739
- CONSUME(symbols_exports.LCurly);
12740
- MANY(() => {
12741
- const value = SUBRULE(dataBlockValue, void 0);
12742
- ACTION(() => {
12743
- res.push({ [varVal.value]: value });
12744
- });
12745
- });
12746
- const close = CONSUME(symbols_exports.RCurly);
12747
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
12579
+ var pathSequence = pathChainHelper("pathSequence", symbols_exports.slash, "/", pathEltOrInverse);
12580
+ var pathAlternative = pathChainHelper("pathAlternative", symbols_exports.pipe, "|", pathSequence);
12581
+ var pathElt = {
12582
+ name: "pathElt",
12583
+ impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12584
+ const item = SUBRULE(pathPrimary);
12585
+ const modification = OPTION(() => SUBRULE(pathMod));
12586
+ return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12748
12587
  }
12749
12588
  };
12750
- var inlineDataFull = {
12751
- name: "inlineDataFull",
12752
- impl: ({
12753
- ACTION,
12754
- OR,
12755
- MANY1,
12756
- MANY2,
12757
- MANY3,
12758
- MANY4,
12759
- SUBRULE,
12760
- CONSUME1,
12761
- CONSUME2
12762
- }) => (C) => {
12763
- const res = [];
12764
- const vars = [];
12589
+ var pathMod = {
12590
+ name: "pathMod",
12591
+ impl: ({ CONSUME, OR }) => () => OR([
12592
+ { ALT: () => CONSUME(symbols_exports.question) },
12593
+ { ALT: () => CONSUME(symbols_exports.star) },
12594
+ { ALT: () => CONSUME(symbols_exports.opPlus) }
12595
+ ])
12596
+ };
12597
+ var pathPrimary = {
12598
+ name: "pathPrimary",
12599
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12600
+ { ALT: () => SUBRULE(iri2) },
12601
+ { ALT: () => SUBRULE(verbA) },
12602
+ { ALT: () => SUBRULE(pathNegatedPropertySet) },
12603
+ { ALT: () => {
12604
+ CONSUME(symbols_exports.LParen);
12605
+ const resRecursive = SUBRULE(path);
12606
+ CONSUME(symbols_exports.RParen);
12607
+ return resRecursive;
12608
+ } }
12609
+ ])
12610
+ };
12611
+ var pathNegatedPropertySet = {
12612
+ name: "pathNegatedPropertySet",
12613
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, OR, MANY }) => (C) => {
12614
+ const exclamation2 = CONSUME(symbols_exports.exclamation);
12765
12615
  return OR([
12766
12616
  { ALT: () => {
12767
- const nil2 = CONSUME1(terminals_exports.nil);
12768
- CONSUME1(symbols_exports.LCurly);
12769
- MANY1(() => {
12770
- CONSUME2(terminals_exports.nil);
12771
- res.push({});
12772
- });
12773
- const close = CONSUME1(symbols_exports.RCurly);
12774
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
12617
+ const noAlternative = SUBRULE1(pathOneInPropertySet);
12618
+ return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12775
12619
  } },
12776
12620
  { ALT: () => {
12777
- const open = CONSUME1(symbols_exports.LParen);
12778
- MANY2(() => {
12779
- vars.push(SUBRULE(var_, void 0));
12621
+ const open = CONSUME(symbols_exports.LParen);
12622
+ const head2 = SUBRULE2(pathOneInPropertySet);
12623
+ const tail = [];
12624
+ MANY(() => {
12625
+ CONSUME(symbols_exports.pipe);
12626
+ const item = SUBRULE3(pathOneInPropertySet);
12627
+ tail.push(item);
12780
12628
  });
12781
- CONSUME1(symbols_exports.RParen);
12782
- CONSUME2(symbols_exports.LCurly);
12783
- MANY3(() => {
12784
- let parsedValues = 0;
12785
- const currentRow = {};
12786
- CONSUME2(symbols_exports.LParen);
12787
- MANY4(() => {
12788
- if (parsedValues >= vars.length) {
12789
- throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
12790
- }
12791
- const value = SUBRULE(dataBlockValue, void 0);
12792
- ACTION(() => {
12793
- currentRow[vars[parsedValues].value] = value;
12794
- parsedValues++;
12795
- });
12796
- });
12797
- CONSUME2(symbols_exports.RParen);
12798
- ACTION(() => {
12799
- res.push(currentRow);
12800
- if (vars.length !== parsedValues) {
12801
- throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
12802
- }
12803
- });
12629
+ const close = CONSUME(symbols_exports.RParen);
12630
+ return ACTION(() => {
12631
+ const F2 = C.factory;
12632
+ if (tail.length === 0) {
12633
+ return F2.path("!", [head2], F2.sourceLocation(exclamation2, close));
12634
+ }
12635
+ return F2.path(
12636
+ "!",
12637
+ [F2.path("|", [head2, ...tail], F2.sourceLocation(open, close))],
12638
+ F2.sourceLocation(exclamation2, close)
12639
+ );
12804
12640
  });
12805
- const close = CONSUME2(symbols_exports.RCurly);
12806
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
12807
12641
  } }
12808
12642
  ]);
12809
12643
  }
12810
12644
  };
12811
- var dataBlockValue = {
12812
- name: "dataBlockValue",
12813
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12814
- { ALT: () => SUBRULE(iri2, void 0) },
12815
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
12816
- { ALT: () => SUBRULE(numericLiteral, void 0) },
12817
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
12645
+ var pathOneInPropertySet = {
12646
+ name: "pathOneInPropertySet",
12647
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
12648
+ { ALT: () => SUBRULE1(iri2) },
12649
+ { ALT: () => SUBRULE1(verbA) },
12818
12650
  { ALT: () => {
12819
- CONSUME(undef);
12820
- return void 0;
12651
+ const hat2 = CONSUME(symbols_exports.hat);
12652
+ const item = OR2([
12653
+ { ALT: () => SUBRULE2(iri2) },
12654
+ { ALT: () => SUBRULE2(verbA) }
12655
+ ]);
12656
+ return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12821
12657
  } }
12822
12658
  ])
12823
12659
  };
12824
- var minusGraphPattern = {
12825
- name: "minusGraphPattern",
12826
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12827
- const minus2 = CONSUME(minus);
12828
- const group = SUBRULE(groupGraphPattern, void 0);
12829
- return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
12830
- },
12831
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12832
- F2.printFilter(ast, () => PRINT_WORD("MINUS"));
12833
- SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc), void 0);
12834
- }
12835
- };
12836
- var groupOrUnionGraphPattern = {
12837
- name: "groupOrUnionGraphPattern",
12838
- impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
12839
- const groups = [];
12840
- const group = SUBRULE1(groupGraphPattern, void 0);
12841
- groups.push(group);
12842
- MANY(() => {
12843
- CONSUME(union);
12844
- const group2 = SUBRULE2(groupGraphPattern, void 0);
12845
- groups.push(group2);
12846
- });
12847
- return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(
12848
- groups,
12849
- C.factory.sourceLocation(group, groups.at(-1))
12850
- ));
12851
- },
12852
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12853
- if (F2.isPatternUnion(ast)) {
12854
- const [head2, ...tail] = ast.patterns;
12855
- SUBRULE(groupGraphPattern, head2, void 0);
12856
- for (const pattern of tail) {
12857
- F2.printFilter(ast, () => PRINT_WORD("UNION"));
12858
- SUBRULE(groupGraphPattern, pattern, void 0);
12859
- }
12860
- } else {
12861
- SUBRULE(groupGraphPattern, ast, void 0);
12862
- }
12863
- }
12864
- };
12865
- var filter3 = {
12866
- name: "filter",
12867
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12868
- const filterToken = CONSUME(filter2);
12869
- const expression2 = SUBRULE(constraint, void 0);
12870
- return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
12871
- },
12872
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12873
- F2.printFilter(ast, () => PRINT_WORD("FILTER ("));
12874
- SUBRULE(expression, ast.expression, void 0);
12875
- F2.printFilter(ast, () => PRINT_WORD(")"));
12876
- }
12877
- };
12878
- var constraint = {
12879
- name: "constraint",
12880
- impl: ({ SUBRULE, OR }) => () => OR([
12881
- { ALT: () => SUBRULE(brackettedExpression, void 0) },
12882
- { ALT: () => SUBRULE(builtInCall, void 0) },
12883
- { ALT: () => SUBRULE(functionCall, void 0) }
12884
- ])
12885
- };
12886
- var functionCall = {
12887
- name: "functionCall",
12888
- impl: ({ ACTION, SUBRULE }) => (C) => {
12889
- const func = SUBRULE(iri2, void 0);
12890
- const args = SUBRULE(argList, void 0);
12891
- return ACTION(() => C.factory.expressionFunctionCall(
12892
- func,
12893
- args.val.args,
12894
- args.val.distinct,
12895
- C.factory.sourceLocation(func, args)
12896
- ));
12897
- }
12898
- };
12899
12660
 
12900
- // ../../packages/rules-sparql-1-1/lib/expressionHelpers.ts
12901
- function funcExpr1(func) {
12902
- return {
12903
- name: unCapitalize(func.name),
12904
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12905
- const operator = CONSUME(func);
12906
- CONSUME(symbols_exports.LParen);
12907
- const arg = SUBRULE(expression, void 0);
12908
- const close = CONSUME(symbols_exports.RParen);
12909
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12910
- }
12661
+ // ../../packages/rules-sparql-1-1/lib/grammar/tripleBlock.ts
12662
+ function triplesDotSeperated(triplesSameSubjectSubrule) {
12663
+ return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
12664
+ const triples = [];
12665
+ let parsedDot = true;
12666
+ let dotToken;
12667
+ AT_LEAST_ONE({
12668
+ GATE: () => parsedDot,
12669
+ DEF: () => {
12670
+ parsedDot = false;
12671
+ const template = SUBRULE(triplesSameSubjectSubrule);
12672
+ ACTION(() => {
12673
+ triples.push(...template);
12674
+ });
12675
+ OPTION(() => {
12676
+ dotToken = CONSUME(symbols_exports.dot);
12677
+ parsedDot = true;
12678
+ });
12679
+ }
12680
+ });
12681
+ return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12911
12682
  };
12912
12683
  }
12913
- function funcExpr2(func) {
12914
- return {
12915
- name: unCapitalize(func.name),
12916
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {
12917
- const operator = CONSUME(func);
12918
- CONSUME(symbols_exports.LParen);
12919
- const arg1 = SUBRULE1(expression, void 0);
12920
- CONSUME(symbols_exports.comma);
12921
- const arg2 = SUBRULE2(expression, void 0);
12922
- const close = CONSUME(symbols_exports.RParen);
12923
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
12684
+ var triplesBlock = {
12685
+ name: "triplesBlock",
12686
+ impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
12687
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12688
+ for (const [index, triple] of ast.triples.entries()) {
12689
+ HANDLE_LOC(triple, () => {
12690
+ const nextTriple = ast.triples.at(index);
12691
+ if (F2.isTripleCollection(triple)) {
12692
+ SUBRULE(graphNodePath, triple);
12693
+ F2.printFilter(triple, () => PRINT_WORD("."));
12694
+ } else {
12695
+ SUBRULE(graphNodePath, triple.subject);
12696
+ if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12697
+ SUBRULE(varOrTerm, triple.predicate);
12698
+ } else {
12699
+ SUBRULE(pathGenerator, triple.predicate, void 0);
12700
+ }
12701
+ SUBRULE(graphNodePath, triple.object);
12702
+ if (nextTriple === void 0 || F2.isTripleCollection(nextTriple) || !F2.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12703
+ F2.printFilter(ast, () => PRINT_WORD("."));
12704
+ } else if (F2.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12705
+ F2.printFilter(ast, () => PRINT_WORD(","));
12706
+ } else {
12707
+ F2.printFilter(ast, () => PRINT_WORD(";"));
12708
+ }
12709
+ }
12710
+ });
12924
12711
  }
12925
- };
12926
- }
12927
- function funcExpr3(func) {
12712
+ }
12713
+ };
12714
+ function triplesSameSubjectImpl(name, allowPaths) {
12928
12715
  return {
12929
- name: unCapitalize(func.name),
12930
- impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {
12931
- const operator = CONSUME(func);
12932
- CONSUME(symbols_exports.LParen);
12933
- const arg1 = SUBRULE1(expression, void 0);
12934
- CONSUME1(symbols_exports.comma);
12935
- const arg2 = SUBRULE2(expression, void 0);
12936
- CONSUME2(symbols_exports.comma);
12937
- const arg3 = SUBRULE3(expression, void 0);
12938
- const close = CONSUME(symbols_exports.RParen);
12939
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
12940
- }
12716
+ name,
12717
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12718
+ { ALT: () => {
12719
+ const subject = SUBRULE(varOrTerm);
12720
+ const res = SUBRULE(
12721
+ allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
12722
+ ACTION(() => C.factory.dematerialized(subject))
12723
+ );
12724
+ return ACTION(() => {
12725
+ if (res.length > 0) {
12726
+ res[0].subject = subject;
12727
+ res[0].loc = C.factory.sourceLocation(subject, res[0]);
12728
+ }
12729
+ return res;
12730
+ });
12731
+ } },
12732
+ { ALT: () => {
12733
+ const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
12734
+ const restNode = SUBRULE(
12735
+ allowPaths ? propertyListPath : propertyList,
12736
+ ACTION(() => C.factory.graphNodeIdentifier(subjectNode))
12737
+ );
12738
+ return ACTION(() => {
12739
+ if (restNode.length === 0) {
12740
+ return [subjectNode];
12741
+ }
12742
+ restNode[0].subject = subjectNode;
12743
+ restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12744
+ return restNode;
12745
+ });
12746
+ } }
12747
+ ])
12941
12748
  };
12942
12749
  }
12943
- function funcVar1(func) {
12750
+ var triplesSameSubject = triplesSameSubjectImpl("triplesSameSubject", false);
12751
+ var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", true);
12752
+ var triplesTemplate = {
12753
+ name: "triplesTemplate",
12754
+ impl: triplesDotSeperated(triplesSameSubject)
12755
+ };
12756
+ function propertyListImpl(name, allowPaths) {
12944
12757
  return {
12945
- name: unCapitalize(func.name),
12946
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12947
- const operator = CONSUME(func);
12948
- CONSUME(symbols_exports.LParen);
12949
- const arg = SUBRULE(var_, void 0);
12950
- const close = CONSUME(symbols_exports.RParen);
12951
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12952
- }
12758
+ name,
12759
+ impl: ({ SUBRULE, OPTION }) => (_, subject) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? []
12953
12760
  };
12954
12761
  }
12955
- function funcExprOrNil1(func) {
12762
+ var propertyList = propertyListImpl("propertyList", false);
12763
+ var propertyListPath = propertyListImpl("propertyListPath", true);
12764
+ function propertyListNotEmptyImplementation(name, allowPaths) {
12956
12765
  return {
12957
- name: unCapitalize(func.name),
12958
- impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
12959
- const operator = CONSUME(func);
12960
- return OR([
12961
- { ALT: () => {
12962
- CONSUME(symbols_exports.LParen);
12963
- const arg = SUBRULE(expression, void 0);
12964
- const close = CONSUME(symbols_exports.RParen);
12965
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12966
- } },
12967
- { ALT: () => {
12968
- const nil2 = CONSUME(terminals_exports.nil);
12969
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12970
- } }
12971
- ]);
12766
+ name,
12767
+ impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, subject) => {
12768
+ const result = [];
12769
+ let parsedSemi = true;
12770
+ AT_LEAST_ONE({
12771
+ GATE: () => parsedSemi,
12772
+ DEF: () => {
12773
+ parsedSemi = false;
12774
+ const predicate = allowPaths ? OR1([
12775
+ { ALT: () => SUBRULE1(verbPath) },
12776
+ { ALT: () => SUBRULE1(verbSimple) }
12777
+ ]) : SUBRULE1(verb);
12778
+ const triples = SUBRULE1(
12779
+ allowPaths ? objectListPath : objectList,
12780
+ subject,
12781
+ predicate
12782
+ );
12783
+ MANY2(() => {
12784
+ CONSUME(symbols_exports.semi);
12785
+ parsedSemi = true;
12786
+ });
12787
+ ACTION(() => {
12788
+ result.push(...triples);
12789
+ });
12790
+ }
12791
+ });
12792
+ return result;
12972
12793
  }
12973
12794
  };
12974
12795
  }
12975
- function funcNil1(func) {
12796
+ var propertyListNotEmpty = propertyListNotEmptyImplementation("propertyListNotEmpty", false);
12797
+ var propertyListPathNotEmpty = propertyListNotEmptyImplementation("propertyListPathNotEmpty", true);
12798
+ var verbPath = {
12799
+ name: "verbPath",
12800
+ impl: ({ SUBRULE }) => () => SUBRULE(path)
12801
+ };
12802
+ var verbSimple = {
12803
+ name: "verbSimple",
12804
+ impl: ({ SUBRULE }) => () => SUBRULE(var_)
12805
+ };
12806
+ function objectListImpl(name, allowPaths) {
12976
12807
  return {
12977
- name: unCapitalize(func.name),
12978
- impl: ({ ACTION, CONSUME }) => (C) => {
12979
- const operator = CONSUME(func);
12980
- const nil2 = CONSUME(terminals_exports.nil);
12981
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12808
+ name,
12809
+ impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, subj, pred) => {
12810
+ const objects = [];
12811
+ AT_LEAST_ONE_SEP({
12812
+ SEP: symbols_exports.comma,
12813
+ DEF: () => {
12814
+ const objectTriple = SUBRULE(allowPaths ? objectPath : object, subj, pred);
12815
+ ACTION(() => {
12816
+ objects.push(objectTriple);
12817
+ });
12818
+ }
12819
+ });
12820
+ return objects;
12982
12821
  }
12983
12822
  };
12984
12823
  }
12985
- function funcExprList1(func) {
12824
+ var objectList = objectListImpl("objectList", false);
12825
+ var objectListPath = objectListImpl("objectListPath", true);
12826
+ function objectImpl(name, allowPaths) {
12986
12827
  return {
12987
- name: unCapitalize(func.name),
12988
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12989
- const operator = CONSUME(func);
12990
- const args = SUBRULE(expressionList, void 0);
12991
- return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
12828
+ name,
12829
+ impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
12830
+ const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
12831
+ return ACTION(() => C.factory.triple(subject, predicate, node));
12992
12832
  }
12993
12833
  };
12994
12834
  }
12995
- function funcExpr2or3(func) {
12835
+ var object = objectImpl("object", false);
12836
+ var objectPath = objectImpl("objectPath", true);
12837
+ function collectionImpl(name, allowPaths) {
12996
12838
  return {
12997
- name: unCapitalize(func.name),
12998
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => (C) => {
12999
- const operator = CONSUME(func);
13000
- CONSUME(symbols_exports.LParen);
13001
- const arg1 = SUBRULE1(expression, void 0);
13002
- CONSUME1(symbols_exports.comma);
13003
- const arg2 = SUBRULE2(expression, void 0);
13004
- const arg3 = OPTION(() => {
13005
- CONSUME2(symbols_exports.comma);
13006
- return SUBRULE3(expression, void 0);
12839
+ name,
12840
+ impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {
12841
+ const terms = [];
12842
+ const startToken = CONSUME(symbols_exports.LParen);
12843
+ AT_LEAST_ONE(() => {
12844
+ terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));
13007
12845
  });
13008
- const close = CONSUME(symbols_exports.RParen);
13009
- return ACTION(() => C.factory.expressionOperation(
13010
- operator.image,
13011
- arg3 ? [arg1, arg2, arg3] : [arg1, arg2],
13012
- C.factory.sourceLocation(operator, close)
13013
- ));
12846
+ const endToken = CONSUME(symbols_exports.RParen);
12847
+ return ACTION(() => {
12848
+ const F2 = C.factory;
12849
+ const triples = [];
12850
+ const predFirst = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" /* FIRST */, void 0);
12851
+ const predRest = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" /* REST */, void 0);
12852
+ const predNil = F2.namedNode(F2.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */, void 0);
12853
+ const listHead = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12854
+ let iterHead = listHead;
12855
+ for (const [index, term] of terms.entries()) {
12856
+ const lastInList = index === terms.length - 1;
12857
+ const headTriple = F2.triple(
12858
+ iterHead,
12859
+ predFirst,
12860
+ term
12861
+ );
12862
+ triples.push(headTriple);
12863
+ if (lastInList) {
12864
+ const nilTriple = F2.triple(iterHead, predRest, predNil);
12865
+ triples.push(nilTriple);
12866
+ } else {
12867
+ const tail = F2.blankNode(void 0, F2.sourceLocationNoMaterialize());
12868
+ const linkTriple = F2.triple(iterHead, predRest, tail);
12869
+ triples.push(linkTriple);
12870
+ iterHead = tail;
12871
+ }
12872
+ }
12873
+ return F2.tripleCollectionList(listHead, triples, F2.sourceLocation(startToken, endToken));
12874
+ });
12875
+ },
12876
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12877
+ F2.printFilter(ast, () => PRINT_WORD("("));
12878
+ for (const [idx, triple] of ast.triples.entries()) {
12879
+ if (idx % 2 === 0) {
12880
+ SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object);
12881
+ }
12882
+ }
12883
+ F2.printFilter(ast, () => PRINT_WORD(")"));
13014
12884
  }
13015
12885
  };
13016
12886
  }
13017
- function funcExpr3or4(func) {
12887
+ var collection = collectionImpl("collection", false);
12888
+ var collectionPath = collectionImpl("collectionPath", true);
12889
+ function triplesNodeImpl(name, allowPaths) {
13018
12890
  return {
13019
- name: unCapitalize(func.name),
13020
- impl: ({
13021
- ACTION,
13022
- CONSUME,
13023
- SUBRULE1,
13024
- SUBRULE2,
13025
- SUBRULE3,
13026
- SUBRULE4,
13027
- CONSUME1,
13028
- OPTION,
13029
- CONSUME2,
13030
- CONSUME3
13031
- }) => (C) => {
13032
- const operator = CONSUME(func);
13033
- CONSUME(symbols_exports.LParen);
13034
- const arg1 = SUBRULE1(expression, void 0);
13035
- CONSUME1(symbols_exports.comma);
13036
- const arg2 = SUBRULE2(expression, void 0);
13037
- CONSUME2(symbols_exports.comma);
13038
- const arg3 = SUBRULE3(expression, void 0);
13039
- const arg4 = OPTION(() => {
13040
- CONSUME3(symbols_exports.comma);
13041
- return SUBRULE4(expression, void 0);
13042
- });
13043
- const close = CONSUME(symbols_exports.RParen);
13044
- return ACTION(() => C.factory.expressionOperation(
13045
- operator.image,
13046
- arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3],
13047
- C.factory.sourceLocation(operator, close)
13048
- ));
13049
- }
12891
+ name,
12892
+ impl: ({ SUBRULE, OR }) => () => OR([
12893
+ { ALT: () => SUBRULE(allowPaths ? collectionPath : collection) },
12894
+ { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList) }
12895
+ ]),
12896
+ gImpl: ({ SUBRULE }) => (ast) => ast.subType === "list" ? SUBRULE(allowPaths ? collectionPath : collection, ast) : SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast)
13050
12897
  };
13051
12898
  }
13052
- function funcGroupGraphPattern(func) {
12899
+ var triplesNode = triplesNodeImpl("triplesNode", false);
12900
+ var triplesNodePath = triplesNodeImpl("triplesNodePath", true);
12901
+ function blankNodePropertyListImpl(name, allowPaths) {
12902
+ const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
13053
12903
  return {
13054
- name: unCapitalize(func.name),
12904
+ name,
13055
12905
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13056
- const operator = CONSUME(func);
13057
- const group = SUBRULE(groupGraphPattern, void 0);
13058
- return ACTION(() => C.factory.expressionPatternOperation(
13059
- operator.image,
13060
- group,
13061
- C.factory.sourceLocation(operator, group)
12906
+ const startToken = CONSUME(symbols_exports.LSquare);
12907
+ const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12908
+ const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode2);
12909
+ const endToken = CONSUME(symbols_exports.RSquare);
12910
+ return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
12911
+ blankNode2,
12912
+ propList,
12913
+ C.factory.sourceLocation(startToken, endToken)
13062
12914
  ));
12915
+ },
12916
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F2 }) => {
12917
+ F2.printFilter(ast, () => PRINT("["));
12918
+ for (const triple of ast.triples) {
12919
+ HANDLE_LOC(triple, () => {
12920
+ if (F2.isTerm(triple.predicate) && F2.isTermVariable(triple.predicate)) {
12921
+ SUBRULE(varOrTerm, triple.predicate);
12922
+ } else {
12923
+ SUBRULE(pathGenerator, triple.predicate, void 0);
12924
+ }
12925
+ SUBRULE(graphNodePath, triple.object);
12926
+ F2.printFilter(ast, () => PRINT_WORD(";"));
12927
+ });
12928
+ }
12929
+ F2.printFilter(ast, () => PRINT("]"));
13063
12930
  }
13064
12931
  };
13065
12932
  }
13066
- function baseAggregateFunc(func) {
12933
+ var blankNodePropertyList = blankNodePropertyListImpl("blankNodePropertyList", false);
12934
+ var blankNodePropertyListPath = blankNodePropertyListImpl("blankNodePropertyListPath", true);
12935
+ function graphNodeImpl(name, allowPaths) {
12936
+ const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
13067
12937
  return {
13068
- name: unCapitalize(func.name),
13069
- impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
13070
- const operator = CONSUME(func);
13071
- CONSUME(symbols_exports.LParen);
13072
- const distinct2 = OPTION(() => CONSUME(distinct));
13073
- const expr1 = SUBRULE(expression, void 0);
13074
- const close = CONSUME(symbols_exports.RParen);
13075
- return ACTION(() => C.factory.aggregate(
13076
- operator.image,
13077
- distinct2 !== void 0,
13078
- expr1,
13079
- void 0,
13080
- C.factory.sourceLocation(operator, close)
13081
- ));
12938
+ name,
12939
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12940
+ { ALT: () => SUBRULE(varOrTerm) },
12941
+ {
12942
+ GATE: () => C.parseMode.has("canCreateBlankNodes"),
12943
+ ALT: () => SUBRULE(triplesNodeRule)
12944
+ }
12945
+ ]),
12946
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12947
+ if (F2.isTerm(ast)) {
12948
+ SUBRULE(varOrTerm, ast);
12949
+ } else {
12950
+ SUBRULE(triplesNodeRule, ast);
12951
+ }
13082
12952
  }
13083
12953
  };
13084
12954
  }
12955
+ var graphNode = graphNodeImpl("graphNode", false);
12956
+ var graphNodePath = graphNodeImpl("graphNodePath", true);
13085
12957
 
13086
- // ../../packages/rules-sparql-1-1/lib/grammar/builtIn.ts
13087
- var builtInStr = funcExpr1(BuildinCalls_exports.str);
13088
- var builtInLang = funcExpr1(BuildinCalls_exports.lang);
13089
- var builtInLangmatches = funcExpr2(BuildinCalls_exports.langmatches);
13090
- var builtInDatatype = funcExpr1(BuildinCalls_exports.datatype);
13091
- var builtInBound = funcVar1(BuildinCalls_exports.bound);
13092
- var builtInIri = funcExpr1(BuildinCalls_exports.iri);
13093
- var builtInUri = funcExpr1(BuildinCalls_exports.uri);
13094
- var builtInBnodeSparqlJs = funcExprOrNil1(BuildinCalls_exports.bnode);
13095
- var builtInRand = funcNil1(BuildinCalls_exports.rand);
13096
- var builtInAbs = funcExpr1(BuildinCalls_exports.abs);
13097
- var builtInCeil = funcExpr1(BuildinCalls_exports.ceil);
13098
- var builtInFloor = funcExpr1(BuildinCalls_exports.floor);
13099
- var builtInRound = funcExpr1(BuildinCalls_exports.round);
13100
- var builtInConcat = funcExprList1(BuildinCalls_exports.concat);
13101
- var builtInStrlen = funcExpr1(BuildinCalls_exports.strlen);
13102
- var builtInUcase = funcExpr1(BuildinCalls_exports.ucase);
13103
- var builtInLcase = funcExpr1(BuildinCalls_exports.lcase);
13104
- var builtInEncode_for_uri = funcExpr1(BuildinCalls_exports.encode_for_uri);
13105
- var builtInContains = funcExpr2(BuildinCalls_exports.contains);
13106
- var builtInStrstarts = funcExpr2(BuildinCalls_exports.strstarts);
13107
- var builtInStrends = funcExpr2(BuildinCalls_exports.strends);
13108
- var builtInStrbefore = funcExpr2(BuildinCalls_exports.strbefore);
13109
- var builtInStrafter = funcExpr2(BuildinCalls_exports.strafter);
13110
- var builtInYear = funcExpr1(BuildinCalls_exports.year);
13111
- var builtInMonth = funcExpr1(BuildinCalls_exports.month);
13112
- var builtInDay = funcExpr1(BuildinCalls_exports.day);
13113
- var builtInHours = funcExpr1(BuildinCalls_exports.hours);
13114
- var builtInMinutes = funcExpr1(BuildinCalls_exports.minutes);
13115
- var builtInSeconds = funcExpr1(BuildinCalls_exports.seconds);
13116
- var builtInTimezone = funcExpr1(BuildinCalls_exports.timezone);
13117
- var builtInTz = funcExpr1(BuildinCalls_exports.tz);
13118
- var builtInNow = funcNil1(BuildinCalls_exports.now);
13119
- var builtInUuid = funcNil1(BuildinCalls_exports.uuid);
13120
- var builtInStruuid = funcNil1(BuildinCalls_exports.struuid);
13121
- var builtInMd5 = funcExpr1(BuildinCalls_exports.md5);
13122
- var builtInSha1 = funcExpr1(BuildinCalls_exports.sha1);
13123
- var builtInSha256 = funcExpr1(BuildinCalls_exports.sha256);
13124
- var builtInSha384 = funcExpr1(BuildinCalls_exports.sha384);
13125
- var builtInSha512 = funcExpr1(BuildinCalls_exports.sha512);
13126
- var builtInCoalesce = funcExprList1(BuildinCalls_exports.coalesce);
13127
- var builtInIf = funcExpr3(BuildinCalls_exports.if_);
13128
- var builtInStrlang = funcExpr2(BuildinCalls_exports.strlang);
13129
- var builtInStrdt = funcExpr2(BuildinCalls_exports.strdt);
13130
- var builtInSameterm = funcExpr2(BuildinCalls_exports.sameterm);
13131
- var builtInIsiri = funcExpr1(BuildinCalls_exports.isiri);
13132
- var builtInIsuri = funcExpr1(BuildinCalls_exports.isuri);
13133
- var builtInIsblank = funcExpr1(BuildinCalls_exports.isblank);
13134
- var builtInIsliteral = funcExpr1(BuildinCalls_exports.isliteral);
13135
- var builtInIsnumeric = funcExpr1(BuildinCalls_exports.isnumeric);
13136
- function builtInCallList(SUBRULE) {
13137
- return [
13138
- { ALT: () => SUBRULE(aggregate, void 0) },
13139
- { ALT: () => SUBRULE(builtInStr, void 0) },
13140
- { ALT: () => SUBRULE(builtInLang, void 0) },
13141
- { ALT: () => SUBRULE(builtInLangmatches, void 0) },
13142
- { ALT: () => SUBRULE(builtInDatatype, void 0) },
13143
- { ALT: () => SUBRULE(builtInBound, void 0) },
13144
- { ALT: () => SUBRULE(builtInIri, void 0) },
13145
- { ALT: () => SUBRULE(builtInUri, void 0) },
13146
- { ALT: () => SUBRULE(builtInBnodeSparqlJs, void 0) },
13147
- { ALT: () => SUBRULE(builtInRand, void 0) },
13148
- { ALT: () => SUBRULE(builtInAbs, void 0) },
13149
- { ALT: () => SUBRULE(builtInCeil, void 0) },
13150
- { ALT: () => SUBRULE(builtInFloor, void 0) },
13151
- { ALT: () => SUBRULE(builtInRound, void 0) },
13152
- { ALT: () => SUBRULE(builtInConcat, void 0) },
13153
- { ALT: () => SUBRULE(substringExpression, void 0) },
13154
- { ALT: () => SUBRULE(builtInStrlen, void 0) },
13155
- { ALT: () => SUBRULE(strReplaceExpression, void 0) },
13156
- { ALT: () => SUBRULE(builtInUcase, void 0) },
13157
- { ALT: () => SUBRULE(builtInLcase, void 0) },
13158
- { ALT: () => SUBRULE(builtInEncode_for_uri, void 0) },
13159
- { ALT: () => SUBRULE(builtInContains, void 0) },
13160
- { ALT: () => SUBRULE(builtInStrstarts, void 0) },
13161
- { ALT: () => SUBRULE(builtInStrends, void 0) },
13162
- { ALT: () => SUBRULE(builtInStrbefore, void 0) },
13163
- { ALT: () => SUBRULE(builtInStrafter, void 0) },
13164
- { ALT: () => SUBRULE(builtInYear, void 0) },
13165
- { ALT: () => SUBRULE(builtInMonth, void 0) },
13166
- { ALT: () => SUBRULE(builtInDay, void 0) },
13167
- { ALT: () => SUBRULE(builtInHours, void 0) },
13168
- { ALT: () => SUBRULE(builtInMinutes, void 0) },
13169
- { ALT: () => SUBRULE(builtInSeconds, void 0) },
13170
- { ALT: () => SUBRULE(builtInTimezone, void 0) },
13171
- { ALT: () => SUBRULE(builtInTz, void 0) },
13172
- { ALT: () => SUBRULE(builtInNow, void 0) },
13173
- { ALT: () => SUBRULE(builtInUuid, void 0) },
13174
- { ALT: () => SUBRULE(builtInStruuid, void 0) },
13175
- { ALT: () => SUBRULE(builtInMd5, void 0) },
13176
- { ALT: () => SUBRULE(builtInSha1, void 0) },
13177
- { ALT: () => SUBRULE(builtInSha256, void 0) },
13178
- { ALT: () => SUBRULE(builtInSha384, void 0) },
13179
- { ALT: () => SUBRULE(builtInSha512, void 0) },
13180
- { ALT: () => SUBRULE(builtInCoalesce, void 0) },
13181
- { ALT: () => SUBRULE(builtInIf, void 0) },
13182
- { ALT: () => SUBRULE(builtInStrlang, void 0) },
13183
- { ALT: () => SUBRULE(builtInStrdt, void 0) },
13184
- { ALT: () => SUBRULE(builtInSameterm, void 0) },
13185
- { ALT: () => SUBRULE(builtInIsiri, void 0) },
13186
- { ALT: () => SUBRULE(builtInIsuri, void 0) },
13187
- { ALT: () => SUBRULE(builtInIsblank, void 0) },
13188
- { ALT: () => SUBRULE(builtInIsliteral, void 0) },
13189
- { ALT: () => SUBRULE(builtInIsnumeric, void 0) },
13190
- { ALT: () => SUBRULE(regexExpression, void 0) },
13191
- { ALT: () => SUBRULE(existsFunc, void 0) },
13192
- { ALT: () => SUBRULE(notExistsFunc, void 0) }
13193
- ];
13194
- }
13195
- var builtInCall = {
13196
- name: "builtInCall",
13197
- impl: ({ OR, SUBRULE, cache }) => () => {
13198
- const cached = cache.get(builtInCall);
13199
- if (cached) {
13200
- return OR(cached);
13201
- }
13202
- const builtIns = builtInCallList(SUBRULE);
13203
- cache.set(builtInCall, builtIns);
13204
- return OR(builtIns);
12958
+ // ../../packages/rules-sparql-1-1/lib/grammar/whereClause.ts
12959
+ var whereClause = {
12960
+ name: "whereClause",
12961
+ impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12962
+ const where2 = OPTION(() => CONSUME(where));
12963
+ const group = SUBRULE(groupGraphPattern);
12964
+ return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12965
+ },
12966
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12967
+ F2.printFilter(ast, () => PRINT_WORD("WHERE"));
12968
+ SUBRULE(groupGraphPattern, ast.val);
13205
12969
  }
13206
12970
  };
13207
- var regexExpression = funcExpr2or3(BuildinCalls_exports.regex);
13208
- var substringExpression = funcExpr2or3(BuildinCalls_exports.substr);
13209
- var strReplaceExpression = funcExpr3or4(BuildinCalls_exports.replace);
13210
- var existsFunc = funcGroupGraphPattern(BuildinCalls_exports.exists);
13211
- var notExistsFunc = funcGroupGraphPattern(BuildinCalls_exports.notexists);
13212
- var aggregateCount = {
13213
- name: unCapitalize(BuildinCalls_exports.count.name),
13214
- impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
13215
- const operatorToken = CONSUME(BuildinCalls_exports.count);
13216
- CONSUME(symbols_exports.LParen);
13217
- const distinctToken = OPTION(() => CONSUME(distinct));
13218
- const expressionVal = OR([
13219
- { ALT: () => {
13220
- const starToken = CONSUME(symbols_exports.star);
13221
- return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
13222
- } },
13223
- { ALT: () => SUBRULE(expression, void 0) }
12971
+ var groupGraphPattern = {
12972
+ name: "groupGraphPattern",
12973
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
12974
+ const open = CONSUME(symbols_exports.LCurly);
12975
+ const patterns = OR([
12976
+ { ALT: () => [SUBRULE(subSelect)] },
12977
+ { ALT: () => SUBRULE(groupGraphPatternSub) }
13224
12978
  ]);
13225
- const closeToken = CONSUME(symbols_exports.RParen);
13226
- return ACTION(() => {
13227
- const F2 = C.factory;
13228
- if (C.factory.isWildcard(expressionVal)) {
13229
- return F2.aggregate(
13230
- operatorToken.image,
13231
- Boolean(distinctToken),
13232
- expressionVal,
13233
- void 0,
13234
- C.factory.sourceLocation(operatorToken, closeToken)
13235
- );
12979
+ const close = CONSUME(symbols_exports.RCurly);
12980
+ return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12981
+ },
12982
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
12983
+ F2.printFilter(ast, () => PRINT_WORD("{"));
12984
+ for (const pattern of ast.patterns) {
12985
+ SUBRULE(generatePattern, pattern);
12986
+ }
12987
+ F2.printFilter(ast, () => PRINT_WORD("}"));
12988
+ }
12989
+ };
12990
+ var generatePattern = {
12991
+ name: "generatePattern",
12992
+ gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
12993
+ if (ast.type === "query") {
12994
+ SUBRULE(query, F2.querySelect({
12995
+ context: [],
12996
+ datasets: F2.datasetClauses([], F2.sourceLocation()),
12997
+ where: ast.where,
12998
+ variables: ast.variables,
12999
+ solutionModifiers: ast.solutionModifiers,
13000
+ values: ast.values,
13001
+ distinct: ast.distinct,
13002
+ reduced: ast.reduced
13003
+ }, ast.loc));
13004
+ } else if (ast.subType === "group") {
13005
+ SUBRULE(groupGraphPattern, ast);
13006
+ } else if (ast.subType === "bgp") {
13007
+ SUBRULE(triplesBlock, ast);
13008
+ } else {
13009
+ SUBRULE(graphPatternNotTriples, ast);
13010
+ }
13011
+ }
13012
+ };
13013
+ var groupGraphPatternSub = {
13014
+ name: "groupGraphPatternSub",
13015
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
13016
+ const patterns = [];
13017
+ const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock));
13018
+ if (bgpPattern) {
13019
+ patterns.push(bgpPattern);
13020
+ }
13021
+ MANY(() => {
13022
+ const notTriples = SUBRULE(graphPatternNotTriples);
13023
+ patterns.push(notTriples);
13024
+ OPTION2(() => CONSUME(symbols_exports.dot));
13025
+ const moreTriples = OPTION3(() => SUBRULE2(triplesBlock));
13026
+ if (moreTriples) {
13027
+ patterns.push(moreTriples);
13028
+ }
13029
+ });
13030
+ ACTION(() => checkNote13(patterns));
13031
+ return patterns;
13032
+ }
13033
+ };
13034
+ var graphPatternNotTriples = {
13035
+ name: "graphPatternNotTriples",
13036
+ impl: ({ SUBRULE, OR }) => () => OR([
13037
+ { ALT: () => SUBRULE(groupOrUnionGraphPattern) },
13038
+ { ALT: () => SUBRULE(optionalGraphPattern) },
13039
+ { ALT: () => SUBRULE(minusGraphPattern) },
13040
+ { ALT: () => SUBRULE(graphGraphPattern) },
13041
+ { ALT: () => SUBRULE(serviceGraphPattern) },
13042
+ { ALT: () => SUBRULE(filter3) },
13043
+ { ALT: () => SUBRULE(bind2) },
13044
+ { ALT: () => SUBRULE(inlineData) }
13045
+ ]),
13046
+ gImpl: ({ SUBRULE }) => (ast) => {
13047
+ switch (ast.subType) {
13048
+ case "group":
13049
+ case "union":
13050
+ SUBRULE(groupOrUnionGraphPattern, ast);
13051
+ break;
13052
+ case "optional":
13053
+ SUBRULE(optionalGraphPattern, ast);
13054
+ break;
13055
+ case "minus":
13056
+ SUBRULE(minusGraphPattern, ast);
13057
+ break;
13058
+ case "graph":
13059
+ SUBRULE(graphGraphPattern, ast);
13060
+ break;
13061
+ case "service":
13062
+ SUBRULE(serviceGraphPattern, ast);
13063
+ break;
13064
+ case "filter":
13065
+ SUBRULE(filter3, ast);
13066
+ break;
13067
+ case "bind":
13068
+ SUBRULE(bind2, ast);
13069
+ break;
13070
+ case "values":
13071
+ SUBRULE(inlineData, ast);
13072
+ break;
13073
+ }
13074
+ }
13075
+ };
13076
+ var optionalGraphPattern = {
13077
+ name: "optionalGraphPattern",
13078
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13079
+ const optional2 = CONSUME(optional);
13080
+ const group = SUBRULE(groupGraphPattern);
13081
+ return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
13082
+ },
13083
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13084
+ F2.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
13085
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
13086
+ }
13087
+ };
13088
+ var graphGraphPattern = {
13089
+ name: "graphGraphPattern",
13090
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13091
+ const graph2 = CONSUME(graph_exports.graph);
13092
+ const name = SUBRULE(varOrIri);
13093
+ const group = SUBRULE(groupGraphPattern);
13094
+ return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
13095
+ },
13096
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13097
+ F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
13098
+ SUBRULE(varOrTerm, ast.name);
13099
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
13100
+ }
13101
+ };
13102
+ var serviceGraphPattern = {
13103
+ name: "serviceGraphPattern",
13104
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
13105
+ const service2 = CONSUME(service);
13106
+ const silent2 = OPTION(() => {
13107
+ CONSUME(silent);
13108
+ return true;
13109
+ }) ?? false;
13110
+ const name = SUBRULE1(varOrIri);
13111
+ const group = SUBRULE1(groupGraphPattern);
13112
+ return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
13113
+ },
13114
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13115
+ F2.printFilter(ast, () => {
13116
+ PRINT_WORD("SERVICE");
13117
+ if (ast.silent) {
13118
+ PRINT_WORD("SILENT");
13236
13119
  }
13237
- return F2.aggregate(
13238
- operatorToken.image,
13239
- Boolean(distinctToken),
13240
- expressionVal,
13241
- void 0,
13242
- C.factory.sourceLocation(operatorToken, closeToken)
13243
- );
13244
13120
  });
13121
+ SUBRULE(varOrTerm, ast.name);
13122
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
13245
13123
  }
13246
13124
  };
13247
- var aggregateSum = baseAggregateFunc(BuildinCalls_exports.sum);
13248
- var aggregateMin = baseAggregateFunc(BuildinCalls_exports.min);
13249
- var aggregateMax = baseAggregateFunc(BuildinCalls_exports.max);
13250
- var aggregateAvg = baseAggregateFunc(BuildinCalls_exports.avg);
13251
- var aggregateSample = baseAggregateFunc(BuildinCalls_exports.sample);
13252
- var aggregateGroup_concat = {
13253
- name: unCapitalize(BuildinCalls_exports.groupConcat.name),
13254
- impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
13255
- const operatorToken = CONSUME(BuildinCalls_exports.groupConcat);
13125
+ var bind2 = {
13126
+ name: "bind",
13127
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13128
+ const bind3 = CONSUME(bind);
13256
13129
  CONSUME(symbols_exports.LParen);
13257
- const distinctToken = OPTION1(() => CONSUME(distinct));
13258
- const expr = SUBRULE(expression, void 0);
13259
- const sep = OPTION2(() => {
13260
- CONSUME(symbols_exports.semi);
13261
- CONSUME(separator);
13262
- CONSUME(symbols_exports.equal);
13263
- return SUBRULE(string, void 0);
13130
+ const expressionVal = SUBRULE(expression);
13131
+ CONSUME(as);
13132
+ const variable = SUBRULE(var_);
13133
+ const close = CONSUME(symbols_exports.RParen);
13134
+ return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
13135
+ },
13136
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13137
+ F2.printFilter(ast, () => PRINT_WORD("BIND", "("));
13138
+ SUBRULE(expression, ast.expression);
13139
+ F2.printFilter(ast, () => PRINT_WORD("AS"));
13140
+ SUBRULE(var_, ast.variable);
13141
+ F2.printFilter(ast, () => PRINT_WORD(")"));
13142
+ }
13143
+ };
13144
+ var inlineData = {
13145
+ name: "inlineData",
13146
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13147
+ const values3 = CONSUME(values2);
13148
+ const datablock = SUBRULE(dataBlock);
13149
+ return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
13150
+ },
13151
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13152
+ const variables = Object.keys(ast.values[0]);
13153
+ F2.printFilter(ast, () => {
13154
+ PRINT_WORD("VALUES", "(");
13155
+ for (const variable of variables) {
13156
+ PRINT_WORD(`?${variable}`);
13157
+ }
13158
+ PRINT_WORD(")", "{");
13264
13159
  });
13265
- const closeToken = CONSUME(symbols_exports.RParen);
13266
- return ACTION(() => {
13267
- const F2 = C.factory;
13268
- return F2.aggregate(
13269
- operatorToken.image,
13270
- Boolean(distinctToken),
13271
- expr,
13272
- sep?.value ?? " ",
13273
- F2.sourceLocation(operatorToken, closeToken)
13274
- );
13160
+ for (const mapping of ast.values) {
13161
+ F2.printFilter(ast, () => PRINT_WORD("("));
13162
+ for (const variable of variables) {
13163
+ if (mapping[variable] === void 0) {
13164
+ F2.printFilter(ast, () => PRINT_WORD("UNDEF"));
13165
+ } else {
13166
+ SUBRULE(graphNodePath, mapping[variable]);
13167
+ }
13168
+ }
13169
+ F2.printFilter(ast, () => PRINT_WORD(")"));
13170
+ }
13171
+ F2.printFilter(ast, () => PRINT_WORD("}"));
13172
+ }
13173
+ };
13174
+ var dataBlock = {
13175
+ name: "dataBlock",
13176
+ impl: ({ SUBRULE, OR }) => () => OR([
13177
+ { ALT: () => SUBRULE(inlineDataOneVar) },
13178
+ { ALT: () => SUBRULE(inlineDataFull) }
13179
+ ])
13180
+ };
13181
+ var inlineDataOneVar = {
13182
+ name: "inlineDataOneVar",
13183
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
13184
+ const res = [];
13185
+ const varVal = SUBRULE(var_);
13186
+ CONSUME(symbols_exports.LCurly);
13187
+ MANY(() => {
13188
+ const value = SUBRULE(dataBlockValue);
13189
+ ACTION(() => {
13190
+ res.push({ [varVal.value]: value });
13191
+ });
13275
13192
  });
13193
+ const close = CONSUME(symbols_exports.RCurly);
13194
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
13276
13195
  }
13277
13196
  };
13278
- var aggregate = {
13279
- name: "aggregate",
13280
- impl: ({ ACTION, SUBRULE, OR }) => (C) => {
13281
- const wasInAggregate = ACTION(() => C.parseMode.has("inAggregate"));
13282
- ACTION(() => C.parseMode.add("inAggregate"));
13283
- const result = OR([
13284
- { ALT: () => SUBRULE(aggregateCount, void 0) },
13285
- { ALT: () => SUBRULE(aggregateSum, void 0) },
13286
- { ALT: () => SUBRULE(aggregateMin, void 0) },
13287
- { ALT: () => SUBRULE(aggregateMax, void 0) },
13288
- { ALT: () => SUBRULE(aggregateAvg, void 0) },
13289
- { ALT: () => SUBRULE(aggregateSample, void 0) },
13290
- { ALT: () => SUBRULE(aggregateGroup_concat, void 0) }
13197
+ var inlineDataFull = {
13198
+ name: "inlineDataFull",
13199
+ impl: ({
13200
+ ACTION,
13201
+ OR,
13202
+ MANY1,
13203
+ MANY2,
13204
+ MANY3,
13205
+ MANY4,
13206
+ SUBRULE,
13207
+ CONSUME1,
13208
+ CONSUME2
13209
+ }) => (C) => {
13210
+ const res = [];
13211
+ const vars = [];
13212
+ return OR([
13213
+ { ALT: () => {
13214
+ const nil2 = CONSUME1(terminals_exports.nil);
13215
+ CONSUME1(symbols_exports.LCurly);
13216
+ MANY1(() => {
13217
+ CONSUME2(terminals_exports.nil);
13218
+ res.push({});
13219
+ });
13220
+ const close = CONSUME1(symbols_exports.RCurly);
13221
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
13222
+ } },
13223
+ { ALT: () => {
13224
+ const open = CONSUME1(symbols_exports.LParen);
13225
+ MANY2(() => {
13226
+ vars.push(SUBRULE(var_));
13227
+ });
13228
+ CONSUME1(symbols_exports.RParen);
13229
+ CONSUME2(symbols_exports.LCurly);
13230
+ MANY3(() => {
13231
+ let parsedValues = 0;
13232
+ const currentRow = {};
13233
+ CONSUME2(symbols_exports.LParen);
13234
+ MANY4(() => {
13235
+ if (parsedValues >= vars.length) {
13236
+ throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
13237
+ }
13238
+ const value = SUBRULE(dataBlockValue);
13239
+ ACTION(() => {
13240
+ currentRow[vars[parsedValues].value] = value;
13241
+ parsedValues++;
13242
+ });
13243
+ });
13244
+ CONSUME2(symbols_exports.RParen);
13245
+ ACTION(() => {
13246
+ res.push(currentRow);
13247
+ if (vars.length !== parsedValues) {
13248
+ throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
13249
+ }
13250
+ });
13251
+ });
13252
+ const close = CONSUME2(symbols_exports.RCurly);
13253
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
13254
+ } }
13291
13255
  ]);
13292
- ACTION(() => !wasInAggregate && C.parseMode.delete("inAggregate"));
13293
- ACTION(() => {
13294
- if (!C.parseMode.has("canParseAggregate")) {
13295
- throw new Error("Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.");
13296
- }
13297
- if (C.parseMode.has("inAggregate")) {
13298
- throw new Error("An aggregate function is not allowed within an aggregate function.");
13299
- }
13256
+ }
13257
+ };
13258
+ var dataBlockValue = {
13259
+ name: "dataBlockValue",
13260
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
13261
+ { ALT: () => SUBRULE(iri2) },
13262
+ { ALT: () => SUBRULE(rdfLiteral) },
13263
+ { ALT: () => SUBRULE(numericLiteral) },
13264
+ { ALT: () => SUBRULE(booleanLiteral) },
13265
+ { ALT: () => {
13266
+ CONSUME(undef);
13267
+ return void 0;
13268
+ } }
13269
+ ])
13270
+ };
13271
+ var minusGraphPattern = {
13272
+ name: "minusGraphPattern",
13273
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13274
+ const minus2 = CONSUME(minus);
13275
+ const group = SUBRULE(groupGraphPattern);
13276
+ return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
13277
+ },
13278
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13279
+ F2.printFilter(ast, () => PRINT_WORD("MINUS"));
13280
+ SUBRULE(groupGraphPattern, F2.patternGroup(ast.patterns, ast.loc));
13281
+ }
13282
+ };
13283
+ var groupOrUnionGraphPattern = {
13284
+ name: "groupOrUnionGraphPattern",
13285
+ impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
13286
+ const groups = [];
13287
+ const group = SUBRULE1(groupGraphPattern);
13288
+ groups.push(group);
13289
+ MANY(() => {
13290
+ CONSUME(union);
13291
+ const group2 = SUBRULE2(groupGraphPattern);
13292
+ groups.push(group2);
13300
13293
  });
13301
- return result;
13294
+ return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(
13295
+ groups,
13296
+ C.factory.sourceLocation(group, groups.at(-1))
13297
+ ));
13302
13298
  },
13303
13299
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13304
- F2.printFilter(ast, () => {
13305
- PRINT_WORD(ast.aggregation, "(");
13306
- if (ast.distinct) {
13307
- PRINT_WORD("DISTINCT");
13300
+ if (F2.isPatternUnion(ast)) {
13301
+ const [head2, ...tail] = ast.patterns;
13302
+ SUBRULE(groupGraphPattern, head2);
13303
+ for (const pattern of tail) {
13304
+ F2.printFilter(ast, () => PRINT_WORD("UNION"));
13305
+ SUBRULE(groupGraphPattern, pattern);
13308
13306
  }
13309
- });
13310
- const arg = ast.expression[0];
13311
- if (F2.isWildcard(arg)) {
13312
- F2.printFilter(ast, () => PRINT_WORD("*"));
13313
13307
  } else {
13314
- SUBRULE(expression, arg, void 0);
13315
- }
13316
- if (F2.isExpressionAggregateSeparator(ast)) {
13317
- F2.printFilter(ast, () => PRINT_WORD(";", "SEPARATOR", "=", stringEscapedLexical(ast.separator)));
13308
+ SUBRULE(groupGraphPattern, ast);
13318
13309
  }
13310
+ }
13311
+ };
13312
+ var filter3 = {
13313
+ name: "filter",
13314
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13315
+ const filterToken = CONSUME(filter2);
13316
+ const expression2 = SUBRULE(constraint);
13317
+ return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
13318
+ },
13319
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13320
+ F2.printFilter(ast, () => PRINT_WORD("FILTER ("));
13321
+ SUBRULE(expression, ast.expression);
13319
13322
  F2.printFilter(ast, () => PRINT_WORD(")"));
13320
13323
  }
13321
13324
  };
13325
+ var constraint = {
13326
+ name: "constraint",
13327
+ impl: ({ SUBRULE, OR }) => () => OR([
13328
+ { ALT: () => SUBRULE(brackettedExpression) },
13329
+ { ALT: () => SUBRULE(builtInCall) },
13330
+ { ALT: () => SUBRULE(functionCall) }
13331
+ ])
13332
+ };
13333
+ var functionCall = {
13334
+ name: "functionCall",
13335
+ impl: ({ ACTION, SUBRULE }) => (C) => {
13336
+ const func = SUBRULE(iri2);
13337
+ const args = SUBRULE(argList);
13338
+ return ACTION(() => C.factory.expressionFunctionCall(
13339
+ func,
13340
+ args.val.args,
13341
+ args.val.distinct,
13342
+ C.factory.sourceLocation(func, args)
13343
+ ));
13344
+ }
13345
+ };
13322
13346
 
13323
13347
  // ../../packages/rules-sparql-1-1/lib/grammar/expression.ts
13324
13348
  var argList = {
@@ -13338,7 +13362,7 @@ var argList = {
13338
13362
  AT_LEAST_ONE_SEP({
13339
13363
  SEP: symbols_exports.comma,
13340
13364
  DEF: () => {
13341
- const arg = SUBRULE1(expression, void 0);
13365
+ const arg = SUBRULE1(expression);
13342
13366
  args.push(arg);
13343
13367
  }
13344
13368
  });
@@ -13355,11 +13379,11 @@ var argList = {
13355
13379
  });
13356
13380
  const [head2, ...tail] = ast.val.args;
13357
13381
  if (head2) {
13358
- SUBRULE(expression, head2, void 0);
13382
+ SUBRULE(expression, head2);
13359
13383
  }
13360
13384
  for (const expr of tail) {
13361
13385
  F2.printFilter(ast, () => PRINT_WORD(","));
13362
- SUBRULE(expression, expr, void 0);
13386
+ SUBRULE(expression, expr);
13363
13387
  }
13364
13388
  F2.printFilter(ast, () => PRINT_WORD(")"));
13365
13389
  }
@@ -13373,11 +13397,11 @@ var expressionList = {
13373
13397
  } },
13374
13398
  { ALT: () => {
13375
13399
  const open = CONSUME(symbols_exports.LParen);
13376
- const expr1 = SUBRULE1(expression, void 0);
13400
+ const expr1 = SUBRULE1(expression);
13377
13401
  const args = [expr1];
13378
13402
  MANY(() => {
13379
13403
  CONSUME(symbols_exports.comma);
13380
- const expr = SUBRULE2(expression, void 0);
13404
+ const expr = SUBRULE2(expression);
13381
13405
  args.push(expr);
13382
13406
  });
13383
13407
  const close = CONSUME(symbols_exports.RParen);
@@ -13389,15 +13413,15 @@ var infixOperators = /* @__PURE__ */ new Set(["in", "notin", "||", "&&", "=", "!
13389
13413
  var prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
13390
13414
  var expression = {
13391
13415
  name: "expression",
13392
- impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression, void 0),
13416
+ impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
13393
13417
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
13394
13418
  if (F2.isTerm(ast)) {
13395
- SUBRULE(varOrTerm, ast, void 0);
13419
+ SUBRULE(varOrTerm, ast);
13396
13420
  } else if (F2.isExpressionOperator(ast)) {
13397
13421
  if (infixOperators.has(ast.operator)) {
13398
13422
  const [left, ...right] = ast.args;
13399
13423
  F2.printFilter(ast, () => PRINT_WORD("("));
13400
- SUBRULE(expression, left, void 0);
13424
+ SUBRULE(expression, left);
13401
13425
  F2.printFilter(ast, () => {
13402
13426
  if (ast.operator === "notin") {
13403
13427
  PRINT_WORD("NOT IN");
@@ -13408,35 +13432,35 @@ var expression = {
13408
13432
  }
13409
13433
  });
13410
13434
  if (right.length === 1) {
13411
- SUBRULE(expression, right[0], void 0);
13435
+ SUBRULE(expression, right[0]);
13412
13436
  } else {
13413
- SUBRULE(argList, F2.wrap({ args: right, distinct: false }, ast.loc), void 0);
13437
+ SUBRULE(argList, F2.wrap({ args: right, distinct: false }, ast.loc));
13414
13438
  }
13415
13439
  F2.printFilter(ast, () => PRINT_WORD(")"));
13416
13440
  } else if (prefixOperator.has(ast.operator)) {
13417
13441
  const [expr] = ast.args;
13418
13442
  F2.printFilter(ast, () => PRINT_WORD(ast.operator));
13419
- SUBRULE(expression, expr, void 0);
13443
+ SUBRULE(expression, expr);
13420
13444
  } else {
13421
13445
  F2.printFilter(ast, () => PRINT_WORD(ast.operator, "("));
13422
13446
  const [head2, ...tail] = ast.args;
13423
13447
  if (head2) {
13424
- SUBRULE(expression, head2, void 0);
13448
+ SUBRULE(expression, head2);
13425
13449
  }
13426
13450
  for (const arg of tail) {
13427
13451
  F2.printFilter(ast, () => PRINT_WORD(","));
13428
- SUBRULE(expression, arg, void 0);
13452
+ SUBRULE(expression, arg);
13429
13453
  }
13430
13454
  F2.printFilter(ast, () => PRINT_WORD(")"));
13431
13455
  }
13432
13456
  } else if (F2.isExpressionPatternOperation(ast)) {
13433
13457
  const patterns = ast.args;
13434
13458
  F2.printFilter(ast, () => PRINT_WORD(ast.operator === "exists" ? "EXISTS" : "NOT EXISTS"));
13435
- SUBRULE(groupGraphPattern, patterns, void 0);
13459
+ SUBRULE(groupGraphPattern, patterns);
13436
13460
  } else if (F2.isExpressionFunctionCall(ast)) {
13437
- SUBRULE(iriOrFunction, ast, void 0);
13461
+ SUBRULE(iriOrFunction, ast);
13438
13462
  } else if (F2.isExpressionAggregate(ast)) {
13439
- SUBRULE(aggregate, ast, void 0);
13463
+ SUBRULE(aggregate, ast);
13440
13464
  }
13441
13465
  }
13442
13466
  };
@@ -13453,10 +13477,10 @@ function constructLeftDeep(startGenerator, restGenerator, ACTION, MANY) {
13453
13477
  var conditionalOrExpression = {
13454
13478
  name: "conditionalOrExpression",
13455
13479
  impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(
13456
- () => SUBRULE1(conditionalAndExpression, void 0),
13480
+ () => SUBRULE1(conditionalAndExpression),
13457
13481
  () => {
13458
13482
  CONSUME(symbols_exports.logicOr);
13459
- const args = SUBRULE2(conditionalAndExpression, void 0);
13483
+ const args = SUBRULE2(conditionalAndExpression);
13460
13484
  return (left) => ACTION(() => C.factory.expressionOperation("||", [left, args], C.factory.sourceLocation(left, args)));
13461
13485
  },
13462
13486
  ACTION,
@@ -13466,10 +13490,10 @@ var conditionalOrExpression = {
13466
13490
  var conditionalAndExpression = {
13467
13491
  name: "conditionalAndExpression",
13468
13492
  impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(
13469
- () => SUBRULE1(valueLogical, void 0),
13493
+ () => SUBRULE1(valueLogical),
13470
13494
  () => {
13471
13495
  CONSUME(symbols_exports.logicAnd);
13472
- const arg = SUBRULE2(valueLogical, void 0);
13496
+ const arg = SUBRULE2(valueLogical);
13473
13497
  return (left) => ACTION(() => C.factory.expressionOperation("&&", [left, arg], C.factory.sourceLocation(left, arg)));
13474
13498
  },
13475
13499
  ACTION,
@@ -13478,12 +13502,12 @@ var conditionalAndExpression = {
13478
13502
  };
13479
13503
  var valueLogical = {
13480
13504
  name: "valueLogical",
13481
- impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression, void 0)
13505
+ impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression)
13482
13506
  };
13483
13507
  var relationalExpression = {
13484
13508
  name: "relationalExpression",
13485
13509
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3 }) => (C) => {
13486
- const args1 = SUBRULE1(numericExpression, void 0);
13510
+ const args1 = SUBRULE1(numericExpression);
13487
13511
  const expression2 = OPTION(() => OR1([
13488
13512
  { ALT: () => {
13489
13513
  const operator = OR2([
@@ -13494,7 +13518,7 @@ var relationalExpression = {
13494
13518
  { ALT: () => CONSUME(symbols_exports.lessThanEqual) },
13495
13519
  { ALT: () => CONSUME(symbols_exports.greaterThanEqual) }
13496
13520
  ]);
13497
- const expr = SUBRULE2(numericExpression, void 0);
13521
+ const expr = SUBRULE2(numericExpression);
13498
13522
  return ACTION(() => C.factory.expressionOperation(
13499
13523
  operator.image,
13500
13524
  [args1, expr],
@@ -13506,7 +13530,7 @@ var relationalExpression = {
13506
13530
  { ALT: () => CONSUME(in_) },
13507
13531
  { ALT: () => CONSUME(notIn) }
13508
13532
  ]);
13509
- const args = SUBRULE1(expressionList, void 0);
13533
+ const args = SUBRULE1(expressionList);
13510
13534
  return ACTION(() => C.factory.expressionOperation(
13511
13535
  operator.image,
13512
13536
  [args1, ...args.val],
@@ -13519,25 +13543,25 @@ var relationalExpression = {
13519
13543
  };
13520
13544
  var numericExpression = {
13521
13545
  name: "numericExpression",
13522
- impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression, void 0)
13546
+ impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression)
13523
13547
  };
13524
13548
  var additiveExpression = {
13525
13549
  name: "additiveExpression",
13526
13550
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OR1, OR2, OR3, OR4 }) => (C) => constructLeftDeep(
13527
- () => SUBRULE1(multiplicativeExpression, void 0),
13551
+ () => SUBRULE1(multiplicativeExpression),
13528
13552
  () => OR1([
13529
13553
  { ALT: () => {
13530
13554
  const operator = OR2([
13531
13555
  { ALT: () => CONSUME(symbols_exports.opPlus) },
13532
13556
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13533
13557
  ]);
13534
- const arg = SUBRULE2(multiplicativeExpression, void 0);
13558
+ const arg = SUBRULE2(multiplicativeExpression);
13535
13559
  return ACTION(() => (left) => C.factory.expressionOperation(operator.image, [left, arg], C.factory.sourceLocation(left, arg)));
13536
13560
  } },
13537
13561
  { ALT: () => {
13538
13562
  const { operator, startInt } = OR3([
13539
13563
  { ALT: () => {
13540
- const integer2 = SUBRULE(numericLiteralPositive, void 0);
13564
+ const integer2 = SUBRULE(numericLiteralPositive);
13541
13565
  return ACTION(() => {
13542
13566
  integer2.value = integer2.value.replace(/^\+/u, "");
13543
13567
  return {
@@ -13547,7 +13571,7 @@ var additiveExpression = {
13547
13571
  });
13548
13572
  } },
13549
13573
  { ALT: () => {
13550
- const integer2 = SUBRULE(numericLiteralNegative, void 0);
13574
+ const integer2 = SUBRULE(numericLiteralNegative);
13551
13575
  return ACTION(() => {
13552
13576
  integer2.value = integer2.value.replace(/^-/u, "");
13553
13577
  return {
@@ -13564,7 +13588,7 @@ var additiveExpression = {
13564
13588
  { ALT: () => CONSUME(symbols_exports.star) },
13565
13589
  { ALT: () => CONSUME(symbols_exports.slash) }
13566
13590
  ]);
13567
- const innerExpr = SUBRULE1(unaryExpression, void 0);
13591
+ const innerExpr = SUBRULE1(unaryExpression);
13568
13592
  return ACTION(() => (leftInner) => C.factory.expressionOperation(
13569
13593
  innerOperator.image,
13570
13594
  [leftInner, innerExpr],
@@ -13588,13 +13612,13 @@ var additiveExpression = {
13588
13612
  var multiplicativeExpression = {
13589
13613
  name: "multiplicativeExpression",
13590
13614
  impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OR }) => (C) => constructLeftDeep(
13591
- () => SUBRULE1(unaryExpression, void 0),
13615
+ () => SUBRULE1(unaryExpression),
13592
13616
  () => {
13593
13617
  const operator = OR([
13594
13618
  { ALT: () => CONSUME(symbols_exports.star) },
13595
13619
  { ALT: () => CONSUME(symbols_exports.slash) }
13596
13620
  ]);
13597
- const expr = SUBRULE2(unaryExpression, void 0);
13621
+ const expr = SUBRULE2(unaryExpression);
13598
13622
  return (left) => ({
13599
13623
  type: "expression",
13600
13624
  subType: "operation",
@@ -13610,14 +13634,14 @@ var multiplicativeExpression = {
13610
13634
  var unaryExpression = {
13611
13635
  name: "unaryExpression",
13612
13636
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
13613
- { ALT: () => SUBRULE1(primaryExpression, void 0) },
13637
+ { ALT: () => SUBRULE1(primaryExpression) },
13614
13638
  { ALT: () => {
13615
13639
  const operator = OR2([
13616
13640
  { ALT: () => CONSUME(symbols_exports.exclamation) },
13617
13641
  { ALT: () => CONSUME(symbols_exports.opPlus) },
13618
13642
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13619
13643
  ]);
13620
- const expr = SUBRULE2(primaryExpression, void 0);
13644
+ const expr = SUBRULE2(primaryExpression);
13621
13645
  return ACTION(() => ({
13622
13646
  type: "expression",
13623
13647
  subType: "operation",
@@ -13631,20 +13655,20 @@ var unaryExpression = {
13631
13655
  var primaryExpression = {
13632
13656
  name: "primaryExpression",
13633
13657
  impl: ({ SUBRULE, OR }) => () => OR([
13634
- { ALT: () => SUBRULE(brackettedExpression, void 0) },
13635
- { ALT: () => SUBRULE(builtInCall, void 0) },
13636
- { ALT: () => SUBRULE(iriOrFunction, void 0) },
13637
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
13638
- { ALT: () => SUBRULE(numericLiteral, void 0) },
13639
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
13640
- { ALT: () => SUBRULE(var_, void 0) }
13658
+ { ALT: () => SUBRULE(brackettedExpression) },
13659
+ { ALT: () => SUBRULE(builtInCall) },
13660
+ { ALT: () => SUBRULE(iriOrFunction) },
13661
+ { ALT: () => SUBRULE(rdfLiteral) },
13662
+ { ALT: () => SUBRULE(numericLiteral) },
13663
+ { ALT: () => SUBRULE(booleanLiteral) },
13664
+ { ALT: () => SUBRULE(var_) }
13641
13665
  ])
13642
13666
  };
13643
13667
  var brackettedExpression = {
13644
13668
  name: "brackettedExpression",
13645
13669
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13646
13670
  const open = CONSUME(symbols_exports.LParen);
13647
- const expr = SUBRULE(expression, void 0);
13671
+ const expr = SUBRULE(expression);
13648
13672
  const close = CONSUME(symbols_exports.RParen);
13649
13673
  return ACTION(() => {
13650
13674
  expr.loc = C.factory.sourceLocation(open, close);
@@ -13655,9 +13679,9 @@ var brackettedExpression = {
13655
13679
  var iriOrFunction = {
13656
13680
  name: "iriOrFunction",
13657
13681
  impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
13658
- const iriVal = SUBRULE(iri2, void 0);
13682
+ const iriVal = SUBRULE(iri2);
13659
13683
  const functionCall2 = OPTION(() => {
13660
- const args = SUBRULE(argList, void 0);
13684
+ const args = SUBRULE(argList);
13661
13685
  return ACTION(() => {
13662
13686
  const distinct2 = args.val.distinct;
13663
13687
  if (!C.parseMode.has("canParseAggregate") && distinct2) {
@@ -13677,10 +13701,10 @@ var iriOrFunction = {
13677
13701
  },
13678
13702
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13679
13703
  if (F2.isTermNamed(ast)) {
13680
- SUBRULE(iri2, ast, void 0);
13704
+ SUBRULE(iri2, ast);
13681
13705
  } else {
13682
- SUBRULE(iri2, ast.function, void 0);
13683
- SUBRULE(argList, F2.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc), void 0);
13706
+ SUBRULE(iri2, ast.function);
13707
+ SUBRULE(argList, F2.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc));
13684
13708
  }
13685
13709
  }
13686
13710
  };
@@ -13689,10 +13713,10 @@ var iriOrFunction = {
13689
13713
  var solutionModifier = {
13690
13714
  name: "solutionModifier",
13691
13715
  impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {
13692
- const group = OPTION1(() => SUBRULE(groupClause, void 0));
13693
- const having2 = OPTION2(() => SUBRULE(havingClause, void 0));
13694
- const order2 = OPTION3(() => SUBRULE(orderClause, void 0));
13695
- const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses, void 0));
13716
+ const group = OPTION1(() => SUBRULE(groupClause));
13717
+ const having2 = OPTION2(() => SUBRULE(havingClause));
13718
+ const order2 = OPTION3(() => SUBRULE(orderClause));
13719
+ const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses));
13696
13720
  return ACTION(() => ({
13697
13721
  ...limitOffset && { limitOffset },
13698
13722
  ...group && { group },
@@ -13702,16 +13726,16 @@ var solutionModifier = {
13702
13726
  },
13703
13727
  gImpl: ({ SUBRULE }) => (ast) => {
13704
13728
  if (ast.group) {
13705
- SUBRULE(groupClause, ast.group, void 0);
13729
+ SUBRULE(groupClause, ast.group);
13706
13730
  }
13707
13731
  if (ast.having) {
13708
- SUBRULE(havingClause, ast.having, void 0);
13732
+ SUBRULE(havingClause, ast.having);
13709
13733
  }
13710
13734
  if (ast.order) {
13711
- SUBRULE(orderClause, ast.order, void 0);
13735
+ SUBRULE(orderClause, ast.order);
13712
13736
  }
13713
13737
  if (ast.limitOffset) {
13714
- SUBRULE(limitOffsetClauses, ast.limitOffset, void 0);
13738
+ SUBRULE(limitOffsetClauses, ast.limitOffset);
13715
13739
  }
13716
13740
  }
13717
13741
  };
@@ -13722,7 +13746,7 @@ var groupClause = {
13722
13746
  const start = CONSUME(groupByGroup);
13723
13747
  CONSUME(by);
13724
13748
  AT_LEAST_ONE(() => {
13725
- groupings.push(SUBRULE1(groupCondition, void 0));
13749
+ groupings.push(SUBRULE1(groupCondition));
13726
13750
  });
13727
13751
  return ACTION(() => ({
13728
13752
  type: "solutionModifier",
@@ -13735,12 +13759,12 @@ var groupClause = {
13735
13759
  F2.printFilter(ast, () => PRINT_WORDS("GROUP", "BY"));
13736
13760
  for (const grouping of ast.groupings) {
13737
13761
  if (F2.isExpression(grouping)) {
13738
- SUBRULE(expression, grouping, void 0);
13762
+ SUBRULE(expression, grouping);
13739
13763
  } else {
13740
13764
  F2.printFilter(ast, () => PRINT_WORDS("("));
13741
- SUBRULE(expression, grouping.value, void 0);
13765
+ SUBRULE(expression, grouping.value);
13742
13766
  F2.printFilter(ast, () => PRINT_WORDS("AS"));
13743
- SUBRULE(var_, grouping.variable, void 0);
13767
+ SUBRULE(var_, grouping.variable);
13744
13768
  F2.printFilter(ast, () => PRINT_WORDS(")"));
13745
13769
  }
13746
13770
  }
@@ -13749,16 +13773,16 @@ var groupClause = {
13749
13773
  var groupCondition = {
13750
13774
  name: "groupCondition",
13751
13775
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => (C) => OR([
13752
- { ALT: () => SUBRULE(builtInCall, void 0) },
13753
- { ALT: () => SUBRULE(functionCall, void 0) },
13754
- { ALT: () => SUBRULE2(var_, void 0) },
13776
+ { ALT: () => SUBRULE(builtInCall) },
13777
+ { ALT: () => SUBRULE(functionCall) },
13778
+ { ALT: () => SUBRULE2(var_) },
13755
13779
  {
13756
13780
  ALT: () => {
13757
13781
  const open = CONSUME(symbols_exports.LParen);
13758
- const expressionValue = SUBRULE(expression, void 0);
13782
+ const expressionValue = SUBRULE(expression);
13759
13783
  const variable = OPTION(() => {
13760
13784
  CONSUME(as);
13761
- return SUBRULE1(var_, void 0);
13785
+ return SUBRULE1(var_);
13762
13786
  });
13763
13787
  const close = CONSUME(symbols_exports.RParen);
13764
13788
  return ACTION(() => {
@@ -13782,7 +13806,7 @@ var havingClause = {
13782
13806
  const expressions = [];
13783
13807
  const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
13784
13808
  AT_LEAST_ONE(() => {
13785
- expressions.push(SUBRULE(havingCondition, void 0));
13809
+ expressions.push(SUBRULE(havingCondition));
13786
13810
  });
13787
13811
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13788
13812
  return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having2, expressions.at(-1))));
@@ -13790,13 +13814,13 @@ var havingClause = {
13790
13814
  gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F2 }) => {
13791
13815
  F2.printFilter(ast, () => PRINT_WORD("HAVING"));
13792
13816
  for (const having2 of ast.having) {
13793
- SUBRULE(expression, having2, void 0);
13817
+ SUBRULE(expression, having2);
13794
13818
  }
13795
13819
  }
13796
13820
  };
13797
13821
  var havingCondition = {
13798
13822
  name: "havingCondition",
13799
- impl: ({ SUBRULE }) => () => SUBRULE(constraint, void 0)
13823
+ impl: ({ SUBRULE }) => () => SUBRULE(constraint)
13800
13824
  };
13801
13825
  var orderClause = {
13802
13826
  name: "orderClause",
@@ -13806,7 +13830,7 @@ var orderClause = {
13806
13830
  const orderings = [];
13807
13831
  const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
13808
13832
  AT_LEAST_ONE(() => {
13809
- orderings.push(SUBRULE1(orderCondition, void 0));
13833
+ orderings.push(SUBRULE1(orderCondition));
13810
13834
  });
13811
13835
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13812
13836
  return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order2, orderings.at(-1))));
@@ -13820,7 +13844,7 @@ var orderClause = {
13820
13844
  F2.printFilter(ast, () => PRINT_WORDS("ASC"));
13821
13845
  }
13822
13846
  F2.printFilter(ast, () => PRINT_WORDS("("));
13823
- SUBRULE(expression, ordering.expression, void 0);
13847
+ SUBRULE(expression, ordering.expression);
13824
13848
  F2.printFilter(ast, () => PRINT_WORDS(")"));
13825
13849
  }
13826
13850
  }
@@ -13839,7 +13863,7 @@ var orderCondition = {
13839
13863
  return [true, token];
13840
13864
  } }
13841
13865
  ]);
13842
- const expr = SUBRULE(brackettedExpression, void 0);
13866
+ const expr = SUBRULE(brackettedExpression);
13843
13867
  return ACTION(() => ({
13844
13868
  expression: expr,
13845
13869
  descending: descending[0],
@@ -13847,11 +13871,11 @@ var orderCondition = {
13847
13871
  }));
13848
13872
  } },
13849
13873
  { ALT: () => {
13850
- const expr = SUBRULE(constraint, void 0);
13874
+ const expr = SUBRULE(constraint);
13851
13875
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
13852
13876
  } },
13853
13877
  { ALT: () => {
13854
- const expr = SUBRULE(var_, void 0);
13878
+ const expr = SUBRULE(var_);
13855
13879
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
13856
13880
  } }
13857
13881
  ])
@@ -13860,8 +13884,8 @@ var limitOffsetClauses = {
13860
13884
  name: "limitOffsetClauses",
13861
13885
  impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => OR([
13862
13886
  { ALT: () => {
13863
- const limit2 = SUBRULE1(limitClause, void 0);
13864
- const offset2 = OPTION1(() => SUBRULE1(offsetClause, void 0));
13887
+ const limit2 = SUBRULE1(limitClause);
13888
+ const offset2 = OPTION1(() => SUBRULE1(offsetClause));
13865
13889
  return ACTION(() => C.factory.solutionModifierLimitOffset(
13866
13890
  limit2.val,
13867
13891
  offset2?.val,
@@ -13869,8 +13893,8 @@ var limitOffsetClauses = {
13869
13893
  ));
13870
13894
  } },
13871
13895
  { ALT: () => {
13872
- const offset2 = SUBRULE2(offsetClause, void 0);
13873
- const limit2 = OPTION2(() => SUBRULE2(limitClause, void 0));
13896
+ const offset2 = SUBRULE2(offsetClause);
13897
+ const limit2 = OPTION2(() => SUBRULE2(limitClause));
13874
13898
  return ACTION(() => C.factory.solutionModifierLimitOffset(
13875
13899
  limit2?.val,
13876
13900
  offset2.val,
@@ -13908,22 +13932,22 @@ var offsetClause = {
13908
13932
  }
13909
13933
  };
13910
13934
 
13911
- // ../../packages/rules-sparql-1-1/lib/grammar/queryUnit/queryUnit.ts
13935
+ // ../../packages/rules-sparql-1-1/lib/grammar/queryUnit.ts
13912
13936
  var queryUnit = {
13913
13937
  name: "queryUnit",
13914
- impl: ({ SUBRULE }) => () => SUBRULE(query, void 0)
13938
+ impl: ({ SUBRULE }) => () => SUBRULE(query)
13915
13939
  };
13916
13940
  var query = {
13917
13941
  name: "query",
13918
13942
  impl: ({ ACTION, SUBRULE, OR }) => (C) => {
13919
- const prologueValues = SUBRULE(prologue, void 0);
13943
+ const prologueValues = SUBRULE(prologue);
13920
13944
  const subType = OR([
13921
- { ALT: () => SUBRULE(selectQuery, void 0) },
13922
- { ALT: () => SUBRULE(constructQuery, void 0) },
13923
- { ALT: () => SUBRULE(describeQuery, void 0) },
13924
- { ALT: () => SUBRULE(askQuery, void 0) }
13945
+ { ALT: () => SUBRULE(selectQuery) },
13946
+ { ALT: () => SUBRULE(constructQuery) },
13947
+ { ALT: () => SUBRULE(describeQuery) },
13948
+ { ALT: () => SUBRULE(askQuery) }
13925
13949
  ]);
13926
- const values3 = SUBRULE(valuesClause, void 0);
13950
+ const values3 = SUBRULE(valuesClause);
13927
13951
  return ACTION(() => ({
13928
13952
  context: prologueValues,
13929
13953
  ...subType,
@@ -13937,28 +13961,28 @@ var query = {
13937
13961
  }));
13938
13962
  },
13939
13963
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
13940
- SUBRULE(prologue, ast.context, void 0);
13964
+ SUBRULE(prologue, ast.context);
13941
13965
  if (F2.isQuerySelect(ast)) {
13942
- SUBRULE(selectQuery, ast, void 0);
13966
+ SUBRULE(selectQuery, ast);
13943
13967
  } else if (F2.isQueryConstruct(ast)) {
13944
- SUBRULE(constructQuery, ast, void 0);
13968
+ SUBRULE(constructQuery, ast);
13945
13969
  } else if (F2.isQueryDescribe(ast)) {
13946
- SUBRULE(describeQuery, ast, void 0);
13970
+ SUBRULE(describeQuery, ast);
13947
13971
  } else if (F2.isQueryAsk(ast)) {
13948
- SUBRULE(askQuery, ast, void 0);
13972
+ SUBRULE(askQuery, ast);
13949
13973
  }
13950
13974
  if (ast.values) {
13951
- SUBRULE(inlineData, ast.values, void 0);
13975
+ SUBRULE(inlineData, ast.values);
13952
13976
  }
13953
13977
  }
13954
13978
  };
13955
13979
  var selectQuery = {
13956
13980
  name: "selectQuery",
13957
13981
  impl: ({ ACTION, SUBRULE }) => (C) => {
13958
- const selectVal = SUBRULE(selectClause, void 0);
13959
- const from2 = SUBRULE(datasetClauseStar, void 0);
13960
- const where2 = SUBRULE(whereClause, void 0);
13961
- const modifiers = SUBRULE(solutionModifier, void 0);
13982
+ const selectVal = SUBRULE(selectClause);
13983
+ const from2 = SUBRULE(datasetClauseStar);
13984
+ const where2 = SUBRULE(whereClause);
13985
+ const modifiers = SUBRULE(solutionModifier);
13962
13986
  return ACTION(() => {
13963
13987
  const ret = {
13964
13988
  subType: "select",
@@ -13984,19 +14008,19 @@ var selectQuery = {
13984
14008
  variables: ast.variables,
13985
14009
  distinct: ast.distinct,
13986
14010
  reduced: ast.reduced
13987
- }, F2.sourceLocation(...ast.variables)), void 0);
13988
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
13989
- SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc), void 0);
13990
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14011
+ }, F2.sourceLocation(...ast.variables)));
14012
+ SUBRULE(datasetClauseStar, ast.datasets);
14013
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc));
14014
+ SUBRULE(solutionModifier, ast.solutionModifiers);
13991
14015
  }
13992
14016
  };
13993
14017
  var subSelect = {
13994
14018
  name: "subSelect",
13995
14019
  impl: ({ ACTION, SUBRULE }) => (C) => {
13996
- const selectVal = SUBRULE(selectClause, void 0);
13997
- const where2 = SUBRULE(whereClause, void 0);
13998
- const modifiers = SUBRULE(solutionModifier, void 0);
13999
- const values3 = SUBRULE(valuesClause, void 0);
14020
+ const selectVal = SUBRULE(selectClause);
14021
+ const where2 = SUBRULE(whereClause);
14022
+ const modifiers = SUBRULE(solutionModifier);
14023
+ const values3 = SUBRULE(valuesClause);
14000
14024
  return ACTION(() => C.factory.querySelect({
14001
14025
  where: where2.val,
14002
14026
  datasets: C.factory.datasetClauses([], C.factory.sourceLocation()),
@@ -14061,7 +14085,7 @@ var selectClause = {
14061
14085
  const variables = [];
14062
14086
  AT_LEAST_ONE(() => OR3([
14063
14087
  { ALT: () => {
14064
- const raw = SUBRULE1(var_, void 0);
14088
+ const raw = SUBRULE1(var_);
14065
14089
  ACTION(() => {
14066
14090
  if (usedVars.some((v) => v.value === raw.value)) {
14067
14091
  throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);
@@ -14073,9 +14097,9 @@ var selectClause = {
14073
14097
  } },
14074
14098
  { ALT: () => {
14075
14099
  const open = CONSUME(symbols_exports.LParen);
14076
- const expr = SUBRULE1(expression, void 0);
14100
+ const expr = SUBRULE1(expression);
14077
14101
  CONSUME(as);
14078
- const variable = SUBRULE2(var_, void 0);
14102
+ const variable = SUBRULE2(var_);
14079
14103
  const close = CONSUME(symbols_exports.RParen);
14080
14104
  ACTION(() => {
14081
14105
  last2 = close;
@@ -14106,12 +14130,12 @@ var selectClause = {
14106
14130
  if (F2.isWildcard(variable)) {
14107
14131
  F2.printFilter(ast, () => PRINT_WORD("*"));
14108
14132
  } else if (F2.isTerm(variable)) {
14109
- SUBRULE(var_, variable, void 0);
14133
+ SUBRULE(var_, variable);
14110
14134
  } else {
14111
14135
  F2.printFilter(ast, () => PRINT_WORD("("));
14112
- SUBRULE(expression, variable.expression, void 0);
14136
+ SUBRULE(expression, variable.expression);
14113
14137
  F2.printFilter(ast, () => PRINT_WORD("AS"));
14114
- SUBRULE(var_, variable.variable, void 0);
14138
+ SUBRULE(var_, variable.variable);
14115
14139
  F2.printFilter(ast, () => PRINT_WORD(")"));
14116
14140
  }
14117
14141
  }
@@ -14123,10 +14147,10 @@ var constructQuery = {
14123
14147
  const construct2 = CONSUME(construct);
14124
14148
  return OR([
14125
14149
  { ALT: () => {
14126
- const template = SUBRULE1(constructTemplate, void 0);
14127
- const from2 = SUBRULE1(datasetClauseStar, void 0);
14128
- const where2 = SUBRULE1(whereClause, void 0);
14129
- const modifiers = SUBRULE1(solutionModifier, void 0);
14150
+ const template = SUBRULE1(constructTemplate);
14151
+ const from2 = SUBRULE1(datasetClauseStar);
14152
+ const where2 = SUBRULE1(whereClause);
14153
+ const modifiers = SUBRULE1(solutionModifier);
14130
14154
  return ACTION(() => ({
14131
14155
  subType: "construct",
14132
14156
  template: template.val,
@@ -14144,10 +14168,10 @@ var constructQuery = {
14144
14168
  }));
14145
14169
  } },
14146
14170
  { ALT: () => {
14147
- const from2 = SUBRULE2(datasetClauseStar, void 0);
14171
+ const from2 = SUBRULE2(datasetClauseStar);
14148
14172
  CONSUME(where);
14149
- const template = SUBRULE2(constructTemplate, void 0);
14150
- const modifiers = SUBRULE2(solutionModifier, void 0);
14173
+ const template = SUBRULE2(constructTemplate);
14174
+ const modifiers = SUBRULE2(solutionModifier);
14151
14175
  return ACTION(() => ({
14152
14176
  subType: "construct",
14153
14177
  template: template.val,
@@ -14170,16 +14194,16 @@ var constructQuery = {
14170
14194
  F2.printFilter(ast, () => PRINT_WORD("CONSTRUCT"));
14171
14195
  if (!F2.isSourceLocationNoMaterialize(ast.where.loc)) {
14172
14196
  F2.printFilter(ast, () => PRINT_WORD("{"));
14173
- SUBRULE(triplesBlock, ast.template, void 0);
14197
+ SUBRULE(triplesBlock, ast.template);
14174
14198
  F2.printFilter(ast, () => PRINT_WORD("}"));
14175
14199
  }
14176
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14200
+ SUBRULE(datasetClauseStar, ast.datasets);
14177
14201
  if (F2.isSourceLocationNoMaterialize(ast.where.loc)) {
14178
- SUBRULE(whereClause, F2.wrap(F2.patternGroup([ast.template], ast.template.loc), ast.template.loc), void 0);
14202
+ SUBRULE(whereClause, F2.wrap(F2.patternGroup([ast.template], ast.template.loc), ast.template.loc));
14179
14203
  } else {
14180
- SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc), void 0);
14204
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.where.loc));
14181
14205
  }
14182
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14206
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14183
14207
  }
14184
14208
  };
14185
14209
  var describeQuery = {
@@ -14190,7 +14214,7 @@ var describeQuery = {
14190
14214
  { ALT: () => {
14191
14215
  const variables2 = [];
14192
14216
  AT_LEAST_ONE(() => {
14193
- variables2.push(SUBRULE1(varOrIri, void 0));
14217
+ variables2.push(SUBRULE1(varOrIri));
14194
14218
  });
14195
14219
  return variables2;
14196
14220
  } },
@@ -14199,9 +14223,9 @@ var describeQuery = {
14199
14223
  return [ACTION(() => C.factory.wildcard(C.factory.sourceLocation(star2)))];
14200
14224
  } }
14201
14225
  ]);
14202
- const from2 = SUBRULE1(datasetClauseStar, void 0);
14203
- const where2 = OPTION(() => SUBRULE1(whereClause, void 0));
14204
- const modifiers = SUBRULE1(solutionModifier, void 0);
14226
+ const from2 = SUBRULE1(datasetClauseStar);
14227
+ const where2 = OPTION(() => SUBRULE1(whereClause));
14228
+ const modifiers = SUBRULE1(solutionModifier);
14205
14229
  return ACTION(() => ({
14206
14230
  subType: "describe",
14207
14231
  variables,
@@ -14226,23 +14250,23 @@ var describeQuery = {
14226
14250
  F2.printFilter(ast, () => PRINT_WORD("*"));
14227
14251
  } else {
14228
14252
  for (const variable of ast.variables) {
14229
- SUBRULE(varOrTerm, variable, void 0);
14253
+ SUBRULE(varOrTerm, variable);
14230
14254
  }
14231
14255
  }
14232
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14256
+ SUBRULE(datasetClauseStar, ast.datasets);
14233
14257
  if (ast.where) {
14234
- SUBRULE(whereClause, F2.wrap(ast.where, ast.loc), void 0);
14258
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.loc));
14235
14259
  }
14236
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14260
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14237
14261
  }
14238
14262
  };
14239
14263
  var askQuery = {
14240
14264
  name: "askQuery",
14241
14265
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14242
14266
  const ask2 = CONSUME(ask);
14243
- const from2 = SUBRULE(datasetClauseStar, void 0);
14244
- const where2 = SUBRULE(whereClause, void 0);
14245
- const modifiers = SUBRULE(solutionModifier, void 0);
14267
+ const from2 = SUBRULE(datasetClauseStar);
14268
+ const where2 = SUBRULE(whereClause);
14269
+ const modifiers = SUBRULE(solutionModifier);
14246
14270
  return ACTION(() => ({
14247
14271
  subType: "ask",
14248
14272
  datasets: from2,
@@ -14261,20 +14285,20 @@ var askQuery = {
14261
14285
  },
14262
14286
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14263
14287
  F2.printFilter(ast, () => PRINT_WORD("ASK"));
14264
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14265
- SUBRULE(whereClause, F2.wrap(ast.where, ast.loc), void 0);
14266
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14288
+ SUBRULE(datasetClauseStar, ast.datasets);
14289
+ SUBRULE(whereClause, F2.wrap(ast.where, ast.loc));
14290
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14267
14291
  }
14268
14292
  };
14269
14293
  var valuesClause = {
14270
14294
  name: "valuesClause",
14271
- impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(inlineData, void 0))
14295
+ impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(inlineData))
14272
14296
  };
14273
14297
  var constructTemplate = {
14274
14298
  name: "constructTemplate",
14275
14299
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14276
14300
  const open = CONSUME(symbols_exports.LCurly);
14277
- const triples = OPTION(() => SUBRULE1(constructTriples, void 0));
14301
+ const triples = OPTION(() => SUBRULE1(constructTriples));
14278
14302
  const close = CONSUME(symbols_exports.RCurly);
14279
14303
  return ACTION(() => C.factory.wrap(
14280
14304
  triples ?? C.factory.patternBgp([], C.factory.sourceLocation()),
@@ -14287,27 +14311,27 @@ var constructTriples = {
14287
14311
  impl: triplesTemplate.impl
14288
14312
  };
14289
14313
 
14290
- // ../../packages/rules-sparql-1-1/lib/grammar/updateUnit/updateUnit.ts
14314
+ // ../../packages/rules-sparql-1-1/lib/grammar/updateUnit.ts
14291
14315
  var updateUnit = {
14292
14316
  name: "updateUnit",
14293
- impl: ({ SUBRULE }) => () => SUBRULE(update, void 0)
14317
+ impl: ({ SUBRULE }) => () => SUBRULE(update)
14294
14318
  };
14295
14319
  var update = {
14296
14320
  name: "update",
14297
14321
  impl: ({ ACTION, SUBRULE, SUBRULE1, SUBRULE2, CONSUME, OPTION1, MANY }) => (C) => {
14298
14322
  const updates = [];
14299
- const prologueValues = SUBRULE1(prologue, void 0);
14323
+ const prologueValues = SUBRULE1(prologue);
14300
14324
  updates.push({ context: prologueValues });
14301
14325
  let parsedSemi = true;
14302
14326
  MANY({
14303
14327
  GATE: () => parsedSemi,
14304
14328
  DEF: () => {
14305
14329
  parsedSemi = false;
14306
- updates.at(-1).operation = SUBRULE(update1, void 0);
14330
+ updates.at(-1).operation = SUBRULE(update1);
14307
14331
  OPTION1(() => {
14308
14332
  CONSUME(symbols_exports.semi);
14309
14333
  parsedSemi = true;
14310
- const innerPrologue = SUBRULE2(prologue, void 0);
14334
+ const innerPrologue = SUBRULE2(prologue);
14311
14335
  updates.push({ context: innerPrologue });
14312
14336
  });
14313
14337
  }
@@ -14329,9 +14353,9 @@ var update = {
14329
14353
  },
14330
14354
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14331
14355
  for (const update2 of ast.updates) {
14332
- SUBRULE(prologue, update2.context, void 0);
14356
+ SUBRULE(prologue, update2.context);
14333
14357
  if (update2.operation) {
14334
- SUBRULE(update1, update2.operation, void 0);
14358
+ SUBRULE(update1, update2.operation);
14335
14359
  F2.printFilter(ast, () => PRINT_WORD(" ;\n"));
14336
14360
  }
14337
14361
  }
@@ -14340,52 +14364,52 @@ var update = {
14340
14364
  var update1 = {
14341
14365
  name: "update1",
14342
14366
  impl: ({ SUBRULE, OR }) => () => OR([
14343
- { ALT: () => SUBRULE(load2, void 0) },
14344
- { ALT: () => SUBRULE(clear2, void 0) },
14345
- { ALT: () => SUBRULE(drop3, void 0) },
14346
- { ALT: () => SUBRULE(add2, void 0) },
14347
- { ALT: () => SUBRULE(move2, void 0) },
14348
- { ALT: () => SUBRULE(copy2, void 0) },
14349
- { ALT: () => SUBRULE(create2, void 0) },
14350
- { ALT: () => SUBRULE(insertData, void 0) },
14351
- { ALT: () => SUBRULE(deleteData, void 0) },
14352
- { ALT: () => SUBRULE(deleteWhere, void 0) },
14353
- { ALT: () => SUBRULE(modify, void 0) }
14367
+ { ALT: () => SUBRULE(load2) },
14368
+ { ALT: () => SUBRULE(clear2) },
14369
+ { ALT: () => SUBRULE(drop3) },
14370
+ { ALT: () => SUBRULE(add2) },
14371
+ { ALT: () => SUBRULE(move2) },
14372
+ { ALT: () => SUBRULE(copy2) },
14373
+ { ALT: () => SUBRULE(create2) },
14374
+ { ALT: () => SUBRULE(insertData) },
14375
+ { ALT: () => SUBRULE(deleteData) },
14376
+ { ALT: () => SUBRULE(deleteWhere) },
14377
+ { ALT: () => SUBRULE(modify) }
14354
14378
  ]),
14355
14379
  gImpl: ({ SUBRULE }) => (ast) => {
14356
14380
  switch (ast.subType) {
14357
14381
  case "load":
14358
- SUBRULE(load2, ast, void 0);
14382
+ SUBRULE(load2, ast);
14359
14383
  break;
14360
14384
  case "clear":
14361
- SUBRULE(clear2, ast, void 0);
14385
+ SUBRULE(clear2, ast);
14362
14386
  break;
14363
14387
  case "drop":
14364
- SUBRULE(drop3, ast, void 0);
14388
+ SUBRULE(drop3, ast);
14365
14389
  break;
14366
14390
  case "add":
14367
- SUBRULE(add2, ast, void 0);
14391
+ SUBRULE(add2, ast);
14368
14392
  break;
14369
14393
  case "move":
14370
- SUBRULE(move2, ast, void 0);
14394
+ SUBRULE(move2, ast);
14371
14395
  break;
14372
14396
  case "copy":
14373
- SUBRULE(copy2, ast, void 0);
14397
+ SUBRULE(copy2, ast);
14374
14398
  break;
14375
14399
  case "create":
14376
- SUBRULE(create2, ast, void 0);
14400
+ SUBRULE(create2, ast);
14377
14401
  break;
14378
14402
  case "insertdata":
14379
- SUBRULE(insertData, ast, void 0);
14403
+ SUBRULE(insertData, ast);
14380
14404
  break;
14381
14405
  case "deletedata":
14382
- SUBRULE(deleteData, ast, void 0);
14406
+ SUBRULE(deleteData, ast);
14383
14407
  break;
14384
14408
  case "deletewhere":
14385
- SUBRULE(deleteWhere, ast, void 0);
14409
+ SUBRULE(deleteWhere, ast);
14386
14410
  break;
14387
14411
  case "modify":
14388
- SUBRULE(modify, ast, void 0);
14412
+ SUBRULE(modify, ast);
14389
14413
  break;
14390
14414
  }
14391
14415
  }
@@ -14395,10 +14419,10 @@ var load2 = {
14395
14419
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION1, OPTION2 }) => (C) => {
14396
14420
  const loadToken = CONSUME(load);
14397
14421
  const silent2 = OPTION1(() => CONSUME(silent));
14398
- const source = SUBRULE1(iri2, void 0);
14422
+ const source = SUBRULE1(iri2);
14399
14423
  const destination = OPTION2(() => {
14400
14424
  CONSUME(loadInto);
14401
- return SUBRULE1(graphRef, void 0);
14425
+ return SUBRULE1(graphRef);
14402
14426
  });
14403
14427
  return ACTION(() => C.factory.updateOperationLoad(
14404
14428
  C.factory.sourceLocation(loadToken, source, destination),
@@ -14414,10 +14438,10 @@ var load2 = {
14414
14438
  PRINT_WORD("SILENT");
14415
14439
  }
14416
14440
  });
14417
- SUBRULE(iri2, ast.source, void 0);
14441
+ SUBRULE(iri2, ast.source);
14418
14442
  if (ast.destination) {
14419
14443
  F2.printFilter(ast, () => PRINT_WORD("INTO"));
14420
- SUBRULE(graphRefAll, ast.destination, void 0);
14444
+ SUBRULE(graphRefAll, ast.destination);
14421
14445
  }
14422
14446
  }
14423
14447
  };
@@ -14427,7 +14451,7 @@ function clearOrDrop(operation) {
14427
14451
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14428
14452
  const opToken = CONSUME(operation);
14429
14453
  const silent2 = OPTION(() => CONSUME(silent));
14430
- const destination = SUBRULE1(graphRefAll, void 0);
14454
+ const destination = SUBRULE1(graphRefAll);
14431
14455
  return ACTION(() => C.factory.updateOperationClearDrop(
14432
14456
  unCapitalize(operation.name),
14433
14457
  Boolean(silent2),
@@ -14442,7 +14466,7 @@ function clearOrDrop(operation) {
14442
14466
  PRINT_WORD("SILENT");
14443
14467
  }
14444
14468
  });
14445
- SUBRULE(graphRefAll, ast.destination, void 0);
14469
+ SUBRULE(graphRefAll, ast.destination);
14446
14470
  }
14447
14471
  };
14448
14472
  }
@@ -14453,7 +14477,7 @@ var create2 = {
14453
14477
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14454
14478
  const createToken3 = CONSUME(create);
14455
14479
  const silent2 = OPTION(() => CONSUME(silent));
14456
- const destination = SUBRULE1(graphRef, void 0);
14480
+ const destination = SUBRULE1(graphRef);
14457
14481
  return ACTION(() => C.factory.updateOperationCreate(
14458
14482
  destination,
14459
14483
  Boolean(silent2),
@@ -14467,7 +14491,7 @@ var create2 = {
14467
14491
  PRINT_WORD("SILENT");
14468
14492
  }
14469
14493
  });
14470
- SUBRULE(graphRefAll, ast.destination, void 0);
14494
+ SUBRULE(graphRefAll, ast.destination);
14471
14495
  }
14472
14496
  };
14473
14497
  function copyMoveAddOperation(operation) {
@@ -14476,9 +14500,9 @@ function copyMoveAddOperation(operation) {
14476
14500
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION }) => (C) => {
14477
14501
  const op = CONSUME(operation);
14478
14502
  const silent2 = OPTION(() => CONSUME(silent));
14479
- const source = SUBRULE1(graphOrDefault, void 0);
14503
+ const source = SUBRULE1(graphOrDefault);
14480
14504
  CONSUME(to);
14481
- const destination = SUBRULE2(graphOrDefault, void 0);
14505
+ const destination = SUBRULE2(graphOrDefault);
14482
14506
  return ACTION(() => C.factory.updateOperationAddMoveCopy(
14483
14507
  unCapitalize(operation.name),
14484
14508
  source,
@@ -14494,9 +14518,9 @@ function copyMoveAddOperation(operation) {
14494
14518
  PRINT_WORD("SILENT");
14495
14519
  }
14496
14520
  });
14497
- SUBRULE(graphRefAll, ast.source, void 0);
14521
+ SUBRULE(graphRefAll, ast.source);
14498
14522
  F2.printFilter(ast, () => PRINT_WORD("TO"));
14499
- SUBRULE(graphRefAll, ast.destination, void 0);
14523
+ SUBRULE(graphRefAll, ast.destination);
14500
14524
  }
14501
14525
  };
14502
14526
  }
@@ -14507,7 +14531,7 @@ var quadPattern = {
14507
14531
  name: "quadPattern",
14508
14532
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
14509
14533
  const open = CONSUME(symbols_exports.LCurly);
14510
- const val = SUBRULE1(quads, void 0);
14534
+ const val = SUBRULE1(quads);
14511
14535
  const close = CONSUME(symbols_exports.RCurly);
14512
14536
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14513
14537
  }
@@ -14517,7 +14541,7 @@ var quadData = {
14517
14541
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
14518
14542
  const open = CONSUME(symbols_exports.LCurly);
14519
14543
  const couldParseVars = ACTION(() => C.parseMode.delete("canParseVars"));
14520
- const val = SUBRULE1(quads, void 0);
14544
+ const val = SUBRULE1(quads);
14521
14545
  ACTION(() => couldParseVars && C.parseMode.add("canParseVars"));
14522
14546
  const close = CONSUME(symbols_exports.RCurly);
14523
14547
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
@@ -14533,7 +14557,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14533
14557
  if (name !== "insertData") {
14534
14558
  couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14535
14559
  }
14536
- const data = SUBRULE1(dataRule, void 0);
14560
+ const data = SUBRULE1(dataRule);
14537
14561
  if (name !== "insertData") {
14538
14562
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14539
14563
  }
@@ -14544,7 +14568,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14544
14568
  subType === "insertdata" ? "INSERT DATA" : subType === "deletedata" ? "DELETE DATA" : "DELETE WHERE",
14545
14569
  "{"
14546
14570
  ));
14547
- SUBRULE(quads, F2.wrap(ast.data, ast.loc), void 0);
14571
+ SUBRULE(quads, F2.wrap(ast.data, ast.loc));
14548
14572
  F2.printFilter(ast, () => PRINT_WORD("}"));
14549
14573
  }
14550
14574
  };
@@ -14557,23 +14581,23 @@ var modify = {
14557
14581
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {
14558
14582
  const graph2 = OPTION1(() => {
14559
14583
  const withToken = CONSUME(modifyWith);
14560
- const graph3 = SUBRULE1(iri2, void 0);
14584
+ const graph3 = SUBRULE1(iri2);
14561
14585
  return { withToken, graph: graph3 };
14562
14586
  });
14563
14587
  const { insert, del } = OR([
14564
14588
  { ALT: () => {
14565
- const del2 = SUBRULE1(deleteClause2, void 0);
14566
- const insert2 = OPTION2(() => SUBRULE1(insertClause2, void 0));
14589
+ const del2 = SUBRULE1(deleteClause2);
14590
+ const insert2 = OPTION2(() => SUBRULE1(insertClause2));
14567
14591
  return { del: del2, insert: insert2 };
14568
14592
  } },
14569
14593
  { ALT: () => {
14570
- const insert2 = SUBRULE2(insertClause2, void 0);
14594
+ const insert2 = SUBRULE2(insertClause2);
14571
14595
  return { insert: insert2, del: void 0 };
14572
14596
  } }
14573
14597
  ]);
14574
- const using = SUBRULE1(usingClauseStar, void 0);
14598
+ const using = SUBRULE1(usingClauseStar);
14575
14599
  CONSUME(where);
14576
- const where2 = SUBRULE1(groupGraphPattern, void 0);
14600
+ const where2 = SUBRULE1(groupGraphPattern);
14577
14601
  return ACTION(() => C.factory.updateOperationModify(
14578
14602
  C.factory.sourceLocation(graph2?.withToken, del, insert, where2),
14579
14603
  insert?.val ?? [],
@@ -14586,21 +14610,21 @@ var modify = {
14586
14610
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14587
14611
  if (ast.graph) {
14588
14612
  F2.printFilter(ast, () => PRINT_WORD("WITH"));
14589
- SUBRULE(iri2, ast.graph, void 0);
14613
+ SUBRULE(iri2, ast.graph);
14590
14614
  }
14591
14615
  if (ast.delete.length > 0) {
14592
14616
  F2.printFilter(ast, () => PRINT_WORD("DELETE", "{"));
14593
- SUBRULE(quads, F2.wrap(ast.delete, ast.loc), void 0);
14617
+ SUBRULE(quads, F2.wrap(ast.delete, ast.loc));
14594
14618
  F2.printFilter(ast, () => PRINT_WORD("}"));
14595
14619
  }
14596
14620
  if (ast.insert.length > 0) {
14597
14621
  F2.printFilter(ast, () => PRINT_WORD("INSERT", "{"));
14598
- SUBRULE(quads, F2.wrap(ast.insert, ast.loc), void 0);
14622
+ SUBRULE(quads, F2.wrap(ast.insert, ast.loc));
14599
14623
  F2.printFilter(ast, () => PRINT_WORD("}"));
14600
14624
  }
14601
- SUBRULE(usingClauseStar, ast.from, void 0);
14625
+ SUBRULE(usingClauseStar, ast.from);
14602
14626
  F2.printFilter(ast, () => PRINT_WORD("WHERE"));
14603
- SUBRULE(groupGraphPattern, ast.where, void 0);
14627
+ SUBRULE(groupGraphPattern, ast.where);
14604
14628
  }
14605
14629
  };
14606
14630
  var deleteClause2 = {
@@ -14608,7 +14632,7 @@ var deleteClause2 = {
14608
14632
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14609
14633
  const delToken = CONSUME(deleteClause);
14610
14634
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14611
- const del = SUBRULE(quadPattern, void 0);
14635
+ const del = SUBRULE(quadPattern);
14612
14636
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14613
14637
  return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
14614
14638
  }
@@ -14617,7 +14641,7 @@ var insertClause2 = {
14617
14641
  name: "insertClause",
14618
14642
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14619
14643
  const insertToken = CONSUME(insertClause);
14620
- const insert = SUBRULE(quadPattern, void 0);
14644
+ const insert = SUBRULE(quadPattern);
14621
14645
  return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
14622
14646
  }
14623
14647
  };
@@ -14630,7 +14654,7 @@ var graphOrDefault = {
14630
14654
  } },
14631
14655
  { ALT: () => {
14632
14656
  const graph2 = OPTION(() => CONSUME(graph_exports.graph));
14633
- const name = SUBRULE1(iri2, void 0);
14657
+ const name = SUBRULE1(iri2);
14634
14658
  return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph2, name)));
14635
14659
  } }
14636
14660
  ])
@@ -14639,18 +14663,18 @@ var graphRef = {
14639
14663
  name: "graphRef",
14640
14664
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14641
14665
  const graph2 = CONSUME(graph_exports.graph);
14642
- const val = SUBRULE(iri2, void 0);
14666
+ const val = SUBRULE(iri2);
14643
14667
  return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph2, val)));
14644
14668
  },
14645
14669
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14646
14670
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
14647
- SUBRULE(iri2, ast.graph, void 0);
14671
+ SUBRULE(iri2, ast.graph);
14648
14672
  }
14649
14673
  };
14650
14674
  var graphRefAll = {
14651
14675
  name: "graphRefAll",
14652
14676
  impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
14653
- { ALT: () => SUBRULE(graphRef, void 0) },
14677
+ { ALT: () => SUBRULE(graphRef) },
14654
14678
  { ALT: () => {
14655
14679
  const def = CONSUME(graph_exports.default_);
14656
14680
  return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
@@ -14666,7 +14690,7 @@ var graphRefAll = {
14666
14690
  ]),
14667
14691
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14668
14692
  if (F2.isGraphRefSpecific(ast)) {
14669
- SUBRULE(graphRef, ast, void 0);
14693
+ SUBRULE(graphRef, ast);
14670
14694
  } else if (F2.isGraphRefDefault(ast)) {
14671
14695
  F2.printFilter(ast, () => PRINT_WORD("DEFAULT"));
14672
14696
  } else if (F2.isGraphRefNamed(ast)) {
@@ -14682,12 +14706,12 @@ var quads = {
14682
14706
  const quads2 = [];
14683
14707
  let last2;
14684
14708
  OPTION1(() => {
14685
- const triples = SUBRULE1(triplesTemplate, void 0);
14709
+ const triples = SUBRULE1(triplesTemplate);
14686
14710
  last2 = triples;
14687
14711
  ACTION(() => quads2.push(triples));
14688
14712
  });
14689
14713
  MANY(() => {
14690
- const notTriples = SUBRULE(quadsNotTriples, void 0);
14714
+ const notTriples = SUBRULE(quadsNotTriples);
14691
14715
  last2 = notTriples;
14692
14716
  quads2.push(notTriples);
14693
14717
  OPTION2(() => {
@@ -14696,7 +14720,7 @@ var quads = {
14696
14720
  return dotToken;
14697
14721
  });
14698
14722
  OPTION3(() => {
14699
- const triples = SUBRULE2(triplesTemplate, void 0);
14723
+ const triples = SUBRULE2(triplesTemplate);
14700
14724
  last2 = triples;
14701
14725
  ACTION(() => quads2.push(triples));
14702
14726
  });
@@ -14706,9 +14730,9 @@ var quads = {
14706
14730
  gImpl: ({ SUBRULE }) => (ast, { factory: F2 }) => {
14707
14731
  for (const quad of ast.val) {
14708
14732
  if (F2.isPattern(quad)) {
14709
- SUBRULE(triplesBlock, quad, void 0);
14733
+ SUBRULE(triplesBlock, quad);
14710
14734
  } else {
14711
- SUBRULE(quadsNotTriples, quad, void 0);
14735
+ SUBRULE(quadsNotTriples, quad);
14712
14736
  }
14713
14737
  }
14714
14738
  }
@@ -14717,9 +14741,9 @@ var quadsNotTriples = {
14717
14741
  name: "quadsNotTriples",
14718
14742
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14719
14743
  const graph2 = CONSUME(graph_exports.graph);
14720
- const name = SUBRULE1(varOrIri, void 0);
14744
+ const name = SUBRULE1(varOrIri);
14721
14745
  CONSUME(symbols_exports.LCurly);
14722
- const triples = OPTION(() => SUBRULE1(triplesTemplate, void 0));
14746
+ const triples = OPTION(() => SUBRULE1(triplesTemplate));
14723
14747
  const close = CONSUME(symbols_exports.RCurly);
14724
14748
  return ACTION(() => C.factory.graphQuads(
14725
14749
  name,
@@ -14729,9 +14753,9 @@ var quadsNotTriples = {
14729
14753
  },
14730
14754
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F2 }) => {
14731
14755
  F2.printFilter(ast, () => PRINT_WORD("GRAPH"));
14732
- SUBRULE(varOrTerm, ast.graph, void 0);
14756
+ SUBRULE(varOrTerm, ast.graph);
14733
14757
  F2.printFilter(ast, () => PRINT_WORD("{"));
14734
- SUBRULE(triplesBlock, ast.triples, void 0);
14758
+ SUBRULE(triplesBlock, ast.triples);
14735
14759
  F2.printFilter(ast, () => PRINT_WORD("}"));
14736
14760
  }
14737
14761
  };
@@ -14754,10 +14778,10 @@ var SparqlParser = class {
14754
14778
  this.F = new Factory();
14755
14779
  }
14756
14780
  parse(query2, context = {}) {
14757
- return this.parser.queryOrUpdate(query2, completeParseContext(context), void 0);
14781
+ return this.parser.queryOrUpdate(query2, completeParseContext(context));
14758
14782
  }
14759
14783
  parsePath(query2, context = {}) {
14760
- const result = this.parser.path(query2, completeParseContext(context), void 0);
14784
+ const result = this.parser.path(query2, completeParseContext(context));
14761
14785
  if (this.F.isPathPure(result)) {
14762
14786
  return {
14763
14787
  ...result,
@@ -14768,29 +14792,6 @@ var SparqlParser = class {
14768
14792
  }
14769
14793
  };
14770
14794
 
14771
- // ../../packages/rules-sparql-1-1/lib/utils.ts
14772
- function sparqlCodepointEscape(input) {
14773
- const sanitizedInput = input.replaceAll(
14774
- /\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{8})/gu,
14775
- (_, unicode4, unicode8) => {
14776
- if (unicode4) {
14777
- const charCode2 = Number.parseInt(unicode4, 16);
14778
- return String.fromCodePoint(charCode2);
14779
- }
14780
- const charCode = Number.parseInt(unicode8, 16);
14781
- if (charCode < 65535) {
14782
- return String.fromCodePoint(charCode);
14783
- }
14784
- const substractedCharCode = charCode - 65536;
14785
- return String.fromCodePoint(55296 + (substractedCharCode >> 10), 56320 + (substractedCharCode & 1023));
14786
- }
14787
- );
14788
- if (/[\uD800-\uDBFF](?:[^\uDC00-\uDFFF]|$)/u.test(sanitizedInput)) {
14789
- throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);
14790
- }
14791
- return sanitizedInput;
14792
- }
14793
-
14794
14795
  // ../parser-sparql-1-1/lib/expressionParser.ts
14795
14796
  var rulesNoBuiltIn = [
14796
14797
  grammar_exports.expression,
@@ -15037,16 +15038,16 @@ var queryUnitParserBuilder = ParserBuilder.create(rules4).merge(subSelectParserB
15037
15038
  var update1Patch = {
15038
15039
  name: "update1",
15039
15040
  impl: ({ SUBRULE, OR }) => () => OR([
15040
- { ALT: () => SUBRULE(grammar_exports.load, void 0) },
15041
- { ALT: () => SUBRULE(grammar_exports.clear, void 0) },
15042
- { ALT: () => SUBRULE(grammar_exports.drop, void 0) },
15043
- { ALT: () => SUBRULE(grammar_exports.add, void 0) },
15044
- { ALT: () => SUBRULE(grammar_exports.move, void 0) },
15045
- { ALT: () => SUBRULE(grammar_exports.copy, void 0) },
15046
- { ALT: () => SUBRULE(grammar_exports.create, void 0) },
15047
- { ALT: () => SUBRULE(grammar_exports.insertData, void 0) },
15048
- { ALT: () => SUBRULE(grammar_exports.deleteData, void 0) },
15049
- { ALT: () => SUBRULE(grammar_exports.deleteWhere, void 0) }
15041
+ { ALT: () => SUBRULE(grammar_exports.load) },
15042
+ { ALT: () => SUBRULE(grammar_exports.clear) },
15043
+ { ALT: () => SUBRULE(grammar_exports.drop) },
15044
+ { ALT: () => SUBRULE(grammar_exports.add) },
15045
+ { ALT: () => SUBRULE(grammar_exports.move) },
15046
+ { ALT: () => SUBRULE(grammar_exports.copy) },
15047
+ { ALT: () => SUBRULE(grammar_exports.create) },
15048
+ { ALT: () => SUBRULE(grammar_exports.insertData) },
15049
+ { ALT: () => SUBRULE(grammar_exports.deleteData) },
15050
+ { ALT: () => SUBRULE(grammar_exports.deleteWhere) }
15050
15051
  ]),
15051
15052
  gImpl: grammar_exports.update1.gImpl
15052
15053
  };
@@ -15094,16 +15095,16 @@ var updateParserBuilder = ParserBuilder.create(updateNoModifyParserBuilder).patc
15094
15095
  var queryOrUpdate = {
15095
15096
  name: "queryOrUpdate",
15096
15097
  impl: ({ ACTION, SUBRULE, OR1, OR2, MANY, OPTION1, CONSUME, SUBRULE2 }) => (C) => {
15097
- const prologueValues = SUBRULE(grammar_exports.prologue, void 0);
15098
+ const prologueValues = SUBRULE(grammar_exports.prologue);
15098
15099
  return OR1([
15099
15100
  { ALT: () => {
15100
15101
  const subType = OR2([
15101
- { ALT: () => SUBRULE(grammar_exports.selectQuery, void 0) },
15102
- { ALT: () => SUBRULE(grammar_exports.constructQuery, void 0) },
15103
- { ALT: () => SUBRULE(grammar_exports.describeQuery, void 0) },
15104
- { ALT: () => SUBRULE(grammar_exports.askQuery, void 0) }
15102
+ { ALT: () => SUBRULE(grammar_exports.selectQuery) },
15103
+ { ALT: () => SUBRULE(grammar_exports.constructQuery) },
15104
+ { ALT: () => SUBRULE(grammar_exports.describeQuery) },
15105
+ { ALT: () => SUBRULE(grammar_exports.askQuery) }
15105
15106
  ]);
15106
- const values3 = SUBRULE(grammar_exports.valuesClause, void 0);
15107
+ const values3 = SUBRULE(grammar_exports.valuesClause);
15107
15108
  return ACTION(() => ({
15108
15109
  context: prologueValues,
15109
15110
  ...subType,
@@ -15124,11 +15125,11 @@ var queryOrUpdate = {
15124
15125
  GATE: () => parsedSemi,
15125
15126
  DEF: () => {
15126
15127
  parsedSemi = false;
15127
- updates.at(-1).operation = SUBRULE(grammar_exports.update1, void 0);
15128
+ updates.at(-1).operation = SUBRULE(grammar_exports.update1);
15128
15129
  OPTION1(() => {
15129
15130
  CONSUME(lexer_exports.symbols.semi);
15130
15131
  parsedSemi = true;
15131
- const innerPrologue = SUBRULE2(grammar_exports.prologue, void 0);
15132
+ const innerPrologue = SUBRULE2(grammar_exports.prologue);
15132
15133
  updates.push({ context: innerPrologue });
15133
15134
  });
15134
15135
  }
@@ -15178,8 +15179,8 @@ var existingBuildInCall = {
15178
15179
  var builtInPatch2 = {
15179
15180
  name: "builtInCall",
15180
15181
  impl: ({ SUBRULE, OR }) => () => OR([
15181
- { ALT: () => SUBRULE(grammar_exports2.builtInAdjust, void 0) },
15182
- { ALT: () => SUBRULE(grammar_exports2.existingBuildInCall, void 0) }
15182
+ { ALT: () => SUBRULE(grammar_exports2.builtInAdjust) },
15183
+ { ALT: () => SUBRULE(grammar_exports2.existingBuildInCall) }
15183
15184
  ])
15184
15185
  };
15185
15186
  var adjustBuilder = ParserBuilder.create(sparql11ParserBuilder).addRule(grammar_exports2.builtInAdjust).addRule(grammar_exports2.existingBuildInCall).patchRule(builtInPatch2);