@traqula/generator-sparql-1-2 0.0.3 → 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
@@ -160,7 +160,7 @@ var DynamicGenerator = class {
160
160
  this.origSource = "";
161
161
  this.generatedUntil = 0;
162
162
  this.stringBuilder = [];
163
- this.subrule = (cstDef, ast, arg) => {
163
+ this.subrule = (cstDef, ast, ...arg) => {
164
164
  const def = this.rules[cstDef.name];
165
165
  if (!def) {
166
166
  throw new Error(`Rule ${cstDef.name} not found`);
@@ -173,7 +173,7 @@ var DynamicGenerator = class {
173
173
  PRINT_WORDS: this.printWords,
174
174
  CATCHUP: this.catchup,
175
175
  HANDLE_LOC: this.handleLoc
176
- })(ast, this.getSafeContext(), arg);
176
+ })(ast, this.getSafeContext(), ...arg);
177
177
  if (this.factory.isLocalized(ast)) {
178
178
  this.handleLoc(ast, generate);
179
179
  } else {
@@ -11591,7 +11591,7 @@ function stringEscapedLexical(str2) {
11591
11591
  var rdfLiteral = {
11592
11592
  name: "rdfLiteral",
11593
11593
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
11594
- const value = SUBRULE1(string, void 0);
11594
+ const value = SUBRULE1(string);
11595
11595
  return OPTION(() => OR([
11596
11596
  { ALT: () => {
11597
11597
  const lang2 = CONSUME(terminals_exports.langTag);
@@ -11603,7 +11603,7 @@ var rdfLiteral = {
11603
11603
  } },
11604
11604
  { ALT: () => {
11605
11605
  CONSUME(symbols_exports.hathat);
11606
- const iriVal = SUBRULE1(iri2, void 0);
11606
+ const iriVal = SUBRULE1(iri2);
11607
11607
  return ACTION(() => C.factory.literalTerm(
11608
11608
  C.factory.sourceLocation(value, iriVal),
11609
11609
  value.value,
@@ -11619,7 +11619,7 @@ var rdfLiteral = {
11619
11619
  factory.printFilter(ast, () => PRINT("@", ast.langOrIri));
11620
11620
  } else {
11621
11621
  factory.printFilter(ast, () => PRINT("^^"));
11622
- SUBRULE(iri2, ast.langOrIri, void 0);
11622
+ SUBRULE(iri2, ast.langOrIri);
11623
11623
  }
11624
11624
  }
11625
11625
  }
@@ -11627,9 +11627,9 @@ var rdfLiteral = {
11627
11627
  var numericLiteral = {
11628
11628
  name: "numericLiteral",
11629
11629
  impl: ({ SUBRULE, OR }) => () => OR([
11630
- { ALT: () => SUBRULE(numericLiteralUnsigned, void 0) },
11631
- { ALT: () => SUBRULE(numericLiteralPositive, void 0) },
11632
- { ALT: () => SUBRULE(numericLiteralNegative, void 0) }
11630
+ { ALT: () => SUBRULE(numericLiteralUnsigned) },
11631
+ { ALT: () => SUBRULE(numericLiteralPositive) },
11632
+ { ALT: () => SUBRULE(numericLiteralNegative) }
11633
11633
  ])
11634
11634
  };
11635
11635
  var numericLiteralUnsigned = {
@@ -11737,10 +11737,10 @@ var string = {
11737
11737
  var iri2 = {
11738
11738
  name: "iri",
11739
11739
  impl: ({ SUBRULE, OR }) => () => OR([
11740
- { ALT: () => SUBRULE(iriFull, void 0) },
11741
- { ALT: () => SUBRULE(prefixedName, void 0) }
11740
+ { ALT: () => SUBRULE(iriFull) },
11741
+ { ALT: () => SUBRULE(prefixedName) }
11742
11742
  ]),
11743
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => F3.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast, void 0) : SUBRULE(iriFull, ast, void 0)
11743
+ gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => F3.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
11744
11744
  };
11745
11745
  var iriFull = {
11746
11746
  name: "iriFull",
@@ -11812,11 +11812,11 @@ function datasetClauseUsing(name, token) {
11812
11812
  const start = CONSUME(token);
11813
11813
  return OR([
11814
11814
  { ALT: () => {
11815
- const iri3 = SUBRULE(defaultGraphClause, void 0);
11815
+ const iri3 = SUBRULE(defaultGraphClause);
11816
11816
  return ACTION(() => C.factory.wrap({ clauseType: "default", value: iri3 }, C.factory.sourceLocation(start, iri3)));
11817
11817
  } },
11818
11818
  { ALT: () => {
11819
- const namedClause = SUBRULE(namedGraphClause, void 0);
11819
+ const namedClause = SUBRULE(namedGraphClause);
11820
11820
  return ACTION(() => C.factory.wrap({
11821
11821
  clauseType: "named",
11822
11822
  value: namedClause.val
@@ -11829,7 +11829,7 @@ function datasetClauseUsing(name, token) {
11829
11829
  var datasetClause = datasetClauseUsing("datasetClause", from);
11830
11830
  var defaultGraphClause = {
11831
11831
  name: "defaultGraphClause",
11832
- impl: ({ SUBRULE }) => () => SUBRULE(sourceSelector, void 0)
11832
+ impl: ({ SUBRULE }) => () => SUBRULE(sourceSelector)
11833
11833
  };
11834
11834
  var usingClause2 = datasetClauseUsing("usingClause", usingClause);
11835
11835
  function datasetClauseUsingStar(name, subRule, fromUsing) {
@@ -11838,7 +11838,7 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11838
11838
  impl: ({ ACTION, MANY, SUBRULE }) => (C) => {
11839
11839
  const clauses = [];
11840
11840
  MANY(() => {
11841
- const clause = SUBRULE(subRule, void 0);
11841
+ const clause = SUBRULE(subRule);
11842
11842
  clauses.push(clause);
11843
11843
  });
11844
11844
  return ACTION(() => C.factory.datasetClauses(
@@ -11852,7 +11852,7 @@ function datasetClauseUsingStar(name, subRule, fromUsing) {
11852
11852
  if (clause.clauseType === "named") {
11853
11853
  F3.printFilter(ast, () => PRINT_WORD("NAMED"));
11854
11854
  }
11855
- SUBRULE(iri2, clause.value, void 0);
11855
+ SUBRULE(iri2, clause.value);
11856
11856
  }
11857
11857
  }
11858
11858
  };
@@ -11863,1389 +11863,1390 @@ var namedGraphClause = {
11863
11863
  name: "namedGraphClause",
11864
11864
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11865
11865
  const named2 = CONSUME(graph_exports.named);
11866
- const iri3 = SUBRULE(sourceSelector, void 0);
11866
+ const iri3 = SUBRULE(sourceSelector);
11867
11867
  return ACTION(() => C.factory.wrap(iri3, C.factory.sourceLocation(named2, iri3)));
11868
11868
  }
11869
11869
  };
11870
11870
  var sourceSelector = {
11871
11871
  name: "sourceSelector",
11872
- impl: ({ SUBRULE }) => () => SUBRULE(iri2, void 0)
11872
+ impl: ({ SUBRULE }) => () => SUBRULE(iri2)
11873
11873
  };
11874
11874
 
11875
- // ../../packages/rules-sparql-1-1/lib/grammar/general.ts
11876
- var prologue = {
11877
- name: "prologue",
11878
- impl: ({ SUBRULE, MANY, OR }) => () => {
11879
- const result = [];
11880
- MANY(() => OR([
11881
- { ALT: () => result.push(SUBRULE(baseDecl2, void 0)) },
11882
- // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
11883
- // We might need to check this.
11884
- { ALT: () => result.push(SUBRULE(prefixDecl2, void 0)) }
11885
- ]));
11886
- return result;
11887
- },
11888
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11889
- for (const context of ast) {
11890
- if (F3.isContextDefinitionBase(context)) {
11891
- SUBRULE(baseDecl2, context, void 0);
11892
- } else if (F3.isContextDefinitionPrefix(context)) {
11893
- SUBRULE(prefixDecl2, context, void 0);
11894
- }
11895
- }
11896
- }
11897
- };
11898
- var baseDecl2 = {
11899
- name: "baseDecl",
11900
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11901
- const base = CONSUME(baseDecl);
11902
- const val = SUBRULE(iriFull, void 0);
11903
- return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
11904
- },
11905
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
11906
- F3.printFilter(ast, () => PRINT_WORD("BASE"));
11907
- SUBRULE(iri2, ast.value, void 0);
11908
- }
11909
- };
11910
- var prefixDecl2 = {
11911
- name: "prefixDecl",
11912
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11913
- const prefix = CONSUME(prefixDecl);
11914
- const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
11915
- const value = SUBRULE(iriFull, void 0);
11916
- return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
11917
- },
11918
- gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F3 }) => {
11919
- F3.printFilter(ast, () => {
11920
- PRINT_WORDS("PREFIX", `${ast.key}:`);
11921
- });
11922
- SUBRULE(iri2, ast.value, void 0);
11923
- }
11924
- };
11925
- var verb = {
11926
- name: "verb",
11927
- impl: ({ SUBRULE, OR }) => () => OR([
11928
- { ALT: () => SUBRULE(varOrIri, void 0) },
11929
- { ALT: () => SUBRULE(verbA, void 0) }
11930
- ])
11931
- };
11932
- var varOrTerm = {
11933
- name: "varOrTerm",
11934
- impl: ({ SUBRULE, OR }) => (C) => OR([
11935
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_, void 0) },
11936
- { ALT: () => SUBRULE(graphTerm, void 0) }
11937
- ]),
11938
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11939
- if (F3.isTermVariable(ast)) {
11940
- return SUBRULE(var_, ast, void 0);
11941
- }
11942
- return SUBRULE(graphTerm, ast, void 0);
11943
- }
11944
- };
11945
- var varOrIri = {
11946
- name: "varOrIri",
11947
- impl: ({ SUBRULE, OR }) => (C) => OR([
11948
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_, void 0) },
11949
- { ALT: () => SUBRULE(iri2, void 0) }
11950
- ])
11951
- };
11952
- var var_ = {
11953
- name: "var",
11954
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
11955
- const varToken = OR([
11956
- { ALT: () => CONSUME(terminals_exports.var1) },
11957
- { ALT: () => CONSUME(terminals_exports.var2) }
11958
- ]);
11959
- return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
11960
- },
11961
- gImpl: ({ PRINT_WORD }) => (ast, { factory: F3 }) => {
11962
- F3.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
11963
- }
11964
- };
11965
- var graphTerm = {
11966
- name: "graphTerm",
11967
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
11968
- { ALT: () => SUBRULE(iri2, void 0) },
11969
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
11970
- { ALT: () => SUBRULE(numericLiteral, void 0) },
11971
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
11972
- { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode, void 0) },
11973
- { ALT: () => {
11974
- const tokenNil = CONSUME(terminals_exports.nil);
11975
- return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
11976
- } }
11977
- ]),
11978
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
11979
- if (F3.isTermNamed(ast)) {
11980
- SUBRULE(iri2, ast, void 0);
11981
- } else if (F3.isTermLiteral(ast)) {
11982
- SUBRULE(rdfLiteral, ast, void 0);
11983
- } else if (F3.isTermBlank(ast)) {
11984
- SUBRULE(blankNode, ast, void 0);
11985
- }
11986
- }
11987
- };
11988
-
11989
- // ../../packages/rules-sparql-1-1/lib/grammar/propertyPaths.ts
11990
- var path = {
11991
- name: "path",
11992
- impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative, void 0)
11993
- };
11994
- var pathGenerator = {
11995
- name: "path",
11996
- gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F3 }, braces = true) => {
11997
- if (F3.isTerm(ast) && F3.isTermNamed(ast)) {
11998
- SUBRULE(iri2, ast, void 0);
11999
- } else {
12000
- F3.printFilter(ast, () => braces && PRINT("("));
12001
- switch (ast.subType) {
12002
- case "|":
12003
- case "/": {
12004
- const [head2, ...tail] = ast.items;
12005
- SUBRULE(pathGenerator, head2, braces);
12006
- for (const val of tail) {
12007
- F3.printFilter(ast, () => PRINT(ast.subType));
12008
- SUBRULE(pathGenerator, val, braces);
12009
- }
12010
- break;
12011
- }
12012
- case "^":
12013
- F3.printFilter(ast, () => PRINT("^"));
12014
- SUBRULE(pathGenerator, ast.items[0], braces);
12015
- break;
12016
- case "?":
12017
- case "*":
12018
- case "+":
12019
- SUBRULE(pathGenerator, ast.items[0], braces);
12020
- F3.printFilter(ast, () => PRINT(ast.subType));
12021
- break;
12022
- case "!":
12023
- F3.printFilter(ast, () => PRINT("!"));
12024
- F3.printFilter(ast, () => PRINT("("));
12025
- SUBRULE(pathGenerator, ast.items[0], false);
12026
- F3.printFilter(ast, () => PRINT(")"));
12027
- break;
12028
- }
12029
- F3.printFilter(ast, () => braces && PRINT(")"));
12030
- }
12031
- }
12032
- };
12033
- function pathChainHelper(name, SEP, subType, subRule) {
11875
+ // ../../packages/rules-sparql-1-1/lib/expressionHelpers.ts
11876
+ function funcExpr1(func) {
12034
11877
  return {
12035
- name,
12036
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, MANY }) => (C) => {
12037
- const head2 = SUBRULE1(subRule, void 0);
12038
- let tailEnd = head2;
12039
- const tail = [];
12040
- MANY(() => {
12041
- CONSUME(SEP);
12042
- tailEnd = SUBRULE2(subRule, void 0);
12043
- tail.push(tailEnd);
12044
- });
12045
- return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
11878
+ name: unCapitalize(func.name),
11879
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11880
+ const operator = CONSUME(func);
11881
+ CONSUME(symbols_exports.LParen);
11882
+ const arg = SUBRULE(expression);
11883
+ const close = CONSUME(symbols_exports.RParen);
11884
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12046
11885
  }
12047
11886
  };
12048
11887
  }
12049
- var pathEltOrInverse = {
12050
- name: "pathEltOrInverse",
12051
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR }) => (C) => OR([
12052
- { ALT: () => SUBRULE1(pathElt, void 0) },
12053
- { ALT: () => {
12054
- const hat2 = CONSUME(symbols_exports.hat);
12055
- const item = SUBRULE2(pathElt, void 0);
12056
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12057
- } }
12058
- ])
12059
- };
12060
- var pathSequence = pathChainHelper("pathSequence", symbols_exports.slash, "/", pathEltOrInverse);
12061
- var pathAlternative = pathChainHelper("pathAlternative", symbols_exports.pipe, "|", pathSequence);
12062
- var pathElt = {
12063
- name: "pathElt",
12064
- impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12065
- const item = SUBRULE(pathPrimary, void 0);
12066
- const modification = OPTION(() => SUBRULE(pathMod, void 0));
12067
- return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12068
- }
12069
- };
12070
- var pathMod = {
12071
- name: "pathMod",
12072
- impl: ({ CONSUME, OR }) => () => OR([
12073
- { ALT: () => CONSUME(symbols_exports.question) },
12074
- { ALT: () => CONSUME(symbols_exports.star) },
12075
- { ALT: () => CONSUME(symbols_exports.opPlus) }
12076
- ])
12077
- };
12078
- var pathPrimary = {
12079
- name: "pathPrimary",
12080
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12081
- { ALT: () => SUBRULE(iri2, void 0) },
12082
- { ALT: () => SUBRULE(verbA, void 0) },
12083
- { ALT: () => SUBRULE(pathNegatedPropertySet, void 0) },
12084
- { ALT: () => {
11888
+ function funcExpr2(func) {
11889
+ return {
11890
+ name: unCapitalize(func.name),
11891
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {
11892
+ const operator = CONSUME(func);
12085
11893
  CONSUME(symbols_exports.LParen);
12086
- const resRecursive = SUBRULE(path, void 0);
12087
- CONSUME(symbols_exports.RParen);
12088
- return resRecursive;
12089
- } }
12090
- ])
12091
- };
12092
- var pathNegatedPropertySet = {
12093
- name: "pathNegatedPropertySet",
12094
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, OR, MANY }) => (C) => {
12095
- const exclamation2 = CONSUME(symbols_exports.exclamation);
12096
- return OR([
12097
- { ALT: () => {
12098
- const noAlternative = SUBRULE1(pathOneInPropertySet, void 0);
12099
- return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12100
- } },
12101
- { ALT: () => {
12102
- const open = CONSUME(symbols_exports.LParen);
12103
- const head2 = SUBRULE2(pathOneInPropertySet, void 0);
12104
- const tail = [];
12105
- MANY(() => {
12106
- CONSUME(symbols_exports.pipe);
12107
- const item = SUBRULE3(pathOneInPropertySet, void 0);
12108
- tail.push(item);
12109
- });
12110
- const close = CONSUME(symbols_exports.RParen);
12111
- return ACTION(() => {
12112
- const F3 = C.factory;
12113
- if (tail.length === 0) {
12114
- return F3.path("!", [head2], F3.sourceLocation(exclamation2, close));
12115
- }
12116
- return F3.path(
12117
- "!",
12118
- [F3.path("|", [head2, ...tail], F3.sourceLocation(open, close))],
12119
- F3.sourceLocation(exclamation2, close)
12120
- );
12121
- });
12122
- } }
12123
- ]);
12124
- }
12125
- };
12126
- var pathOneInPropertySet = {
12127
- name: "pathOneInPropertySet",
12128
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
12129
- { ALT: () => SUBRULE1(iri2, void 0) },
12130
- { ALT: () => SUBRULE1(verbA, void 0) },
12131
- { ALT: () => {
12132
- const hat2 = CONSUME(symbols_exports.hat);
12133
- const item = OR2([
12134
- { ALT: () => SUBRULE2(iri2, void 0) },
12135
- { ALT: () => SUBRULE2(verbA, void 0) }
12136
- ]);
12137
- return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12138
- } }
12139
- ])
12140
- };
12141
-
12142
- // ../../packages/rules-sparql-1-1/lib/grammar/tripleBlock.ts
12143
- function triplesDotSeperated(triplesSameSubjectSubrule) {
12144
- return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
12145
- const triples = [];
12146
- let parsedDot = true;
12147
- let dotToken;
12148
- AT_LEAST_ONE({
12149
- GATE: () => parsedDot,
12150
- DEF: () => {
12151
- parsedDot = false;
12152
- const template = SUBRULE(triplesSameSubjectSubrule, void 0);
12153
- ACTION(() => {
12154
- triples.push(...template);
12155
- });
12156
- OPTION(() => {
12157
- dotToken = CONSUME(symbols_exports.dot);
12158
- parsedDot = true;
12159
- });
12160
- }
12161
- });
12162
- return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12163
- };
12164
- }
12165
- var triplesBlock = {
12166
- name: "triplesBlock",
12167
- impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, void 0),
12168
- gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12169
- for (const [index, triple] of ast.triples.entries()) {
12170
- HANDLE_LOC(triple, () => {
12171
- const nextTriple = ast.triples.at(index);
12172
- if (F3.isTripleCollection(triple)) {
12173
- SUBRULE(graphNodePath, triple, void 0);
12174
- F3.printFilter(triple, () => PRINT_WORD("."));
12175
- } else {
12176
- SUBRULE(graphNodePath, triple.subject, void 0);
12177
- if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
12178
- SUBRULE(varOrTerm, triple.predicate, void 0);
12179
- } else {
12180
- SUBRULE(pathGenerator, triple.predicate, void 0);
12181
- }
12182
- SUBRULE(graphNodePath, triple.object, void 0);
12183
- if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12184
- F3.printFilter(ast, () => PRINT_WORD("."));
12185
- } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12186
- F3.printFilter(ast, () => PRINT_WORD(","));
12187
- } else {
12188
- F3.printFilter(ast, () => PRINT_WORD(";"));
12189
- }
12190
- }
12191
- });
11894
+ const arg1 = SUBRULE1(expression);
11895
+ CONSUME(symbols_exports.comma);
11896
+ const arg2 = SUBRULE2(expression);
11897
+ const close = CONSUME(symbols_exports.RParen);
11898
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
12192
11899
  }
12193
- }
12194
- };
12195
- function triplesSameSubjectImpl(name, allowPaths) {
12196
- return {
12197
- name,
12198
- impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12199
- { ALT: () => {
12200
- const subject = SUBRULE(varOrTerm, void 0);
12201
- const res = SUBRULE(
12202
- allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
12203
- { subject: ACTION(() => C.factory.dematerialized(subject)) }
12204
- );
12205
- return ACTION(() => {
12206
- if (res.length > 0) {
12207
- res[0].subject = subject;
12208
- res[0].loc = C.factory.sourceLocation(subject, res[0]);
12209
- }
12210
- return res;
12211
- });
12212
- } },
12213
- { ALT: () => {
12214
- const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode, void 0);
12215
- const restNode = SUBRULE(
12216
- allowPaths ? propertyListPath : propertyList,
12217
- { subject: ACTION(() => C.factory.graphNodeIdentifier(subjectNode)) }
12218
- );
12219
- return ACTION(() => {
12220
- if (restNode.length === 0) {
12221
- return [subjectNode];
12222
- }
12223
- restNode[0].subject = subjectNode;
12224
- restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12225
- return restNode;
12226
- });
12227
- } }
12228
- ])
12229
11900
  };
12230
11901
  }
12231
- var triplesSameSubject = triplesSameSubjectImpl("triplesSameSubject", false);
12232
- var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", true);
12233
- var triplesTemplate = {
12234
- name: "triplesTemplate",
12235
- impl: triplesDotSeperated(triplesSameSubject)
12236
- };
12237
- function propertyListImpl(name, allowPaths) {
11902
+ function funcExpr3(func) {
12238
11903
  return {
12239
- name,
12240
- impl: ({ SUBRULE, OPTION }) => (_, arg) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, arg)) ?? []
11904
+ name: unCapitalize(func.name),
11905
+ impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {
11906
+ const operator = CONSUME(func);
11907
+ CONSUME(symbols_exports.LParen);
11908
+ const arg1 = SUBRULE1(expression);
11909
+ CONSUME1(symbols_exports.comma);
11910
+ const arg2 = SUBRULE2(expression);
11911
+ CONSUME2(symbols_exports.comma);
11912
+ const arg3 = SUBRULE3(expression);
11913
+ const close = CONSUME(symbols_exports.RParen);
11914
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
11915
+ }
12241
11916
  };
12242
11917
  }
12243
- var propertyList = propertyListImpl("propertyList", false);
12244
- var propertyListPath = propertyListImpl("propertyListPath", true);
12245
- function propertyListNotEmptyImplementation(name, allowPaths) {
11918
+ function funcVar1(func) {
12246
11919
  return {
12247
- name,
12248
- impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, arg) => {
12249
- const result = [];
12250
- let parsedSemi = true;
12251
- AT_LEAST_ONE({
12252
- GATE: () => parsedSemi,
12253
- DEF: () => {
12254
- parsedSemi = false;
12255
- const predicate = allowPaths ? OR1([
12256
- { ALT: () => SUBRULE1(verbPath, void 0) },
12257
- { ALT: () => SUBRULE1(verbSimple, void 0) }
12258
- ]) : SUBRULE1(verb, void 0);
12259
- const triples = SUBRULE1(
12260
- allowPaths ? objectListPath : objectList,
12261
- ACTION(() => ({ subject: arg.subject, predicate }))
12262
- );
12263
- MANY2(() => {
12264
- CONSUME(symbols_exports.semi);
12265
- parsedSemi = true;
12266
- });
12267
- ACTION(() => {
12268
- result.push(...triples);
12269
- });
12270
- }
12271
- });
12272
- return result;
11920
+ name: unCapitalize(func.name),
11921
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
11922
+ const operator = CONSUME(func);
11923
+ CONSUME(symbols_exports.LParen);
11924
+ const arg = SUBRULE(var_);
11925
+ const close = CONSUME(symbols_exports.RParen);
11926
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12273
11927
  }
12274
11928
  };
12275
11929
  }
12276
- var propertyListNotEmpty = propertyListNotEmptyImplementation("propertyListNotEmpty", false);
12277
- var propertyListPathNotEmpty = propertyListNotEmptyImplementation("propertyListPathNotEmpty", true);
12278
- var verbPath = {
12279
- name: "verbPath",
12280
- impl: ({ SUBRULE }) => () => SUBRULE(path, void 0)
12281
- };
12282
- var verbSimple = {
12283
- name: "verbSimple",
12284
- impl: ({ SUBRULE }) => () => SUBRULE(var_, void 0)
12285
- };
12286
- function objectListImpl(name, allowPaths) {
11930
+ function funcExprOrNil1(func) {
12287
11931
  return {
12288
- name,
12289
- impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, arg) => {
12290
- const objects = [];
12291
- AT_LEAST_ONE_SEP({
12292
- SEP: symbols_exports.comma,
12293
- DEF: () => {
12294
- const objectTriple = SUBRULE(allowPaths ? objectPath : object, arg);
12295
- ACTION(() => {
12296
- objects.push(objectTriple);
12297
- });
12298
- }
12299
- });
12300
- return objects;
11932
+ name: unCapitalize(func.name),
11933
+ impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
11934
+ const operator = CONSUME(func);
11935
+ return OR([
11936
+ { ALT: () => {
11937
+ CONSUME(symbols_exports.LParen);
11938
+ const arg = SUBRULE(expression);
11939
+ const close = CONSUME(symbols_exports.RParen);
11940
+ return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
11941
+ } },
11942
+ { ALT: () => {
11943
+ const nil2 = CONSUME(terminals_exports.nil);
11944
+ return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
11945
+ } }
11946
+ ]);
12301
11947
  }
12302
11948
  };
12303
11949
  }
12304
- var objectList = objectListImpl("objectList", false);
12305
- var objectListPath = objectListImpl("objectListPath", true);
12306
- function objectImpl(name, allowPaths) {
11950
+ function funcNil1(func) {
12307
11951
  return {
12308
- name,
12309
- impl: ({ ACTION, SUBRULE }) => (C, arg) => {
12310
- const node = SUBRULE(allowPaths ? graphNodePath : graphNode, void 0);
12311
- return ACTION(() => C.factory.triple(arg.subject, arg.predicate, node));
11952
+ name: unCapitalize(func.name),
11953
+ impl: ({ ACTION, CONSUME }) => (C) => {
11954
+ const operator = CONSUME(func);
11955
+ const nil2 = CONSUME(terminals_exports.nil);
11956
+ return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12312
11957
  }
12313
11958
  };
12314
11959
  }
12315
- var object = objectImpl("object", false);
12316
- var objectPath = objectImpl("objectPath", true);
12317
- function collectionImpl(name, allowPaths) {
11960
+ function funcExprList1(func) {
12318
11961
  return {
12319
- name,
12320
- impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {
12321
- const terms = [];
12322
- const startToken = CONSUME(symbols_exports.LParen);
12323
- AT_LEAST_ONE(() => {
12324
- terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode, void 0));
12325
- });
12326
- const endToken = CONSUME(symbols_exports.RParen);
12327
- return ACTION(() => {
12328
- const F3 = C.factory;
12329
- const triples = [];
12330
- const predFirst = F3.namedNode(F3.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" /* FIRST */, void 0);
12331
- const predRest = F3.namedNode(F3.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" /* REST */, void 0);
12332
- const predNil = F3.namedNode(F3.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */, void 0);
12333
- const listHead = F3.blankNode(void 0, F3.sourceLocationNoMaterialize());
12334
- let iterHead = listHead;
12335
- for (const [index, term] of terms.entries()) {
12336
- const lastInList = index === terms.length - 1;
12337
- const headTriple = F3.triple(
12338
- iterHead,
12339
- predFirst,
12340
- term
12341
- );
12342
- triples.push(headTriple);
12343
- if (lastInList) {
12344
- const nilTriple = F3.triple(iterHead, predRest, predNil);
12345
- triples.push(nilTriple);
12346
- } else {
12347
- const tail = F3.blankNode(void 0, F3.sourceLocationNoMaterialize());
12348
- const linkTriple = F3.triple(iterHead, predRest, tail);
12349
- triples.push(linkTriple);
12350
- iterHead = tail;
12351
- }
12352
- }
12353
- return F3.tripleCollectionList(listHead, triples, F3.sourceLocation(startToken, endToken));
11962
+ name: unCapitalize(func.name),
11963
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
11964
+ const operator = CONSUME(func);
11965
+ const args = SUBRULE(expressionList);
11966
+ return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
11967
+ }
11968
+ };
11969
+ }
11970
+ function funcExpr2or3(func) {
11971
+ return {
11972
+ name: unCapitalize(func.name),
11973
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => (C) => {
11974
+ const operator = CONSUME(func);
11975
+ CONSUME(symbols_exports.LParen);
11976
+ const arg1 = SUBRULE1(expression);
11977
+ CONSUME1(symbols_exports.comma);
11978
+ const arg2 = SUBRULE2(expression);
11979
+ const arg3 = OPTION(() => {
11980
+ CONSUME2(symbols_exports.comma);
11981
+ return SUBRULE3(expression);
12354
11982
  });
12355
- },
12356
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12357
- F3.printFilter(ast, () => PRINT_WORD("("));
12358
- for (const [idx, triple] of ast.triples.entries()) {
12359
- if (idx % 2 === 0) {
12360
- SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object, void 0);
12361
- }
12362
- }
12363
- F3.printFilter(ast, () => PRINT_WORD(")"));
11983
+ const close = CONSUME(symbols_exports.RParen);
11984
+ return ACTION(() => C.factory.expressionOperation(
11985
+ operator.image,
11986
+ arg3 ? [arg1, arg2, arg3] : [arg1, arg2],
11987
+ C.factory.sourceLocation(operator, close)
11988
+ ));
12364
11989
  }
12365
11990
  };
12366
11991
  }
12367
- var collection = collectionImpl("collection", false);
12368
- var collectionPath = collectionImpl("collectionPath", true);
12369
- function triplesNodeImpl(name, allowPaths) {
11992
+ function funcExpr3or4(func) {
12370
11993
  return {
12371
- name,
12372
- impl: ({ SUBRULE, OR }) => () => OR([
12373
- { ALT: () => SUBRULE(allowPaths ? collectionPath : collection, void 0) },
12374
- { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, void 0) }
12375
- ]),
12376
- gImpl: ({ SUBRULE }) => (ast) => ast.subType === "list" ? SUBRULE(allowPaths ? collectionPath : collection, ast, void 0) : SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast, void 0)
11994
+ name: unCapitalize(func.name),
11995
+ impl: ({
11996
+ ACTION,
11997
+ CONSUME,
11998
+ SUBRULE1,
11999
+ SUBRULE2,
12000
+ SUBRULE3,
12001
+ SUBRULE4,
12002
+ CONSUME1,
12003
+ OPTION,
12004
+ CONSUME2,
12005
+ CONSUME3
12006
+ }) => (C) => {
12007
+ const operator = CONSUME(func);
12008
+ CONSUME(symbols_exports.LParen);
12009
+ const arg1 = SUBRULE1(expression);
12010
+ CONSUME1(symbols_exports.comma);
12011
+ const arg2 = SUBRULE2(expression);
12012
+ CONSUME2(symbols_exports.comma);
12013
+ const arg3 = SUBRULE3(expression);
12014
+ const arg4 = OPTION(() => {
12015
+ CONSUME3(symbols_exports.comma);
12016
+ return SUBRULE4(expression);
12017
+ });
12018
+ const close = CONSUME(symbols_exports.RParen);
12019
+ return ACTION(() => C.factory.expressionOperation(
12020
+ operator.image,
12021
+ arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3],
12022
+ C.factory.sourceLocation(operator, close)
12023
+ ));
12024
+ }
12377
12025
  };
12378
12026
  }
12379
- var triplesNode = triplesNodeImpl("triplesNode", false);
12380
- var triplesNodePath = triplesNodeImpl("triplesNodePath", true);
12381
- function blankNodePropertyListImpl(name, allowPaths) {
12382
- const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
12027
+ function funcGroupGraphPattern(func) {
12383
12028
  return {
12384
- name,
12029
+ name: unCapitalize(func.name),
12385
12030
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12386
- const startToken = CONSUME(symbols_exports.LSquare);
12387
- const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12388
- const propList = SUBRULE(propertyPathNotEmptyImpl, { subject: blankNode2 });
12389
- const endToken = CONSUME(symbols_exports.RSquare);
12390
- return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
12391
- blankNode2,
12392
- propList,
12393
- C.factory.sourceLocation(startToken, endToken)
12031
+ const operator = CONSUME(func);
12032
+ const group = SUBRULE(groupGraphPattern);
12033
+ return ACTION(() => C.factory.expressionPatternOperation(
12034
+ operator.image,
12035
+ group,
12036
+ C.factory.sourceLocation(operator, group)
12394
12037
  ));
12395
- },
12396
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12397
- F3.printFilter(ast, () => PRINT("["));
12398
- for (const triple of ast.triples) {
12399
- HANDLE_LOC(triple, () => {
12400
- if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
12401
- SUBRULE(varOrTerm, triple.predicate, void 0);
12402
- } else {
12403
- SUBRULE(pathGenerator, triple.predicate, void 0);
12404
- }
12405
- SUBRULE(graphNodePath, triple.object, void 0);
12406
- F3.printFilter(ast, () => PRINT_WORD(";"));
12407
- });
12408
- }
12409
- F3.printFilter(ast, () => PRINT("]"));
12410
12038
  }
12411
12039
  };
12412
12040
  }
12413
- var blankNodePropertyList = blankNodePropertyListImpl("blankNodePropertyList", false);
12414
- var blankNodePropertyListPath = blankNodePropertyListImpl("blankNodePropertyListPath", true);
12415
- function graphNodeImpl(name, allowPaths) {
12416
- const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
12041
+ function baseAggregateFunc(func) {
12417
12042
  return {
12418
- name,
12419
- impl: ({ SUBRULE, OR }) => (C) => OR([
12420
- { ALT: () => SUBRULE(varOrTerm, void 0) },
12421
- {
12422
- GATE: () => C.parseMode.has("canCreateBlankNodes"),
12423
- ALT: () => SUBRULE(triplesNodeRule, void 0)
12424
- }
12425
- ]),
12426
- gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12427
- if (F3.isTerm(ast)) {
12428
- SUBRULE(varOrTerm, ast, void 0);
12429
- } else {
12430
- SUBRULE(triplesNodeRule, ast, void 0);
12431
- }
12043
+ name: unCapitalize(func.name),
12044
+ impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
12045
+ const operator = CONSUME(func);
12046
+ CONSUME(symbols_exports.LParen);
12047
+ const distinct2 = OPTION(() => CONSUME(distinct));
12048
+ const expr1 = SUBRULE(expression);
12049
+ const close = CONSUME(symbols_exports.RParen);
12050
+ return ACTION(() => C.factory.aggregate(
12051
+ operator.image,
12052
+ distinct2 !== void 0,
12053
+ expr1,
12054
+ void 0,
12055
+ C.factory.sourceLocation(operator, close)
12056
+ ));
12432
12057
  }
12433
12058
  };
12434
12059
  }
12435
- var graphNode = graphNodeImpl("graphNode", false);
12436
- var graphNodePath = graphNodeImpl("graphNodePath", true);
12437
12060
 
12438
- // ../../packages/rules-sparql-1-1/lib/grammar/whereClause.ts
12439
- var whereClause = {
12440
- name: "whereClause",
12441
- impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12442
- const where2 = OPTION(() => CONSUME(where));
12443
- const group = SUBRULE(groupGraphPattern, void 0);
12444
- return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12445
- },
12446
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12447
- F3.printFilter(ast, () => PRINT_WORD("WHERE"));
12448
- SUBRULE(groupGraphPattern, ast.val, void 0);
12061
+ // ../../packages/rules-sparql-1-1/lib/grammar/builtIn.ts
12062
+ var builtInStr = funcExpr1(BuildinCalls_exports.str);
12063
+ var builtInLang = funcExpr1(BuildinCalls_exports.lang);
12064
+ var builtInLangmatches = funcExpr2(BuildinCalls_exports.langmatches);
12065
+ var builtInDatatype = funcExpr1(BuildinCalls_exports.datatype);
12066
+ var builtInBound = funcVar1(BuildinCalls_exports.bound);
12067
+ var builtInIri = funcExpr1(BuildinCalls_exports.iri);
12068
+ var builtInUri = funcExpr1(BuildinCalls_exports.uri);
12069
+ var builtInBnodeSparqlJs = funcExprOrNil1(BuildinCalls_exports.bnode);
12070
+ var builtInRand = funcNil1(BuildinCalls_exports.rand);
12071
+ var builtInAbs = funcExpr1(BuildinCalls_exports.abs);
12072
+ var builtInCeil = funcExpr1(BuildinCalls_exports.ceil);
12073
+ var builtInFloor = funcExpr1(BuildinCalls_exports.floor);
12074
+ var builtInRound = funcExpr1(BuildinCalls_exports.round);
12075
+ var builtInConcat = funcExprList1(BuildinCalls_exports.concat);
12076
+ var builtInStrlen = funcExpr1(BuildinCalls_exports.strlen);
12077
+ var builtInUcase = funcExpr1(BuildinCalls_exports.ucase);
12078
+ var builtInLcase = funcExpr1(BuildinCalls_exports.lcase);
12079
+ var builtInEncode_for_uri = funcExpr1(BuildinCalls_exports.encode_for_uri);
12080
+ var builtInContains = funcExpr2(BuildinCalls_exports.contains);
12081
+ var builtInStrstarts = funcExpr2(BuildinCalls_exports.strstarts);
12082
+ var builtInStrends = funcExpr2(BuildinCalls_exports.strends);
12083
+ var builtInStrbefore = funcExpr2(BuildinCalls_exports.strbefore);
12084
+ var builtInStrafter = funcExpr2(BuildinCalls_exports.strafter);
12085
+ var builtInYear = funcExpr1(BuildinCalls_exports.year);
12086
+ var builtInMonth = funcExpr1(BuildinCalls_exports.month);
12087
+ var builtInDay = funcExpr1(BuildinCalls_exports.day);
12088
+ var builtInHours = funcExpr1(BuildinCalls_exports.hours);
12089
+ var builtInMinutes = funcExpr1(BuildinCalls_exports.minutes);
12090
+ var builtInSeconds = funcExpr1(BuildinCalls_exports.seconds);
12091
+ var builtInTimezone = funcExpr1(BuildinCalls_exports.timezone);
12092
+ var builtInTz = funcExpr1(BuildinCalls_exports.tz);
12093
+ var builtInNow = funcNil1(BuildinCalls_exports.now);
12094
+ var builtInUuid = funcNil1(BuildinCalls_exports.uuid);
12095
+ var builtInStruuid = funcNil1(BuildinCalls_exports.struuid);
12096
+ var builtInMd5 = funcExpr1(BuildinCalls_exports.md5);
12097
+ var builtInSha1 = funcExpr1(BuildinCalls_exports.sha1);
12098
+ var builtInSha256 = funcExpr1(BuildinCalls_exports.sha256);
12099
+ var builtInSha384 = funcExpr1(BuildinCalls_exports.sha384);
12100
+ var builtInSha512 = funcExpr1(BuildinCalls_exports.sha512);
12101
+ var builtInCoalesce = funcExprList1(BuildinCalls_exports.coalesce);
12102
+ var builtInIf = funcExpr3(BuildinCalls_exports.if_);
12103
+ var builtInStrlang = funcExpr2(BuildinCalls_exports.strlang);
12104
+ var builtInStrdt = funcExpr2(BuildinCalls_exports.strdt);
12105
+ var builtInSameterm = funcExpr2(BuildinCalls_exports.sameterm);
12106
+ var builtInIsiri = funcExpr1(BuildinCalls_exports.isiri);
12107
+ var builtInIsuri = funcExpr1(BuildinCalls_exports.isuri);
12108
+ var builtInIsblank = funcExpr1(BuildinCalls_exports.isblank);
12109
+ var builtInIsliteral = funcExpr1(BuildinCalls_exports.isliteral);
12110
+ var builtInIsnumeric = funcExpr1(BuildinCalls_exports.isnumeric);
12111
+ function builtInCallList(SUBRULE) {
12112
+ return [
12113
+ { ALT: () => SUBRULE(aggregate) },
12114
+ { ALT: () => SUBRULE(builtInStr) },
12115
+ { ALT: () => SUBRULE(builtInLang) },
12116
+ { ALT: () => SUBRULE(builtInLangmatches) },
12117
+ { ALT: () => SUBRULE(builtInDatatype) },
12118
+ { ALT: () => SUBRULE(builtInBound) },
12119
+ { ALT: () => SUBRULE(builtInIri) },
12120
+ { ALT: () => SUBRULE(builtInUri) },
12121
+ { ALT: () => SUBRULE(builtInBnodeSparqlJs) },
12122
+ { ALT: () => SUBRULE(builtInRand) },
12123
+ { ALT: () => SUBRULE(builtInAbs) },
12124
+ { ALT: () => SUBRULE(builtInCeil) },
12125
+ { ALT: () => SUBRULE(builtInFloor) },
12126
+ { ALT: () => SUBRULE(builtInRound) },
12127
+ { ALT: () => SUBRULE(builtInConcat) },
12128
+ { ALT: () => SUBRULE(substringExpression) },
12129
+ { ALT: () => SUBRULE(builtInStrlen) },
12130
+ { ALT: () => SUBRULE(strReplaceExpression) },
12131
+ { ALT: () => SUBRULE(builtInUcase) },
12132
+ { ALT: () => SUBRULE(builtInLcase) },
12133
+ { ALT: () => SUBRULE(builtInEncode_for_uri) },
12134
+ { ALT: () => SUBRULE(builtInContains) },
12135
+ { ALT: () => SUBRULE(builtInStrstarts) },
12136
+ { ALT: () => SUBRULE(builtInStrends) },
12137
+ { ALT: () => SUBRULE(builtInStrbefore) },
12138
+ { ALT: () => SUBRULE(builtInStrafter) },
12139
+ { ALT: () => SUBRULE(builtInYear) },
12140
+ { ALT: () => SUBRULE(builtInMonth) },
12141
+ { ALT: () => SUBRULE(builtInDay) },
12142
+ { ALT: () => SUBRULE(builtInHours) },
12143
+ { ALT: () => SUBRULE(builtInMinutes) },
12144
+ { ALT: () => SUBRULE(builtInSeconds) },
12145
+ { ALT: () => SUBRULE(builtInTimezone) },
12146
+ { ALT: () => SUBRULE(builtInTz) },
12147
+ { ALT: () => SUBRULE(builtInNow) },
12148
+ { ALT: () => SUBRULE(builtInUuid) },
12149
+ { ALT: () => SUBRULE(builtInStruuid) },
12150
+ { ALT: () => SUBRULE(builtInMd5) },
12151
+ { ALT: () => SUBRULE(builtInSha1) },
12152
+ { ALT: () => SUBRULE(builtInSha256) },
12153
+ { ALT: () => SUBRULE(builtInSha384) },
12154
+ { ALT: () => SUBRULE(builtInSha512) },
12155
+ { ALT: () => SUBRULE(builtInCoalesce) },
12156
+ { ALT: () => SUBRULE(builtInIf) },
12157
+ { ALT: () => SUBRULE(builtInStrlang) },
12158
+ { ALT: () => SUBRULE(builtInStrdt) },
12159
+ { ALT: () => SUBRULE(builtInSameterm) },
12160
+ { ALT: () => SUBRULE(builtInIsiri) },
12161
+ { ALT: () => SUBRULE(builtInIsuri) },
12162
+ { ALT: () => SUBRULE(builtInIsblank) },
12163
+ { ALT: () => SUBRULE(builtInIsliteral) },
12164
+ { ALT: () => SUBRULE(builtInIsnumeric) },
12165
+ { ALT: () => SUBRULE(regexExpression) },
12166
+ { ALT: () => SUBRULE(existsFunc) },
12167
+ { ALT: () => SUBRULE(notExistsFunc) }
12168
+ ];
12169
+ }
12170
+ var builtInCall = {
12171
+ name: "builtInCall",
12172
+ impl: ({ OR, SUBRULE, cache }) => () => {
12173
+ const cached = cache.get(builtInCall);
12174
+ if (cached) {
12175
+ return OR(cached);
12176
+ }
12177
+ const builtIns = builtInCallList(SUBRULE);
12178
+ cache.set(builtInCall, builtIns);
12179
+ return OR(builtIns);
12180
+ }
12181
+ };
12182
+ var regexExpression = funcExpr2or3(BuildinCalls_exports.regex);
12183
+ var substringExpression = funcExpr2or3(BuildinCalls_exports.substr);
12184
+ var strReplaceExpression = funcExpr3or4(BuildinCalls_exports.replace);
12185
+ var existsFunc = funcGroupGraphPattern(BuildinCalls_exports.exists);
12186
+ var notExistsFunc = funcGroupGraphPattern(BuildinCalls_exports.notexists);
12187
+ var aggregateCount = {
12188
+ name: unCapitalize(BuildinCalls_exports.count.name),
12189
+ impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
12190
+ const operatorToken = CONSUME(BuildinCalls_exports.count);
12191
+ CONSUME(symbols_exports.LParen);
12192
+ const distinctToken = OPTION(() => CONSUME(distinct));
12193
+ const expressionVal = OR([
12194
+ { ALT: () => {
12195
+ const starToken = CONSUME(symbols_exports.star);
12196
+ return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
12197
+ } },
12198
+ { ALT: () => SUBRULE(expression) }
12199
+ ]);
12200
+ const closeToken = CONSUME(symbols_exports.RParen);
12201
+ return ACTION(() => {
12202
+ const F3 = C.factory;
12203
+ if (C.factory.isWildcard(expressionVal)) {
12204
+ return F3.aggregate(
12205
+ operatorToken.image,
12206
+ Boolean(distinctToken),
12207
+ expressionVal,
12208
+ void 0,
12209
+ C.factory.sourceLocation(operatorToken, closeToken)
12210
+ );
12211
+ }
12212
+ return F3.aggregate(
12213
+ operatorToken.image,
12214
+ Boolean(distinctToken),
12215
+ expressionVal,
12216
+ void 0,
12217
+ C.factory.sourceLocation(operatorToken, closeToken)
12218
+ );
12219
+ });
12220
+ }
12221
+ };
12222
+ var aggregateSum = baseAggregateFunc(BuildinCalls_exports.sum);
12223
+ var aggregateMin = baseAggregateFunc(BuildinCalls_exports.min);
12224
+ var aggregateMax = baseAggregateFunc(BuildinCalls_exports.max);
12225
+ var aggregateAvg = baseAggregateFunc(BuildinCalls_exports.avg);
12226
+ var aggregateSample = baseAggregateFunc(BuildinCalls_exports.sample);
12227
+ var aggregateGroup_concat = {
12228
+ name: unCapitalize(BuildinCalls_exports.groupConcat.name),
12229
+ impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
12230
+ const operatorToken = CONSUME(BuildinCalls_exports.groupConcat);
12231
+ CONSUME(symbols_exports.LParen);
12232
+ const distinctToken = OPTION1(() => CONSUME(distinct));
12233
+ const expr = SUBRULE(expression);
12234
+ const sep = OPTION2(() => {
12235
+ CONSUME(symbols_exports.semi);
12236
+ CONSUME(separator);
12237
+ CONSUME(symbols_exports.equal);
12238
+ return SUBRULE(string);
12239
+ });
12240
+ const closeToken = CONSUME(symbols_exports.RParen);
12241
+ return ACTION(() => {
12242
+ const F3 = C.factory;
12243
+ return F3.aggregate(
12244
+ operatorToken.image,
12245
+ Boolean(distinctToken),
12246
+ expr,
12247
+ sep?.value ?? " ",
12248
+ F3.sourceLocation(operatorToken, closeToken)
12249
+ );
12250
+ });
12449
12251
  }
12450
12252
  };
12451
- var groupGraphPattern = {
12452
- name: "groupGraphPattern",
12453
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
12454
- const open = CONSUME(symbols_exports.LCurly);
12455
- const patterns = OR([
12456
- { ALT: () => [SUBRULE(subSelect, void 0)] },
12457
- { ALT: () => SUBRULE(groupGraphPatternSub, void 0) }
12253
+ var aggregate = {
12254
+ name: "aggregate",
12255
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => {
12256
+ const wasInAggregate = ACTION(() => C.parseMode.has("inAggregate"));
12257
+ ACTION(() => C.parseMode.add("inAggregate"));
12258
+ const result = OR([
12259
+ { ALT: () => SUBRULE(aggregateCount) },
12260
+ { ALT: () => SUBRULE(aggregateSum) },
12261
+ { ALT: () => SUBRULE(aggregateMin) },
12262
+ { ALT: () => SUBRULE(aggregateMax) },
12263
+ { ALT: () => SUBRULE(aggregateAvg) },
12264
+ { ALT: () => SUBRULE(aggregateSample) },
12265
+ { ALT: () => SUBRULE(aggregateGroup_concat) }
12458
12266
  ]);
12459
- const close = CONSUME(symbols_exports.RCurly);
12460
- return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12267
+ ACTION(() => !wasInAggregate && C.parseMode.delete("inAggregate"));
12268
+ ACTION(() => {
12269
+ if (!C.parseMode.has("canParseAggregate")) {
12270
+ throw new Error("Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.");
12271
+ }
12272
+ if (C.parseMode.has("inAggregate")) {
12273
+ throw new Error("An aggregate function is not allowed within an aggregate function.");
12274
+ }
12275
+ });
12276
+ return result;
12461
12277
  },
12462
12278
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12463
- F3.printFilter(ast, () => PRINT_WORD("{"));
12464
- for (const pattern of ast.patterns) {
12465
- SUBRULE(generatePattern, pattern, void 0);
12279
+ F3.printFilter(ast, () => {
12280
+ PRINT_WORD(ast.aggregation, "(");
12281
+ if (ast.distinct) {
12282
+ PRINT_WORD("DISTINCT");
12283
+ }
12284
+ });
12285
+ const arg = ast.expression[0];
12286
+ if (F3.isWildcard(arg)) {
12287
+ F3.printFilter(ast, () => PRINT_WORD("*"));
12288
+ } else {
12289
+ SUBRULE(expression, arg);
12466
12290
  }
12467
- F3.printFilter(ast, () => PRINT_WORD("}"));
12291
+ if (F3.isExpressionAggregateSeparator(ast)) {
12292
+ F3.printFilter(ast, () => PRINT_WORD(";", "SEPARATOR", "=", stringEscapedLexical(ast.separator)));
12293
+ }
12294
+ F3.printFilter(ast, () => PRINT_WORD(")"));
12468
12295
  }
12469
12296
  };
12470
- var generatePattern = {
12471
- name: "generatePattern",
12297
+
12298
+ // ../../packages/rules-sparql-1-1/lib/grammar/general.ts
12299
+ var prologue = {
12300
+ name: "prologue",
12301
+ impl: ({ SUBRULE, MANY, OR }) => () => {
12302
+ const result = [];
12303
+ MANY(() => OR([
12304
+ { ALT: () => result.push(SUBRULE(baseDecl2)) },
12305
+ // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
12306
+ // We might need to check this.
12307
+ { ALT: () => result.push(SUBRULE(prefixDecl2)) }
12308
+ ]));
12309
+ return result;
12310
+ },
12472
12311
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12473
- if (ast.type === "query") {
12474
- SUBRULE(query, F3.querySelect({
12475
- context: [],
12476
- datasets: F3.datasetClauses([], F3.sourceLocation()),
12477
- where: ast.where,
12478
- variables: ast.variables,
12479
- solutionModifiers: ast.solutionModifiers,
12480
- values: ast.values,
12481
- distinct: ast.distinct,
12482
- reduced: ast.reduced
12483
- }, ast.loc), void 0);
12484
- } else if (ast.subType === "group") {
12485
- SUBRULE(groupGraphPattern, ast, void 0);
12486
- } else if (ast.subType === "bgp") {
12487
- SUBRULE(triplesBlock, ast, void 0);
12488
- } else {
12489
- SUBRULE(graphPatternNotTriples, ast, void 0);
12312
+ for (const context of ast) {
12313
+ if (F3.isContextDefinitionBase(context)) {
12314
+ SUBRULE(baseDecl2, context);
12315
+ } else if (F3.isContextDefinitionPrefix(context)) {
12316
+ SUBRULE(prefixDecl2, context);
12317
+ }
12490
12318
  }
12491
12319
  }
12492
12320
  };
12493
- var groupGraphPatternSub = {
12494
- name: "groupGraphPatternSub",
12495
- impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
12496
- const patterns = [];
12497
- const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock, void 0));
12498
- if (bgpPattern) {
12499
- patterns.push(bgpPattern);
12500
- }
12501
- MANY(() => {
12502
- const notTriples = SUBRULE(graphPatternNotTriples, void 0);
12503
- patterns.push(notTriples);
12504
- OPTION2(() => CONSUME(symbols_exports.dot));
12505
- const moreTriples = OPTION3(() => SUBRULE2(triplesBlock, void 0));
12506
- if (moreTriples) {
12507
- patterns.push(moreTriples);
12508
- }
12321
+ var baseDecl2 = {
12322
+ name: "baseDecl",
12323
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12324
+ const base = CONSUME(baseDecl);
12325
+ const val = SUBRULE(iriFull);
12326
+ return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
12327
+ },
12328
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12329
+ F3.printFilter(ast, () => PRINT_WORD("BASE"));
12330
+ SUBRULE(iri2, ast.value);
12331
+ }
12332
+ };
12333
+ var prefixDecl2 = {
12334
+ name: "prefixDecl",
12335
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12336
+ const prefix = CONSUME(prefixDecl);
12337
+ const name = CONSUME(terminals_exports.pNameNs).image.slice(0, -1);
12338
+ const value = SUBRULE(iriFull);
12339
+ return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
12340
+ },
12341
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F3 }) => {
12342
+ F3.printFilter(ast, () => {
12343
+ PRINT_WORDS("PREFIX", `${ast.key}:`);
12509
12344
  });
12510
- ACTION(() => checkNote13(patterns));
12511
- return patterns;
12345
+ SUBRULE(iri2, ast.value);
12512
12346
  }
12513
12347
  };
12514
- var graphPatternNotTriples = {
12515
- name: "graphPatternNotTriples",
12348
+ var verb = {
12349
+ name: "verb",
12516
12350
  impl: ({ SUBRULE, OR }) => () => OR([
12517
- { ALT: () => SUBRULE(groupOrUnionGraphPattern, void 0) },
12518
- { ALT: () => SUBRULE(optionalGraphPattern, void 0) },
12519
- { ALT: () => SUBRULE(minusGraphPattern, void 0) },
12520
- { ALT: () => SUBRULE(graphGraphPattern, void 0) },
12521
- { ALT: () => SUBRULE(serviceGraphPattern, void 0) },
12522
- { ALT: () => SUBRULE(filter3, void 0) },
12523
- { ALT: () => SUBRULE(bind2, void 0) },
12524
- { ALT: () => SUBRULE(inlineData, void 0) }
12351
+ { ALT: () => SUBRULE(varOrIri) },
12352
+ { ALT: () => SUBRULE(verbA) }
12353
+ ])
12354
+ };
12355
+ var varOrTerm = {
12356
+ name: "varOrTerm",
12357
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12358
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
12359
+ { ALT: () => SUBRULE(graphTerm) }
12525
12360
  ]),
12526
- gImpl: ({ SUBRULE }) => (ast) => {
12527
- switch (ast.subType) {
12528
- case "group":
12529
- case "union":
12530
- SUBRULE(groupOrUnionGraphPattern, ast, void 0);
12531
- break;
12532
- case "optional":
12533
- SUBRULE(optionalGraphPattern, ast, void 0);
12534
- break;
12535
- case "minus":
12536
- SUBRULE(minusGraphPattern, ast, void 0);
12537
- break;
12538
- case "graph":
12539
- SUBRULE(graphGraphPattern, ast, void 0);
12540
- break;
12541
- case "service":
12542
- SUBRULE(serviceGraphPattern, ast, void 0);
12543
- break;
12544
- case "filter":
12545
- SUBRULE(filter3, ast, void 0);
12546
- break;
12547
- case "bind":
12548
- SUBRULE(bind2, ast, void 0);
12549
- break;
12550
- case "values":
12551
- SUBRULE(inlineData, ast, void 0);
12552
- break;
12361
+ gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12362
+ if (F3.isTermVariable(ast)) {
12363
+ return SUBRULE(var_, ast);
12553
12364
  }
12365
+ return SUBRULE(graphTerm, ast);
12554
12366
  }
12555
12367
  };
12556
- var optionalGraphPattern = {
12557
- name: "optionalGraphPattern",
12558
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12559
- const optional2 = CONSUME(optional);
12560
- const group = SUBRULE(groupGraphPattern, void 0);
12561
- return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12562
- },
12563
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12564
- F3.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12565
- SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc), void 0);
12566
- }
12368
+ var varOrIri = {
12369
+ name: "varOrIri",
12370
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12371
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
12372
+ { ALT: () => SUBRULE(iri2) }
12373
+ ])
12567
12374
  };
12568
- var graphGraphPattern = {
12569
- name: "graphGraphPattern",
12570
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12571
- const graph2 = CONSUME(graph_exports.graph);
12572
- const name = SUBRULE(varOrIri, void 0);
12573
- const group = SUBRULE(groupGraphPattern, void 0);
12574
- return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12375
+ var var_ = {
12376
+ name: "var",
12377
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
12378
+ const varToken = OR([
12379
+ { ALT: () => CONSUME(terminals_exports.var1) },
12380
+ { ALT: () => CONSUME(terminals_exports.var2) }
12381
+ ]);
12382
+ return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
12575
12383
  },
12576
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12577
- F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
12578
- SUBRULE(varOrTerm, ast.name, void 0);
12579
- SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc), void 0);
12384
+ gImpl: ({ PRINT_WORD }) => (ast, { factory: F3 }) => {
12385
+ F3.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
12580
12386
  }
12581
12387
  };
12582
- var serviceGraphPattern = {
12583
- name: "serviceGraphPattern",
12584
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
12585
- const service2 = CONSUME(service);
12586
- const silent2 = OPTION(() => {
12587
- CONSUME(silent);
12588
- return true;
12589
- }) ?? false;
12590
- const name = SUBRULE1(varOrIri, void 0);
12591
- const group = SUBRULE1(groupGraphPattern, void 0);
12592
- return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
12593
- },
12594
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12595
- F3.printFilter(ast, () => {
12596
- PRINT_WORD("SERVICE");
12597
- if (ast.silent) {
12598
- PRINT_WORD("SILENT");
12599
- }
12600
- });
12601
- SUBRULE(varOrTerm, ast.name, void 0);
12602
- SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc), void 0);
12388
+ var graphTerm = {
12389
+ name: "graphTerm",
12390
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
12391
+ { ALT: () => SUBRULE(iri2) },
12392
+ { ALT: () => SUBRULE(rdfLiteral) },
12393
+ { ALT: () => SUBRULE(numericLiteral) },
12394
+ { ALT: () => SUBRULE(booleanLiteral) },
12395
+ { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(blankNode) },
12396
+ { ALT: () => {
12397
+ const tokenNil = CONSUME(terminals_exports.nil);
12398
+ return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
12399
+ } }
12400
+ ]),
12401
+ gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12402
+ if (F3.isTermNamed(ast)) {
12403
+ SUBRULE(iri2, ast);
12404
+ } else if (F3.isTermLiteral(ast)) {
12405
+ SUBRULE(rdfLiteral, ast);
12406
+ } else if (F3.isTermBlank(ast)) {
12407
+ SUBRULE(blankNode, ast);
12408
+ }
12603
12409
  }
12604
12410
  };
12605
- var bind2 = {
12606
- name: "bind",
12607
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12608
- const bind3 = CONSUME(bind);
12609
- CONSUME(symbols_exports.LParen);
12610
- const expressionVal = SUBRULE(expression, void 0);
12611
- CONSUME(as);
12612
- const variable = SUBRULE(var_, void 0);
12613
- const close = CONSUME(symbols_exports.RParen);
12614
- return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
12615
- },
12616
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12617
- F3.printFilter(ast, () => PRINT_WORD("BIND", "("));
12618
- SUBRULE(expression, ast.expression, void 0);
12619
- F3.printFilter(ast, () => PRINT_WORD("AS"));
12620
- SUBRULE(var_, ast.variable, void 0);
12621
- F3.printFilter(ast, () => PRINT_WORD(")"));
12622
- }
12411
+
12412
+ // ../../packages/rules-sparql-1-1/lib/grammar/propertyPaths.ts
12413
+ var path = {
12414
+ name: "path",
12415
+ impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative)
12623
12416
  };
12624
- var inlineData = {
12625
- name: "inlineData",
12626
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12627
- const values3 = CONSUME(values2);
12628
- const datablock = SUBRULE(dataBlock, void 0);
12629
- return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
12630
- },
12631
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12632
- const variables = Object.keys(ast.values[0]);
12633
- F3.printFilter(ast, () => {
12634
- PRINT_WORD("VALUES", "(");
12635
- for (const variable of variables) {
12636
- PRINT_WORD(`?${variable}`);
12637
- }
12638
- PRINT_WORD(")", "{");
12639
- });
12640
- for (const mapping of ast.values) {
12641
- F3.printFilter(ast, () => PRINT_WORD("("));
12642
- for (const variable of variables) {
12643
- if (mapping[variable] === void 0) {
12644
- F3.printFilter(ast, () => PRINT_WORD("UNDEF"));
12645
- } else {
12646
- SUBRULE(graphNodePath, mapping[variable], void 0);
12417
+ var pathGenerator = {
12418
+ name: "path",
12419
+ gImpl: ({ PRINT, SUBRULE }) => (ast, { factory: F3 }, braces = true) => {
12420
+ if (F3.isTerm(ast) && F3.isTermNamed(ast)) {
12421
+ SUBRULE(iri2, ast);
12422
+ } else {
12423
+ F3.printFilter(ast, () => braces && PRINT("("));
12424
+ switch (ast.subType) {
12425
+ case "|":
12426
+ case "/": {
12427
+ const [head2, ...tail] = ast.items;
12428
+ SUBRULE(pathGenerator, head2, braces);
12429
+ for (const val of tail) {
12430
+ F3.printFilter(ast, () => PRINT(ast.subType));
12431
+ SUBRULE(pathGenerator, val, braces);
12432
+ }
12433
+ break;
12647
12434
  }
12435
+ case "^":
12436
+ F3.printFilter(ast, () => PRINT("^"));
12437
+ SUBRULE(pathGenerator, ast.items[0], braces);
12438
+ break;
12439
+ case "?":
12440
+ case "*":
12441
+ case "+":
12442
+ SUBRULE(pathGenerator, ast.items[0], braces);
12443
+ F3.printFilter(ast, () => PRINT(ast.subType));
12444
+ break;
12445
+ case "!":
12446
+ F3.printFilter(ast, () => PRINT("!"));
12447
+ F3.printFilter(ast, () => PRINT("("));
12448
+ SUBRULE(pathGenerator, ast.items[0], false);
12449
+ F3.printFilter(ast, () => PRINT(")"));
12450
+ break;
12648
12451
  }
12649
- F3.printFilter(ast, () => PRINT_WORD(")"));
12452
+ F3.printFilter(ast, () => braces && PRINT(")"));
12650
12453
  }
12651
- F3.printFilter(ast, () => PRINT_WORD("}"));
12652
12454
  }
12653
12455
  };
12654
- var dataBlock = {
12655
- name: "dataBlock",
12656
- impl: ({ SUBRULE, OR }) => () => OR([
12657
- { ALT: () => SUBRULE(inlineDataOneVar, void 0) },
12658
- { ALT: () => SUBRULE(inlineDataFull, void 0) }
12456
+ function pathChainHelper(name, SEP, subType, subRule) {
12457
+ return {
12458
+ name,
12459
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, MANY }) => (C) => {
12460
+ const head2 = SUBRULE1(subRule);
12461
+ let tailEnd = head2;
12462
+ const tail = [];
12463
+ MANY(() => {
12464
+ CONSUME(SEP);
12465
+ tailEnd = SUBRULE2(subRule);
12466
+ tail.push(tailEnd);
12467
+ });
12468
+ return ACTION(() => tail.length === 0 ? head2 : C.factory.path(subType, [head2, ...tail], C.factory.sourceLocation(head2, tailEnd)));
12469
+ }
12470
+ };
12471
+ }
12472
+ var pathEltOrInverse = {
12473
+ name: "pathEltOrInverse",
12474
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR }) => (C) => OR([
12475
+ { ALT: () => SUBRULE1(pathElt) },
12476
+ { ALT: () => {
12477
+ const hat2 = CONSUME(symbols_exports.hat);
12478
+ const item = SUBRULE2(pathElt);
12479
+ return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12480
+ } }
12659
12481
  ])
12660
12482
  };
12661
- var inlineDataOneVar = {
12662
- name: "inlineDataOneVar",
12663
- impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
12664
- const res = [];
12665
- const varVal = SUBRULE(var_, void 0);
12666
- CONSUME(symbols_exports.LCurly);
12667
- MANY(() => {
12668
- const value = SUBRULE(dataBlockValue, void 0);
12669
- ACTION(() => {
12670
- res.push({ [varVal.value]: value });
12671
- });
12672
- });
12673
- const close = CONSUME(symbols_exports.RCurly);
12674
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
12483
+ var pathSequence = pathChainHelper("pathSequence", symbols_exports.slash, "/", pathEltOrInverse);
12484
+ var pathAlternative = pathChainHelper("pathAlternative", symbols_exports.pipe, "|", pathSequence);
12485
+ var pathElt = {
12486
+ name: "pathElt",
12487
+ impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
12488
+ const item = SUBRULE(pathPrimary);
12489
+ const modification = OPTION(() => SUBRULE(pathMod));
12490
+ return ACTION(() => modification === void 0 ? item : C.factory.path(modification.image, [item], C.factory.sourceLocation(item, modification)));
12675
12491
  }
12676
12492
  };
12677
- var inlineDataFull = {
12678
- name: "inlineDataFull",
12679
- impl: ({
12680
- ACTION,
12681
- OR,
12682
- MANY1,
12683
- MANY2,
12684
- MANY3,
12685
- MANY4,
12686
- SUBRULE,
12687
- CONSUME1,
12688
- CONSUME2
12689
- }) => (C) => {
12690
- const res = [];
12691
- const vars = [];
12493
+ var pathMod = {
12494
+ name: "pathMod",
12495
+ impl: ({ CONSUME, OR }) => () => OR([
12496
+ { ALT: () => CONSUME(symbols_exports.question) },
12497
+ { ALT: () => CONSUME(symbols_exports.star) },
12498
+ { ALT: () => CONSUME(symbols_exports.opPlus) }
12499
+ ])
12500
+ };
12501
+ var pathPrimary = {
12502
+ name: "pathPrimary",
12503
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12504
+ { ALT: () => SUBRULE(iri2) },
12505
+ { ALT: () => SUBRULE(verbA) },
12506
+ { ALT: () => SUBRULE(pathNegatedPropertySet) },
12507
+ { ALT: () => {
12508
+ CONSUME(symbols_exports.LParen);
12509
+ const resRecursive = SUBRULE(path);
12510
+ CONSUME(symbols_exports.RParen);
12511
+ return resRecursive;
12512
+ } }
12513
+ ])
12514
+ };
12515
+ var pathNegatedPropertySet = {
12516
+ name: "pathNegatedPropertySet",
12517
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, OR, MANY }) => (C) => {
12518
+ const exclamation2 = CONSUME(symbols_exports.exclamation);
12692
12519
  return OR([
12693
12520
  { ALT: () => {
12694
- const nil2 = CONSUME1(terminals_exports.nil);
12695
- CONSUME1(symbols_exports.LCurly);
12696
- MANY1(() => {
12697
- CONSUME2(terminals_exports.nil);
12698
- res.push({});
12699
- });
12700
- const close = CONSUME1(symbols_exports.RCurly);
12701
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
12521
+ const noAlternative = SUBRULE1(pathOneInPropertySet);
12522
+ return ACTION(() => C.factory.path("!", [noAlternative], C.factory.sourceLocation(exclamation2, noAlternative)));
12702
12523
  } },
12703
12524
  { ALT: () => {
12704
- const open = CONSUME1(symbols_exports.LParen);
12705
- MANY2(() => {
12706
- vars.push(SUBRULE(var_, void 0));
12525
+ const open = CONSUME(symbols_exports.LParen);
12526
+ const head2 = SUBRULE2(pathOneInPropertySet);
12527
+ const tail = [];
12528
+ MANY(() => {
12529
+ CONSUME(symbols_exports.pipe);
12530
+ const item = SUBRULE3(pathOneInPropertySet);
12531
+ tail.push(item);
12707
12532
  });
12708
- CONSUME1(symbols_exports.RParen);
12709
- CONSUME2(symbols_exports.LCurly);
12710
- MANY3(() => {
12711
- let parsedValues = 0;
12712
- const currentRow = {};
12713
- CONSUME2(symbols_exports.LParen);
12714
- MANY4(() => {
12715
- if (parsedValues >= vars.length) {
12716
- throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
12717
- }
12718
- const value = SUBRULE(dataBlockValue, void 0);
12719
- ACTION(() => {
12720
- currentRow[vars[parsedValues].value] = value;
12721
- parsedValues++;
12722
- });
12723
- });
12724
- CONSUME2(symbols_exports.RParen);
12725
- ACTION(() => {
12726
- res.push(currentRow);
12727
- if (vars.length !== parsedValues) {
12728
- throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
12729
- }
12730
- });
12533
+ const close = CONSUME(symbols_exports.RParen);
12534
+ return ACTION(() => {
12535
+ const F3 = C.factory;
12536
+ if (tail.length === 0) {
12537
+ return F3.path("!", [head2], F3.sourceLocation(exclamation2, close));
12538
+ }
12539
+ return F3.path(
12540
+ "!",
12541
+ [F3.path("|", [head2, ...tail], F3.sourceLocation(open, close))],
12542
+ F3.sourceLocation(exclamation2, close)
12543
+ );
12731
12544
  });
12732
- const close = CONSUME2(symbols_exports.RCurly);
12733
- return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
12734
12545
  } }
12735
12546
  ]);
12736
12547
  }
12737
12548
  };
12738
- var dataBlockValue = {
12739
- name: "dataBlockValue",
12740
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
12741
- { ALT: () => SUBRULE(iri2, void 0) },
12742
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
12743
- { ALT: () => SUBRULE(numericLiteral, void 0) },
12744
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
12549
+ var pathOneInPropertySet = {
12550
+ name: "pathOneInPropertySet",
12551
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
12552
+ { ALT: () => SUBRULE1(iri2) },
12553
+ { ALT: () => SUBRULE1(verbA) },
12745
12554
  { ALT: () => {
12746
- CONSUME(undef);
12747
- return void 0;
12555
+ const hat2 = CONSUME(symbols_exports.hat);
12556
+ const item = OR2([
12557
+ { ALT: () => SUBRULE2(iri2) },
12558
+ { ALT: () => SUBRULE2(verbA) }
12559
+ ]);
12560
+ return ACTION(() => C.factory.path("^", [item], C.factory.sourceLocation(hat2, item)));
12748
12561
  } }
12749
12562
  ])
12750
12563
  };
12751
- var minusGraphPattern = {
12752
- name: "minusGraphPattern",
12753
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12754
- const minus2 = CONSUME(minus);
12755
- const group = SUBRULE(groupGraphPattern, void 0);
12756
- return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
12757
- },
12758
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12759
- F3.printFilter(ast, () => PRINT_WORD("MINUS"));
12760
- SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc), void 0);
12761
- }
12762
- };
12763
- var groupOrUnionGraphPattern = {
12764
- name: "groupOrUnionGraphPattern",
12765
- impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
12766
- const groups = [];
12767
- const group = SUBRULE1(groupGraphPattern, void 0);
12768
- groups.push(group);
12769
- MANY(() => {
12770
- CONSUME(union);
12771
- const group2 = SUBRULE2(groupGraphPattern, void 0);
12772
- groups.push(group2);
12773
- });
12774
- return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(
12775
- groups,
12776
- C.factory.sourceLocation(group, groups.at(-1))
12777
- ));
12778
- },
12779
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12780
- if (F3.isPatternUnion(ast)) {
12781
- const [head2, ...tail] = ast.patterns;
12782
- SUBRULE(groupGraphPattern, head2, void 0);
12783
- for (const pattern of tail) {
12784
- F3.printFilter(ast, () => PRINT_WORD("UNION"));
12785
- SUBRULE(groupGraphPattern, pattern, void 0);
12786
- }
12787
- } else {
12788
- SUBRULE(groupGraphPattern, ast, void 0);
12789
- }
12790
- }
12791
- };
12792
- var filter3 = {
12793
- name: "filter",
12794
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12795
- const filterToken = CONSUME(filter2);
12796
- const expression2 = SUBRULE(constraint, void 0);
12797
- return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
12798
- },
12799
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12800
- F3.printFilter(ast, () => PRINT_WORD("FILTER ("));
12801
- SUBRULE(expression, ast.expression, void 0);
12802
- F3.printFilter(ast, () => PRINT_WORD(")"));
12803
- }
12804
- };
12805
- var constraint = {
12806
- name: "constraint",
12807
- impl: ({ SUBRULE, OR }) => () => OR([
12808
- { ALT: () => SUBRULE(brackettedExpression, void 0) },
12809
- { ALT: () => SUBRULE(builtInCall, void 0) },
12810
- { ALT: () => SUBRULE(functionCall, void 0) }
12811
- ])
12812
- };
12813
- var functionCall = {
12814
- name: "functionCall",
12815
- impl: ({ ACTION, SUBRULE }) => (C) => {
12816
- const func = SUBRULE(iri2, void 0);
12817
- const args = SUBRULE(argList, void 0);
12818
- return ACTION(() => C.factory.expressionFunctionCall(
12819
- func,
12820
- args.val.args,
12821
- args.val.distinct,
12822
- C.factory.sourceLocation(func, args)
12823
- ));
12824
- }
12825
- };
12826
12564
 
12827
- // ../../packages/rules-sparql-1-1/lib/expressionHelpers.ts
12828
- function funcExpr1(func) {
12829
- return {
12830
- name: unCapitalize(func.name),
12831
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12832
- const operator = CONSUME(func);
12833
- CONSUME(symbols_exports.LParen);
12834
- const arg = SUBRULE(expression, void 0);
12835
- const close = CONSUME(symbols_exports.RParen);
12836
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12837
- }
12838
- };
12839
- }
12840
- function funcExpr2(func) {
12841
- return {
12842
- name: unCapitalize(func.name),
12843
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {
12844
- const operator = CONSUME(func);
12845
- CONSUME(symbols_exports.LParen);
12846
- const arg1 = SUBRULE1(expression, void 0);
12847
- CONSUME(symbols_exports.comma);
12848
- const arg2 = SUBRULE2(expression, void 0);
12849
- const close = CONSUME(symbols_exports.RParen);
12850
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2], C.factory.sourceLocation(operator, close)));
12851
- }
12565
+ // ../../packages/rules-sparql-1-1/lib/grammar/tripleBlock.ts
12566
+ function triplesDotSeperated(triplesSameSubjectSubrule) {
12567
+ return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {
12568
+ const triples = [];
12569
+ let parsedDot = true;
12570
+ let dotToken;
12571
+ AT_LEAST_ONE({
12572
+ GATE: () => parsedDot,
12573
+ DEF: () => {
12574
+ parsedDot = false;
12575
+ const template = SUBRULE(triplesSameSubjectSubrule);
12576
+ ACTION(() => {
12577
+ triples.push(...template);
12578
+ });
12579
+ OPTION(() => {
12580
+ dotToken = CONSUME(symbols_exports.dot);
12581
+ parsedDot = true;
12582
+ });
12583
+ }
12584
+ });
12585
+ return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));
12852
12586
  };
12853
12587
  }
12854
- function funcExpr3(func) {
12855
- return {
12856
- name: unCapitalize(func.name),
12857
- impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {
12858
- const operator = CONSUME(func);
12859
- CONSUME(symbols_exports.LParen);
12860
- const arg1 = SUBRULE1(expression, void 0);
12861
- CONSUME1(symbols_exports.comma);
12862
- const arg2 = SUBRULE2(expression, void 0);
12863
- CONSUME2(symbols_exports.comma);
12864
- const arg3 = SUBRULE3(expression, void 0);
12865
- const close = CONSUME(symbols_exports.RParen);
12866
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg1, arg2, arg3], C.factory.sourceLocation(operator, close)));
12588
+ var triplesBlock = {
12589
+ name: "triplesBlock",
12590
+ impl: (implArgs) => (C) => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),
12591
+ gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12592
+ for (const [index, triple] of ast.triples.entries()) {
12593
+ HANDLE_LOC(triple, () => {
12594
+ const nextTriple = ast.triples.at(index);
12595
+ if (F3.isTripleCollection(triple)) {
12596
+ SUBRULE(graphNodePath, triple);
12597
+ F3.printFilter(triple, () => PRINT_WORD("."));
12598
+ } else {
12599
+ SUBRULE(graphNodePath, triple.subject);
12600
+ if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
12601
+ SUBRULE(varOrTerm, triple.predicate);
12602
+ } else {
12603
+ SUBRULE(pathGenerator, triple.predicate, void 0);
12604
+ }
12605
+ SUBRULE(graphNodePath, triple.object);
12606
+ if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
12607
+ F3.printFilter(ast, () => PRINT_WORD("."));
12608
+ } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
12609
+ F3.printFilter(ast, () => PRINT_WORD(","));
12610
+ } else {
12611
+ F3.printFilter(ast, () => PRINT_WORD(";"));
12612
+ }
12613
+ }
12614
+ });
12867
12615
  }
12616
+ }
12617
+ };
12618
+ function triplesSameSubjectImpl(name, allowPaths) {
12619
+ return {
12620
+ name,
12621
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => OR([
12622
+ { ALT: () => {
12623
+ const subject = SUBRULE(varOrTerm);
12624
+ const res = SUBRULE(
12625
+ allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
12626
+ ACTION(() => C.factory.dematerialized(subject))
12627
+ );
12628
+ return ACTION(() => {
12629
+ if (res.length > 0) {
12630
+ res[0].subject = subject;
12631
+ res[0].loc = C.factory.sourceLocation(subject, res[0]);
12632
+ }
12633
+ return res;
12634
+ });
12635
+ } },
12636
+ { ALT: () => {
12637
+ const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
12638
+ const restNode = SUBRULE(
12639
+ allowPaths ? propertyListPath : propertyList,
12640
+ ACTION(() => C.factory.graphNodeIdentifier(subjectNode))
12641
+ );
12642
+ return ACTION(() => {
12643
+ if (restNode.length === 0) {
12644
+ return [subjectNode];
12645
+ }
12646
+ restNode[0].subject = subjectNode;
12647
+ restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);
12648
+ return restNode;
12649
+ });
12650
+ } }
12651
+ ])
12868
12652
  };
12869
12653
  }
12870
- function funcVar1(func) {
12654
+ var triplesSameSubject = triplesSameSubjectImpl("triplesSameSubject", false);
12655
+ var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", true);
12656
+ var triplesTemplate = {
12657
+ name: "triplesTemplate",
12658
+ impl: triplesDotSeperated(triplesSameSubject)
12659
+ };
12660
+ function propertyListImpl(name, allowPaths) {
12871
12661
  return {
12872
- name: unCapitalize(func.name),
12873
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12874
- const operator = CONSUME(func);
12875
- CONSUME(symbols_exports.LParen);
12876
- const arg = SUBRULE(var_, void 0);
12877
- const close = CONSUME(symbols_exports.RParen);
12878
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12879
- }
12662
+ name,
12663
+ impl: ({ SUBRULE, OPTION }) => (_, subject) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? []
12880
12664
  };
12881
12665
  }
12882
- function funcExprOrNil1(func) {
12666
+ var propertyList = propertyListImpl("propertyList", false);
12667
+ var propertyListPath = propertyListImpl("propertyListPath", true);
12668
+ function propertyListNotEmptyImplementation(name, allowPaths) {
12883
12669
  return {
12884
- name: unCapitalize(func.name),
12885
- impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
12886
- const operator = CONSUME(func);
12887
- return OR([
12888
- { ALT: () => {
12889
- CONSUME(symbols_exports.LParen);
12890
- const arg = SUBRULE(expression, void 0);
12891
- const close = CONSUME(symbols_exports.RParen);
12892
- return ACTION(() => C.factory.expressionOperation(operator.image, [arg], C.factory.sourceLocation(operator, close)));
12893
- } },
12894
- { ALT: () => {
12895
- const nil2 = CONSUME(terminals_exports.nil);
12896
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12897
- } }
12898
- ]);
12670
+ name,
12671
+ impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, subject) => {
12672
+ const result = [];
12673
+ let parsedSemi = true;
12674
+ AT_LEAST_ONE({
12675
+ GATE: () => parsedSemi,
12676
+ DEF: () => {
12677
+ parsedSemi = false;
12678
+ const predicate = allowPaths ? OR1([
12679
+ { ALT: () => SUBRULE1(verbPath) },
12680
+ { ALT: () => SUBRULE1(verbSimple) }
12681
+ ]) : SUBRULE1(verb);
12682
+ const triples = SUBRULE1(
12683
+ allowPaths ? objectListPath : objectList,
12684
+ subject,
12685
+ predicate
12686
+ );
12687
+ MANY2(() => {
12688
+ CONSUME(symbols_exports.semi);
12689
+ parsedSemi = true;
12690
+ });
12691
+ ACTION(() => {
12692
+ result.push(...triples);
12693
+ });
12694
+ }
12695
+ });
12696
+ return result;
12899
12697
  }
12900
12698
  };
12901
12699
  }
12902
- function funcNil1(func) {
12700
+ var propertyListNotEmpty = propertyListNotEmptyImplementation("propertyListNotEmpty", false);
12701
+ var propertyListPathNotEmpty = propertyListNotEmptyImplementation("propertyListPathNotEmpty", true);
12702
+ var verbPath = {
12703
+ name: "verbPath",
12704
+ impl: ({ SUBRULE }) => () => SUBRULE(path)
12705
+ };
12706
+ var verbSimple = {
12707
+ name: "verbSimple",
12708
+ impl: ({ SUBRULE }) => () => SUBRULE(var_)
12709
+ };
12710
+ function objectListImpl(name, allowPaths) {
12903
12711
  return {
12904
- name: unCapitalize(func.name),
12905
- impl: ({ ACTION, CONSUME }) => (C) => {
12906
- const operator = CONSUME(func);
12907
- const nil2 = CONSUME(terminals_exports.nil);
12908
- return ACTION(() => C.factory.expressionOperation(operator.image, [], C.factory.sourceLocation(operator, nil2)));
12712
+ name,
12713
+ impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, subj, pred) => {
12714
+ const objects = [];
12715
+ AT_LEAST_ONE_SEP({
12716
+ SEP: symbols_exports.comma,
12717
+ DEF: () => {
12718
+ const objectTriple = SUBRULE(allowPaths ? objectPath : object, subj, pred);
12719
+ ACTION(() => {
12720
+ objects.push(objectTriple);
12721
+ });
12722
+ }
12723
+ });
12724
+ return objects;
12909
12725
  }
12910
12726
  };
12911
12727
  }
12912
- function funcExprList1(func) {
12728
+ var objectList = objectListImpl("objectList", false);
12729
+ var objectListPath = objectListImpl("objectListPath", true);
12730
+ function objectImpl(name, allowPaths) {
12913
12731
  return {
12914
- name: unCapitalize(func.name),
12915
- impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
12916
- const operator = CONSUME(func);
12917
- const args = SUBRULE(expressionList, void 0);
12918
- return ACTION(() => C.factory.expressionOperation(operator.image, args.val, C.factory.sourceLocation(operator, args)));
12732
+ name,
12733
+ impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
12734
+ const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
12735
+ return ACTION(() => C.factory.triple(subject, predicate, node));
12919
12736
  }
12920
12737
  };
12921
12738
  }
12922
- function funcExpr2or3(func) {
12739
+ var object = objectImpl("object", false);
12740
+ var objectPath = objectImpl("objectPath", true);
12741
+ function collectionImpl(name, allowPaths) {
12923
12742
  return {
12924
- name: unCapitalize(func.name),
12925
- impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) => (C) => {
12926
- const operator = CONSUME(func);
12927
- CONSUME(symbols_exports.LParen);
12928
- const arg1 = SUBRULE1(expression, void 0);
12929
- CONSUME1(symbols_exports.comma);
12930
- const arg2 = SUBRULE2(expression, void 0);
12931
- const arg3 = OPTION(() => {
12932
- CONSUME2(symbols_exports.comma);
12933
- return SUBRULE3(expression, void 0);
12743
+ name,
12744
+ impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {
12745
+ const terms = [];
12746
+ const startToken = CONSUME(symbols_exports.LParen);
12747
+ AT_LEAST_ONE(() => {
12748
+ terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));
12934
12749
  });
12935
- const close = CONSUME(symbols_exports.RParen);
12936
- return ACTION(() => C.factory.expressionOperation(
12937
- operator.image,
12938
- arg3 ? [arg1, arg2, arg3] : [arg1, arg2],
12939
- C.factory.sourceLocation(operator, close)
12940
- ));
12750
+ const endToken = CONSUME(symbols_exports.RParen);
12751
+ return ACTION(() => {
12752
+ const F3 = C.factory;
12753
+ const triples = [];
12754
+ const predFirst = F3.namedNode(F3.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#first" /* FIRST */, void 0);
12755
+ const predRest = F3.namedNode(F3.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" /* REST */, void 0);
12756
+ const predNil = F3.namedNode(F3.sourceLocationNoMaterialize(), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */, void 0);
12757
+ const listHead = F3.blankNode(void 0, F3.sourceLocationNoMaterialize());
12758
+ let iterHead = listHead;
12759
+ for (const [index, term] of terms.entries()) {
12760
+ const lastInList = index === terms.length - 1;
12761
+ const headTriple = F3.triple(
12762
+ iterHead,
12763
+ predFirst,
12764
+ term
12765
+ );
12766
+ triples.push(headTriple);
12767
+ if (lastInList) {
12768
+ const nilTriple = F3.triple(iterHead, predRest, predNil);
12769
+ triples.push(nilTriple);
12770
+ } else {
12771
+ const tail = F3.blankNode(void 0, F3.sourceLocationNoMaterialize());
12772
+ const linkTriple = F3.triple(iterHead, predRest, tail);
12773
+ triples.push(linkTriple);
12774
+ iterHead = tail;
12775
+ }
12776
+ }
12777
+ return F3.tripleCollectionList(listHead, triples, F3.sourceLocation(startToken, endToken));
12778
+ });
12779
+ },
12780
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12781
+ F3.printFilter(ast, () => PRINT_WORD("("));
12782
+ for (const [idx, triple] of ast.triples.entries()) {
12783
+ if (idx % 2 === 0) {
12784
+ SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object);
12785
+ }
12786
+ }
12787
+ F3.printFilter(ast, () => PRINT_WORD(")"));
12941
12788
  }
12942
12789
  };
12943
12790
  }
12944
- function funcExpr3or4(func) {
12791
+ var collection = collectionImpl("collection", false);
12792
+ var collectionPath = collectionImpl("collectionPath", true);
12793
+ function triplesNodeImpl(name, allowPaths) {
12945
12794
  return {
12946
- name: unCapitalize(func.name),
12947
- impl: ({
12948
- ACTION,
12949
- CONSUME,
12950
- SUBRULE1,
12951
- SUBRULE2,
12952
- SUBRULE3,
12953
- SUBRULE4,
12954
- CONSUME1,
12955
- OPTION,
12956
- CONSUME2,
12957
- CONSUME3
12958
- }) => (C) => {
12959
- const operator = CONSUME(func);
12960
- CONSUME(symbols_exports.LParen);
12961
- const arg1 = SUBRULE1(expression, void 0);
12962
- CONSUME1(symbols_exports.comma);
12963
- const arg2 = SUBRULE2(expression, void 0);
12964
- CONSUME2(symbols_exports.comma);
12965
- const arg3 = SUBRULE3(expression, void 0);
12966
- const arg4 = OPTION(() => {
12967
- CONSUME3(symbols_exports.comma);
12968
- return SUBRULE4(expression, void 0);
12969
- });
12970
- const close = CONSUME(symbols_exports.RParen);
12971
- return ACTION(() => C.factory.expressionOperation(
12972
- operator.image,
12973
- arg4 ? [arg1, arg2, arg3, arg4] : [arg1, arg2, arg3],
12974
- C.factory.sourceLocation(operator, close)
12975
- ));
12976
- }
12795
+ name,
12796
+ impl: ({ SUBRULE, OR }) => () => OR([
12797
+ { ALT: () => SUBRULE(allowPaths ? collectionPath : collection) },
12798
+ { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList) }
12799
+ ]),
12800
+ gImpl: ({ SUBRULE }) => (ast) => ast.subType === "list" ? SUBRULE(allowPaths ? collectionPath : collection, ast) : SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast)
12977
12801
  };
12978
12802
  }
12979
- function funcGroupGraphPattern(func) {
12803
+ var triplesNode = triplesNodeImpl("triplesNode", false);
12804
+ var triplesNodePath = triplesNodeImpl("triplesNodePath", true);
12805
+ function blankNodePropertyListImpl(name, allowPaths) {
12806
+ const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;
12980
12807
  return {
12981
- name: unCapitalize(func.name),
12808
+ name,
12982
12809
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12983
- const operator = CONSUME(func);
12984
- const group = SUBRULE(groupGraphPattern, void 0);
12985
- return ACTION(() => C.factory.expressionPatternOperation(
12986
- operator.image,
12987
- group,
12988
- C.factory.sourceLocation(operator, group)
12810
+ const startToken = CONSUME(symbols_exports.LSquare);
12811
+ const blankNode2 = ACTION(() => C.factory.blankNode(void 0, C.factory.sourceLocationNoMaterialize()));
12812
+ const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode2);
12813
+ const endToken = CONSUME(symbols_exports.RSquare);
12814
+ return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
12815
+ blankNode2,
12816
+ propList,
12817
+ C.factory.sourceLocation(startToken, endToken)
12989
12818
  ));
12819
+ },
12820
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F3 }) => {
12821
+ F3.printFilter(ast, () => PRINT("["));
12822
+ for (const triple of ast.triples) {
12823
+ HANDLE_LOC(triple, () => {
12824
+ if (F3.isTerm(triple.predicate) && F3.isTermVariable(triple.predicate)) {
12825
+ SUBRULE(varOrTerm, triple.predicate);
12826
+ } else {
12827
+ SUBRULE(pathGenerator, triple.predicate, void 0);
12828
+ }
12829
+ SUBRULE(graphNodePath, triple.object);
12830
+ F3.printFilter(ast, () => PRINT_WORD(";"));
12831
+ });
12832
+ }
12833
+ F3.printFilter(ast, () => PRINT("]"));
12990
12834
  }
12991
12835
  };
12992
12836
  }
12993
- function baseAggregateFunc(func) {
12837
+ var blankNodePropertyList = blankNodePropertyListImpl("blankNodePropertyList", false);
12838
+ var blankNodePropertyListPath = blankNodePropertyListImpl("blankNodePropertyListPath", true);
12839
+ function graphNodeImpl(name, allowPaths) {
12840
+ const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;
12994
12841
  return {
12995
- name: unCapitalize(func.name),
12996
- impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
12997
- const operator = CONSUME(func);
12998
- CONSUME(symbols_exports.LParen);
12999
- const distinct2 = OPTION(() => CONSUME(distinct));
13000
- const expr1 = SUBRULE(expression, void 0);
13001
- const close = CONSUME(symbols_exports.RParen);
13002
- return ACTION(() => C.factory.aggregate(
13003
- operator.image,
13004
- distinct2 !== void 0,
13005
- expr1,
13006
- void 0,
13007
- C.factory.sourceLocation(operator, close)
13008
- ));
12842
+ name,
12843
+ impl: ({ SUBRULE, OR }) => (C) => OR([
12844
+ { ALT: () => SUBRULE(varOrTerm) },
12845
+ {
12846
+ GATE: () => C.parseMode.has("canCreateBlankNodes"),
12847
+ ALT: () => SUBRULE(triplesNodeRule)
12848
+ }
12849
+ ]),
12850
+ gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12851
+ if (F3.isTerm(ast)) {
12852
+ SUBRULE(varOrTerm, ast);
12853
+ } else {
12854
+ SUBRULE(triplesNodeRule, ast);
12855
+ }
13009
12856
  }
13010
12857
  };
13011
12858
  }
12859
+ var graphNode = graphNodeImpl("graphNode", false);
12860
+ var graphNodePath = graphNodeImpl("graphNodePath", true);
13012
12861
 
13013
- // ../../packages/rules-sparql-1-1/lib/grammar/builtIn.ts
13014
- var builtInStr = funcExpr1(BuildinCalls_exports.str);
13015
- var builtInLang = funcExpr1(BuildinCalls_exports.lang);
13016
- var builtInLangmatches = funcExpr2(BuildinCalls_exports.langmatches);
13017
- var builtInDatatype = funcExpr1(BuildinCalls_exports.datatype);
13018
- var builtInBound = funcVar1(BuildinCalls_exports.bound);
13019
- var builtInIri = funcExpr1(BuildinCalls_exports.iri);
13020
- var builtInUri = funcExpr1(BuildinCalls_exports.uri);
13021
- var builtInBnodeSparqlJs = funcExprOrNil1(BuildinCalls_exports.bnode);
13022
- var builtInRand = funcNil1(BuildinCalls_exports.rand);
13023
- var builtInAbs = funcExpr1(BuildinCalls_exports.abs);
13024
- var builtInCeil = funcExpr1(BuildinCalls_exports.ceil);
13025
- var builtInFloor = funcExpr1(BuildinCalls_exports.floor);
13026
- var builtInRound = funcExpr1(BuildinCalls_exports.round);
13027
- var builtInConcat = funcExprList1(BuildinCalls_exports.concat);
13028
- var builtInStrlen = funcExpr1(BuildinCalls_exports.strlen);
13029
- var builtInUcase = funcExpr1(BuildinCalls_exports.ucase);
13030
- var builtInLcase = funcExpr1(BuildinCalls_exports.lcase);
13031
- var builtInEncode_for_uri = funcExpr1(BuildinCalls_exports.encode_for_uri);
13032
- var builtInContains = funcExpr2(BuildinCalls_exports.contains);
13033
- var builtInStrstarts = funcExpr2(BuildinCalls_exports.strstarts);
13034
- var builtInStrends = funcExpr2(BuildinCalls_exports.strends);
13035
- var builtInStrbefore = funcExpr2(BuildinCalls_exports.strbefore);
13036
- var builtInStrafter = funcExpr2(BuildinCalls_exports.strafter);
13037
- var builtInYear = funcExpr1(BuildinCalls_exports.year);
13038
- var builtInMonth = funcExpr1(BuildinCalls_exports.month);
13039
- var builtInDay = funcExpr1(BuildinCalls_exports.day);
13040
- var builtInHours = funcExpr1(BuildinCalls_exports.hours);
13041
- var builtInMinutes = funcExpr1(BuildinCalls_exports.minutes);
13042
- var builtInSeconds = funcExpr1(BuildinCalls_exports.seconds);
13043
- var builtInTimezone = funcExpr1(BuildinCalls_exports.timezone);
13044
- var builtInTz = funcExpr1(BuildinCalls_exports.tz);
13045
- var builtInNow = funcNil1(BuildinCalls_exports.now);
13046
- var builtInUuid = funcNil1(BuildinCalls_exports.uuid);
13047
- var builtInStruuid = funcNil1(BuildinCalls_exports.struuid);
13048
- var builtInMd5 = funcExpr1(BuildinCalls_exports.md5);
13049
- var builtInSha1 = funcExpr1(BuildinCalls_exports.sha1);
13050
- var builtInSha256 = funcExpr1(BuildinCalls_exports.sha256);
13051
- var builtInSha384 = funcExpr1(BuildinCalls_exports.sha384);
13052
- var builtInSha512 = funcExpr1(BuildinCalls_exports.sha512);
13053
- var builtInCoalesce = funcExprList1(BuildinCalls_exports.coalesce);
13054
- var builtInIf = funcExpr3(BuildinCalls_exports.if_);
13055
- var builtInStrlang = funcExpr2(BuildinCalls_exports.strlang);
13056
- var builtInStrdt = funcExpr2(BuildinCalls_exports.strdt);
13057
- var builtInSameterm = funcExpr2(BuildinCalls_exports.sameterm);
13058
- var builtInIsiri = funcExpr1(BuildinCalls_exports.isiri);
13059
- var builtInIsuri = funcExpr1(BuildinCalls_exports.isuri);
13060
- var builtInIsblank = funcExpr1(BuildinCalls_exports.isblank);
13061
- var builtInIsliteral = funcExpr1(BuildinCalls_exports.isliteral);
13062
- var builtInIsnumeric = funcExpr1(BuildinCalls_exports.isnumeric);
13063
- function builtInCallList(SUBRULE) {
13064
- return [
13065
- { ALT: () => SUBRULE(aggregate, void 0) },
13066
- { ALT: () => SUBRULE(builtInStr, void 0) },
13067
- { ALT: () => SUBRULE(builtInLang, void 0) },
13068
- { ALT: () => SUBRULE(builtInLangmatches, void 0) },
13069
- { ALT: () => SUBRULE(builtInDatatype, void 0) },
13070
- { ALT: () => SUBRULE(builtInBound, void 0) },
13071
- { ALT: () => SUBRULE(builtInIri, void 0) },
13072
- { ALT: () => SUBRULE(builtInUri, void 0) },
13073
- { ALT: () => SUBRULE(builtInBnodeSparqlJs, void 0) },
13074
- { ALT: () => SUBRULE(builtInRand, void 0) },
13075
- { ALT: () => SUBRULE(builtInAbs, void 0) },
13076
- { ALT: () => SUBRULE(builtInCeil, void 0) },
13077
- { ALT: () => SUBRULE(builtInFloor, void 0) },
13078
- { ALT: () => SUBRULE(builtInRound, void 0) },
13079
- { ALT: () => SUBRULE(builtInConcat, void 0) },
13080
- { ALT: () => SUBRULE(substringExpression, void 0) },
13081
- { ALT: () => SUBRULE(builtInStrlen, void 0) },
13082
- { ALT: () => SUBRULE(strReplaceExpression, void 0) },
13083
- { ALT: () => SUBRULE(builtInUcase, void 0) },
13084
- { ALT: () => SUBRULE(builtInLcase, void 0) },
13085
- { ALT: () => SUBRULE(builtInEncode_for_uri, void 0) },
13086
- { ALT: () => SUBRULE(builtInContains, void 0) },
13087
- { ALT: () => SUBRULE(builtInStrstarts, void 0) },
13088
- { ALT: () => SUBRULE(builtInStrends, void 0) },
13089
- { ALT: () => SUBRULE(builtInStrbefore, void 0) },
13090
- { ALT: () => SUBRULE(builtInStrafter, void 0) },
13091
- { ALT: () => SUBRULE(builtInYear, void 0) },
13092
- { ALT: () => SUBRULE(builtInMonth, void 0) },
13093
- { ALT: () => SUBRULE(builtInDay, void 0) },
13094
- { ALT: () => SUBRULE(builtInHours, void 0) },
13095
- { ALT: () => SUBRULE(builtInMinutes, void 0) },
13096
- { ALT: () => SUBRULE(builtInSeconds, void 0) },
13097
- { ALT: () => SUBRULE(builtInTimezone, void 0) },
13098
- { ALT: () => SUBRULE(builtInTz, void 0) },
13099
- { ALT: () => SUBRULE(builtInNow, void 0) },
13100
- { ALT: () => SUBRULE(builtInUuid, void 0) },
13101
- { ALT: () => SUBRULE(builtInStruuid, void 0) },
13102
- { ALT: () => SUBRULE(builtInMd5, void 0) },
13103
- { ALT: () => SUBRULE(builtInSha1, void 0) },
13104
- { ALT: () => SUBRULE(builtInSha256, void 0) },
13105
- { ALT: () => SUBRULE(builtInSha384, void 0) },
13106
- { ALT: () => SUBRULE(builtInSha512, void 0) },
13107
- { ALT: () => SUBRULE(builtInCoalesce, void 0) },
13108
- { ALT: () => SUBRULE(builtInIf, void 0) },
13109
- { ALT: () => SUBRULE(builtInStrlang, void 0) },
13110
- { ALT: () => SUBRULE(builtInStrdt, void 0) },
13111
- { ALT: () => SUBRULE(builtInSameterm, void 0) },
13112
- { ALT: () => SUBRULE(builtInIsiri, void 0) },
13113
- { ALT: () => SUBRULE(builtInIsuri, void 0) },
13114
- { ALT: () => SUBRULE(builtInIsblank, void 0) },
13115
- { ALT: () => SUBRULE(builtInIsliteral, void 0) },
13116
- { ALT: () => SUBRULE(builtInIsnumeric, void 0) },
13117
- { ALT: () => SUBRULE(regexExpression, void 0) },
13118
- { ALT: () => SUBRULE(existsFunc, void 0) },
13119
- { ALT: () => SUBRULE(notExistsFunc, void 0) }
13120
- ];
13121
- }
13122
- var builtInCall = {
13123
- name: "builtInCall",
13124
- impl: ({ OR, SUBRULE, cache }) => () => {
13125
- const cached = cache.get(builtInCall);
13126
- if (cached) {
13127
- return OR(cached);
13128
- }
13129
- const builtIns = builtInCallList(SUBRULE);
13130
- cache.set(builtInCall, builtIns);
13131
- return OR(builtIns);
12862
+ // ../../packages/rules-sparql-1-1/lib/grammar/whereClause.ts
12863
+ var whereClause = {
12864
+ name: "whereClause",
12865
+ impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
12866
+ const where2 = OPTION(() => CONSUME(where));
12867
+ const group = SUBRULE(groupGraphPattern);
12868
+ return ACTION(() => C.factory.wrap(group, C.factory.sourceLocation(where2, group)));
12869
+ },
12870
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12871
+ F3.printFilter(ast, () => PRINT_WORD("WHERE"));
12872
+ SUBRULE(groupGraphPattern, ast.val);
13132
12873
  }
13133
12874
  };
13134
- var regexExpression = funcExpr2or3(BuildinCalls_exports.regex);
13135
- var substringExpression = funcExpr2or3(BuildinCalls_exports.substr);
13136
- var strReplaceExpression = funcExpr3or4(BuildinCalls_exports.replace);
13137
- var existsFunc = funcGroupGraphPattern(BuildinCalls_exports.exists);
13138
- var notExistsFunc = funcGroupGraphPattern(BuildinCalls_exports.notexists);
13139
- var aggregateCount = {
13140
- name: unCapitalize(BuildinCalls_exports.count.name),
13141
- impl: ({ ACTION, CONSUME, SUBRULE, OR, OPTION }) => (C) => {
13142
- const operatorToken = CONSUME(BuildinCalls_exports.count);
13143
- CONSUME(symbols_exports.LParen);
13144
- const distinctToken = OPTION(() => CONSUME(distinct));
13145
- const expressionVal = OR([
13146
- { ALT: () => {
13147
- const starToken = CONSUME(symbols_exports.star);
13148
- return ACTION(() => C.factory.wildcard(C.factory.sourceLocation(starToken)));
13149
- } },
13150
- { ALT: () => SUBRULE(expression, void 0) }
12875
+ var groupGraphPattern = {
12876
+ name: "groupGraphPattern",
12877
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
12878
+ const open = CONSUME(symbols_exports.LCurly);
12879
+ const patterns = OR([
12880
+ { ALT: () => [SUBRULE(subSelect)] },
12881
+ { ALT: () => SUBRULE(groupGraphPatternSub) }
13151
12882
  ]);
13152
- const closeToken = CONSUME(symbols_exports.RParen);
13153
- return ACTION(() => {
13154
- const F3 = C.factory;
13155
- if (C.factory.isWildcard(expressionVal)) {
13156
- return F3.aggregate(
13157
- operatorToken.image,
13158
- Boolean(distinctToken),
13159
- expressionVal,
13160
- void 0,
13161
- C.factory.sourceLocation(operatorToken, closeToken)
13162
- );
12883
+ const close = CONSUME(symbols_exports.RCurly);
12884
+ return ACTION(() => C.factory.patternGroup(patterns, C.factory.sourceLocation(open, close)));
12885
+ },
12886
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12887
+ F3.printFilter(ast, () => PRINT_WORD("{"));
12888
+ for (const pattern of ast.patterns) {
12889
+ SUBRULE(generatePattern, pattern);
12890
+ }
12891
+ F3.printFilter(ast, () => PRINT_WORD("}"));
12892
+ }
12893
+ };
12894
+ var generatePattern = {
12895
+ name: "generatePattern",
12896
+ gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
12897
+ if (ast.type === "query") {
12898
+ SUBRULE(query, F3.querySelect({
12899
+ context: [],
12900
+ datasets: F3.datasetClauses([], F3.sourceLocation()),
12901
+ where: ast.where,
12902
+ variables: ast.variables,
12903
+ solutionModifiers: ast.solutionModifiers,
12904
+ values: ast.values,
12905
+ distinct: ast.distinct,
12906
+ reduced: ast.reduced
12907
+ }, ast.loc));
12908
+ } else if (ast.subType === "group") {
12909
+ SUBRULE(groupGraphPattern, ast);
12910
+ } else if (ast.subType === "bgp") {
12911
+ SUBRULE(triplesBlock, ast);
12912
+ } else {
12913
+ SUBRULE(graphPatternNotTriples, ast);
12914
+ }
12915
+ }
12916
+ };
12917
+ var groupGraphPatternSub = {
12918
+ name: "groupGraphPatternSub",
12919
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
12920
+ const patterns = [];
12921
+ const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock));
12922
+ if (bgpPattern) {
12923
+ patterns.push(bgpPattern);
12924
+ }
12925
+ MANY(() => {
12926
+ const notTriples = SUBRULE(graphPatternNotTriples);
12927
+ patterns.push(notTriples);
12928
+ OPTION2(() => CONSUME(symbols_exports.dot));
12929
+ const moreTriples = OPTION3(() => SUBRULE2(triplesBlock));
12930
+ if (moreTriples) {
12931
+ patterns.push(moreTriples);
12932
+ }
12933
+ });
12934
+ ACTION(() => checkNote13(patterns));
12935
+ return patterns;
12936
+ }
12937
+ };
12938
+ var graphPatternNotTriples = {
12939
+ name: "graphPatternNotTriples",
12940
+ impl: ({ SUBRULE, OR }) => () => OR([
12941
+ { ALT: () => SUBRULE(groupOrUnionGraphPattern) },
12942
+ { ALT: () => SUBRULE(optionalGraphPattern) },
12943
+ { ALT: () => SUBRULE(minusGraphPattern) },
12944
+ { ALT: () => SUBRULE(graphGraphPattern) },
12945
+ { ALT: () => SUBRULE(serviceGraphPattern) },
12946
+ { ALT: () => SUBRULE(filter3) },
12947
+ { ALT: () => SUBRULE(bind2) },
12948
+ { ALT: () => SUBRULE(inlineData) }
12949
+ ]),
12950
+ gImpl: ({ SUBRULE }) => (ast) => {
12951
+ switch (ast.subType) {
12952
+ case "group":
12953
+ case "union":
12954
+ SUBRULE(groupOrUnionGraphPattern, ast);
12955
+ break;
12956
+ case "optional":
12957
+ SUBRULE(optionalGraphPattern, ast);
12958
+ break;
12959
+ case "minus":
12960
+ SUBRULE(minusGraphPattern, ast);
12961
+ break;
12962
+ case "graph":
12963
+ SUBRULE(graphGraphPattern, ast);
12964
+ break;
12965
+ case "service":
12966
+ SUBRULE(serviceGraphPattern, ast);
12967
+ break;
12968
+ case "filter":
12969
+ SUBRULE(filter3, ast);
12970
+ break;
12971
+ case "bind":
12972
+ SUBRULE(bind2, ast);
12973
+ break;
12974
+ case "values":
12975
+ SUBRULE(inlineData, ast);
12976
+ break;
12977
+ }
12978
+ }
12979
+ };
12980
+ var optionalGraphPattern = {
12981
+ name: "optionalGraphPattern",
12982
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12983
+ const optional2 = CONSUME(optional);
12984
+ const group = SUBRULE(groupGraphPattern);
12985
+ return ACTION(() => C.factory.patternOptional(group.patterns, C.factory.sourceLocation(optional2, group)));
12986
+ },
12987
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
12988
+ F3.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
12989
+ SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
12990
+ }
12991
+ };
12992
+ var graphGraphPattern = {
12993
+ name: "graphGraphPattern",
12994
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
12995
+ const graph2 = CONSUME(graph_exports.graph);
12996
+ const name = SUBRULE(varOrIri);
12997
+ const group = SUBRULE(groupGraphPattern);
12998
+ return ACTION(() => C.factory.patternGraph(name, group.patterns, C.factory.sourceLocation(graph2, group)));
12999
+ },
13000
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13001
+ F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
13002
+ SUBRULE(varOrTerm, ast.name);
13003
+ SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
13004
+ }
13005
+ };
13006
+ var serviceGraphPattern = {
13007
+ name: "serviceGraphPattern",
13008
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
13009
+ const service2 = CONSUME(service);
13010
+ const silent2 = OPTION(() => {
13011
+ CONSUME(silent);
13012
+ return true;
13013
+ }) ?? false;
13014
+ const name = SUBRULE1(varOrIri);
13015
+ const group = SUBRULE1(groupGraphPattern);
13016
+ return ACTION(() => C.factory.patternService(name, group.patterns, silent2, C.factory.sourceLocation(service2, group)));
13017
+ },
13018
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13019
+ F3.printFilter(ast, () => {
13020
+ PRINT_WORD("SERVICE");
13021
+ if (ast.silent) {
13022
+ PRINT_WORD("SILENT");
13163
13023
  }
13164
- return F3.aggregate(
13165
- operatorToken.image,
13166
- Boolean(distinctToken),
13167
- expressionVal,
13168
- void 0,
13169
- C.factory.sourceLocation(operatorToken, closeToken)
13170
- );
13171
13024
  });
13025
+ SUBRULE(varOrTerm, ast.name);
13026
+ SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
13172
13027
  }
13173
13028
  };
13174
- var aggregateSum = baseAggregateFunc(BuildinCalls_exports.sum);
13175
- var aggregateMin = baseAggregateFunc(BuildinCalls_exports.min);
13176
- var aggregateMax = baseAggregateFunc(BuildinCalls_exports.max);
13177
- var aggregateAvg = baseAggregateFunc(BuildinCalls_exports.avg);
13178
- var aggregateSample = baseAggregateFunc(BuildinCalls_exports.sample);
13179
- var aggregateGroup_concat = {
13180
- name: unCapitalize(BuildinCalls_exports.groupConcat.name),
13181
- impl: ({ ACTION, CONSUME, OPTION1, SUBRULE, OPTION2 }) => (C) => {
13182
- const operatorToken = CONSUME(BuildinCalls_exports.groupConcat);
13029
+ var bind2 = {
13030
+ name: "bind",
13031
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13032
+ const bind3 = CONSUME(bind);
13183
13033
  CONSUME(symbols_exports.LParen);
13184
- const distinctToken = OPTION1(() => CONSUME(distinct));
13185
- const expr = SUBRULE(expression, void 0);
13186
- const sep = OPTION2(() => {
13187
- CONSUME(symbols_exports.semi);
13188
- CONSUME(separator);
13189
- CONSUME(symbols_exports.equal);
13190
- return SUBRULE(string, void 0);
13034
+ const expressionVal = SUBRULE(expression);
13035
+ CONSUME(as);
13036
+ const variable = SUBRULE(var_);
13037
+ const close = CONSUME(symbols_exports.RParen);
13038
+ return ACTION(() => C.factory.patternBind(expressionVal, variable, C.factory.sourceLocation(bind3, close)));
13039
+ },
13040
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13041
+ F3.printFilter(ast, () => PRINT_WORD("BIND", "("));
13042
+ SUBRULE(expression, ast.expression);
13043
+ F3.printFilter(ast, () => PRINT_WORD("AS"));
13044
+ SUBRULE(var_, ast.variable);
13045
+ F3.printFilter(ast, () => PRINT_WORD(")"));
13046
+ }
13047
+ };
13048
+ var inlineData = {
13049
+ name: "inlineData",
13050
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13051
+ const values3 = CONSUME(values2);
13052
+ const datablock = SUBRULE(dataBlock);
13053
+ return ACTION(() => C.factory.patternValues(datablock.val, C.factory.sourceLocation(values3, datablock)));
13054
+ },
13055
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13056
+ const variables = Object.keys(ast.values[0]);
13057
+ F3.printFilter(ast, () => {
13058
+ PRINT_WORD("VALUES", "(");
13059
+ for (const variable of variables) {
13060
+ PRINT_WORD(`?${variable}`);
13061
+ }
13062
+ PRINT_WORD(")", "{");
13191
13063
  });
13192
- const closeToken = CONSUME(symbols_exports.RParen);
13193
- return ACTION(() => {
13194
- const F3 = C.factory;
13195
- return F3.aggregate(
13196
- operatorToken.image,
13197
- Boolean(distinctToken),
13198
- expr,
13199
- sep?.value ?? " ",
13200
- F3.sourceLocation(operatorToken, closeToken)
13201
- );
13064
+ for (const mapping of ast.values) {
13065
+ F3.printFilter(ast, () => PRINT_WORD("("));
13066
+ for (const variable of variables) {
13067
+ if (mapping[variable] === void 0) {
13068
+ F3.printFilter(ast, () => PRINT_WORD("UNDEF"));
13069
+ } else {
13070
+ SUBRULE(graphNodePath, mapping[variable]);
13071
+ }
13072
+ }
13073
+ F3.printFilter(ast, () => PRINT_WORD(")"));
13074
+ }
13075
+ F3.printFilter(ast, () => PRINT_WORD("}"));
13076
+ }
13077
+ };
13078
+ var dataBlock = {
13079
+ name: "dataBlock",
13080
+ impl: ({ SUBRULE, OR }) => () => OR([
13081
+ { ALT: () => SUBRULE(inlineDataOneVar) },
13082
+ { ALT: () => SUBRULE(inlineDataFull) }
13083
+ ])
13084
+ };
13085
+ var inlineDataOneVar = {
13086
+ name: "inlineDataOneVar",
13087
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
13088
+ const res = [];
13089
+ const varVal = SUBRULE(var_);
13090
+ CONSUME(symbols_exports.LCurly);
13091
+ MANY(() => {
13092
+ const value = SUBRULE(dataBlockValue);
13093
+ ACTION(() => {
13094
+ res.push({ [varVal.value]: value });
13095
+ });
13202
13096
  });
13097
+ const close = CONSUME(symbols_exports.RCurly);
13098
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(varVal, close)));
13203
13099
  }
13204
13100
  };
13205
- var aggregate = {
13206
- name: "aggregate",
13207
- impl: ({ ACTION, SUBRULE, OR }) => (C) => {
13208
- const wasInAggregate = ACTION(() => C.parseMode.has("inAggregate"));
13209
- ACTION(() => C.parseMode.add("inAggregate"));
13210
- const result = OR([
13211
- { ALT: () => SUBRULE(aggregateCount, void 0) },
13212
- { ALT: () => SUBRULE(aggregateSum, void 0) },
13213
- { ALT: () => SUBRULE(aggregateMin, void 0) },
13214
- { ALT: () => SUBRULE(aggregateMax, void 0) },
13215
- { ALT: () => SUBRULE(aggregateAvg, void 0) },
13216
- { ALT: () => SUBRULE(aggregateSample, void 0) },
13217
- { ALT: () => SUBRULE(aggregateGroup_concat, void 0) }
13101
+ var inlineDataFull = {
13102
+ name: "inlineDataFull",
13103
+ impl: ({
13104
+ ACTION,
13105
+ OR,
13106
+ MANY1,
13107
+ MANY2,
13108
+ MANY3,
13109
+ MANY4,
13110
+ SUBRULE,
13111
+ CONSUME1,
13112
+ CONSUME2
13113
+ }) => (C) => {
13114
+ const res = [];
13115
+ const vars = [];
13116
+ return OR([
13117
+ { ALT: () => {
13118
+ const nil2 = CONSUME1(terminals_exports.nil);
13119
+ CONSUME1(symbols_exports.LCurly);
13120
+ MANY1(() => {
13121
+ CONSUME2(terminals_exports.nil);
13122
+ res.push({});
13123
+ });
13124
+ const close = CONSUME1(symbols_exports.RCurly);
13125
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(nil2, close)));
13126
+ } },
13127
+ { ALT: () => {
13128
+ const open = CONSUME1(symbols_exports.LParen);
13129
+ MANY2(() => {
13130
+ vars.push(SUBRULE(var_));
13131
+ });
13132
+ CONSUME1(symbols_exports.RParen);
13133
+ CONSUME2(symbols_exports.LCurly);
13134
+ MANY3(() => {
13135
+ let parsedValues = 0;
13136
+ const currentRow = {};
13137
+ CONSUME2(symbols_exports.LParen);
13138
+ MANY4(() => {
13139
+ if (parsedValues >= vars.length) {
13140
+ throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
13141
+ }
13142
+ const value = SUBRULE(dataBlockValue);
13143
+ ACTION(() => {
13144
+ currentRow[vars[parsedValues].value] = value;
13145
+ parsedValues++;
13146
+ });
13147
+ });
13148
+ CONSUME2(symbols_exports.RParen);
13149
+ ACTION(() => {
13150
+ res.push(currentRow);
13151
+ if (vars.length !== parsedValues) {
13152
+ throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
13153
+ }
13154
+ });
13155
+ });
13156
+ const close = CONSUME2(symbols_exports.RCurly);
13157
+ return ACTION(() => C.factory.wrap(res, C.factory.sourceLocation(open, close)));
13158
+ } }
13218
13159
  ]);
13219
- ACTION(() => !wasInAggregate && C.parseMode.delete("inAggregate"));
13220
- ACTION(() => {
13221
- if (!C.parseMode.has("canParseAggregate")) {
13222
- throw new Error("Aggregates are only allowed in SELECT, HAVING, and ORDER BY clauses.");
13223
- }
13224
- if (C.parseMode.has("inAggregate")) {
13225
- throw new Error("An aggregate function is not allowed within an aggregate function.");
13226
- }
13160
+ }
13161
+ };
13162
+ var dataBlockValue = {
13163
+ name: "dataBlockValue",
13164
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
13165
+ { ALT: () => SUBRULE(iri2) },
13166
+ { ALT: () => SUBRULE(rdfLiteral) },
13167
+ { ALT: () => SUBRULE(numericLiteral) },
13168
+ { ALT: () => SUBRULE(booleanLiteral) },
13169
+ { ALT: () => {
13170
+ CONSUME(undef);
13171
+ return void 0;
13172
+ } }
13173
+ ])
13174
+ };
13175
+ var minusGraphPattern = {
13176
+ name: "minusGraphPattern",
13177
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13178
+ const minus2 = CONSUME(minus);
13179
+ const group = SUBRULE(groupGraphPattern);
13180
+ return ACTION(() => C.factory.patternMinus(group.patterns, C.factory.sourceLocation(minus2, group)));
13181
+ },
13182
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13183
+ F3.printFilter(ast, () => PRINT_WORD("MINUS"));
13184
+ SUBRULE(groupGraphPattern, F3.patternGroup(ast.patterns, ast.loc));
13185
+ }
13186
+ };
13187
+ var groupOrUnionGraphPattern = {
13188
+ name: "groupOrUnionGraphPattern",
13189
+ impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
13190
+ const groups = [];
13191
+ const group = SUBRULE1(groupGraphPattern);
13192
+ groups.push(group);
13193
+ MANY(() => {
13194
+ CONSUME(union);
13195
+ const group2 = SUBRULE2(groupGraphPattern);
13196
+ groups.push(group2);
13227
13197
  });
13228
- return result;
13198
+ return ACTION(() => groups.length === 1 ? groups[0] : C.factory.patternUnion(
13199
+ groups,
13200
+ C.factory.sourceLocation(group, groups.at(-1))
13201
+ ));
13229
13202
  },
13230
13203
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13231
- F3.printFilter(ast, () => {
13232
- PRINT_WORD(ast.aggregation, "(");
13233
- if (ast.distinct) {
13234
- PRINT_WORD("DISTINCT");
13204
+ if (F3.isPatternUnion(ast)) {
13205
+ const [head2, ...tail] = ast.patterns;
13206
+ SUBRULE(groupGraphPattern, head2);
13207
+ for (const pattern of tail) {
13208
+ F3.printFilter(ast, () => PRINT_WORD("UNION"));
13209
+ SUBRULE(groupGraphPattern, pattern);
13235
13210
  }
13236
- });
13237
- const arg = ast.expression[0];
13238
- if (F3.isWildcard(arg)) {
13239
- F3.printFilter(ast, () => PRINT_WORD("*"));
13240
13211
  } else {
13241
- SUBRULE(expression, arg, void 0);
13242
- }
13243
- if (F3.isExpressionAggregateSeparator(ast)) {
13244
- F3.printFilter(ast, () => PRINT_WORD(";", "SEPARATOR", "=", stringEscapedLexical(ast.separator)));
13212
+ SUBRULE(groupGraphPattern, ast);
13245
13213
  }
13214
+ }
13215
+ };
13216
+ var filter3 = {
13217
+ name: "filter",
13218
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13219
+ const filterToken = CONSUME(filter2);
13220
+ const expression2 = SUBRULE(constraint);
13221
+ return ACTION(() => C.factory.patternFilter(expression2, C.factory.sourceLocation(filterToken, expression2)));
13222
+ },
13223
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13224
+ F3.printFilter(ast, () => PRINT_WORD("FILTER ("));
13225
+ SUBRULE(expression, ast.expression);
13246
13226
  F3.printFilter(ast, () => PRINT_WORD(")"));
13247
13227
  }
13248
13228
  };
13229
+ var constraint = {
13230
+ name: "constraint",
13231
+ impl: ({ SUBRULE, OR }) => () => OR([
13232
+ { ALT: () => SUBRULE(brackettedExpression) },
13233
+ { ALT: () => SUBRULE(builtInCall) },
13234
+ { ALT: () => SUBRULE(functionCall) }
13235
+ ])
13236
+ };
13237
+ var functionCall = {
13238
+ name: "functionCall",
13239
+ impl: ({ ACTION, SUBRULE }) => (C) => {
13240
+ const func = SUBRULE(iri2);
13241
+ const args = SUBRULE(argList);
13242
+ return ACTION(() => C.factory.expressionFunctionCall(
13243
+ func,
13244
+ args.val.args,
13245
+ args.val.distinct,
13246
+ C.factory.sourceLocation(func, args)
13247
+ ));
13248
+ }
13249
+ };
13249
13250
 
13250
13251
  // ../../packages/rules-sparql-1-1/lib/grammar/expression.ts
13251
13252
  var argList = {
@@ -13265,7 +13266,7 @@ var argList = {
13265
13266
  AT_LEAST_ONE_SEP({
13266
13267
  SEP: symbols_exports.comma,
13267
13268
  DEF: () => {
13268
- const arg = SUBRULE1(expression, void 0);
13269
+ const arg = SUBRULE1(expression);
13269
13270
  args.push(arg);
13270
13271
  }
13271
13272
  });
@@ -13282,11 +13283,11 @@ var argList = {
13282
13283
  });
13283
13284
  const [head2, ...tail] = ast.val.args;
13284
13285
  if (head2) {
13285
- SUBRULE(expression, head2, void 0);
13286
+ SUBRULE(expression, head2);
13286
13287
  }
13287
13288
  for (const expr of tail) {
13288
13289
  F3.printFilter(ast, () => PRINT_WORD(","));
13289
- SUBRULE(expression, expr, void 0);
13290
+ SUBRULE(expression, expr);
13290
13291
  }
13291
13292
  F3.printFilter(ast, () => PRINT_WORD(")"));
13292
13293
  }
@@ -13300,11 +13301,11 @@ var expressionList = {
13300
13301
  } },
13301
13302
  { ALT: () => {
13302
13303
  const open = CONSUME(symbols_exports.LParen);
13303
- const expr1 = SUBRULE1(expression, void 0);
13304
+ const expr1 = SUBRULE1(expression);
13304
13305
  const args = [expr1];
13305
13306
  MANY(() => {
13306
13307
  CONSUME(symbols_exports.comma);
13307
- const expr = SUBRULE2(expression, void 0);
13308
+ const expr = SUBRULE2(expression);
13308
13309
  args.push(expr);
13309
13310
  });
13310
13311
  const close = CONSUME(symbols_exports.RParen);
@@ -13316,15 +13317,15 @@ var infixOperators = /* @__PURE__ */ new Set(["in", "notin", "||", "&&", "=", "!
13316
13317
  var prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
13317
13318
  var expression = {
13318
13319
  name: "expression",
13319
- impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression, void 0),
13320
+ impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
13320
13321
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
13321
13322
  if (F3.isTerm(ast)) {
13322
- SUBRULE(varOrTerm, ast, void 0);
13323
+ SUBRULE(varOrTerm, ast);
13323
13324
  } else if (F3.isExpressionOperator(ast)) {
13324
13325
  if (infixOperators.has(ast.operator)) {
13325
13326
  const [left, ...right] = ast.args;
13326
13327
  F3.printFilter(ast, () => PRINT_WORD("("));
13327
- SUBRULE(expression, left, void 0);
13328
+ SUBRULE(expression, left);
13328
13329
  F3.printFilter(ast, () => {
13329
13330
  if (ast.operator === "notin") {
13330
13331
  PRINT_WORD("NOT IN");
@@ -13335,35 +13336,35 @@ var expression = {
13335
13336
  }
13336
13337
  });
13337
13338
  if (right.length === 1) {
13338
- SUBRULE(expression, right[0], void 0);
13339
+ SUBRULE(expression, right[0]);
13339
13340
  } else {
13340
- SUBRULE(argList, F3.wrap({ args: right, distinct: false }, ast.loc), void 0);
13341
+ SUBRULE(argList, F3.wrap({ args: right, distinct: false }, ast.loc));
13341
13342
  }
13342
13343
  F3.printFilter(ast, () => PRINT_WORD(")"));
13343
13344
  } else if (prefixOperator.has(ast.operator)) {
13344
13345
  const [expr] = ast.args;
13345
13346
  F3.printFilter(ast, () => PRINT_WORD(ast.operator));
13346
- SUBRULE(expression, expr, void 0);
13347
+ SUBRULE(expression, expr);
13347
13348
  } else {
13348
13349
  F3.printFilter(ast, () => PRINT_WORD(ast.operator, "("));
13349
13350
  const [head2, ...tail] = ast.args;
13350
13351
  if (head2) {
13351
- SUBRULE(expression, head2, void 0);
13352
+ SUBRULE(expression, head2);
13352
13353
  }
13353
13354
  for (const arg of tail) {
13354
13355
  F3.printFilter(ast, () => PRINT_WORD(","));
13355
- SUBRULE(expression, arg, void 0);
13356
+ SUBRULE(expression, arg);
13356
13357
  }
13357
13358
  F3.printFilter(ast, () => PRINT_WORD(")"));
13358
13359
  }
13359
13360
  } else if (F3.isExpressionPatternOperation(ast)) {
13360
13361
  const patterns = ast.args;
13361
13362
  F3.printFilter(ast, () => PRINT_WORD(ast.operator === "exists" ? "EXISTS" : "NOT EXISTS"));
13362
- SUBRULE(groupGraphPattern, patterns, void 0);
13363
+ SUBRULE(groupGraphPattern, patterns);
13363
13364
  } else if (F3.isExpressionFunctionCall(ast)) {
13364
- SUBRULE(iriOrFunction, ast, void 0);
13365
+ SUBRULE(iriOrFunction, ast);
13365
13366
  } else if (F3.isExpressionAggregate(ast)) {
13366
- SUBRULE(aggregate, ast, void 0);
13367
+ SUBRULE(aggregate, ast);
13367
13368
  }
13368
13369
  }
13369
13370
  };
@@ -13380,10 +13381,10 @@ function constructLeftDeep(startGenerator, restGenerator, ACTION, MANY) {
13380
13381
  var conditionalOrExpression = {
13381
13382
  name: "conditionalOrExpression",
13382
13383
  impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(
13383
- () => SUBRULE1(conditionalAndExpression, void 0),
13384
+ () => SUBRULE1(conditionalAndExpression),
13384
13385
  () => {
13385
13386
  CONSUME(symbols_exports.logicOr);
13386
- const args = SUBRULE2(conditionalAndExpression, void 0);
13387
+ const args = SUBRULE2(conditionalAndExpression);
13387
13388
  return (left) => ACTION(() => C.factory.expressionOperation("||", [left, args], C.factory.sourceLocation(left, args)));
13388
13389
  },
13389
13390
  ACTION,
@@ -13393,10 +13394,10 @@ var conditionalOrExpression = {
13393
13394
  var conditionalAndExpression = {
13394
13395
  name: "conditionalAndExpression",
13395
13396
  impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(
13396
- () => SUBRULE1(valueLogical, void 0),
13397
+ () => SUBRULE1(valueLogical),
13397
13398
  () => {
13398
13399
  CONSUME(symbols_exports.logicAnd);
13399
- const arg = SUBRULE2(valueLogical, void 0);
13400
+ const arg = SUBRULE2(valueLogical);
13400
13401
  return (left) => ACTION(() => C.factory.expressionOperation("&&", [left, arg], C.factory.sourceLocation(left, arg)));
13401
13402
  },
13402
13403
  ACTION,
@@ -13405,12 +13406,12 @@ var conditionalAndExpression = {
13405
13406
  };
13406
13407
  var valueLogical = {
13407
13408
  name: "valueLogical",
13408
- impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression, void 0)
13409
+ impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression)
13409
13410
  };
13410
13411
  var relationalExpression = {
13411
13412
  name: "relationalExpression",
13412
13413
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3 }) => (C) => {
13413
- const args1 = SUBRULE1(numericExpression, void 0);
13414
+ const args1 = SUBRULE1(numericExpression);
13414
13415
  const expression2 = OPTION(() => OR1([
13415
13416
  { ALT: () => {
13416
13417
  const operator = OR2([
@@ -13421,7 +13422,7 @@ var relationalExpression = {
13421
13422
  { ALT: () => CONSUME(symbols_exports.lessThanEqual) },
13422
13423
  { ALT: () => CONSUME(symbols_exports.greaterThanEqual) }
13423
13424
  ]);
13424
- const expr = SUBRULE2(numericExpression, void 0);
13425
+ const expr = SUBRULE2(numericExpression);
13425
13426
  return ACTION(() => C.factory.expressionOperation(
13426
13427
  operator.image,
13427
13428
  [args1, expr],
@@ -13433,7 +13434,7 @@ var relationalExpression = {
13433
13434
  { ALT: () => CONSUME(in_) },
13434
13435
  { ALT: () => CONSUME(notIn) }
13435
13436
  ]);
13436
- const args = SUBRULE1(expressionList, void 0);
13437
+ const args = SUBRULE1(expressionList);
13437
13438
  return ACTION(() => C.factory.expressionOperation(
13438
13439
  operator.image,
13439
13440
  [args1, ...args.val],
@@ -13446,25 +13447,25 @@ var relationalExpression = {
13446
13447
  };
13447
13448
  var numericExpression = {
13448
13449
  name: "numericExpression",
13449
- impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression, void 0)
13450
+ impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression)
13450
13451
  };
13451
13452
  var additiveExpression = {
13452
13453
  name: "additiveExpression",
13453
13454
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OR1, OR2, OR3, OR4 }) => (C) => constructLeftDeep(
13454
- () => SUBRULE1(multiplicativeExpression, void 0),
13455
+ () => SUBRULE1(multiplicativeExpression),
13455
13456
  () => OR1([
13456
13457
  { ALT: () => {
13457
13458
  const operator = OR2([
13458
13459
  { ALT: () => CONSUME(symbols_exports.opPlus) },
13459
13460
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13460
13461
  ]);
13461
- const arg = SUBRULE2(multiplicativeExpression, void 0);
13462
+ const arg = SUBRULE2(multiplicativeExpression);
13462
13463
  return ACTION(() => (left) => C.factory.expressionOperation(operator.image, [left, arg], C.factory.sourceLocation(left, arg)));
13463
13464
  } },
13464
13465
  { ALT: () => {
13465
13466
  const { operator, startInt } = OR3([
13466
13467
  { ALT: () => {
13467
- const integer2 = SUBRULE(numericLiteralPositive, void 0);
13468
+ const integer2 = SUBRULE(numericLiteralPositive);
13468
13469
  return ACTION(() => {
13469
13470
  integer2.value = integer2.value.replace(/^\+/u, "");
13470
13471
  return {
@@ -13474,7 +13475,7 @@ var additiveExpression = {
13474
13475
  });
13475
13476
  } },
13476
13477
  { ALT: () => {
13477
- const integer2 = SUBRULE(numericLiteralNegative, void 0);
13478
+ const integer2 = SUBRULE(numericLiteralNegative);
13478
13479
  return ACTION(() => {
13479
13480
  integer2.value = integer2.value.replace(/^-/u, "");
13480
13481
  return {
@@ -13491,7 +13492,7 @@ var additiveExpression = {
13491
13492
  { ALT: () => CONSUME(symbols_exports.star) },
13492
13493
  { ALT: () => CONSUME(symbols_exports.slash) }
13493
13494
  ]);
13494
- const innerExpr = SUBRULE1(unaryExpression, void 0);
13495
+ const innerExpr = SUBRULE1(unaryExpression);
13495
13496
  return ACTION(() => (leftInner) => C.factory.expressionOperation(
13496
13497
  innerOperator.image,
13497
13498
  [leftInner, innerExpr],
@@ -13515,13 +13516,13 @@ var additiveExpression = {
13515
13516
  var multiplicativeExpression = {
13516
13517
  name: "multiplicativeExpression",
13517
13518
  impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OR }) => (C) => constructLeftDeep(
13518
- () => SUBRULE1(unaryExpression, void 0),
13519
+ () => SUBRULE1(unaryExpression),
13519
13520
  () => {
13520
13521
  const operator = OR([
13521
13522
  { ALT: () => CONSUME(symbols_exports.star) },
13522
13523
  { ALT: () => CONSUME(symbols_exports.slash) }
13523
13524
  ]);
13524
- const expr = SUBRULE2(unaryExpression, void 0);
13525
+ const expr = SUBRULE2(unaryExpression);
13525
13526
  return (left) => ({
13526
13527
  type: "expression",
13527
13528
  subType: "operation",
@@ -13537,14 +13538,14 @@ var multiplicativeExpression = {
13537
13538
  var unaryExpression = {
13538
13539
  name: "unaryExpression",
13539
13540
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
13540
- { ALT: () => SUBRULE1(primaryExpression, void 0) },
13541
+ { ALT: () => SUBRULE1(primaryExpression) },
13541
13542
  { ALT: () => {
13542
13543
  const operator = OR2([
13543
13544
  { ALT: () => CONSUME(symbols_exports.exclamation) },
13544
13545
  { ALT: () => CONSUME(symbols_exports.opPlus) },
13545
13546
  { ALT: () => CONSUME(symbols_exports.opMinus) }
13546
13547
  ]);
13547
- const expr = SUBRULE2(primaryExpression, void 0);
13548
+ const expr = SUBRULE2(primaryExpression);
13548
13549
  return ACTION(() => ({
13549
13550
  type: "expression",
13550
13551
  subType: "operation",
@@ -13558,20 +13559,20 @@ var unaryExpression = {
13558
13559
  var primaryExpression = {
13559
13560
  name: "primaryExpression",
13560
13561
  impl: ({ SUBRULE, OR }) => () => OR([
13561
- { ALT: () => SUBRULE(brackettedExpression, void 0) },
13562
- { ALT: () => SUBRULE(builtInCall, void 0) },
13563
- { ALT: () => SUBRULE(iriOrFunction, void 0) },
13564
- { ALT: () => SUBRULE(rdfLiteral, void 0) },
13565
- { ALT: () => SUBRULE(numericLiteral, void 0) },
13566
- { ALT: () => SUBRULE(booleanLiteral, void 0) },
13567
- { ALT: () => SUBRULE(var_, void 0) }
13562
+ { ALT: () => SUBRULE(brackettedExpression) },
13563
+ { ALT: () => SUBRULE(builtInCall) },
13564
+ { ALT: () => SUBRULE(iriOrFunction) },
13565
+ { ALT: () => SUBRULE(rdfLiteral) },
13566
+ { ALT: () => SUBRULE(numericLiteral) },
13567
+ { ALT: () => SUBRULE(booleanLiteral) },
13568
+ { ALT: () => SUBRULE(var_) }
13568
13569
  ])
13569
13570
  };
13570
13571
  var brackettedExpression = {
13571
13572
  name: "brackettedExpression",
13572
13573
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
13573
13574
  const open = CONSUME(symbols_exports.LParen);
13574
- const expr = SUBRULE(expression, void 0);
13575
+ const expr = SUBRULE(expression);
13575
13576
  const close = CONSUME(symbols_exports.RParen);
13576
13577
  return ACTION(() => {
13577
13578
  expr.loc = C.factory.sourceLocation(open, close);
@@ -13582,9 +13583,9 @@ var brackettedExpression = {
13582
13583
  var iriOrFunction = {
13583
13584
  name: "iriOrFunction",
13584
13585
  impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
13585
- const iriVal = SUBRULE(iri2, void 0);
13586
+ const iriVal = SUBRULE(iri2);
13586
13587
  const functionCall2 = OPTION(() => {
13587
- const args = SUBRULE(argList, void 0);
13588
+ const args = SUBRULE(argList);
13588
13589
  return ACTION(() => {
13589
13590
  const distinct2 = args.val.distinct;
13590
13591
  if (!C.parseMode.has("canParseAggregate") && distinct2) {
@@ -13604,10 +13605,10 @@ var iriOrFunction = {
13604
13605
  },
13605
13606
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13606
13607
  if (F3.isTermNamed(ast)) {
13607
- SUBRULE(iri2, ast, void 0);
13608
+ SUBRULE(iri2, ast);
13608
13609
  } else {
13609
- SUBRULE(iri2, ast.function, void 0);
13610
- SUBRULE(argList, F3.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc), void 0);
13610
+ SUBRULE(iri2, ast.function);
13611
+ SUBRULE(argList, F3.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc));
13611
13612
  }
13612
13613
  }
13613
13614
  };
@@ -13616,10 +13617,10 @@ var iriOrFunction = {
13616
13617
  var solutionModifier = {
13617
13618
  name: "solutionModifier",
13618
13619
  impl: ({ ACTION, SUBRULE, OPTION1, OPTION2, OPTION3, OPTION4 }) => () => {
13619
- const group = OPTION1(() => SUBRULE(groupClause, void 0));
13620
- const having2 = OPTION2(() => SUBRULE(havingClause, void 0));
13621
- const order2 = OPTION3(() => SUBRULE(orderClause, void 0));
13622
- const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses, void 0));
13620
+ const group = OPTION1(() => SUBRULE(groupClause));
13621
+ const having2 = OPTION2(() => SUBRULE(havingClause));
13622
+ const order2 = OPTION3(() => SUBRULE(orderClause));
13623
+ const limitOffset = OPTION4(() => SUBRULE(limitOffsetClauses));
13623
13624
  return ACTION(() => ({
13624
13625
  ...limitOffset && { limitOffset },
13625
13626
  ...group && { group },
@@ -13629,16 +13630,16 @@ var solutionModifier = {
13629
13630
  },
13630
13631
  gImpl: ({ SUBRULE }) => (ast) => {
13631
13632
  if (ast.group) {
13632
- SUBRULE(groupClause, ast.group, void 0);
13633
+ SUBRULE(groupClause, ast.group);
13633
13634
  }
13634
13635
  if (ast.having) {
13635
- SUBRULE(havingClause, ast.having, void 0);
13636
+ SUBRULE(havingClause, ast.having);
13636
13637
  }
13637
13638
  if (ast.order) {
13638
- SUBRULE(orderClause, ast.order, void 0);
13639
+ SUBRULE(orderClause, ast.order);
13639
13640
  }
13640
13641
  if (ast.limitOffset) {
13641
- SUBRULE(limitOffsetClauses, ast.limitOffset, void 0);
13642
+ SUBRULE(limitOffsetClauses, ast.limitOffset);
13642
13643
  }
13643
13644
  }
13644
13645
  };
@@ -13649,7 +13650,7 @@ var groupClause = {
13649
13650
  const start = CONSUME(groupByGroup);
13650
13651
  CONSUME(by);
13651
13652
  AT_LEAST_ONE(() => {
13652
- groupings.push(SUBRULE1(groupCondition, void 0));
13653
+ groupings.push(SUBRULE1(groupCondition));
13653
13654
  });
13654
13655
  return ACTION(() => ({
13655
13656
  type: "solutionModifier",
@@ -13662,12 +13663,12 @@ var groupClause = {
13662
13663
  F3.printFilter(ast, () => PRINT_WORDS("GROUP", "BY"));
13663
13664
  for (const grouping of ast.groupings) {
13664
13665
  if (F3.isExpression(grouping)) {
13665
- SUBRULE(expression, grouping, void 0);
13666
+ SUBRULE(expression, grouping);
13666
13667
  } else {
13667
13668
  F3.printFilter(ast, () => PRINT_WORDS("("));
13668
- SUBRULE(expression, grouping.value, void 0);
13669
+ SUBRULE(expression, grouping.value);
13669
13670
  F3.printFilter(ast, () => PRINT_WORDS("AS"));
13670
- SUBRULE(var_, grouping.variable, void 0);
13671
+ SUBRULE(var_, grouping.variable);
13671
13672
  F3.printFilter(ast, () => PRINT_WORDS(")"));
13672
13673
  }
13673
13674
  }
@@ -13676,16 +13677,16 @@ var groupClause = {
13676
13677
  var groupCondition = {
13677
13678
  name: "groupCondition",
13678
13679
  impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR }) => (C) => OR([
13679
- { ALT: () => SUBRULE(builtInCall, void 0) },
13680
- { ALT: () => SUBRULE(functionCall, void 0) },
13681
- { ALT: () => SUBRULE2(var_, void 0) },
13680
+ { ALT: () => SUBRULE(builtInCall) },
13681
+ { ALT: () => SUBRULE(functionCall) },
13682
+ { ALT: () => SUBRULE2(var_) },
13682
13683
  {
13683
13684
  ALT: () => {
13684
13685
  const open = CONSUME(symbols_exports.LParen);
13685
- const expressionValue = SUBRULE(expression, void 0);
13686
+ const expressionValue = SUBRULE(expression);
13686
13687
  const variable = OPTION(() => {
13687
13688
  CONSUME(as);
13688
- return SUBRULE1(var_, void 0);
13689
+ return SUBRULE1(var_);
13689
13690
  });
13690
13691
  const close = CONSUME(symbols_exports.RParen);
13691
13692
  return ACTION(() => {
@@ -13709,7 +13710,7 @@ var havingClause = {
13709
13710
  const expressions = [];
13710
13711
  const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
13711
13712
  AT_LEAST_ONE(() => {
13712
- expressions.push(SUBRULE(havingCondition, void 0));
13713
+ expressions.push(SUBRULE(havingCondition));
13713
13714
  });
13714
13715
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13715
13716
  return ACTION(() => C.factory.solutionModifierHaving(expressions, C.factory.sourceLocation(having2, expressions.at(-1))));
@@ -13717,13 +13718,13 @@ var havingClause = {
13717
13718
  gImpl: ({ PRINT_WORD, SUBRULE }) => (ast, { factory: F3 }) => {
13718
13719
  F3.printFilter(ast, () => PRINT_WORD("HAVING"));
13719
13720
  for (const having2 of ast.having) {
13720
- SUBRULE(expression, having2, void 0);
13721
+ SUBRULE(expression, having2);
13721
13722
  }
13722
13723
  }
13723
13724
  };
13724
13725
  var havingCondition = {
13725
13726
  name: "havingCondition",
13726
- impl: ({ SUBRULE }) => () => SUBRULE(constraint, void 0)
13727
+ impl: ({ SUBRULE }) => () => SUBRULE(constraint)
13727
13728
  };
13728
13729
  var orderClause = {
13729
13730
  name: "orderClause",
@@ -13733,7 +13734,7 @@ var orderClause = {
13733
13734
  const orderings = [];
13734
13735
  const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
13735
13736
  AT_LEAST_ONE(() => {
13736
- orderings.push(SUBRULE1(orderCondition, void 0));
13737
+ orderings.push(SUBRULE1(orderCondition));
13737
13738
  });
13738
13739
  ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
13739
13740
  return ACTION(() => C.factory.solutionModifierOrder(orderings, C.factory.sourceLocation(order2, orderings.at(-1))));
@@ -13747,7 +13748,7 @@ var orderClause = {
13747
13748
  F3.printFilter(ast, () => PRINT_WORDS("ASC"));
13748
13749
  }
13749
13750
  F3.printFilter(ast, () => PRINT_WORDS("("));
13750
- SUBRULE(expression, ordering.expression, void 0);
13751
+ SUBRULE(expression, ordering.expression);
13751
13752
  F3.printFilter(ast, () => PRINT_WORDS(")"));
13752
13753
  }
13753
13754
  }
@@ -13766,7 +13767,7 @@ var orderCondition = {
13766
13767
  return [true, token];
13767
13768
  } }
13768
13769
  ]);
13769
- const expr = SUBRULE(brackettedExpression, void 0);
13770
+ const expr = SUBRULE(brackettedExpression);
13770
13771
  return ACTION(() => ({
13771
13772
  expression: expr,
13772
13773
  descending: descending[0],
@@ -13774,11 +13775,11 @@ var orderCondition = {
13774
13775
  }));
13775
13776
  } },
13776
13777
  { ALT: () => {
13777
- const expr = SUBRULE(constraint, void 0);
13778
+ const expr = SUBRULE(constraint);
13778
13779
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
13779
13780
  } },
13780
13781
  { ALT: () => {
13781
- const expr = SUBRULE(var_, void 0);
13782
+ const expr = SUBRULE(var_);
13782
13783
  return ACTION(() => ({ expression: expr, descending: false, loc: expr.loc }));
13783
13784
  } }
13784
13785
  ])
@@ -13787,8 +13788,8 @@ var limitOffsetClauses = {
13787
13788
  name: "limitOffsetClauses",
13788
13789
  impl: ({ ACTION, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => OR([
13789
13790
  { ALT: () => {
13790
- const limit2 = SUBRULE1(limitClause, void 0);
13791
- const offset2 = OPTION1(() => SUBRULE1(offsetClause, void 0));
13791
+ const limit2 = SUBRULE1(limitClause);
13792
+ const offset2 = OPTION1(() => SUBRULE1(offsetClause));
13792
13793
  return ACTION(() => C.factory.solutionModifierLimitOffset(
13793
13794
  limit2.val,
13794
13795
  offset2?.val,
@@ -13796,8 +13797,8 @@ var limitOffsetClauses = {
13796
13797
  ));
13797
13798
  } },
13798
13799
  { ALT: () => {
13799
- const offset2 = SUBRULE2(offsetClause, void 0);
13800
- const limit2 = OPTION2(() => SUBRULE2(limitClause, void 0));
13800
+ const offset2 = SUBRULE2(offsetClause);
13801
+ const limit2 = OPTION2(() => SUBRULE2(limitClause));
13801
13802
  return ACTION(() => C.factory.solutionModifierLimitOffset(
13802
13803
  limit2?.val,
13803
13804
  offset2.val,
@@ -13835,22 +13836,22 @@ var offsetClause = {
13835
13836
  }
13836
13837
  };
13837
13838
 
13838
- // ../../packages/rules-sparql-1-1/lib/grammar/queryUnit/queryUnit.ts
13839
+ // ../../packages/rules-sparql-1-1/lib/grammar/queryUnit.ts
13839
13840
  var queryUnit = {
13840
13841
  name: "queryUnit",
13841
- impl: ({ SUBRULE }) => () => SUBRULE(query, void 0)
13842
+ impl: ({ SUBRULE }) => () => SUBRULE(query)
13842
13843
  };
13843
13844
  var query = {
13844
13845
  name: "query",
13845
13846
  impl: ({ ACTION, SUBRULE, OR }) => (C) => {
13846
- const prologueValues = SUBRULE(prologue, void 0);
13847
+ const prologueValues = SUBRULE(prologue);
13847
13848
  const subType = OR([
13848
- { ALT: () => SUBRULE(selectQuery, void 0) },
13849
- { ALT: () => SUBRULE(constructQuery, void 0) },
13850
- { ALT: () => SUBRULE(describeQuery, void 0) },
13851
- { ALT: () => SUBRULE(askQuery, void 0) }
13849
+ { ALT: () => SUBRULE(selectQuery) },
13850
+ { ALT: () => SUBRULE(constructQuery) },
13851
+ { ALT: () => SUBRULE(describeQuery) },
13852
+ { ALT: () => SUBRULE(askQuery) }
13852
13853
  ]);
13853
- const values3 = SUBRULE(valuesClause, void 0);
13854
+ const values3 = SUBRULE(valuesClause);
13854
13855
  return ACTION(() => ({
13855
13856
  context: prologueValues,
13856
13857
  ...subType,
@@ -13864,28 +13865,28 @@ var query = {
13864
13865
  }));
13865
13866
  },
13866
13867
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
13867
- SUBRULE(prologue, ast.context, void 0);
13868
+ SUBRULE(prologue, ast.context);
13868
13869
  if (F3.isQuerySelect(ast)) {
13869
- SUBRULE(selectQuery, ast, void 0);
13870
+ SUBRULE(selectQuery, ast);
13870
13871
  } else if (F3.isQueryConstruct(ast)) {
13871
- SUBRULE(constructQuery, ast, void 0);
13872
+ SUBRULE(constructQuery, ast);
13872
13873
  } else if (F3.isQueryDescribe(ast)) {
13873
- SUBRULE(describeQuery, ast, void 0);
13874
+ SUBRULE(describeQuery, ast);
13874
13875
  } else if (F3.isQueryAsk(ast)) {
13875
- SUBRULE(askQuery, ast, void 0);
13876
+ SUBRULE(askQuery, ast);
13876
13877
  }
13877
13878
  if (ast.values) {
13878
- SUBRULE(inlineData, ast.values, void 0);
13879
+ SUBRULE(inlineData, ast.values);
13879
13880
  }
13880
13881
  }
13881
13882
  };
13882
13883
  var selectQuery = {
13883
13884
  name: "selectQuery",
13884
13885
  impl: ({ ACTION, SUBRULE }) => (C) => {
13885
- const selectVal = SUBRULE(selectClause, void 0);
13886
- const from2 = SUBRULE(datasetClauseStar, void 0);
13887
- const where2 = SUBRULE(whereClause, void 0);
13888
- const modifiers = SUBRULE(solutionModifier, void 0);
13886
+ const selectVal = SUBRULE(selectClause);
13887
+ const from2 = SUBRULE(datasetClauseStar);
13888
+ const where2 = SUBRULE(whereClause);
13889
+ const modifiers = SUBRULE(solutionModifier);
13889
13890
  return ACTION(() => {
13890
13891
  const ret = {
13891
13892
  subType: "select",
@@ -13911,19 +13912,19 @@ var selectQuery = {
13911
13912
  variables: ast.variables,
13912
13913
  distinct: ast.distinct,
13913
13914
  reduced: ast.reduced
13914
- }, F3.sourceLocation(...ast.variables)), void 0);
13915
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
13916
- SUBRULE(whereClause, F3.wrap(ast.where, ast.where.loc), void 0);
13917
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
13915
+ }, F3.sourceLocation(...ast.variables)));
13916
+ SUBRULE(datasetClauseStar, ast.datasets);
13917
+ SUBRULE(whereClause, F3.wrap(ast.where, ast.where.loc));
13918
+ SUBRULE(solutionModifier, ast.solutionModifiers);
13918
13919
  }
13919
13920
  };
13920
13921
  var subSelect = {
13921
13922
  name: "subSelect",
13922
13923
  impl: ({ ACTION, SUBRULE }) => (C) => {
13923
- const selectVal = SUBRULE(selectClause, void 0);
13924
- const where2 = SUBRULE(whereClause, void 0);
13925
- const modifiers = SUBRULE(solutionModifier, void 0);
13926
- const values3 = SUBRULE(valuesClause, void 0);
13924
+ const selectVal = SUBRULE(selectClause);
13925
+ const where2 = SUBRULE(whereClause);
13926
+ const modifiers = SUBRULE(solutionModifier);
13927
+ const values3 = SUBRULE(valuesClause);
13927
13928
  return ACTION(() => C.factory.querySelect({
13928
13929
  where: where2.val,
13929
13930
  datasets: C.factory.datasetClauses([], C.factory.sourceLocation()),
@@ -13988,7 +13989,7 @@ var selectClause = {
13988
13989
  const variables = [];
13989
13990
  AT_LEAST_ONE(() => OR3([
13990
13991
  { ALT: () => {
13991
- const raw = SUBRULE1(var_, void 0);
13992
+ const raw = SUBRULE1(var_);
13992
13993
  ACTION(() => {
13993
13994
  if (usedVars.some((v) => v.value === raw.value)) {
13994
13995
  throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);
@@ -14000,9 +14001,9 @@ var selectClause = {
14000
14001
  } },
14001
14002
  { ALT: () => {
14002
14003
  const open = CONSUME(symbols_exports.LParen);
14003
- const expr = SUBRULE1(expression, void 0);
14004
+ const expr = SUBRULE1(expression);
14004
14005
  CONSUME(as);
14005
- const variable = SUBRULE2(var_, void 0);
14006
+ const variable = SUBRULE2(var_);
14006
14007
  const close = CONSUME(symbols_exports.RParen);
14007
14008
  ACTION(() => {
14008
14009
  last2 = close;
@@ -14033,12 +14034,12 @@ var selectClause = {
14033
14034
  if (F3.isWildcard(variable)) {
14034
14035
  F3.printFilter(ast, () => PRINT_WORD("*"));
14035
14036
  } else if (F3.isTerm(variable)) {
14036
- SUBRULE(var_, variable, void 0);
14037
+ SUBRULE(var_, variable);
14037
14038
  } else {
14038
14039
  F3.printFilter(ast, () => PRINT_WORD("("));
14039
- SUBRULE(expression, variable.expression, void 0);
14040
+ SUBRULE(expression, variable.expression);
14040
14041
  F3.printFilter(ast, () => PRINT_WORD("AS"));
14041
- SUBRULE(var_, variable.variable, void 0);
14042
+ SUBRULE(var_, variable.variable);
14042
14043
  F3.printFilter(ast, () => PRINT_WORD(")"));
14043
14044
  }
14044
14045
  }
@@ -14050,10 +14051,10 @@ var constructQuery = {
14050
14051
  const construct2 = CONSUME(construct);
14051
14052
  return OR([
14052
14053
  { ALT: () => {
14053
- const template = SUBRULE1(constructTemplate, void 0);
14054
- const from2 = SUBRULE1(datasetClauseStar, void 0);
14055
- const where2 = SUBRULE1(whereClause, void 0);
14056
- const modifiers = SUBRULE1(solutionModifier, void 0);
14054
+ const template = SUBRULE1(constructTemplate);
14055
+ const from2 = SUBRULE1(datasetClauseStar);
14056
+ const where2 = SUBRULE1(whereClause);
14057
+ const modifiers = SUBRULE1(solutionModifier);
14057
14058
  return ACTION(() => ({
14058
14059
  subType: "construct",
14059
14060
  template: template.val,
@@ -14071,10 +14072,10 @@ var constructQuery = {
14071
14072
  }));
14072
14073
  } },
14073
14074
  { ALT: () => {
14074
- const from2 = SUBRULE2(datasetClauseStar, void 0);
14075
+ const from2 = SUBRULE2(datasetClauseStar);
14075
14076
  CONSUME(where);
14076
- const template = SUBRULE2(constructTemplate, void 0);
14077
- const modifiers = SUBRULE2(solutionModifier, void 0);
14077
+ const template = SUBRULE2(constructTemplate);
14078
+ const modifiers = SUBRULE2(solutionModifier);
14078
14079
  return ACTION(() => ({
14079
14080
  subType: "construct",
14080
14081
  template: template.val,
@@ -14097,16 +14098,16 @@ var constructQuery = {
14097
14098
  F3.printFilter(ast, () => PRINT_WORD("CONSTRUCT"));
14098
14099
  if (!F3.isSourceLocationNoMaterialize(ast.where.loc)) {
14099
14100
  F3.printFilter(ast, () => PRINT_WORD("{"));
14100
- SUBRULE(triplesBlock, ast.template, void 0);
14101
+ SUBRULE(triplesBlock, ast.template);
14101
14102
  F3.printFilter(ast, () => PRINT_WORD("}"));
14102
14103
  }
14103
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14104
+ SUBRULE(datasetClauseStar, ast.datasets);
14104
14105
  if (F3.isSourceLocationNoMaterialize(ast.where.loc)) {
14105
- SUBRULE(whereClause, F3.wrap(F3.patternGroup([ast.template], ast.template.loc), ast.template.loc), void 0);
14106
+ SUBRULE(whereClause, F3.wrap(F3.patternGroup([ast.template], ast.template.loc), ast.template.loc));
14106
14107
  } else {
14107
- SUBRULE(whereClause, F3.wrap(ast.where, ast.where.loc), void 0);
14108
+ SUBRULE(whereClause, F3.wrap(ast.where, ast.where.loc));
14108
14109
  }
14109
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14110
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14110
14111
  }
14111
14112
  };
14112
14113
  var describeQuery = {
@@ -14117,7 +14118,7 @@ var describeQuery = {
14117
14118
  { ALT: () => {
14118
14119
  const variables2 = [];
14119
14120
  AT_LEAST_ONE(() => {
14120
- variables2.push(SUBRULE1(varOrIri, void 0));
14121
+ variables2.push(SUBRULE1(varOrIri));
14121
14122
  });
14122
14123
  return variables2;
14123
14124
  } },
@@ -14126,9 +14127,9 @@ var describeQuery = {
14126
14127
  return [ACTION(() => C.factory.wildcard(C.factory.sourceLocation(star2)))];
14127
14128
  } }
14128
14129
  ]);
14129
- const from2 = SUBRULE1(datasetClauseStar, void 0);
14130
- const where2 = OPTION(() => SUBRULE1(whereClause, void 0));
14131
- const modifiers = SUBRULE1(solutionModifier, void 0);
14130
+ const from2 = SUBRULE1(datasetClauseStar);
14131
+ const where2 = OPTION(() => SUBRULE1(whereClause));
14132
+ const modifiers = SUBRULE1(solutionModifier);
14132
14133
  return ACTION(() => ({
14133
14134
  subType: "describe",
14134
14135
  variables,
@@ -14153,23 +14154,23 @@ var describeQuery = {
14153
14154
  F3.printFilter(ast, () => PRINT_WORD("*"));
14154
14155
  } else {
14155
14156
  for (const variable of ast.variables) {
14156
- SUBRULE(varOrTerm, variable, void 0);
14157
+ SUBRULE(varOrTerm, variable);
14157
14158
  }
14158
14159
  }
14159
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14160
+ SUBRULE(datasetClauseStar, ast.datasets);
14160
14161
  if (ast.where) {
14161
- SUBRULE(whereClause, F3.wrap(ast.where, ast.loc), void 0);
14162
+ SUBRULE(whereClause, F3.wrap(ast.where, ast.loc));
14162
14163
  }
14163
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14164
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14164
14165
  }
14165
14166
  };
14166
14167
  var askQuery = {
14167
14168
  name: "askQuery",
14168
14169
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14169
14170
  const ask2 = CONSUME(ask);
14170
- const from2 = SUBRULE(datasetClauseStar, void 0);
14171
- const where2 = SUBRULE(whereClause, void 0);
14172
- const modifiers = SUBRULE(solutionModifier, void 0);
14171
+ const from2 = SUBRULE(datasetClauseStar);
14172
+ const where2 = SUBRULE(whereClause);
14173
+ const modifiers = SUBRULE(solutionModifier);
14173
14174
  return ACTION(() => ({
14174
14175
  subType: "ask",
14175
14176
  datasets: from2,
@@ -14188,20 +14189,20 @@ var askQuery = {
14188
14189
  },
14189
14190
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14190
14191
  F3.printFilter(ast, () => PRINT_WORD("ASK"));
14191
- SUBRULE(datasetClauseStar, ast.datasets, void 0);
14192
- SUBRULE(whereClause, F3.wrap(ast.where, ast.loc), void 0);
14193
- SUBRULE(solutionModifier, ast.solutionModifiers, void 0);
14192
+ SUBRULE(datasetClauseStar, ast.datasets);
14193
+ SUBRULE(whereClause, F3.wrap(ast.where, ast.loc));
14194
+ SUBRULE(solutionModifier, ast.solutionModifiers);
14194
14195
  }
14195
14196
  };
14196
14197
  var valuesClause = {
14197
14198
  name: "valuesClause",
14198
- impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(inlineData, void 0))
14199
+ impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(inlineData))
14199
14200
  };
14200
14201
  var constructTemplate = {
14201
14202
  name: "constructTemplate",
14202
14203
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14203
14204
  const open = CONSUME(symbols_exports.LCurly);
14204
- const triples = OPTION(() => SUBRULE1(constructTriples, void 0));
14205
+ const triples = OPTION(() => SUBRULE1(constructTriples));
14205
14206
  const close = CONSUME(symbols_exports.RCurly);
14206
14207
  return ACTION(() => C.factory.wrap(
14207
14208
  triples ?? C.factory.patternBgp([], C.factory.sourceLocation()),
@@ -14214,27 +14215,27 @@ var constructTriples = {
14214
14215
  impl: triplesTemplate.impl
14215
14216
  };
14216
14217
 
14217
- // ../../packages/rules-sparql-1-1/lib/grammar/updateUnit/updateUnit.ts
14218
+ // ../../packages/rules-sparql-1-1/lib/grammar/updateUnit.ts
14218
14219
  var updateUnit = {
14219
14220
  name: "updateUnit",
14220
- impl: ({ SUBRULE }) => () => SUBRULE(update, void 0)
14221
+ impl: ({ SUBRULE }) => () => SUBRULE(update)
14221
14222
  };
14222
14223
  var update = {
14223
14224
  name: "update",
14224
14225
  impl: ({ ACTION, SUBRULE, SUBRULE1, SUBRULE2, CONSUME, OPTION1, MANY }) => (C) => {
14225
14226
  const updates = [];
14226
- const prologueValues = SUBRULE1(prologue, void 0);
14227
+ const prologueValues = SUBRULE1(prologue);
14227
14228
  updates.push({ context: prologueValues });
14228
14229
  let parsedSemi = true;
14229
14230
  MANY({
14230
14231
  GATE: () => parsedSemi,
14231
14232
  DEF: () => {
14232
14233
  parsedSemi = false;
14233
- updates.at(-1).operation = SUBRULE(update1, void 0);
14234
+ updates.at(-1).operation = SUBRULE(update1);
14234
14235
  OPTION1(() => {
14235
14236
  CONSUME(symbols_exports.semi);
14236
14237
  parsedSemi = true;
14237
- const innerPrologue = SUBRULE2(prologue, void 0);
14238
+ const innerPrologue = SUBRULE2(prologue);
14238
14239
  updates.push({ context: innerPrologue });
14239
14240
  });
14240
14241
  }
@@ -14256,9 +14257,9 @@ var update = {
14256
14257
  },
14257
14258
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14258
14259
  for (const update2 of ast.updates) {
14259
- SUBRULE(prologue, update2.context, void 0);
14260
+ SUBRULE(prologue, update2.context);
14260
14261
  if (update2.operation) {
14261
- SUBRULE(update1, update2.operation, void 0);
14262
+ SUBRULE(update1, update2.operation);
14262
14263
  F3.printFilter(ast, () => PRINT_WORD(" ;\n"));
14263
14264
  }
14264
14265
  }
@@ -14267,52 +14268,52 @@ var update = {
14267
14268
  var update1 = {
14268
14269
  name: "update1",
14269
14270
  impl: ({ SUBRULE, OR }) => () => OR([
14270
- { ALT: () => SUBRULE(load2, void 0) },
14271
- { ALT: () => SUBRULE(clear2, void 0) },
14272
- { ALT: () => SUBRULE(drop3, void 0) },
14273
- { ALT: () => SUBRULE(add2, void 0) },
14274
- { ALT: () => SUBRULE(move2, void 0) },
14275
- { ALT: () => SUBRULE(copy2, void 0) },
14276
- { ALT: () => SUBRULE(create2, void 0) },
14277
- { ALT: () => SUBRULE(insertData, void 0) },
14278
- { ALT: () => SUBRULE(deleteData, void 0) },
14279
- { ALT: () => SUBRULE(deleteWhere, void 0) },
14280
- { ALT: () => SUBRULE(modify, void 0) }
14271
+ { ALT: () => SUBRULE(load2) },
14272
+ { ALT: () => SUBRULE(clear2) },
14273
+ { ALT: () => SUBRULE(drop3) },
14274
+ { ALT: () => SUBRULE(add2) },
14275
+ { ALT: () => SUBRULE(move2) },
14276
+ { ALT: () => SUBRULE(copy2) },
14277
+ { ALT: () => SUBRULE(create2) },
14278
+ { ALT: () => SUBRULE(insertData) },
14279
+ { ALT: () => SUBRULE(deleteData) },
14280
+ { ALT: () => SUBRULE(deleteWhere) },
14281
+ { ALT: () => SUBRULE(modify) }
14281
14282
  ]),
14282
14283
  gImpl: ({ SUBRULE }) => (ast) => {
14283
14284
  switch (ast.subType) {
14284
14285
  case "load":
14285
- SUBRULE(load2, ast, void 0);
14286
+ SUBRULE(load2, ast);
14286
14287
  break;
14287
14288
  case "clear":
14288
- SUBRULE(clear2, ast, void 0);
14289
+ SUBRULE(clear2, ast);
14289
14290
  break;
14290
14291
  case "drop":
14291
- SUBRULE(drop3, ast, void 0);
14292
+ SUBRULE(drop3, ast);
14292
14293
  break;
14293
14294
  case "add":
14294
- SUBRULE(add2, ast, void 0);
14295
+ SUBRULE(add2, ast);
14295
14296
  break;
14296
14297
  case "move":
14297
- SUBRULE(move2, ast, void 0);
14298
+ SUBRULE(move2, ast);
14298
14299
  break;
14299
14300
  case "copy":
14300
- SUBRULE(copy2, ast, void 0);
14301
+ SUBRULE(copy2, ast);
14301
14302
  break;
14302
14303
  case "create":
14303
- SUBRULE(create2, ast, void 0);
14304
+ SUBRULE(create2, ast);
14304
14305
  break;
14305
14306
  case "insertdata":
14306
- SUBRULE(insertData, ast, void 0);
14307
+ SUBRULE(insertData, ast);
14307
14308
  break;
14308
14309
  case "deletedata":
14309
- SUBRULE(deleteData, ast, void 0);
14310
+ SUBRULE(deleteData, ast);
14310
14311
  break;
14311
14312
  case "deletewhere":
14312
- SUBRULE(deleteWhere, ast, void 0);
14313
+ SUBRULE(deleteWhere, ast);
14313
14314
  break;
14314
14315
  case "modify":
14315
- SUBRULE(modify, ast, void 0);
14316
+ SUBRULE(modify, ast);
14316
14317
  break;
14317
14318
  }
14318
14319
  }
@@ -14322,10 +14323,10 @@ var load2 = {
14322
14323
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION1, OPTION2 }) => (C) => {
14323
14324
  const loadToken = CONSUME(load);
14324
14325
  const silent2 = OPTION1(() => CONSUME(silent));
14325
- const source = SUBRULE1(iri2, void 0);
14326
+ const source = SUBRULE1(iri2);
14326
14327
  const destination = OPTION2(() => {
14327
14328
  CONSUME(loadInto);
14328
- return SUBRULE1(graphRef, void 0);
14329
+ return SUBRULE1(graphRef);
14329
14330
  });
14330
14331
  return ACTION(() => C.factory.updateOperationLoad(
14331
14332
  C.factory.sourceLocation(loadToken, source, destination),
@@ -14341,10 +14342,10 @@ var load2 = {
14341
14342
  PRINT_WORD("SILENT");
14342
14343
  }
14343
14344
  });
14344
- SUBRULE(iri2, ast.source, void 0);
14345
+ SUBRULE(iri2, ast.source);
14345
14346
  if (ast.destination) {
14346
14347
  F3.printFilter(ast, () => PRINT_WORD("INTO"));
14347
- SUBRULE(graphRefAll, ast.destination, void 0);
14348
+ SUBRULE(graphRefAll, ast.destination);
14348
14349
  }
14349
14350
  }
14350
14351
  };
@@ -14354,7 +14355,7 @@ function clearOrDrop(operation) {
14354
14355
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14355
14356
  const opToken = CONSUME(operation);
14356
14357
  const silent2 = OPTION(() => CONSUME(silent));
14357
- const destination = SUBRULE1(graphRefAll, void 0);
14358
+ const destination = SUBRULE1(graphRefAll);
14358
14359
  return ACTION(() => C.factory.updateOperationClearDrop(
14359
14360
  unCapitalize(operation.name),
14360
14361
  Boolean(silent2),
@@ -14369,7 +14370,7 @@ function clearOrDrop(operation) {
14369
14370
  PRINT_WORD("SILENT");
14370
14371
  }
14371
14372
  });
14372
- SUBRULE(graphRefAll, ast.destination, void 0);
14373
+ SUBRULE(graphRefAll, ast.destination);
14373
14374
  }
14374
14375
  };
14375
14376
  }
@@ -14380,7 +14381,7 @@ var create2 = {
14380
14381
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14381
14382
  const createToken3 = CONSUME(create);
14382
14383
  const silent2 = OPTION(() => CONSUME(silent));
14383
- const destination = SUBRULE1(graphRef, void 0);
14384
+ const destination = SUBRULE1(graphRef);
14384
14385
  return ACTION(() => C.factory.updateOperationCreate(
14385
14386
  destination,
14386
14387
  Boolean(silent2),
@@ -14394,7 +14395,7 @@ var create2 = {
14394
14395
  PRINT_WORD("SILENT");
14395
14396
  }
14396
14397
  });
14397
- SUBRULE(graphRefAll, ast.destination, void 0);
14398
+ SUBRULE(graphRefAll, ast.destination);
14398
14399
  }
14399
14400
  };
14400
14401
  function copyMoveAddOperation(operation) {
@@ -14403,9 +14404,9 @@ function copyMoveAddOperation(operation) {
14403
14404
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION }) => (C) => {
14404
14405
  const op = CONSUME(operation);
14405
14406
  const silent2 = OPTION(() => CONSUME(silent));
14406
- const source = SUBRULE1(graphOrDefault, void 0);
14407
+ const source = SUBRULE1(graphOrDefault);
14407
14408
  CONSUME(to);
14408
- const destination = SUBRULE2(graphOrDefault, void 0);
14409
+ const destination = SUBRULE2(graphOrDefault);
14409
14410
  return ACTION(() => C.factory.updateOperationAddMoveCopy(
14410
14411
  unCapitalize(operation.name),
14411
14412
  source,
@@ -14421,9 +14422,9 @@ function copyMoveAddOperation(operation) {
14421
14422
  PRINT_WORD("SILENT");
14422
14423
  }
14423
14424
  });
14424
- SUBRULE(graphRefAll, ast.source, void 0);
14425
+ SUBRULE(graphRefAll, ast.source);
14425
14426
  F3.printFilter(ast, () => PRINT_WORD("TO"));
14426
- SUBRULE(graphRefAll, ast.destination, void 0);
14427
+ SUBRULE(graphRefAll, ast.destination);
14427
14428
  }
14428
14429
  };
14429
14430
  }
@@ -14434,7 +14435,7 @@ var quadPattern = {
14434
14435
  name: "quadPattern",
14435
14436
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
14436
14437
  const open = CONSUME(symbols_exports.LCurly);
14437
- const val = SUBRULE1(quads, void 0);
14438
+ const val = SUBRULE1(quads);
14438
14439
  const close = CONSUME(symbols_exports.RCurly);
14439
14440
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
14440
14441
  }
@@ -14444,7 +14445,7 @@ var quadData = {
14444
14445
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
14445
14446
  const open = CONSUME(symbols_exports.LCurly);
14446
14447
  const couldParseVars = ACTION(() => C.parseMode.delete("canParseVars"));
14447
- const val = SUBRULE1(quads, void 0);
14448
+ const val = SUBRULE1(quads);
14448
14449
  ACTION(() => couldParseVars && C.parseMode.add("canParseVars"));
14449
14450
  const close = CONSUME(symbols_exports.RCurly);
14450
14451
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
@@ -14460,7 +14461,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14460
14461
  if (name !== "insertData") {
14461
14462
  couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14462
14463
  }
14463
- const data = SUBRULE1(dataRule, void 0);
14464
+ const data = SUBRULE1(dataRule);
14464
14465
  if (name !== "insertData") {
14465
14466
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14466
14467
  }
@@ -14471,7 +14472,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
14471
14472
  subType === "insertdata" ? "INSERT DATA" : subType === "deletedata" ? "DELETE DATA" : "DELETE WHERE",
14472
14473
  "{"
14473
14474
  ));
14474
- SUBRULE(quads, F3.wrap(ast.data, ast.loc), void 0);
14475
+ SUBRULE(quads, F3.wrap(ast.data, ast.loc));
14475
14476
  F3.printFilter(ast, () => PRINT_WORD("}"));
14476
14477
  }
14477
14478
  };
@@ -14484,23 +14485,23 @@ var modify = {
14484
14485
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {
14485
14486
  const graph2 = OPTION1(() => {
14486
14487
  const withToken = CONSUME(modifyWith);
14487
- const graph3 = SUBRULE1(iri2, void 0);
14488
+ const graph3 = SUBRULE1(iri2);
14488
14489
  return { withToken, graph: graph3 };
14489
14490
  });
14490
14491
  const { insert, del } = OR([
14491
14492
  { ALT: () => {
14492
- const del2 = SUBRULE1(deleteClause2, void 0);
14493
- const insert2 = OPTION2(() => SUBRULE1(insertClause2, void 0));
14493
+ const del2 = SUBRULE1(deleteClause2);
14494
+ const insert2 = OPTION2(() => SUBRULE1(insertClause2));
14494
14495
  return { del: del2, insert: insert2 };
14495
14496
  } },
14496
14497
  { ALT: () => {
14497
- const insert2 = SUBRULE2(insertClause2, void 0);
14498
+ const insert2 = SUBRULE2(insertClause2);
14498
14499
  return { insert: insert2, del: void 0 };
14499
14500
  } }
14500
14501
  ]);
14501
- const using = SUBRULE1(usingClauseStar, void 0);
14502
+ const using = SUBRULE1(usingClauseStar);
14502
14503
  CONSUME(where);
14503
- const where2 = SUBRULE1(groupGraphPattern, void 0);
14504
+ const where2 = SUBRULE1(groupGraphPattern);
14504
14505
  return ACTION(() => C.factory.updateOperationModify(
14505
14506
  C.factory.sourceLocation(graph2?.withToken, del, insert, where2),
14506
14507
  insert?.val ?? [],
@@ -14513,21 +14514,21 @@ var modify = {
14513
14514
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14514
14515
  if (ast.graph) {
14515
14516
  F3.printFilter(ast, () => PRINT_WORD("WITH"));
14516
- SUBRULE(iri2, ast.graph, void 0);
14517
+ SUBRULE(iri2, ast.graph);
14517
14518
  }
14518
14519
  if (ast.delete.length > 0) {
14519
14520
  F3.printFilter(ast, () => PRINT_WORD("DELETE", "{"));
14520
- SUBRULE(quads, F3.wrap(ast.delete, ast.loc), void 0);
14521
+ SUBRULE(quads, F3.wrap(ast.delete, ast.loc));
14521
14522
  F3.printFilter(ast, () => PRINT_WORD("}"));
14522
14523
  }
14523
14524
  if (ast.insert.length > 0) {
14524
14525
  F3.printFilter(ast, () => PRINT_WORD("INSERT", "{"));
14525
- SUBRULE(quads, F3.wrap(ast.insert, ast.loc), void 0);
14526
+ SUBRULE(quads, F3.wrap(ast.insert, ast.loc));
14526
14527
  F3.printFilter(ast, () => PRINT_WORD("}"));
14527
14528
  }
14528
- SUBRULE(usingClauseStar, ast.from, void 0);
14529
+ SUBRULE(usingClauseStar, ast.from);
14529
14530
  F3.printFilter(ast, () => PRINT_WORD("WHERE"));
14530
- SUBRULE(groupGraphPattern, ast.where, void 0);
14531
+ SUBRULE(groupGraphPattern, ast.where);
14531
14532
  }
14532
14533
  };
14533
14534
  var deleteClause2 = {
@@ -14535,7 +14536,7 @@ var deleteClause2 = {
14535
14536
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14536
14537
  const delToken = CONSUME(deleteClause);
14537
14538
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete("canCreateBlankNodes"));
14538
- const del = SUBRULE(quadPattern, void 0);
14539
+ const del = SUBRULE(quadPattern);
14539
14540
  ACTION(() => couldCreateBlankNodes && C.parseMode.add("canCreateBlankNodes"));
14540
14541
  return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
14541
14542
  }
@@ -14544,7 +14545,7 @@ var insertClause2 = {
14544
14545
  name: "insertClause",
14545
14546
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14546
14547
  const insertToken = CONSUME(insertClause);
14547
- const insert = SUBRULE(quadPattern, void 0);
14548
+ const insert = SUBRULE(quadPattern);
14548
14549
  return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
14549
14550
  }
14550
14551
  };
@@ -14557,7 +14558,7 @@ var graphOrDefault = {
14557
14558
  } },
14558
14559
  { ALT: () => {
14559
14560
  const graph2 = OPTION(() => CONSUME(graph_exports.graph));
14560
- const name = SUBRULE1(iri2, void 0);
14561
+ const name = SUBRULE1(iri2);
14561
14562
  return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph2, name)));
14562
14563
  } }
14563
14564
  ])
@@ -14566,18 +14567,18 @@ var graphRef = {
14566
14567
  name: "graphRef",
14567
14568
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14568
14569
  const graph2 = CONSUME(graph_exports.graph);
14569
- const val = SUBRULE(iri2, void 0);
14570
+ const val = SUBRULE(iri2);
14570
14571
  return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph2, val)));
14571
14572
  },
14572
14573
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14573
14574
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
14574
- SUBRULE(iri2, ast.graph, void 0);
14575
+ SUBRULE(iri2, ast.graph);
14575
14576
  }
14576
14577
  };
14577
14578
  var graphRefAll = {
14578
14579
  name: "graphRefAll",
14579
14580
  impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
14580
- { ALT: () => SUBRULE(graphRef, void 0) },
14581
+ { ALT: () => SUBRULE(graphRef) },
14581
14582
  { ALT: () => {
14582
14583
  const def = CONSUME(graph_exports.default_);
14583
14584
  return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
@@ -14593,7 +14594,7 @@ var graphRefAll = {
14593
14594
  ]),
14594
14595
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14595
14596
  if (F3.isGraphRefSpecific(ast)) {
14596
- SUBRULE(graphRef, ast, void 0);
14597
+ SUBRULE(graphRef, ast);
14597
14598
  } else if (F3.isGraphRefDefault(ast)) {
14598
14599
  F3.printFilter(ast, () => PRINT_WORD("DEFAULT"));
14599
14600
  } else if (F3.isGraphRefNamed(ast)) {
@@ -14609,12 +14610,12 @@ var quads = {
14609
14610
  const quads2 = [];
14610
14611
  let last2;
14611
14612
  OPTION1(() => {
14612
- const triples = SUBRULE1(triplesTemplate, void 0);
14613
+ const triples = SUBRULE1(triplesTemplate);
14613
14614
  last2 = triples;
14614
14615
  ACTION(() => quads2.push(triples));
14615
14616
  });
14616
14617
  MANY(() => {
14617
- const notTriples = SUBRULE(quadsNotTriples, void 0);
14618
+ const notTriples = SUBRULE(quadsNotTriples);
14618
14619
  last2 = notTriples;
14619
14620
  quads2.push(notTriples);
14620
14621
  OPTION2(() => {
@@ -14623,7 +14624,7 @@ var quads = {
14623
14624
  return dotToken;
14624
14625
  });
14625
14626
  OPTION3(() => {
14626
- const triples = SUBRULE2(triplesTemplate, void 0);
14627
+ const triples = SUBRULE2(triplesTemplate);
14627
14628
  last2 = triples;
14628
14629
  ACTION(() => quads2.push(triples));
14629
14630
  });
@@ -14633,9 +14634,9 @@ var quads = {
14633
14634
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14634
14635
  for (const quad of ast.val) {
14635
14636
  if (F3.isPattern(quad)) {
14636
- SUBRULE(triplesBlock, quad, void 0);
14637
+ SUBRULE(triplesBlock, quad);
14637
14638
  } else {
14638
- SUBRULE(quadsNotTriples, quad, void 0);
14639
+ SUBRULE(quadsNotTriples, quad);
14639
14640
  }
14640
14641
  }
14641
14642
  }
@@ -14644,9 +14645,9 @@ var quadsNotTriples = {
14644
14645
  name: "quadsNotTriples",
14645
14646
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
14646
14647
  const graph2 = CONSUME(graph_exports.graph);
14647
- const name = SUBRULE1(varOrIri, void 0);
14648
+ const name = SUBRULE1(varOrIri);
14648
14649
  CONSUME(symbols_exports.LCurly);
14649
- const triples = OPTION(() => SUBRULE1(triplesTemplate, void 0));
14650
+ const triples = OPTION(() => SUBRULE1(triplesTemplate));
14650
14651
  const close = CONSUME(symbols_exports.RCurly);
14651
14652
  return ACTION(() => C.factory.graphQuads(
14652
14653
  name,
@@ -14656,9 +14657,9 @@ var quadsNotTriples = {
14656
14657
  },
14657
14658
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14658
14659
  F3.printFilter(ast, () => PRINT_WORD("GRAPH"));
14659
- SUBRULE(varOrTerm, ast.graph, void 0);
14660
+ SUBRULE(varOrTerm, ast.graph);
14660
14661
  F3.printFilter(ast, () => PRINT_WORD("{"));
14661
- SUBRULE(triplesBlock, ast.triples, void 0);
14662
+ SUBRULE(triplesBlock, ast.triples);
14662
14663
  F3.printFilter(ast, () => PRINT_WORD("}"));
14663
14664
  }
14664
14665
  };
@@ -14668,9 +14669,9 @@ var queryOrUpdate = {
14668
14669
  name: "queryOrUpdate",
14669
14670
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14670
14671
  if (F3.isQuery(ast)) {
14671
- SUBRULE(grammar_exports.query, ast, void 0);
14672
+ SUBRULE(grammar_exports.query, ast);
14672
14673
  } else {
14673
- SUBRULE(grammar_exports.update, ast, void 0);
14674
+ SUBRULE(grammar_exports.update, ast);
14674
14675
  }
14675
14676
  }
14676
14677
  };
@@ -14792,7 +14793,7 @@ var F2 = new Factory();
14792
14793
  function isLangDir(dir) {
14793
14794
  return dir === "ltr" || dir === "rtl";
14794
14795
  }
14795
- function langTagHasCorrectDomain(literal) {
14796
+ function langTagHasCorrectRange(literal) {
14796
14797
  if (F2.isTermLiteralLangStr(literal)) {
14797
14798
  const dirSplit = literal.langOrIri.split("--");
14798
14799
  if (dirSplit.length > 1) {
@@ -14809,7 +14810,7 @@ var versionDecl = {
14809
14810
  name: "versionDecl",
14810
14811
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
14811
14812
  const versionToken = CONSUME(version);
14812
- const identifier = SUBRULE(versionSpecifier, void 0);
14813
+ const identifier = SUBRULE(versionSpecifier);
14813
14814
  return ACTION(() => C.factory.contextDefinitionVersion(identifier.val, C.factory.sourceLocation(versionToken, identifier)));
14814
14815
  },
14815
14816
  gImpl: ({ PRINT_WORDS }) => (ast, { factory: F3 }) => {
@@ -14833,22 +14834,22 @@ var prologue2 = {
14833
14834
  impl: ({ SUBRULE, MANY, OR }) => () => {
14834
14835
  const result = [];
14835
14836
  MANY(() => OR([
14836
- { ALT: () => result.push(SUBRULE(grammar_exports.baseDecl, void 0)) },
14837
+ { ALT: () => result.push(SUBRULE(grammar_exports.baseDecl)) },
14837
14838
  // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
14838
14839
  // We might need to check this.
14839
- { ALT: () => result.push(SUBRULE(grammar_exports.prefixDecl, void 0)) },
14840
- { ALT: () => result.push(SUBRULE(versionDecl, void 0)) }
14840
+ { ALT: () => result.push(SUBRULE(grammar_exports.prefixDecl)) },
14841
+ { ALT: () => result.push(SUBRULE(versionDecl)) }
14841
14842
  ]));
14842
14843
  return result;
14843
14844
  },
14844
14845
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
14845
14846
  for (const context of ast) {
14846
14847
  if (F3.isContextDefinitionBase(context)) {
14847
- SUBRULE(grammar_exports.baseDecl, context, void 0);
14848
+ SUBRULE(grammar_exports.baseDecl, context);
14848
14849
  } else if (F3.isContextDefinitionPrefix(context)) {
14849
- SUBRULE(grammar_exports.prefixDecl, context, void 0);
14850
+ SUBRULE(grammar_exports.prefixDecl, context);
14850
14851
  } else if (F3.isContextDefinitionVersion(context)) {
14851
- SUBRULE(versionDecl, context, void 0);
14852
+ SUBRULE(versionDecl, context);
14852
14853
  }
14853
14854
  }
14854
14855
  }
@@ -14857,10 +14858,10 @@ function reifiedTripleBlockImpl(name, allowPath) {
14857
14858
  return {
14858
14859
  name,
14859
14860
  impl: ({ ACTION, SUBRULE }) => (C) => {
14860
- const triple = SUBRULE(reifiedTriple, void 0);
14861
+ const triple = SUBRULE(reifiedTriple);
14861
14862
  const properties = SUBRULE(
14862
14863
  allowPath ? grammar_exports.propertyListPath : grammar_exports.propertyList,
14863
- { subject: ACTION(() => C.factory.dematerialized(triple.identifier)) }
14864
+ ACTION(() => C.factory.dematerialized(triple.identifier))
14864
14865
  );
14865
14866
  return ACTION(() => [triple, ...properties]);
14866
14867
  }
@@ -14871,37 +14872,40 @@ var reifiedTripleBlockPath = reifiedTripleBlockImpl("reifiedTripleBlockPath", tr
14871
14872
  var dataBlockValue2 = {
14872
14873
  name: "dataBlockValue",
14873
14874
  impl: ($) => (C) => $.OR2([
14874
- { ALT: () => grammar_exports.dataBlockValue.impl($)(C, void 0) },
14875
- { ALT: () => $.SUBRULE(tripleTermData, void 0) }
14875
+ { ALT: () => grammar_exports.dataBlockValue.impl($)(C) },
14876
+ { ALT: () => $.SUBRULE(tripleTermData) }
14876
14877
  ])
14877
14878
  };
14878
14879
  var reifier = {
14879
14880
  name: "reifier",
14880
14881
  impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
14881
- CONSUME(tilde);
14882
- const reifier2 = OPTION(() => SUBRULE(varOrReifierId, void 0));
14882
+ const tildeToken = CONSUME(tilde);
14883
+ const reifier2 = OPTION(() => SUBRULE(varOrReifierId));
14883
14884
  return ACTION(() => {
14884
14885
  if (reifier2 === void 0 && !C.parseMode.has("canCreateBlankNodes")) {
14885
14886
  throw new Error("Cannot create blanknodes in current parse mode");
14886
14887
  }
14887
- return reifier2 ?? C.factory.blankNode(void 0, C.factory.sourceLocation());
14888
+ return C.factory.wrap(
14889
+ reifier2 ?? C.factory.blankNode(void 0, C.factory.sourceLocation()),
14890
+ C.factory.sourceLocation(tildeToken, reifier2)
14891
+ );
14888
14892
  });
14889
14893
  }
14890
14894
  };
14891
14895
  var varOrReifierId = {
14892
14896
  name: "varOrReifierId",
14893
14897
  impl: ({ SUBRULE, OR }) => (C) => OR([
14894
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_, void 0) },
14895
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
14896
- { ALT: () => SUBRULE(grammar_exports.blankNode, void 0) }
14898
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_) },
14899
+ { ALT: () => SUBRULE(grammar_exports.iri) },
14900
+ { ALT: () => SUBRULE(grammar_exports.blankNode) }
14897
14901
  ])
14898
14902
  };
14899
14903
  function triplesSameSubjectImpl2(name, allowPaths) {
14900
14904
  return {
14901
14905
  name,
14902
14906
  impl: ($) => (C) => $.OR2([
14903
- { ALT: () => allowPaths ? grammar_exports.triplesSameSubjectPath.impl($)(C, void 0) : grammar_exports.triplesSameSubject.impl($)(C, void 0) },
14904
- { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock, void 0) }
14907
+ { ALT: () => allowPaths ? grammar_exports.triplesSameSubjectPath.impl($)(C) : grammar_exports.triplesSameSubject.impl($)(C) },
14908
+ { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) }
14905
14909
  ])
14906
14910
  };
14907
14911
  }
@@ -14910,11 +14914,10 @@ var triplesSameSubjectPath2 = triplesSameSubjectImpl2("triplesSameSubjectPath",
14910
14914
  function objectImpl2(name, allowPaths) {
14911
14915
  return {
14912
14916
  name,
14913
- impl: ({ ACTION, SUBRULE }) => (C, arg) => {
14914
- const objectVal = SUBRULE(allowPaths ? graphNodePath2 : graphNode2, void 0);
14915
- const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation, void 0);
14917
+ impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {
14918
+ const objectVal = SUBRULE(allowPaths ? graphNodePath2 : graphNode2);
14919
+ const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);
14916
14920
  return ACTION(() => {
14917
- const { subject, predicate } = arg;
14918
14921
  const F3 = C.factory;
14919
14922
  if (F3.isPathPure(predicate) && annotationVal.length > 0) {
14920
14923
  throw new Error("Note 17 violation");
@@ -14940,9 +14943,9 @@ function annotationImpl(name, allowPaths) {
14940
14943
  MANY(() => {
14941
14944
  OR([
14942
14945
  { ALT: () => {
14943
- const node = SUBRULE(reifier, void 0);
14946
+ const node = SUBRULE(reifier);
14944
14947
  annotations.push(node);
14945
- currentReifier = node;
14948
+ currentReifier = node.val;
14946
14949
  } },
14947
14950
  { ALT: () => {
14948
14951
  ACTION(() => {
@@ -14966,11 +14969,11 @@ function annotationImpl(name, allowPaths) {
14966
14969
  },
14967
14970
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
14968
14971
  for (const annotation2 of ast) {
14969
- if (F3.isTerm(annotation2)) {
14970
- F3.printFilter(annotation2, () => PRINT_WORD("~"));
14971
- SUBRULE(graphNodePath2, annotation2, void 0);
14972
+ if (F3.isTripleCollectionBlankNodeProperties(annotation2)) {
14973
+ SUBRULE(annotationBlockPath, annotation2);
14972
14974
  } else {
14973
- SUBRULE(annotationBlockPath, annotation2, void 0);
14975
+ F3.printFilter(annotation2, () => PRINT_WORD("~"));
14976
+ SUBRULE(graphNodePath2, annotation2.val);
14974
14977
  }
14975
14978
  }
14976
14979
  }
@@ -14985,7 +14988,7 @@ function annotationBlockImpl(name, allowPaths) {
14985
14988
  const open = CONSUME(annotationOpen);
14986
14989
  const res = SUBRULE(
14987
14990
  allowPaths ? grammar_exports.propertyListPathNotEmpty : grammar_exports.propertyListNotEmpty,
14988
- { subject: arg }
14991
+ arg
14989
14992
  );
14990
14993
  const close = CONSUME(annotationClose);
14991
14994
  return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(
@@ -14999,11 +15002,11 @@ function annotationBlockImpl(name, allowPaths) {
14999
15002
  for (const triple of ast.triples) {
15000
15003
  HANDLE_LOC(triple, () => {
15001
15004
  if (F3.isTerm(triple.predicate)) {
15002
- SUBRULE(graphNodePath2, triple.predicate, void 0);
15005
+ SUBRULE(graphNodePath2, triple.predicate);
15003
15006
  } else {
15004
15007
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
15005
15008
  }
15006
- SUBRULE(graphNodePath2, triple.object, void 0);
15009
+ SUBRULE(graphNodePath2, triple.object);
15007
15010
  F3.printFilter(ast, () => PRINT_WORD(";"));
15008
15011
  });
15009
15012
  }
@@ -15016,38 +15019,38 @@ var annotationBlock = annotationBlockImpl("annotationBlock", false);
15016
15019
  var graphNode2 = {
15017
15020
  name: "graphNode",
15018
15021
  impl: ($) => (C) => $.OR2([
15019
- { ALT: () => grammar_exports.graphNode.impl($)(C, void 0) },
15020
- { ALT: () => $.SUBRULE(reifiedTriple, void 0) }
15022
+ { ALT: () => grammar_exports.graphNode.impl($)(C) },
15023
+ { ALT: () => $.SUBRULE(reifiedTriple) }
15021
15024
  ])
15022
15025
  };
15023
15026
  var graphNodePath2 = {
15024
15027
  name: "graphNodePath",
15025
15028
  impl: ($) => (C) => $.OR2([
15026
- { ALT: () => grammar_exports.graphNodePath.impl($)(C, void 0) },
15027
- { ALT: () => $.SUBRULE(reifiedTriple, void 0) }
15029
+ { ALT: () => grammar_exports.graphNodePath.impl($)(C) },
15030
+ { ALT: () => $.SUBRULE(reifiedTriple) }
15028
15031
  ]),
15029
- gImpl: ($) => (ast, C, params) => {
15032
+ gImpl: ($) => (ast, C) => {
15030
15033
  if (C.factory.isTripleCollectionReifiedTriple(ast)) {
15031
- $.SUBRULE(reifiedTriple, ast, void 0);
15034
+ $.SUBRULE(reifiedTriple, ast);
15032
15035
  } else {
15033
- grammar_exports.graphNodePath.gImpl($)(ast, C, params);
15036
+ grammar_exports.graphNodePath.gImpl($)(ast, C);
15034
15037
  }
15035
15038
  }
15036
15039
  };
15037
15040
  var varOrTerm2 = {
15038
15041
  name: "varOrTerm",
15039
15042
  impl: ({ ACTION, SUBRULE, OR, CONSUME }) => (C) => OR([
15040
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_, void 0) },
15041
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
15042
- { ALT: () => SUBRULE(rdfLiteral2, void 0) },
15043
- { ALT: () => SUBRULE(grammar_exports.numericLiteral, void 0) },
15044
- { ALT: () => SUBRULE(grammar_exports.booleanLiteral, void 0) },
15045
- { ALT: () => SUBRULE(grammar_exports.blankNode, void 0) },
15043
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_) },
15044
+ { ALT: () => SUBRULE(grammar_exports.iri) },
15045
+ { ALT: () => SUBRULE(rdfLiteral2) },
15046
+ { ALT: () => SUBRULE(grammar_exports.numericLiteral) },
15047
+ { ALT: () => SUBRULE(grammar_exports.booleanLiteral) },
15048
+ { ALT: () => SUBRULE(grammar_exports.blankNode) },
15046
15049
  { ALT: () => {
15047
15050
  const token = CONSUME(lexer_exports.terminals.nil);
15048
15051
  return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil" /* NIL */));
15049
15052
  } },
15050
- { ALT: () => SUBRULE(tripleTerm, void 0) }
15053
+ { ALT: () => SUBRULE(tripleTerm) }
15051
15054
  ])
15052
15055
  // Generation remains untouched - go through graphTerm
15053
15056
  };
@@ -15055,10 +15058,10 @@ var reifiedTriple = {
15055
15058
  name: "reifiedTriple",
15056
15059
  impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {
15057
15060
  const open = CONSUME(reificationOpen);
15058
- const subject = SUBRULE(reifiedTripleSubject, void 0);
15059
- const predicate = SUBRULE(grammar_exports.verb, void 0);
15060
- const object3 = SUBRULE(reifiedTripleObject, void 0);
15061
- const reifierVal = OPTION(() => SUBRULE(reifier, void 0));
15061
+ const subject = SUBRULE(reifiedTripleSubject);
15062
+ const predicate = SUBRULE(grammar_exports.verb);
15063
+ const object3 = SUBRULE(reifiedTripleObject);
15064
+ const reifierVal = OPTION(() => SUBRULE(reifier));
15062
15065
  const close = CONSUME(reificationClose);
15063
15066
  return ACTION(() => {
15064
15067
  if (reifierVal === void 0 && !C.parseMode.has("canCreateBlankNodes")) {
@@ -15069,35 +15072,35 @@ var reifiedTriple = {
15069
15072
  subject,
15070
15073
  predicate,
15071
15074
  object3,
15072
- reifierVal
15075
+ reifierVal?.val
15073
15076
  );
15074
15077
  });
15075
15078
  },
15076
15079
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
15077
15080
  F3.printFilter(ast, () => PRINT_WORD("<<"));
15078
15081
  const triple = ast.triples[0];
15079
- SUBRULE(graphNodePath2, triple.subject, void 0);
15082
+ SUBRULE(graphNodePath2, triple.subject);
15080
15083
  if (F3.isPathPure(triple.predicate)) {
15081
15084
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
15082
15085
  } else {
15083
- SUBRULE(graphNodePath2, triple.predicate, void 0);
15086
+ SUBRULE(graphNodePath2, triple.predicate);
15084
15087
  }
15085
- SUBRULE(graphNodePath2, triple.object, void 0);
15086
- SUBRULE(annotationPath, [ast.identifier], void 0);
15088
+ SUBRULE(graphNodePath2, triple.object);
15089
+ SUBRULE(annotationPath, [F3.wrap(ast.identifier, ast.identifier.loc)]);
15087
15090
  F3.printFilter(ast, () => PRINT_WORD(">>"));
15088
15091
  }
15089
15092
  };
15090
15093
  var reifiedTripleSubject = {
15091
15094
  name: "reifiedTripleSubject",
15092
15095
  impl: ({ OR, SUBRULE }) => (C) => OR([
15093
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_, void 0) },
15094
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
15095
- { ALT: () => SUBRULE(rdfLiteral2, void 0) },
15096
- { ALT: () => SUBRULE(grammar_exports.numericLiteral, void 0) },
15097
- { ALT: () => SUBRULE(grammar_exports.booleanLiteral, void 0) },
15098
- { ALT: () => SUBRULE(grammar_exports.blankNode, void 0) },
15099
- { ALT: () => SUBRULE(reifiedTriple, void 0) },
15100
- { ALT: () => SUBRULE(tripleTerm, void 0) }
15096
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_) },
15097
+ { ALT: () => SUBRULE(grammar_exports.iri) },
15098
+ { ALT: () => SUBRULE(rdfLiteral2) },
15099
+ { ALT: () => SUBRULE(grammar_exports.numericLiteral) },
15100
+ { ALT: () => SUBRULE(grammar_exports.booleanLiteral) },
15101
+ { ALT: () => SUBRULE(grammar_exports.blankNode) },
15102
+ { ALT: () => SUBRULE(reifiedTriple) },
15103
+ { ALT: () => SUBRULE(tripleTerm) }
15101
15104
  ])
15102
15105
  };
15103
15106
  var reifiedTripleObject = {
@@ -15108,30 +15111,30 @@ var tripleTerm = {
15108
15111
  name: "tripleTerm",
15109
15112
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
15110
15113
  const open = CONSUME(tripleTermOpen);
15111
- const subject = SUBRULE(tripleTermSubject, void 0);
15112
- const predicate = SUBRULE(grammar_exports.verb, void 0);
15113
- const object3 = SUBRULE(tripleTermObject, void 0);
15114
+ const subject = SUBRULE(tripleTermSubject);
15115
+ const predicate = SUBRULE(grammar_exports.verb);
15116
+ const object3 = SUBRULE(tripleTermObject);
15114
15117
  const close = CONSUME(tripleTermClose);
15115
15118
  return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
15116
15119
  },
15117
15120
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F3 }) => {
15118
15121
  F3.printFilter(ast, () => PRINT_WORD("<<("));
15119
- SUBRULE(graphNodePath2, ast.subject, void 0);
15120
- SUBRULE(graphNodePath2, ast.predicate, void 0);
15121
- SUBRULE(graphNodePath2, ast.object, void 0);
15122
+ SUBRULE(graphNodePath2, ast.subject);
15123
+ SUBRULE(graphNodePath2, ast.predicate);
15124
+ SUBRULE(graphNodePath2, ast.object);
15122
15125
  F3.printFilter(ast, () => PRINT_WORD(")>>"));
15123
15126
  }
15124
15127
  };
15125
15128
  var tripleTermSubject = {
15126
15129
  name: "tripleTermSubject",
15127
15130
  impl: ({ SUBRULE, OR }) => (C) => OR([
15128
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_, void 0) },
15129
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
15130
- { ALT: () => SUBRULE(rdfLiteral2, void 0) },
15131
- { ALT: () => SUBRULE(grammar_exports.numericLiteral, void 0) },
15132
- { ALT: () => SUBRULE(grammar_exports.booleanLiteral, void 0) },
15133
- { ALT: () => SUBRULE(grammar_exports.blankNode, void 0) },
15134
- { ALT: () => SUBRULE(tripleTerm, void 0) }
15131
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_) },
15132
+ { ALT: () => SUBRULE(grammar_exports.iri) },
15133
+ { ALT: () => SUBRULE(rdfLiteral2) },
15134
+ { ALT: () => SUBRULE(grammar_exports.numericLiteral) },
15135
+ { ALT: () => SUBRULE(grammar_exports.booleanLiteral) },
15136
+ { ALT: () => SUBRULE(grammar_exports.blankNode) },
15137
+ { ALT: () => SUBRULE(tripleTerm) }
15135
15138
  ])
15136
15139
  };
15137
15140
  var tripleTermObject = {
@@ -15142,15 +15145,15 @@ var tripleTermData = {
15142
15145
  name: "tripleTermData",
15143
15146
  impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {
15144
15147
  const open = CONSUME(tripleTermOpen);
15145
- const subject = SUBRULE(tripleTermDataSubject, void 0);
15148
+ const subject = SUBRULE(tripleTermDataSubject);
15146
15149
  const predicate = OR([
15147
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
15150
+ { ALT: () => SUBRULE(grammar_exports.iri) },
15148
15151
  { ALT: () => {
15149
15152
  const token = CONSUME(lexer_exports.a);
15150
15153
  return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(token), "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" /* TYPE */));
15151
15154
  } }
15152
15155
  ]);
15153
- const object3 = SUBRULE(tripleTermDataObject, void 0);
15156
+ const object3 = SUBRULE(tripleTermDataObject);
15154
15157
  const close = CONSUME(tripleTermClose);
15155
15158
  return ACTION(() => C.factory.termTriple(subject, predicate, object3, C.factory.sourceLocation(open, close)));
15156
15159
  }
@@ -15158,11 +15161,11 @@ var tripleTermData = {
15158
15161
  var tripleTermDataSubject = {
15159
15162
  name: "tripleTermDataSubject",
15160
15163
  impl: ({ OR, SUBRULE }) => () => OR([
15161
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
15162
- { ALT: () => SUBRULE(rdfLiteral2, void 0) },
15163
- { ALT: () => SUBRULE(grammar_exports.numericLiteral, void 0) },
15164
- { ALT: () => SUBRULE(grammar_exports.booleanLiteral, void 0) },
15165
- { ALT: () => SUBRULE(tripleTermData, void 0) }
15164
+ { ALT: () => SUBRULE(grammar_exports.iri) },
15165
+ { ALT: () => SUBRULE(rdfLiteral2) },
15166
+ { ALT: () => SUBRULE(grammar_exports.numericLiteral) },
15167
+ { ALT: () => SUBRULE(grammar_exports.booleanLiteral) },
15168
+ { ALT: () => SUBRULE(tripleTermData) }
15166
15169
  ])
15167
15170
  };
15168
15171
  var tripleTermDataObject = {
@@ -15172,17 +15175,17 @@ var tripleTermDataObject = {
15172
15175
  var primaryExpression2 = {
15173
15176
  name: "primaryExpression",
15174
15177
  impl: ($) => (C) => $.OR2([
15175
- { ALT: () => grammar_exports.primaryExpression.impl($)(C, void 0) },
15176
- { ALT: () => $.SUBRULE(exprTripleTerm, void 0) }
15178
+ { ALT: () => grammar_exports.primaryExpression.impl($)(C) },
15179
+ { ALT: () => $.SUBRULE(exprTripleTerm) }
15177
15180
  ])
15178
15181
  };
15179
15182
  var exprTripleTerm = {
15180
15183
  name: "exprTripleTerm",
15181
15184
  impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
15182
15185
  const open = CONSUME(tripleTermOpen);
15183
- const subject = SUBRULE(exprTripleTermSubject, void 0);
15184
- const predicate = SUBRULE(grammar_exports.verb, void 0);
15185
- const object3 = SUBRULE(exprTripleTermObject, void 0);
15186
+ const subject = SUBRULE(exprTripleTermSubject);
15187
+ const predicate = SUBRULE(grammar_exports.verb);
15188
+ const object3 = SUBRULE(exprTripleTermObject);
15186
15189
  const close = CONSUME(tripleTermClose);
15187
15190
  return ACTION(() => C.factory.termTriple(
15188
15191
  subject,
@@ -15195,12 +15198,12 @@ var exprTripleTerm = {
15195
15198
  var exprTripleTermSubject = {
15196
15199
  name: "exprTripleTermSubject",
15197
15200
  impl: ({ OR, SUBRULE }) => (C) => OR([
15198
- { ALT: () => SUBRULE(grammar_exports.iri, void 0) },
15199
- { ALT: () => SUBRULE(rdfLiteral2, void 0) },
15200
- { ALT: () => SUBRULE(grammar_exports.numericLiteral, void 0) },
15201
- { ALT: () => SUBRULE(grammar_exports.booleanLiteral, void 0) },
15202
- { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_, void 0) },
15203
- { ALT: () => SUBRULE(exprTripleTerm, void 0) }
15201
+ { ALT: () => SUBRULE(grammar_exports.iri) },
15202
+ { ALT: () => SUBRULE(rdfLiteral2) },
15203
+ { ALT: () => SUBRULE(grammar_exports.numericLiteral) },
15204
+ { ALT: () => SUBRULE(grammar_exports.booleanLiteral) },
15205
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(grammar_exports.var_) },
15206
+ { ALT: () => SUBRULE(exprTripleTerm) }
15204
15207
  ])
15205
15208
  };
15206
15209
  var exprTripleTermObject = {
@@ -15219,22 +15222,22 @@ var builtinObject = funcExpr1(builtinOBJECT);
15219
15222
  var builtInCall2 = {
15220
15223
  name: "builtInCall",
15221
15224
  impl: ($) => (C) => $.OR2([
15222
- { ALT: () => grammar_exports.builtInCall.impl($)(C, void 0) },
15223
- { ALT: () => $.SUBRULE(builtinLangDir2, void 0) },
15224
- { ALT: () => $.SUBRULE(builtinLangStrDir, void 0) },
15225
- { ALT: () => $.SUBRULE(builtinHasLang2, void 0) },
15226
- { ALT: () => $.SUBRULE(builtinHasLangDir2, void 0) },
15227
- { ALT: () => $.SUBRULE(builtinIsTriple, void 0) },
15228
- { ALT: () => $.SUBRULE(builtinTriple, void 0) },
15229
- { ALT: () => $.SUBRULE(builtinSubject, void 0) },
15230
- { ALT: () => $.SUBRULE(builtinPredicate, void 0) },
15231
- { ALT: () => $.SUBRULE(builtinObject, void 0) }
15225
+ { ALT: () => grammar_exports.builtInCall.impl($)(C) },
15226
+ { ALT: () => $.SUBRULE(builtinLangDir2) },
15227
+ { ALT: () => $.SUBRULE(builtinLangStrDir) },
15228
+ { ALT: () => $.SUBRULE(builtinHasLang2) },
15229
+ { ALT: () => $.SUBRULE(builtinHasLangDir2) },
15230
+ { ALT: () => $.SUBRULE(builtinIsTriple) },
15231
+ { ALT: () => $.SUBRULE(builtinTriple) },
15232
+ { ALT: () => $.SUBRULE(builtinSubject) },
15233
+ { ALT: () => $.SUBRULE(builtinPredicate) },
15234
+ { ALT: () => $.SUBRULE(builtinObject) }
15232
15235
  ])
15233
15236
  };
15234
15237
  var rdfLiteral2 = {
15235
15238
  name: "rdfLiteral",
15236
15239
  impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {
15237
- const value = SUBRULE(grammar_exports.string, void 0);
15240
+ const value = SUBRULE(grammar_exports.string);
15238
15241
  return OPTION(() => OR([
15239
15242
  { ALT: () => {
15240
15243
  const langTag2 = CONSUME(LANG_DIR);
@@ -15244,13 +15247,13 @@ var rdfLiteral2 = {
15244
15247
  value.value,
15245
15248
  langTag2.image.slice(1).toLowerCase()
15246
15249
  );
15247
- langTagHasCorrectDomain(literal);
15250
+ langTagHasCorrectRange(literal);
15248
15251
  return literal;
15249
15252
  });
15250
15253
  } },
15251
15254
  { ALT: () => {
15252
15255
  CONSUME(lexer_exports.symbols.hathat);
15253
- const iriVal = SUBRULE(grammar_exports.iri, void 0);
15256
+ const iriVal = SUBRULE(grammar_exports.iri);
15254
15257
  return ACTION(() => C.factory.literalTerm(
15255
15258
  C.factory.sourceLocation(value, iriVal),
15256
15259
  value.value,
@@ -15267,17 +15270,17 @@ var generateTriplesBlock = {
15267
15270
  HANDLE_LOC(triple, () => {
15268
15271
  const nextTriple = ast.triples.at(index);
15269
15272
  if (F3.isTripleCollection(triple)) {
15270
- SUBRULE(graphNodePath2, triple, void 0);
15273
+ SUBRULE(graphNodePath2, triple);
15271
15274
  F3.printFilter(triple, () => PRINT_WORD("."));
15272
15275
  } else {
15273
- SUBRULE(graphNodePath2, triple.subject, void 0);
15276
+ SUBRULE(graphNodePath2, triple.subject);
15274
15277
  if (F3.isPathPure(triple.predicate)) {
15275
15278
  SUBRULE(grammar_exports.pathGenerator, triple.predicate, void 0);
15276
15279
  } else {
15277
- SUBRULE(graphNodePath2, triple.predicate, void 0);
15280
+ SUBRULE(graphNodePath2, triple.predicate);
15278
15281
  }
15279
- SUBRULE(graphNodePath2, triple.object, void 0);
15280
- SUBRULE(annotationPath, triple.annotations ?? [], void 0);
15282
+ SUBRULE(graphNodePath2, triple.object);
15283
+ SUBRULE(annotationPath, triple.annotations ?? []);
15281
15284
  if (nextTriple === void 0 || F3.isTripleCollection(nextTriple) || !F3.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {
15282
15285
  F3.printFilter(ast, () => PRINT_WORD("."));
15283
15286
  } else if (F3.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {
@@ -15292,11 +15295,11 @@ var generateTriplesBlock = {
15292
15295
  };
15293
15296
  var generateGraphTerm = {
15294
15297
  name: "graphTerm",
15295
- gImpl: ($) => (ast, C, par) => {
15298
+ gImpl: ($) => (ast, C) => {
15296
15299
  if (C.factory.isTermTriple(ast)) {
15297
- $.SUBRULE(tripleTerm, ast, void 0);
15300
+ $.SUBRULE(tripleTerm, ast);
15298
15301
  } else {
15299
- grammar_exports.graphTerm.gImpl($)(ast, C, par);
15302
+ grammar_exports.graphTerm.gImpl($)(ast, C);
15300
15303
  }
15301
15304
  }
15302
15305
  };
@@ -15379,9 +15382,9 @@ var queryOrUpdate2 = {
15379
15382
  name: "queryOrUpdate",
15380
15383
  gImpl: ({ SUBRULE }) => (ast, { factory: F3 }) => {
15381
15384
  if (F3.isQuery(ast)) {
15382
- SUBRULE(grammar_exports.query, ast, void 0);
15385
+ SUBRULE(grammar_exports.query, ast);
15383
15386
  } else {
15384
- SUBRULE(grammar_exports.update, ast, void 0);
15387
+ SUBRULE(grammar_exports.update, ast);
15385
15388
  }
15386
15389
  }
15387
15390
  };
@@ -15396,7 +15399,7 @@ var Generator = class {
15396
15399
  factory: this.F,
15397
15400
  offset: 0,
15398
15401
  origSource
15399
- }, void 0);
15402
+ });
15400
15403
  }
15401
15404
  generatePath(ast, origSource = "") {
15402
15405
  return this.generator.path(ast, {