@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,390 +1,413 @@
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 queryUnit_exports = {};
30
- __export(queryUnit_exports, {
31
- askQuery: () => askQuery,
32
- constructQuery: () => constructQuery,
33
- constructTemplate: () => constructTemplate,
34
- constructTriples: () => constructTriples,
35
- describeQuery: () => describeQuery,
36
- query: () => query,
37
- queryUnit: () => queryUnit,
38
- selectClause: () => selectClause,
39
- selectQuery: () => selectQuery,
40
- subSelect: () => subSelect,
41
- valuesClause: () => valuesClause
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]; } };
7
+ }
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;
42
17
  });
43
- module.exports = __toCommonJS(queryUnit_exports);
44
- var import_core = require("@traqula/core");
45
- var l = __toESM(require("../lexer/index.js"), 1);
46
- var import_validators = require("../validation/validators.js");
47
- var import_dataSetClause = require("./dataSetClause.js");
48
- var import_expression = require("./expression.js");
49
- var import_general = require("./general.js");
50
- var import_solutionModifier = require("./solutionModifier.js");
51
- var import_tripleBlock = require("./tripleBlock.js");
52
- var import_whereClause = require("./whereClause.js");
53
- const queryUnit = {
54
- name: "queryUnit",
55
- impl: ({ SUBRULE }) => () => SUBRULE(query)
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.constructTriples = exports.constructTemplate = exports.valuesClause = exports.askQuery = exports.describeQuery = exports.constructQuery = exports.selectClause = exports.subSelect = exports.selectQuery = exports.query = exports.queryUnit = 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 dataSetClause_js_1 = require("./dataSetClause.js");
41
+ const expression_js_1 = require("./expression.js");
42
+ const general_js_1 = require("./general.js");
43
+ const solutionModifier_js_1 = require("./solutionModifier.js");
44
+ const tripleBlock_js_1 = require("./tripleBlock.js");
45
+ const whereClause_js_1 = require("./whereClause.js");
46
+ /**
47
+ * [[1]](https://www.w3.org/TR/sparql11-query/#rQueryUnit)
48
+ */
49
+ exports.queryUnit = {
50
+ name: 'queryUnit',
51
+ impl: ({ SUBRULE }) => () => SUBRULE(exports.query),
56
52
  };
57
- const query = {
58
- name: "query",
59
- impl: ({ ACTION, SUBRULE, OR }) => (C) => {
60
- const prologueValues = SUBRULE(import_general.prologue);
61
- const subType = OR([
62
- { ALT: () => SUBRULE(selectQuery) },
63
- { ALT: () => SUBRULE(constructQuery) },
64
- { ALT: () => SUBRULE(describeQuery) },
65
- { ALT: () => SUBRULE(askQuery) }
66
- ]);
67
- const values = SUBRULE(valuesClause);
68
- return ACTION(() => ({
69
- context: prologueValues,
70
- ...subType,
71
- type: "query",
72
- ...values && { values },
73
- loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values)
74
- }));
75
- },
76
- gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
77
- SUBRULE(import_general.prologue, ast.context);
78
- if (F.isQuerySelect(ast)) {
79
- SUBRULE(selectQuery, ast);
80
- } else if (F.isQueryConstruct(ast)) {
81
- SUBRULE(constructQuery, ast);
82
- } else if (F.isQueryDescribe(ast)) {
83
- SUBRULE(describeQuery, ast);
84
- } else if (F.isQueryAsk(ast)) {
85
- SUBRULE(askQuery, ast);
86
- }
87
- if (ast.values) {
88
- SUBRULE(import_whereClause.inlineData, ast.values);
89
- }
90
- }
53
+ /**
54
+ * [[2]](https://www.w3.org/TR/sparql11-query/#rQuery)
55
+ */
56
+ exports.query = {
57
+ name: 'query',
58
+ impl: ({ ACTION, SUBRULE, OR }) => (C) => {
59
+ const prologueValues = SUBRULE(general_js_1.prologue);
60
+ const subType = OR([
61
+ { ALT: () => SUBRULE(exports.selectQuery) },
62
+ { ALT: () => SUBRULE(exports.constructQuery) },
63
+ { ALT: () => SUBRULE(exports.describeQuery) },
64
+ { ALT: () => SUBRULE(exports.askQuery) },
65
+ ]);
66
+ const values = SUBRULE(exports.valuesClause);
67
+ return ACTION(() => ({
68
+ context: prologueValues,
69
+ ...subType,
70
+ type: 'query',
71
+ ...(values && { values }),
72
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values),
73
+ }));
74
+ },
75
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
76
+ SUBRULE(general_js_1.prologue, ast.context);
77
+ if (F.isQuerySelect(ast)) {
78
+ SUBRULE(exports.selectQuery, ast);
79
+ }
80
+ else if (F.isQueryConstruct(ast)) {
81
+ SUBRULE(exports.constructQuery, ast);
82
+ }
83
+ else if (F.isQueryDescribe(ast)) {
84
+ SUBRULE(exports.describeQuery, ast);
85
+ }
86
+ else if (F.isQueryAsk(ast)) {
87
+ SUBRULE(exports.askQuery, ast);
88
+ }
89
+ if (ast.values) {
90
+ SUBRULE(whereClause_js_1.inlineData, ast.values);
91
+ }
92
+ },
91
93
  };
92
- const selectQuery = {
93
- name: "selectQuery",
94
- impl: ({ ACTION, SUBRULE }) => (C) => {
95
- const selectVal = SUBRULE(selectClause);
96
- const from = SUBRULE(import_dataSetClause.datasetClauseStar);
97
- const where = SUBRULE(import_whereClause.whereClause);
98
- const modifiers = SUBRULE(import_solutionModifier.solutionModifier);
99
- return ACTION(() => {
100
- const ret = {
101
- subType: "select",
102
- where: where.val,
103
- solutionModifiers: modifiers,
104
- datasets: from,
105
- ...selectVal.val,
106
- loc: C.astFactory.sourceLocation(selectVal, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
107
- };
108
- (0, import_validators.queryIsGood)(ret);
109
- return ret;
110
- });
111
- },
112
- gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
113
- SUBRULE(selectClause, F.wrap({
114
- variables: ast.variables,
115
- distinct: ast.distinct,
116
- reduced: ast.reduced
117
- }, F.sourceLocation(...ast.variables)));
118
- SUBRULE(import_dataSetClause.datasetClauseStar, ast.datasets);
119
- SUBRULE(import_whereClause.whereClause, F.wrap(ast.where, ast.where.loc));
120
- SUBRULE(import_solutionModifier.solutionModifier, ast.solutionModifiers);
121
- }
94
+ /**
95
+ * [[7]](https://www.w3.org/TR/sparql11-query/#rSelectQuery)
96
+ */
97
+ exports.selectQuery = {
98
+ name: 'selectQuery',
99
+ impl: ({ ACTION, SUBRULE }) => (C) => {
100
+ const selectVal = SUBRULE(exports.selectClause);
101
+ const from = SUBRULE(dataSetClause_js_1.datasetClauseStar);
102
+ const where = SUBRULE(whereClause_js_1.whereClause);
103
+ const modifiers = SUBRULE(solutionModifier_js_1.solutionModifier);
104
+ return ACTION(() => {
105
+ const ret = {
106
+ subType: 'select',
107
+ where: where.val,
108
+ solutionModifiers: modifiers,
109
+ datasets: from,
110
+ ...selectVal.val,
111
+ loc: C.astFactory.sourceLocation(selectVal, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
112
+ };
113
+ (0, validators_js_1.queryIsGood)(ret);
114
+ return ret;
115
+ });
116
+ },
117
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
118
+ SUBRULE(exports.selectClause, F.wrap({
119
+ variables: ast.variables,
120
+ distinct: ast.distinct,
121
+ reduced: ast.reduced,
122
+ }, F.sourceLocation(...ast.variables)));
123
+ SUBRULE(dataSetClause_js_1.datasetClauseStar, ast.datasets);
124
+ SUBRULE(whereClause_js_1.whereClause, F.wrap(ast.where, ast.where.loc));
125
+ SUBRULE(solutionModifier_js_1.solutionModifier, ast.solutionModifiers);
126
+ },
122
127
  };
123
- const subSelect = {
124
- name: "subSelect",
125
- impl: ({ ACTION, SUBRULE }) => (C) => {
126
- const selectVal = SUBRULE(selectClause);
127
- const where = SUBRULE(import_whereClause.whereClause);
128
- const modifiers = SUBRULE(import_solutionModifier.solutionModifier);
129
- const values = SUBRULE(valuesClause);
130
- return ACTION(() => C.astFactory.querySelect({
131
- where: where.val,
132
- datasets: C.astFactory.datasetClauses([], C.astFactory.sourceLocation()),
133
- context: [],
134
- solutionModifiers: modifiers,
135
- ...selectVal.val,
136
- ...values && { values }
137
- }, C.astFactory.sourceLocation(selectVal, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values)));
138
- }
128
+ /**
129
+ * [[8]](https://www.w3.org/TR/sparql11-query/#rSubSelect)
130
+ */
131
+ exports.subSelect = {
132
+ name: 'subSelect',
133
+ impl: ({ ACTION, SUBRULE }) => (C) => {
134
+ const selectVal = SUBRULE(exports.selectClause);
135
+ const where = SUBRULE(whereClause_js_1.whereClause);
136
+ const modifiers = SUBRULE(solutionModifier_js_1.solutionModifier);
137
+ const values = SUBRULE(exports.valuesClause);
138
+ return ACTION(() => C.astFactory.querySelect({
139
+ where: where.val,
140
+ datasets: C.astFactory.datasetClauses([], C.astFactory.sourceLocation()),
141
+ context: [],
142
+ solutionModifiers: modifiers,
143
+ ...selectVal.val,
144
+ ...(values && { values }),
145
+ }, C.astFactory.sourceLocation(selectVal, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset, values)));
146
+ },
139
147
  };
140
- const selectClause = {
141
- name: "selectClause",
142
- impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, SUBRULE2, CONSUME, OPTION, OR1, OR2, OR3 }) => (C) => {
143
- const select = CONSUME(l.select);
144
- const couldParseAgg = ACTION(() => C.parseMode.has("canParseAggregate") || !C.parseMode.add("canParseAggregate"));
145
- const distinctAndReduced = OPTION(() => OR1([
146
- { ALT: () => {
147
- CONSUME(l.distinct);
148
- return [true, false];
149
- } },
150
- { ALT: () => {
151
- CONSUME(l.reduced);
152
- return [false, true];
153
- } }
154
- ])) ?? [false, false];
155
- const distRed = ACTION(() => {
156
- const [distinct, reduced] = distinctAndReduced;
157
- return {
158
- ...distinct && { distinct },
159
- ...reduced && { reduced }
160
- };
161
- });
162
- let last;
163
- const val = OR2([
164
- { ALT: () => {
165
- const star = CONSUME(l.symbols.star);
166
- return ACTION(() => {
167
- last = star;
168
- return { variables: [C.astFactory.wildcard(C.astFactory.sourceLocation(star))], ...distRed };
148
+ /**
149
+ * [[9]](https://www.w3.org/TR/sparql11-query/#rSelectClause)
150
+ */
151
+ exports.selectClause = {
152
+ name: 'selectClause',
153
+ impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, SUBRULE2, CONSUME, OPTION, OR1, OR2, OR3, }) => (C) => {
154
+ const select = CONSUME(l.select);
155
+ const couldParseAgg = ACTION(() => C.parseMode.has('canParseAggregate') || !C.parseMode.add('canParseAggregate'));
156
+ const distinctAndReduced = OPTION(() => OR1([
157
+ { ALT: () => {
158
+ CONSUME(l.distinct);
159
+ return [true, false];
160
+ } },
161
+ { ALT: () => {
162
+ CONSUME(l.reduced);
163
+ return [false, true];
164
+ } },
165
+ ])) ?? [false, false];
166
+ const distRed = ACTION(() => {
167
+ const [distinct, reduced] = distinctAndReduced;
168
+ return {
169
+ ...(distinct && { distinct }),
170
+ ...(reduced && { reduced }),
171
+ };
172
+ });
173
+ let last;
174
+ const val = OR2([
175
+ { ALT: () => {
176
+ const star = CONSUME(l.symbols.star);
177
+ return ACTION(() => {
178
+ last = star;
179
+ return { variables: [C.astFactory.wildcard(C.astFactory.sourceLocation(star))], ...distRed };
180
+ });
181
+ } },
182
+ { ALT: () => {
183
+ const usedVars = [];
184
+ const variables = [];
185
+ AT_LEAST_ONE(() => OR3([
186
+ { ALT: () => {
187
+ const raw = SUBRULE1(general_js_1.var_);
188
+ ACTION(() => {
189
+ if (usedVars.some(v => v.value === raw.value)) {
190
+ throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);
191
+ }
192
+ usedVars.push(raw);
193
+ variables.push(raw);
194
+ last = raw;
195
+ });
196
+ } },
197
+ { ALT: () => {
198
+ const open = CONSUME(l.symbols.LParen);
199
+ const expr = SUBRULE1(expression_js_1.expression);
200
+ CONSUME(l.as);
201
+ const variable = SUBRULE2(general_js_1.var_);
202
+ const close = CONSUME(l.symbols.RParen);
203
+ ACTION(() => {
204
+ last = close;
205
+ if (usedVars.some(v => v.value === variable.value)) {
206
+ throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);
207
+ }
208
+ usedVars.push(variable);
209
+ variables.push(C.astFactory.patternBind(expr, variable, C.astFactory.sourceLocation(open, last)));
210
+ });
211
+ } },
212
+ ]));
213
+ return { variables, ...distRed };
214
+ } },
215
+ ]);
216
+ ACTION(() => !couldParseAgg && C.parseMode.delete('canParseAggregate'));
217
+ return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(select, last)));
218
+ },
219
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, { astFactory: F }) => {
220
+ F.printFilter(ast, () => {
221
+ PRINT_ON_EMPTY('SELECT ');
222
+ if (ast.val.distinct) {
223
+ PRINT_WORD('DISTINCT');
224
+ }
225
+ else if (ast.val.reduced) {
226
+ PRINT_WORD('REDUCED');
227
+ }
169
228
  });
170
- } },
171
- { ALT: () => {
172
- const usedVars = [];
173
- const variables = [];
174
- AT_LEAST_ONE(() => OR3([
175
- { ALT: () => {
176
- const raw = SUBRULE1(import_general.var_);
177
- ACTION(() => {
178
- if (usedVars.some((v) => v.value === raw.value)) {
179
- throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);
180
- }
181
- usedVars.push(raw);
182
- variables.push(raw);
183
- last = raw;
229
+ for (const variable of ast.val.variables) {
230
+ if (F.isWildcard(variable)) {
231
+ F.printFilter(ast, () => PRINT_WORD('*'));
232
+ }
233
+ else if (F.isTerm(variable)) {
234
+ SUBRULE(general_js_1.var_, variable);
235
+ }
236
+ else {
237
+ F.printFilter(ast, () => PRINT_WORD('('));
238
+ SUBRULE(expression_js_1.expression, variable.expression);
239
+ F.printFilter(ast, () => PRINT_WORD('AS'));
240
+ SUBRULE(general_js_1.var_, variable.variable);
241
+ F.printFilter(ast, () => PRINT_WORD(')'));
242
+ }
243
+ F.printFilter(ast, () => PRINT_WORD(''));
244
+ }
245
+ F.printFilter(ast, () => PRINT_WORD(''));
246
+ },
247
+ };
248
+ /**
249
+ * [[10]](https://www.w3.org/TR/sparql11-query/#rConstructQuery)
250
+ */
251
+ exports.constructQuery = {
252
+ name: 'constructQuery',
253
+ impl: ({ ACTION, SUBRULE1, SUBRULE2, CONSUME, OR }) => (C) => {
254
+ const construct = CONSUME(l.construct);
255
+ return OR([
256
+ { ALT: () => {
257
+ const template = SUBRULE1(exports.constructTemplate);
258
+ const from = SUBRULE1(dataSetClause_js_1.datasetClauseStar);
259
+ const where = SUBRULE1(whereClause_js_1.whereClause);
260
+ const modifiers = SUBRULE1(solutionModifier_js_1.solutionModifier);
261
+ return ACTION(() => ({
262
+ subType: 'construct',
263
+ template: template.val,
264
+ datasets: from,
265
+ where: where.val,
266
+ solutionModifiers: modifiers,
267
+ loc: C.astFactory.sourceLocation(construct, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
268
+ }));
269
+ } },
270
+ { ALT: () => {
271
+ const from = SUBRULE2(dataSetClause_js_1.datasetClauseStar);
272
+ CONSUME(l.where);
273
+ // ConstructTemplate is same as '{' TriplesTemplate? '}'
274
+ const template = SUBRULE2(exports.constructTemplate);
275
+ const modifiers = SUBRULE2(solutionModifier_js_1.solutionModifier);
276
+ return ACTION(() => ({
277
+ subType: 'construct',
278
+ template: template.val,
279
+ datasets: from,
280
+ where: C.astFactory.patternGroup([template.val], C.astFactory.sourceLocation()),
281
+ solutionModifiers: modifiers,
282
+ loc: C.astFactory.sourceLocation(construct, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
283
+ }));
284
+ } },
285
+ ]);
286
+ },
287
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY, PRINT_ON_OWN_LINE, NEW_LINE }) => (ast, C) => {
288
+ const { astFactory: F, indentInc } = C;
289
+ F.printFilter(ast, () => PRINT_ON_EMPTY('CONSTRUCT '));
290
+ if (!F.isSourceLocationNoMaterialize(ast.where.loc)) {
291
+ // You are NOT in second case construct
292
+ F.printFilter(ast, () => {
293
+ C[core_1.traqulaIndentation] += indentInc;
294
+ PRINT_WORD('{');
295
+ NEW_LINE();
184
296
  });
185
- } },
186
- { ALT: () => {
187
- const open = CONSUME(l.symbols.LParen);
188
- const expr = SUBRULE1(import_expression.expression);
189
- CONSUME(l.as);
190
- const variable = SUBRULE2(import_general.var_);
191
- const close = CONSUME(l.symbols.RParen);
192
- ACTION(() => {
193
- last = close;
194
- if (usedVars.some((v) => v.value === variable.value)) {
195
- throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);
196
- }
197
- usedVars.push(variable);
198
- variables.push(C.astFactory.patternBind(expr, variable, C.astFactory.sourceLocation(open, last)));
297
+ SUBRULE(tripleBlock_js_1.triplesBlock, ast.template);
298
+ F.printFilter(ast, () => {
299
+ C[core_1.traqulaIndentation] -= indentInc;
300
+ PRINT_ON_OWN_LINE('}');
199
301
  });
200
- } }
201
- ]));
202
- return { variables, ...distRed };
203
- } }
204
- ]);
205
- ACTION(() => !couldParseAgg && C.parseMode.delete("canParseAggregate"));
206
- return ACTION(() => C.astFactory.wrap(val, C.astFactory.sourceLocation(select, last)));
207
- },
208
- gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, { astFactory: F }) => {
209
- F.printFilter(ast, () => {
210
- PRINT_ON_EMPTY("SELECT ");
211
- if (ast.val.distinct) {
212
- PRINT_WORD("DISTINCT");
213
- } else if (ast.val.reduced) {
214
- PRINT_WORD("REDUCED");
215
- }
216
- });
217
- for (const variable of ast.val.variables) {
218
- if (F.isWildcard(variable)) {
219
- F.printFilter(ast, () => PRINT_WORD("*"));
220
- } else if (F.isTerm(variable)) {
221
- SUBRULE(import_general.var_, variable);
222
- } else {
223
- F.printFilter(ast, () => PRINT_WORD("("));
224
- SUBRULE(import_expression.expression, variable.expression);
225
- F.printFilter(ast, () => PRINT_WORD("AS"));
226
- SUBRULE(import_general.var_, variable.variable);
227
- F.printFilter(ast, () => PRINT_WORD(")"));
228
- }
229
- F.printFilter(ast, () => PRINT_WORD(""));
230
- }
231
- F.printFilter(ast, () => PRINT_WORD(""));
232
- }
302
+ }
303
+ SUBRULE(dataSetClause_js_1.datasetClauseStar, ast.datasets);
304
+ if (F.isSourceLocationNoMaterialize(ast.where.loc)) {
305
+ SUBRULE(whereClause_js_1.whereClause, F.wrap(F.patternGroup([ast.template], ast.template.loc), ast.template.loc));
306
+ }
307
+ else {
308
+ SUBRULE(whereClause_js_1.whereClause, F.wrap(ast.where, ast.where.loc));
309
+ }
310
+ SUBRULE(solutionModifier_js_1.solutionModifier, ast.solutionModifiers);
311
+ },
233
312
  };
234
- const constructQuery = {
235
- name: "constructQuery",
236
- impl: ({ ACTION, SUBRULE1, SUBRULE2, CONSUME, OR }) => (C) => {
237
- const construct = CONSUME(l.construct);
238
- return OR([
239
- { ALT: () => {
240
- const template = SUBRULE1(constructTemplate);
241
- const from = SUBRULE1(import_dataSetClause.datasetClauseStar);
242
- const where = SUBRULE1(import_whereClause.whereClause);
243
- const modifiers = SUBRULE1(import_solutionModifier.solutionModifier);
313
+ /**
314
+ * [[11]](https://www.w3.org/TR/sparql11-query/#rDescribeQuery)
315
+ */
316
+ exports.describeQuery = {
317
+ name: 'describeQuery',
318
+ impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
319
+ const describe = CONSUME(l.describe);
320
+ const variables = OR([
321
+ { ALT: () => {
322
+ const variables = [];
323
+ AT_LEAST_ONE(() => {
324
+ variables.push(SUBRULE1(general_js_1.varOrIri));
325
+ });
326
+ return variables;
327
+ } },
328
+ { ALT: () => {
329
+ const star = CONSUME(l.symbols.star);
330
+ return [ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(star)))];
331
+ } },
332
+ ]);
333
+ const from = SUBRULE1(dataSetClause_js_1.datasetClauseStar);
334
+ const where = OPTION(() => SUBRULE1(whereClause_js_1.whereClause));
335
+ const modifiers = SUBRULE1(solutionModifier_js_1.solutionModifier);
244
336
  return ACTION(() => ({
245
- subType: "construct",
246
- template: template.val,
247
- datasets: from,
248
- where: where.val,
249
- solutionModifiers: modifiers,
250
- loc: C.astFactory.sourceLocation(construct, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
337
+ subType: 'describe',
338
+ variables,
339
+ datasets: from,
340
+ ...(where && { where: where.val }),
341
+ solutionModifiers: modifiers,
342
+ loc: C.astFactory.sourceLocation(describe, ...variables, from, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
251
343
  }));
252
- } },
253
- { ALT: () => {
254
- const from = SUBRULE2(import_dataSetClause.datasetClauseStar);
255
- CONSUME(l.where);
256
- const template = SUBRULE2(constructTemplate);
257
- const modifiers = SUBRULE2(import_solutionModifier.solutionModifier);
344
+ },
345
+ gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, { astFactory: F }) => {
346
+ F.printFilter(ast, () => PRINT_ON_EMPTY('DESCRIBE '));
347
+ if (F.isWildcard(ast.variables[0])) {
348
+ F.printFilter(ast, () => PRINT_WORD('*'));
349
+ }
350
+ else {
351
+ for (const variable of ast.variables) {
352
+ SUBRULE(general_js_1.varOrTerm, variable);
353
+ }
354
+ }
355
+ SUBRULE(dataSetClause_js_1.datasetClauseStar, ast.datasets);
356
+ if (ast.where) {
357
+ SUBRULE(whereClause_js_1.whereClause, F.wrap(ast.where, ast.loc));
358
+ }
359
+ SUBRULE(solutionModifier_js_1.solutionModifier, ast.solutionModifiers);
360
+ },
361
+ };
362
+ /**
363
+ * [[12]](https://www.w3.org/TR/sparql11-query/#rAskQuery)
364
+ */
365
+ exports.askQuery = {
366
+ name: 'askQuery',
367
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
368
+ const ask = CONSUME(l.ask);
369
+ const from = SUBRULE(dataSetClause_js_1.datasetClauseStar);
370
+ const where = SUBRULE(whereClause_js_1.whereClause);
371
+ const modifiers = SUBRULE(solutionModifier_js_1.solutionModifier);
258
372
  return ACTION(() => ({
259
- subType: "construct",
260
- template: template.val,
261
- datasets: from,
262
- where: C.astFactory.patternGroup([template.val], C.astFactory.sourceLocation()),
263
- solutionModifiers: modifiers,
264
- loc: C.astFactory.sourceLocation(construct, template, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
373
+ subType: 'ask',
374
+ datasets: from,
375
+ where: where.val,
376
+ solutionModifiers: modifiers,
377
+ loc: C.astFactory.sourceLocation(ask, from, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
265
378
  }));
266
- } }
267
- ]);
268
- },
269
- gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY, PRINT_ON_OWN_LINE, NEW_LINE }) => (ast, C) => {
270
- const { astFactory: F, indentInc } = C;
271
- F.printFilter(ast, () => PRINT_ON_EMPTY("CONSTRUCT "));
272
- if (!F.isSourceLocationNoMaterialize(ast.where.loc)) {
273
- F.printFilter(ast, () => {
274
- C[import_core.traqulaIndentation] += indentInc;
275
- PRINT_WORD("{");
276
- NEW_LINE();
277
- });
278
- SUBRULE(import_tripleBlock.triplesBlock, ast.template);
279
- F.printFilter(ast, () => {
280
- C[import_core.traqulaIndentation] -= indentInc;
281
- PRINT_ON_OWN_LINE("}");
282
- });
283
- }
284
- SUBRULE(import_dataSetClause.datasetClauseStar, ast.datasets);
285
- if (F.isSourceLocationNoMaterialize(ast.where.loc)) {
286
- SUBRULE(import_whereClause.whereClause, F.wrap(F.patternGroup([ast.template], ast.template.loc), ast.template.loc));
287
- } else {
288
- SUBRULE(import_whereClause.whereClause, F.wrap(ast.where, ast.where.loc));
289
- }
290
- SUBRULE(import_solutionModifier.solutionModifier, ast.solutionModifiers);
291
- }
379
+ },
380
+ gImpl: ({ SUBRULE, PRINT_ON_EMPTY }) => (ast, { astFactory: F }) => {
381
+ F.printFilter(ast, () => PRINT_ON_EMPTY('ASK '));
382
+ SUBRULE(dataSetClause_js_1.datasetClauseStar, ast.datasets);
383
+ SUBRULE(whereClause_js_1.whereClause, F.wrap(ast.where, ast.loc));
384
+ SUBRULE(solutionModifier_js_1.solutionModifier, ast.solutionModifiers);
385
+ },
292
386
  };
293
- const describeQuery = {
294
- name: "describeQuery",
295
- impl: ({ ACTION, AT_LEAST_ONE, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
296
- const describe = CONSUME(l.describe);
297
- const variables = OR([
298
- { ALT: () => {
299
- const variables2 = [];
300
- AT_LEAST_ONE(() => {
301
- variables2.push(SUBRULE1(import_general.varOrIri));
302
- });
303
- return variables2;
304
- } },
305
- { ALT: () => {
306
- const star = CONSUME(l.symbols.star);
307
- return [ACTION(() => C.astFactory.wildcard(C.astFactory.sourceLocation(star)))];
308
- } }
309
- ]);
310
- const from = SUBRULE1(import_dataSetClause.datasetClauseStar);
311
- const where = OPTION(() => SUBRULE1(import_whereClause.whereClause));
312
- const modifiers = SUBRULE1(import_solutionModifier.solutionModifier);
313
- return ACTION(() => ({
314
- subType: "describe",
315
- variables,
316
- datasets: from,
317
- ...where && { where: where.val },
318
- solutionModifiers: modifiers,
319
- loc: C.astFactory.sourceLocation(describe, ...variables, from, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
320
- }));
321
- },
322
- gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, { astFactory: F }) => {
323
- F.printFilter(ast, () => PRINT_ON_EMPTY("DESCRIBE "));
324
- if (F.isWildcard(ast.variables[0])) {
325
- F.printFilter(ast, () => PRINT_WORD("*"));
326
- } else {
327
- for (const variable of ast.variables) {
328
- SUBRULE(import_general.varOrTerm, variable);
329
- }
330
- }
331
- SUBRULE(import_dataSetClause.datasetClauseStar, ast.datasets);
332
- if (ast.where) {
333
- SUBRULE(import_whereClause.whereClause, F.wrap(ast.where, ast.loc));
334
- }
335
- SUBRULE(import_solutionModifier.solutionModifier, ast.solutionModifiers);
336
- }
337
- };
338
- const askQuery = {
339
- name: "askQuery",
340
- impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
341
- const ask = CONSUME(l.ask);
342
- const from = SUBRULE(import_dataSetClause.datasetClauseStar);
343
- const where = SUBRULE(import_whereClause.whereClause);
344
- const modifiers = SUBRULE(import_solutionModifier.solutionModifier);
345
- return ACTION(() => ({
346
- subType: "ask",
347
- datasets: from,
348
- where: where.val,
349
- solutionModifiers: modifiers,
350
- loc: C.astFactory.sourceLocation(ask, from, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset)
351
- }));
352
- },
353
- gImpl: ({ SUBRULE, PRINT_ON_EMPTY }) => (ast, { astFactory: F }) => {
354
- F.printFilter(ast, () => PRINT_ON_EMPTY("ASK "));
355
- SUBRULE(import_dataSetClause.datasetClauseStar, ast.datasets);
356
- SUBRULE(import_whereClause.whereClause, F.wrap(ast.where, ast.loc));
357
- SUBRULE(import_solutionModifier.solutionModifier, ast.solutionModifiers);
358
- }
387
+ /**
388
+ * [[28]](https://www.w3.org/TR/sparql11-query/#rValuesClause)
389
+ */
390
+ exports.valuesClause = {
391
+ name: 'valuesClause',
392
+ impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(whereClause_js_1.inlineData)),
359
393
  };
360
- const valuesClause = {
361
- name: "valuesClause",
362
- impl: ({ OPTION, SUBRULE }) => () => OPTION(() => SUBRULE(import_whereClause.inlineData))
394
+ /**
395
+ * [[73]](https://www.w3.org/TR/sparql11-query/#ConstructTemplate)
396
+ */
397
+ exports.constructTemplate = {
398
+ name: 'constructTemplate',
399
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
400
+ const open = CONSUME(l.symbols.LCurly);
401
+ const triples = OPTION(() => SUBRULE1(exports.constructTriples));
402
+ const close = CONSUME(l.symbols.RCurly);
403
+ return ACTION(() => C.astFactory.wrap(triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocation()), C.astFactory.sourceLocation(open, close)));
404
+ },
363
405
  };
364
- const constructTemplate = {
365
- name: "constructTemplate",
366
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
367
- const open = CONSUME(l.symbols.LCurly);
368
- const triples = OPTION(() => SUBRULE1(constructTriples));
369
- const close = CONSUME(l.symbols.RCurly);
370
- return ACTION(() => C.astFactory.wrap(triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocation()), C.astFactory.sourceLocation(open, close)));
371
- }
406
+ /**
407
+ * [[12]](https://www.w3.org/TR/sparql11-query/#rConstructTriples)
408
+ */
409
+ exports.constructTriples = {
410
+ name: 'constructTriples',
411
+ impl: tripleBlock_js_1.triplesTemplate.impl,
372
412
  };
373
- const constructTriples = {
374
- name: "constructTriples",
375
- impl: import_tripleBlock.triplesTemplate.impl
376
- };
377
- // Annotate the CommonJS export names for ESM import in node:
378
- 0 && (module.exports = {
379
- askQuery,
380
- constructQuery,
381
- constructTemplate,
382
- constructTriples,
383
- describeQuery,
384
- query,
385
- queryUnit,
386
- selectClause,
387
- selectQuery,
388
- subSelect,
389
- valuesClause
390
- });
413
+ //# sourceMappingURL=queryUnit.js.map