@traqula/rules-sparql-1-1 0.0.22 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/cjs/lib/MinimalSparqlParser.js +35 -58
  2. package/dist/cjs/lib/MinimalSparqlParser.js.map +1 -0
  3. package/dist/cjs/lib/Sparql11types.js +2 -15
  4. package/dist/cjs/lib/Sparql11types.js.map +1 -0
  5. package/dist/cjs/lib/astFactory.js +107 -119
  6. package/dist/cjs/lib/astFactory.js.map +1 -0
  7. package/dist/cjs/lib/expressionHelpers.js +181 -191
  8. package/dist/cjs/lib/expressionHelpers.js.map +1 -0
  9. package/dist/cjs/lib/factoryMixins/ContextFactory.js +30 -52
  10. package/dist/cjs/lib/factoryMixins/ContextFactory.js.map +1 -0
  11. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js +83 -102
  12. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  13. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js +51 -73
  14. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  15. package/dist/cjs/lib/factoryMixins/PathFactory.js +68 -87
  16. package/dist/cjs/lib/factoryMixins/PathFactory.js.map +1 -0
  17. package/dist/cjs/lib/factoryMixins/Patternfactory.js +98 -120
  18. package/dist/cjs/lib/factoryMixins/Patternfactory.js.map +1 -0
  19. package/dist/cjs/lib/factoryMixins/QueryFactory.js +43 -65
  20. package/dist/cjs/lib/factoryMixins/QueryFactory.js.map +1 -0
  21. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js +55 -77
  22. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  23. package/dist/cjs/lib/factoryMixins/TermFactory.js +81 -102
  24. package/dist/cjs/lib/factoryMixins/TermFactory.js.map +1 -0
  25. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js +126 -147
  26. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  27. package/dist/cjs/lib/factoryMixins/mixins.js +21 -38
  28. package/dist/cjs/lib/factoryMixins/mixins.js.map +1 -0
  29. package/dist/cjs/lib/grammar/builtIn.js +277 -377
  30. package/dist/cjs/lib/grammar/builtIn.js.map +1 -0
  31. package/dist/cjs/lib/grammar/dataSetClause.js +110 -109
  32. package/dist/cjs/lib/grammar/dataSetClause.js.map +1 -0
  33. package/dist/cjs/lib/grammar/expression.js +387 -358
  34. package/dist/cjs/lib/grammar/expression.js.map +1 -0
  35. package/dist/cjs/lib/grammar/general.js +173 -158
  36. package/dist/cjs/lib/grammar/general.js.map +1 -0
  37. package/dist/cjs/lib/grammar/index.js +94 -111
  38. package/dist/cjs/lib/grammar/index.js.map +1 -0
  39. package/dist/cjs/lib/grammar/literals.js +282 -266
  40. package/dist/cjs/lib/grammar/literals.js.map +1 -0
  41. package/dist/cjs/lib/grammar/propertyPaths.js +206 -193
  42. package/dist/cjs/lib/grammar/propertyPaths.js.map +1 -0
  43. package/dist/cjs/lib/grammar/queryUnit.js +395 -372
  44. package/dist/cjs/lib/grammar/queryUnit.js.map +1 -0
  45. package/dist/cjs/lib/grammar/solutionModifier.js +281 -265
  46. package/dist/cjs/lib/grammar/solutionModifier.js.map +1 -0
  47. package/dist/cjs/lib/grammar/tripleBlock.js +390 -355
  48. package/dist/cjs/lib/grammar/tripleBlock.js.map +1 -0
  49. package/dist/cjs/lib/grammar/updateUnit.js +551 -519
  50. package/dist/cjs/lib/grammar/updateUnit.js.map +1 -0
  51. package/dist/cjs/lib/grammar/whereClause.js +486 -459
  52. package/dist/cjs/lib/grammar/whereClause.js.map +1 -0
  53. package/dist/cjs/lib/index.js +47 -54
  54. package/dist/cjs/lib/index.js.map +1 -0
  55. package/dist/cjs/lib/lexer/BuiltInCalls.js +188 -333
  56. package/dist/cjs/lib/lexer/BuiltInCalls.js.map +1 -0
  57. package/dist/cjs/lib/lexer/graph.js +10 -40
  58. package/dist/cjs/lib/lexer/graph.js.map +1 -0
  59. package/dist/cjs/lib/lexer/index.js +43 -48
  60. package/dist/cjs/lib/lexer/index.js.map +1 -0
  61. package/dist/cjs/lib/lexer/lexer.js +84 -195
  62. package/dist/cjs/lib/lexer/lexer.js.map +1 -0
  63. package/dist/cjs/lib/lexer/lexerPatterns.js +40 -132
  64. package/dist/cjs/lib/lexer/lexerPatterns.js.map +1 -0
  65. package/dist/cjs/lib/lexer/symbols.js +31 -106
  66. package/dist/cjs/lib/lexer/symbols.js.map +1 -0
  67. package/dist/cjs/lib/lexer/terminals.js +100 -102
  68. package/dist/cjs/lib/lexer/terminals.js.map +1 -0
  69. package/dist/cjs/lib/sparql11HelperTypes.js +2 -15
  70. package/dist/cjs/lib/sparql11HelperTypes.js.map +1 -0
  71. package/dist/cjs/lib/utils.js +40 -58
  72. package/dist/cjs/lib/utils.js.map +1 -0
  73. package/dist/cjs/lib/validation/validators.js +197 -186
  74. package/dist/cjs/lib/validation/validators.js.map +1 -0
  75. package/dist/cjs/package.json +1 -0
  76. package/package.json +10 -9
@@ -1,483 +1,510 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var whereClause_exports = {};
30
- __export(whereClause_exports, {
31
- bind: () => bind,
32
- constraint: () => constraint,
33
- dataBlock: () => dataBlock,
34
- dataBlockValue: () => dataBlockValue,
35
- filter: () => filter,
36
- functionCall: () => functionCall,
37
- generatePattern: () => generatePattern,
38
- graphGraphPattern: () => graphGraphPattern,
39
- graphPatternNotTriples: () => graphPatternNotTriples,
40
- groupGraphPattern: () => groupGraphPattern,
41
- groupGraphPatternSub: () => groupGraphPatternSub,
42
- groupOrUnionGraphPattern: () => groupOrUnionGraphPattern,
43
- inlineData: () => inlineData,
44
- inlineDataFull: () => inlineDataFull,
45
- inlineDataOneVar: () => inlineDataOneVar,
46
- minusGraphPattern: () => minusGraphPattern,
47
- optionalGraphPattern: () => optionalGraphPattern,
48
- serviceGraphPattern: () => serviceGraphPattern,
49
- whereClause: () => whereClause
50
- });
51
- module.exports = __toCommonJS(whereClause_exports);
52
- var import_core = require("@traqula/core");
53
- var l = __toESM(require("../lexer/index.js"), 1);
54
- var import_validators = require("../validation/validators.js");
55
- var import_builtIn = require("./builtIn.js");
56
- var import_expression = require("./expression.js");
57
- var import_general = require("./general.js");
58
- var import_literals = require("./literals.js");
59
- var import_queryUnit = require("./queryUnit.js");
60
- var import_tripleBlock = require("./tripleBlock.js");
61
- const whereClause = {
62
- name: "whereClause",
63
- impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
64
- const where = OPTION(() => CONSUME(l.where));
65
- const group = SUBRULE(groupGraphPattern);
66
- return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where, group)));
67
- },
68
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
69
- F.printFilter(ast, () => PRINT_WORD("WHERE"));
70
- SUBRULE(groupGraphPattern, ast.val);
71
- }
72
- };
73
- const groupGraphPattern = {
74
- name: "groupGraphPattern",
75
- impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
76
- const open = CONSUME(l.symbols.LCurly);
77
- const patterns = OR([
78
- { ALT: () => [SUBRULE(import_queryUnit.subSelect)] },
79
- { ALT: () => SUBRULE(groupGraphPatternSub) }
80
- ]);
81
- const close = CONSUME(l.symbols.RCurly);
82
- return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));
83
- },
84
- gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {
85
- const { astFactory: F, indentInc } = C;
86
- F.printFilter(ast, () => {
87
- C[import_core.traqulaIndentation] += indentInc;
88
- PRINT_WORD("{");
89
- NEW_LINE();
90
- });
91
- for (const pattern of ast.patterns) {
92
- SUBRULE(generatePattern, pattern);
93
- }
94
- F.printFilter(ast, () => {
95
- C[import_core.traqulaIndentation] -= indentInc;
96
- PRINT_ON_OWN_LINE("}");
97
- });
98
- }
99
- };
100
- const generatePattern = {
101
- name: "generatePattern",
102
- gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
103
- if (ast.type === "query") {
104
- SUBRULE(import_queryUnit.query, F.querySelect({
105
- context: [],
106
- datasets: F.datasetClauses([], F.sourceLocation()),
107
- where: ast.where,
108
- variables: ast.variables,
109
- solutionModifiers: ast.solutionModifiers,
110
- values: ast.values,
111
- distinct: ast.distinct,
112
- reduced: ast.reduced
113
- }, ast.loc));
114
- } else if (ast.subType === "group") {
115
- SUBRULE(groupGraphPattern, ast);
116
- } else if (ast.subType === "bgp") {
117
- SUBRULE(import_tripleBlock.triplesBlock, ast);
118
- } else {
119
- SUBRULE(graphPatternNotTriples, ast);
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
120
7
  }
121
- }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.functionCall = exports.constraint = exports.filter = exports.groupOrUnionGraphPattern = exports.minusGraphPattern = exports.dataBlockValue = exports.inlineDataFull = exports.inlineDataOneVar = exports.dataBlock = exports.inlineData = exports.bind = exports.serviceGraphPattern = exports.graphGraphPattern = exports.optionalGraphPattern = exports.graphPatternNotTriples = exports.groupGraphPatternSub = exports.generatePattern = exports.groupGraphPattern = exports.whereClause = void 0;
37
+ const core_1 = require("@traqula/core");
38
+ const l = __importStar(require("../lexer/index.js"));
39
+ const validators_js_1 = require("../validation/validators.js");
40
+ const builtIn_js_1 = require("./builtIn.js");
41
+ const expression_js_1 = require("./expression.js");
42
+ const general_js_1 = require("./general.js");
43
+ const literals_js_1 = require("./literals.js");
44
+ const queryUnit_js_1 = require("./queryUnit.js");
45
+ const tripleBlock_js_1 = require("./tripleBlock.js");
46
+ /**
47
+ * [[17]](https://www.w3.org/TR/sparql11-query/#rWhereClause)
48
+ */
49
+ exports.whereClause = {
50
+ name: 'whereClause',
51
+ impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {
52
+ const where = OPTION(() => CONSUME(l.where));
53
+ const group = SUBRULE(exports.groupGraphPattern);
54
+ return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where, group)));
55
+ },
56
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
57
+ F.printFilter(ast, () => PRINT_WORD('WHERE'));
58
+ SUBRULE(exports.groupGraphPattern, ast.val);
59
+ },
122
60
  };
123
- const groupGraphPatternSub = {
124
- name: "groupGraphPatternSub",
125
- impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
126
- const patterns = [];
127
- const bgpPattern = OPTION1(() => SUBRULE1(import_tripleBlock.triplesBlock));
128
- if (bgpPattern) {
129
- patterns.push(bgpPattern);
130
- }
131
- MANY(() => {
132
- const notTriples = SUBRULE(graphPatternNotTriples);
133
- patterns.push(notTriples);
134
- OPTION2(() => CONSUME(l.symbols.dot));
135
- const moreTriples = OPTION3(() => SUBRULE2(import_tripleBlock.triplesBlock));
136
- if (moreTriples) {
137
- patterns.push(moreTriples);
138
- }
139
- });
140
- ACTION(() => (0, import_validators.checkNote13)(patterns));
141
- return patterns;
142
- }
61
+ /**
62
+ * [[53]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPattern)
63
+ */
64
+ exports.groupGraphPattern = {
65
+ name: 'groupGraphPattern',
66
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {
67
+ const open = CONSUME(l.symbols.LCurly);
68
+ const patterns = OR([
69
+ { ALT: () => [SUBRULE(queryUnit_js_1.subSelect)] },
70
+ { ALT: () => SUBRULE(exports.groupGraphPatternSub) },
71
+ ]);
72
+ const close = CONSUME(l.symbols.RCurly);
73
+ return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));
74
+ },
75
+ gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {
76
+ const { astFactory: F, indentInc } = C;
77
+ F.printFilter(ast, () => {
78
+ C[core_1.traqulaIndentation] += indentInc;
79
+ PRINT_WORD('{');
80
+ NEW_LINE();
81
+ });
82
+ for (const pattern of ast.patterns) {
83
+ SUBRULE(exports.generatePattern, pattern);
84
+ }
85
+ F.printFilter(ast, () => {
86
+ C[core_1.traqulaIndentation] -= indentInc;
87
+ PRINT_ON_OWN_LINE('}');
88
+ });
89
+ },
143
90
  };
144
- const graphPatternNotTriples = {
145
- name: "graphPatternNotTriples",
146
- impl: ({ SUBRULE, OR }) => () => OR([
147
- { ALT: () => SUBRULE(groupOrUnionGraphPattern) },
148
- { ALT: () => SUBRULE(optionalGraphPattern) },
149
- { ALT: () => SUBRULE(minusGraphPattern) },
150
- { ALT: () => SUBRULE(graphGraphPattern) },
151
- { ALT: () => SUBRULE(serviceGraphPattern) },
152
- { ALT: () => SUBRULE(filter) },
153
- { ALT: () => SUBRULE(bind) },
154
- { ALT: () => SUBRULE(inlineData) }
155
- ]),
156
- gImpl: ({ SUBRULE }) => (ast) => {
157
- switch (ast.subType) {
158
- case "group":
159
- case "union":
160
- SUBRULE(groupOrUnionGraphPattern, ast);
161
- break;
162
- case "optional":
163
- SUBRULE(optionalGraphPattern, ast);
164
- break;
165
- case "minus":
166
- SUBRULE(minusGraphPattern, ast);
167
- break;
168
- case "graph":
169
- SUBRULE(graphGraphPattern, ast);
170
- break;
171
- case "service":
172
- SUBRULE(serviceGraphPattern, ast);
173
- break;
174
- case "filter":
175
- SUBRULE(filter, ast);
176
- break;
177
- case "bind":
178
- SUBRULE(bind, ast);
179
- break;
180
- case "values":
181
- SUBRULE(inlineData, ast);
182
- break;
183
- }
184
- }
91
+ exports.generatePattern = {
92
+ name: 'generatePattern',
93
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
94
+ if (ast.type === 'query') {
95
+ SUBRULE(queryUnit_js_1.query, F.querySelect({
96
+ context: [],
97
+ datasets: F.datasetClauses([], F.sourceLocation()),
98
+ where: ast.where,
99
+ variables: ast.variables,
100
+ solutionModifiers: ast.solutionModifiers,
101
+ values: ast.values,
102
+ distinct: ast.distinct,
103
+ reduced: ast.reduced,
104
+ }, ast.loc));
105
+ }
106
+ else if (ast.subType === 'group') {
107
+ SUBRULE(exports.groupGraphPattern, ast);
108
+ }
109
+ else if (ast.subType === 'bgp') {
110
+ SUBRULE(tripleBlock_js_1.triplesBlock, ast);
111
+ }
112
+ else {
113
+ SUBRULE(exports.graphPatternNotTriples, ast);
114
+ }
115
+ },
185
116
  };
186
- const optionalGraphPattern = {
187
- name: "optionalGraphPattern",
188
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
189
- const optional = CONSUME(l.optional);
190
- const group = SUBRULE(groupGraphPattern);
191
- return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional, group)));
192
- },
193
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
194
- F.printFilter(ast, () => PRINT_WORD("OPTIONAL"));
195
- SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
196
- }
117
+ /**
118
+ * [[54]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPatternSub)
119
+ */
120
+ exports.groupGraphPatternSub = {
121
+ name: 'groupGraphPatternSub',
122
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {
123
+ const patterns = [];
124
+ const bgpPattern = OPTION1(() => SUBRULE1(tripleBlock_js_1.triplesBlock));
125
+ if (bgpPattern) {
126
+ patterns.push(bgpPattern);
127
+ }
128
+ MANY(() => {
129
+ const notTriples = SUBRULE(exports.graphPatternNotTriples);
130
+ patterns.push(notTriples);
131
+ OPTION2(() => CONSUME(l.symbols.dot));
132
+ const moreTriples = OPTION3(() => SUBRULE2(tripleBlock_js_1.triplesBlock));
133
+ if (moreTriples) {
134
+ patterns.push(moreTriples);
135
+ }
136
+ });
137
+ ACTION(() => (0, validators_js_1.checkNote13)(patterns));
138
+ return patterns;
139
+ },
197
140
  };
198
- const graphGraphPattern = {
199
- name: "graphGraphPattern",
200
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
201
- const graph = CONSUME(l.graph.graph);
202
- const name = SUBRULE(import_general.varOrIri);
203
- const group = SUBRULE(groupGraphPattern);
204
- return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph, group)));
205
- },
206
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
207
- F.printFilter(ast, () => PRINT_WORD("GRAPH"));
208
- SUBRULE(import_general.varOrTerm, ast.name);
209
- SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
210
- }
141
+ /**
142
+ * [[56]](https://www.w3.org/TR/sparql11-query/#rGraphPatternNotTriples)
143
+ */
144
+ exports.graphPatternNotTriples = {
145
+ name: 'graphPatternNotTriples',
146
+ impl: ({ SUBRULE, OR }) => () => OR([
147
+ { ALT: () => SUBRULE(exports.groupOrUnionGraphPattern) },
148
+ { ALT: () => SUBRULE(exports.optionalGraphPattern) },
149
+ { ALT: () => SUBRULE(exports.minusGraphPattern) },
150
+ { ALT: () => SUBRULE(exports.graphGraphPattern) },
151
+ { ALT: () => SUBRULE(exports.serviceGraphPattern) },
152
+ { ALT: () => SUBRULE(exports.filter) },
153
+ { ALT: () => SUBRULE(exports.bind) },
154
+ { ALT: () => SUBRULE(exports.inlineData) },
155
+ ]),
156
+ gImpl: ({ SUBRULE }) => (ast) => {
157
+ switch (ast.subType) {
158
+ case 'group':
159
+ case 'union':
160
+ SUBRULE(exports.groupOrUnionGraphPattern, ast);
161
+ break;
162
+ case 'optional':
163
+ SUBRULE(exports.optionalGraphPattern, ast);
164
+ break;
165
+ case 'minus':
166
+ SUBRULE(exports.minusGraphPattern, ast);
167
+ break;
168
+ case 'graph':
169
+ SUBRULE(exports.graphGraphPattern, ast);
170
+ break;
171
+ case 'service':
172
+ SUBRULE(exports.serviceGraphPattern, ast);
173
+ break;
174
+ case 'filter':
175
+ SUBRULE(exports.filter, ast);
176
+ break;
177
+ case 'bind':
178
+ SUBRULE(exports.bind, ast);
179
+ break;
180
+ case 'values':
181
+ SUBRULE(exports.inlineData, ast);
182
+ break;
183
+ }
184
+ },
211
185
  };
212
- const serviceGraphPattern = {
213
- name: "serviceGraphPattern",
214
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
215
- const service = CONSUME(l.service);
216
- const silent = OPTION(() => {
217
- CONSUME(l.silent);
218
- return true;
219
- }) ?? false;
220
- const name = SUBRULE1(import_general.varOrIri);
221
- const group = SUBRULE1(groupGraphPattern);
222
- return ACTION(() => C.astFactory.patternService(name, group.patterns, silent, C.astFactory.sourceLocation(service, group)));
223
- },
224
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
225
- F.printFilter(ast, () => {
226
- PRINT_WORD("SERVICE");
227
- if (ast.silent) {
228
- PRINT_WORD("SILENT");
229
- }
230
- });
231
- SUBRULE(import_general.varOrTerm, ast.name);
232
- SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
233
- }
186
+ /**
187
+ * [[57]](https://www.w3.org/TR/sparql11-query/#rOptionalGraphPattern)
188
+ */
189
+ exports.optionalGraphPattern = {
190
+ name: 'optionalGraphPattern',
191
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
192
+ const optional = CONSUME(l.optional);
193
+ const group = SUBRULE(exports.groupGraphPattern);
194
+ return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional, group)));
195
+ },
196
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
197
+ F.printFilter(ast, () => PRINT_WORD('OPTIONAL'));
198
+ SUBRULE(exports.groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
199
+ },
234
200
  };
235
- const bind = {
236
- name: "bind",
237
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
238
- const bind2 = CONSUME(l.bind);
239
- CONSUME(l.symbols.LParen);
240
- const expressionVal = SUBRULE(import_expression.expression);
241
- CONSUME(l.as);
242
- const variable = SUBRULE(import_general.var_);
243
- const close = CONSUME(l.symbols.RParen);
244
- return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind2, close)));
245
- },
246
- gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {
247
- F.printFilter(ast, () => PRINT_WORD("BIND", "("));
248
- SUBRULE(import_expression.expression, ast.expression);
249
- F.printFilter(ast, () => PRINT_WORD("AS"));
250
- SUBRULE(import_general.var_, ast.variable);
251
- F.printFilter(ast, () => {
252
- PRINT_WORD(")");
253
- NEW_LINE();
254
- });
255
- }
201
+ /**
202
+ * [[58]](https://www.w3.org/TR/sparql11-query/#rGraphGraphPattern)
203
+ */
204
+ exports.graphGraphPattern = {
205
+ name: 'graphGraphPattern',
206
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
207
+ const graph = CONSUME(l.graph.graph);
208
+ const name = SUBRULE(general_js_1.varOrIri);
209
+ const group = SUBRULE(exports.groupGraphPattern);
210
+ return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph, group)));
211
+ },
212
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
213
+ F.printFilter(ast, () => PRINT_WORD('GRAPH'));
214
+ SUBRULE(general_js_1.varOrTerm, ast.name);
215
+ SUBRULE(exports.groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
216
+ },
256
217
  };
257
- const inlineData = {
258
- name: "inlineData",
259
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
260
- const values = CONSUME(l.values);
261
- const datablock = SUBRULE(dataBlock);
262
- return ACTION(() => {
263
- datablock.loc = C.astFactory.sourceLocation(values, datablock);
264
- return datablock;
265
- });
266
- },
267
- gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {
268
- const { astFactory: F, indentInc } = C;
269
- const variables = ast.variables;
270
- const singleVar = variables.length === 1;
271
- F.printFilter(ast, () => {
272
- PRINT_ON_EMPTY("VALUES", singleVar ? "" : "( ");
273
- });
274
- for (const variable of variables) {
275
- F.printFilter(ast, () => PRINT_WORD(""));
276
- SUBRULE(import_general.varOrTerm, variable);
277
- F.printFilter(ast, () => PRINT_WORD(""));
278
- }
279
- F.printFilter(ast, () => {
280
- C[import_core.traqulaIndentation] += indentInc;
281
- PRINT_WORD(singleVar ? "" : ")", "{");
282
- NEW_LINE();
283
- });
284
- for (const mapping of ast.values) {
285
- F.printFilter(ast, () => !singleVar && PRINT_WORD("("));
286
- for (const variable of variables) {
287
- const var_2 = variable.value;
288
- if (mapping[var_2] === void 0) {
289
- F.printFilter(ast, () => PRINT_WORD("UNDEF"));
290
- } else {
291
- SUBRULE(import_tripleBlock.graphNodePath, mapping[var_2]);
292
- }
293
- }
294
- F.printFilter(ast, () => {
295
- PRINT_WORD(singleVar ? "" : ")");
296
- NEW_LINE();
297
- });
298
- }
299
- F.printFilter(ast, () => {
300
- C[import_core.traqulaIndentation] -= indentInc;
301
- PRINT_ON_OWN_LINE("}");
302
- });
303
- }
304
- };
305
- const dataBlock = {
306
- name: "dataBlock",
307
- impl: ({ SUBRULE, OR }) => () => OR([
308
- { ALT: () => SUBRULE(inlineDataOneVar) },
309
- { ALT: () => SUBRULE(inlineDataFull) }
310
- ])
218
+ /**
219
+ * [[59]](https://www.w3.org/TR/sparql11-query/#rServiceGraphPattern)
220
+ */
221
+ exports.serviceGraphPattern = {
222
+ name: 'serviceGraphPattern',
223
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
224
+ const service = CONSUME(l.service);
225
+ const silent = OPTION(() => {
226
+ CONSUME(l.silent);
227
+ return true;
228
+ }) ?? false;
229
+ const name = SUBRULE1(general_js_1.varOrIri);
230
+ const group = SUBRULE1(exports.groupGraphPattern);
231
+ return ACTION(() => C.astFactory.patternService(name, group.patterns, silent, C.astFactory.sourceLocation(service, group)));
232
+ },
233
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
234
+ F.printFilter(ast, () => {
235
+ PRINT_WORD('SERVICE');
236
+ if (ast.silent) {
237
+ PRINT_WORD('SILENT');
238
+ }
239
+ });
240
+ SUBRULE(general_js_1.varOrTerm, ast.name);
241
+ SUBRULE(exports.groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
242
+ },
311
243
  };
312
- const inlineDataOneVar = {
313
- name: "inlineDataOneVar",
314
- impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
315
- const res = [];
316
- const varVal = SUBRULE(import_general.var_);
317
- CONSUME(l.symbols.LCurly);
318
- MANY(() => {
319
- const value = SUBRULE(dataBlockValue);
320
- ACTION(() => {
321
- res.push({ [varVal.value]: value });
322
- });
323
- });
324
- const close = CONSUME(l.symbols.RCurly);
325
- return ACTION(() => C.astFactory.patternValues([varVal], res, C.astFactory.sourceLocation(varVal, close)));
326
- }
244
+ /**
245
+ * [[60]](https://www.w3.org/TR/sparql11-query/#rBind)
246
+ */
247
+ exports.bind = {
248
+ name: 'bind',
249
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
250
+ const bind = CONSUME(l.bind);
251
+ CONSUME(l.symbols.LParen);
252
+ const expressionVal = SUBRULE(expression_js_1.expression);
253
+ CONSUME(l.as);
254
+ const variable = SUBRULE(general_js_1.var_);
255
+ const close = CONSUME(l.symbols.RParen);
256
+ return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind, close)));
257
+ },
258
+ gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {
259
+ F.printFilter(ast, () => PRINT_WORD('BIND', '('));
260
+ SUBRULE(expression_js_1.expression, ast.expression);
261
+ F.printFilter(ast, () => PRINT_WORD('AS'));
262
+ SUBRULE(general_js_1.var_, ast.variable);
263
+ F.printFilter(ast, () => {
264
+ PRINT_WORD(')');
265
+ NEW_LINE();
266
+ });
267
+ },
327
268
  };
328
- const inlineDataFull = {
329
- name: "inlineDataFull",
330
- impl: ({ ACTION, OR, MANY1, MANY2, MANY3, MANY4, SUBRULE, CONSUME1, CONSUME2 }) => (C) => {
331
- const res = [];
332
- const vars = [];
333
- return OR([
334
- { ALT: () => {
335
- const nil = CONSUME1(l.terminals.nil);
336
- CONSUME1(l.symbols.LCurly);
337
- MANY1(() => {
338
- CONSUME2(l.terminals.nil);
339
- res.push({});
269
+ /**
270
+ * [[61]](https://www.w3.org/TR/sparql11-query/#rInlineData)
271
+ */
272
+ exports.inlineData = {
273
+ name: 'inlineData',
274
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
275
+ const values = CONSUME(l.values);
276
+ const datablock = SUBRULE(exports.dataBlock);
277
+ return ACTION(() => {
278
+ datablock.loc = C.astFactory.sourceLocation(values, datablock);
279
+ return datablock;
340
280
  });
341
- const close = CONSUME1(l.symbols.RCurly);
342
- return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(nil, close)));
343
- } },
344
- { ALT: () => {
345
- const open = CONSUME1(l.symbols.LParen);
346
- MANY2(() => {
347
- vars.push(SUBRULE(import_general.var_));
281
+ },
282
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {
283
+ const { astFactory: F, indentInc } = C;
284
+ const variables = ast.variables;
285
+ const singleVar = variables.length === 1;
286
+ F.printFilter(ast, () => {
287
+ PRINT_ON_EMPTY('VALUES', singleVar ? '' : '( ');
348
288
  });
349
- CONSUME1(l.symbols.RParen);
350
- CONSUME2(l.symbols.LCurly);
351
- MANY3(() => {
352
- let parsedValues = 0;
353
- const currentRow = {};
354
- CONSUME2(l.symbols.LParen);
355
- MANY4(() => {
356
- if (parsedValues >= vars.length) {
357
- throw new Error("Number of dataBlockValues does not match number of variables. Too much values.");
289
+ for (const variable of variables) {
290
+ F.printFilter(ast, () => PRINT_WORD(''));
291
+ SUBRULE(general_js_1.varOrTerm, variable);
292
+ F.printFilter(ast, () => PRINT_WORD(''));
293
+ }
294
+ F.printFilter(ast, () => {
295
+ C[core_1.traqulaIndentation] += indentInc;
296
+ PRINT_WORD(singleVar ? '' : ')', '{');
297
+ NEW_LINE();
298
+ });
299
+ for (const mapping of ast.values) {
300
+ F.printFilter(ast, () => !singleVar && PRINT_WORD('('));
301
+ for (const variable of variables) {
302
+ const var_ = variable.value;
303
+ if (mapping[var_] === undefined) {
304
+ F.printFilter(ast, () => PRINT_WORD('UNDEF'));
305
+ }
306
+ else {
307
+ SUBRULE(tripleBlock_js_1.graphNodePath, mapping[var_]);
308
+ }
358
309
  }
359
- const value = SUBRULE(dataBlockValue);
310
+ F.printFilter(ast, () => {
311
+ PRINT_WORD(singleVar ? '' : ')');
312
+ NEW_LINE();
313
+ });
314
+ }
315
+ F.printFilter(ast, () => {
316
+ C[core_1.traqulaIndentation] -= indentInc;
317
+ PRINT_ON_OWN_LINE('}');
318
+ });
319
+ },
320
+ };
321
+ /**
322
+ * [[62]](https://www.w3.org/TR/sparql11-query/#rDataBlock)
323
+ */
324
+ exports.dataBlock = {
325
+ name: 'dataBlock',
326
+ impl: ({ SUBRULE, OR }) => () => OR([
327
+ { ALT: () => SUBRULE(exports.inlineDataOneVar) },
328
+ { ALT: () => SUBRULE(exports.inlineDataFull) },
329
+ ]),
330
+ };
331
+ /**
332
+ * [[63]](https://www.w3.org/TR/sparql11-query/#rInlineDataOneVar)
333
+ */
334
+ exports.inlineDataOneVar = {
335
+ name: 'inlineDataOneVar',
336
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {
337
+ const res = [];
338
+ const varVal = SUBRULE(general_js_1.var_);
339
+ CONSUME(l.symbols.LCurly);
340
+ MANY(() => {
341
+ const value = SUBRULE(exports.dataBlockValue);
360
342
  ACTION(() => {
361
- currentRow[vars[parsedValues].value] = value;
362
- parsedValues++;
343
+ res.push({ [varVal.value]: value });
363
344
  });
364
- });
365
- CONSUME2(l.symbols.RParen);
366
- ACTION(() => {
367
- res.push(currentRow);
368
- if (vars.length !== parsedValues) {
369
- throw new Error("Number of dataBlockValues does not match number of variables. Too few values.");
370
- }
371
- });
372
345
  });
373
- const close = CONSUME2(l.symbols.RCurly);
374
- return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(open, close)));
375
- } }
376
- ]);
377
- }
346
+ const close = CONSUME(l.symbols.RCurly);
347
+ return ACTION(() => C.astFactory.patternValues([varVal], res, C.astFactory.sourceLocation(varVal, close)));
348
+ },
378
349
  };
379
- const dataBlockValue = {
380
- name: "dataBlockValue",
381
- impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
382
- { ALT: () => SUBRULE(import_literals.iri) },
383
- { ALT: () => SUBRULE(import_literals.rdfLiteral) },
384
- { ALT: () => SUBRULE(import_literals.numericLiteral) },
385
- { ALT: () => SUBRULE(import_literals.booleanLiteral) },
386
- { ALT: () => {
387
- CONSUME(l.undef);
388
- return void 0;
389
- } }
390
- ])
350
+ /**
351
+ * [[64]](https://www.w3.org/TR/sparql11-query/#rInlineDataFull)
352
+ */
353
+ exports.inlineDataFull = {
354
+ name: 'inlineDataFull',
355
+ impl: ({ ACTION, OR, MANY1, MANY2, MANY3, MANY4, SUBRULE, CONSUME1, CONSUME2, }) => (C) => {
356
+ const res = [];
357
+ const vars = [];
358
+ return OR([
359
+ { ALT: () => {
360
+ // Grammar rule 64 together with note 11 learns us that a nil should be followed by a nil in DataBlock.
361
+ const nil = CONSUME1(l.terminals.nil);
362
+ CONSUME1(l.symbols.LCurly);
363
+ MANY1(() => {
364
+ CONSUME2(l.terminals.nil);
365
+ res.push({});
366
+ });
367
+ const close = CONSUME1(l.symbols.RCurly);
368
+ return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(nil, close)));
369
+ } },
370
+ { ALT: () => {
371
+ const open = CONSUME1(l.symbols.LParen);
372
+ MANY2(() => {
373
+ vars.push(SUBRULE(general_js_1.var_));
374
+ });
375
+ CONSUME1(l.symbols.RParen);
376
+ CONSUME2(l.symbols.LCurly);
377
+ MANY3(() => {
378
+ let parsedValues = 0;
379
+ const currentRow = {};
380
+ CONSUME2(l.symbols.LParen);
381
+ MANY4(() => {
382
+ if (parsedValues >= vars.length) {
383
+ throw new Error('Number of dataBlockValues does not match number of variables. Too much values.');
384
+ }
385
+ const value = SUBRULE(exports.dataBlockValue);
386
+ ACTION(() => {
387
+ currentRow[vars[parsedValues].value] = value;
388
+ parsedValues++;
389
+ });
390
+ });
391
+ CONSUME2(l.symbols.RParen);
392
+ ACTION(() => {
393
+ res.push(currentRow);
394
+ if (vars.length !== parsedValues) {
395
+ throw new Error('Number of dataBlockValues does not match number of variables. Too few values.');
396
+ }
397
+ });
398
+ });
399
+ const close = CONSUME2(l.symbols.RCurly);
400
+ return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(open, close)));
401
+ } },
402
+ ]);
403
+ },
391
404
  };
392
- const minusGraphPattern = {
393
- name: "minusGraphPattern",
394
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
395
- const minus = CONSUME(l.minus);
396
- const group = SUBRULE(groupGraphPattern);
397
- return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus, group)));
398
- },
399
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
400
- F.printFilter(ast, () => PRINT_WORD("MINUS"));
401
- SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
402
- }
405
+ /**
406
+ * [[65]](https://www.w3.org/TR/sparql11-query/#rDataBlockValue)
407
+ */
408
+ exports.dataBlockValue = {
409
+ name: 'dataBlockValue',
410
+ impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
411
+ { ALT: () => SUBRULE(literals_js_1.iri) },
412
+ { ALT: () => SUBRULE(literals_js_1.rdfLiteral) },
413
+ { ALT: () => SUBRULE(literals_js_1.numericLiteral) },
414
+ { ALT: () => SUBRULE(literals_js_1.booleanLiteral) },
415
+ { ALT: () => {
416
+ CONSUME(l.undef);
417
+ // eslint-disable-next-line unicorn/no-useless-undefined
418
+ return undefined;
419
+ } },
420
+ ]),
403
421
  };
404
- const groupOrUnionGraphPattern = {
405
- name: "groupOrUnionGraphPattern",
406
- impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
407
- const groups = [];
408
- const group = SUBRULE1(groupGraphPattern);
409
- groups.push(group);
410
- MANY(() => {
411
- CONSUME(l.union);
412
- const group2 = SUBRULE2(groupGraphPattern);
413
- groups.push(group2);
414
- });
415
- return ACTION(() => groups.length === 1 ? groups[0] : C.astFactory.patternUnion(groups, C.astFactory.sourceLocation(group, groups.at(-1))));
416
- },
417
- gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
418
- if (F.isPatternUnion(ast)) {
419
- const [head, ...tail] = ast.patterns;
420
- SUBRULE(groupGraphPattern, head);
421
- for (const pattern of tail) {
422
- F.printFilter(ast, () => PRINT_WORD("UNION"));
423
- SUBRULE(groupGraphPattern, pattern);
424
- }
425
- } else {
426
- SUBRULE(groupGraphPattern, ast);
427
- }
428
- }
422
+ /**
423
+ * [[66]](https://www.w3.org/TR/sparql11-query/#rMinusGraphPattern)
424
+ */
425
+ exports.minusGraphPattern = {
426
+ name: 'minusGraphPattern',
427
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
428
+ const minus = CONSUME(l.minus);
429
+ const group = SUBRULE(exports.groupGraphPattern);
430
+ return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus, group)));
431
+ },
432
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
433
+ F.printFilter(ast, () => PRINT_WORD('MINUS'));
434
+ SUBRULE(exports.groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));
435
+ },
436
+ };
437
+ /**
438
+ * [[67]](https://www.w3.org/TR/sparql11-query/#rGroupOrUnionGraphPattern)
439
+ */
440
+ exports.groupOrUnionGraphPattern = {
441
+ name: 'groupOrUnionGraphPattern',
442
+ impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {
443
+ const groups = [];
444
+ const group = SUBRULE1(exports.groupGraphPattern);
445
+ groups.push(group);
446
+ MANY(() => {
447
+ CONSUME(l.union);
448
+ const group = SUBRULE2(exports.groupGraphPattern);
449
+ groups.push(group);
450
+ });
451
+ return ACTION(() => groups.length === 1 ?
452
+ groups[0] :
453
+ C.astFactory.patternUnion(groups, C.astFactory.sourceLocation(group, groups.at(-1))));
454
+ },
455
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
456
+ if (F.isPatternUnion(ast)) {
457
+ const [head, ...tail] = ast.patterns;
458
+ SUBRULE(exports.groupGraphPattern, head);
459
+ for (const pattern of tail) {
460
+ F.printFilter(ast, () => PRINT_WORD('UNION'));
461
+ SUBRULE(exports.groupGraphPattern, pattern);
462
+ }
463
+ }
464
+ else {
465
+ SUBRULE(exports.groupGraphPattern, ast);
466
+ }
467
+ },
429
468
  };
430
- const filter = {
431
- name: "filter",
432
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
433
- const filterToken = CONSUME(l.filter);
434
- const expression2 = SUBRULE(constraint);
435
- return ACTION(() => C.astFactory.patternFilter(expression2, C.astFactory.sourceLocation(filterToken, expression2)));
436
- },
437
- gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {
438
- F.printFilter(ast, () => PRINT_WORD("FILTER ("));
439
- SUBRULE(import_expression.expression, ast.expression);
440
- F.printFilter(ast, () => {
441
- PRINT_WORD(")");
442
- NEW_LINE();
443
- });
444
- }
469
+ /**
470
+ * [[68]](https://www.w3.org/TR/sparql11-query/#rFilter)
471
+ */
472
+ exports.filter = {
473
+ name: 'filter',
474
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
475
+ const filterToken = CONSUME(l.filter);
476
+ const expression = SUBRULE(exports.constraint);
477
+ return ACTION(() => C.astFactory.patternFilter(expression, C.astFactory.sourceLocation(filterToken, expression)));
478
+ },
479
+ gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {
480
+ F.printFilter(ast, () => PRINT_WORD('FILTER ('));
481
+ SUBRULE(expression_js_1.expression, ast.expression);
482
+ F.printFilter(ast, () => {
483
+ PRINT_WORD(')');
484
+ NEW_LINE();
485
+ });
486
+ },
445
487
  };
446
- const constraint = {
447
- name: "constraint",
448
- impl: ({ SUBRULE, OR }) => () => OR([
449
- { ALT: () => SUBRULE(import_expression.brackettedExpression) },
450
- { ALT: () => SUBRULE(import_builtIn.builtInCall) },
451
- { ALT: () => SUBRULE(functionCall) }
452
- ])
488
+ /**
489
+ * [[69]](https://www.w3.org/TR/sparql11-query/#rConstraint)
490
+ */
491
+ exports.constraint = {
492
+ name: 'constraint',
493
+ impl: ({ SUBRULE, OR }) => () => OR([
494
+ { ALT: () => SUBRULE(expression_js_1.brackettedExpression) },
495
+ { ALT: () => SUBRULE(builtIn_js_1.builtInCall) },
496
+ { ALT: () => SUBRULE(exports.functionCall) },
497
+ ]),
453
498
  };
454
- const functionCall = {
455
- name: "functionCall",
456
- impl: ({ ACTION, SUBRULE }) => (C) => {
457
- const func = SUBRULE(import_literals.iri);
458
- const args = SUBRULE(import_expression.argList);
459
- return ACTION(() => C.astFactory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.astFactory.sourceLocation(func, args)));
460
- }
499
+ /**
500
+ * [[70]](https://www.w3.org/TR/sparql11-query/#rFunctionCall)
501
+ */
502
+ exports.functionCall = {
503
+ name: 'functionCall',
504
+ impl: ({ ACTION, SUBRULE }) => (C) => {
505
+ const func = SUBRULE(literals_js_1.iri);
506
+ const args = SUBRULE(expression_js_1.argList);
507
+ return ACTION(() => C.astFactory.expressionFunctionCall(func, args.val.args, args.val.distinct, C.astFactory.sourceLocation(func, args)));
508
+ },
461
509
  };
462
- // Annotate the CommonJS export names for ESM import in node:
463
- 0 && (module.exports = {
464
- bind,
465
- constraint,
466
- dataBlock,
467
- dataBlockValue,
468
- filter,
469
- functionCall,
470
- generatePattern,
471
- graphGraphPattern,
472
- graphPatternNotTriples,
473
- groupGraphPattern,
474
- groupGraphPatternSub,
475
- groupOrUnionGraphPattern,
476
- inlineData,
477
- inlineDataFull,
478
- inlineDataOneVar,
479
- minusGraphPattern,
480
- optionalGraphPattern,
481
- serviceGraphPattern,
482
- whereClause
483
- });
510
+ //# sourceMappingURL=whereClause.js.map