@traqula/rules-sparql-1-1 0.0.1-alpha.10

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 (115) hide show
  1. package/LICENSE.txt +22 -0
  2. package/README.md +17 -0
  3. package/lib/RoundTripTypes.d.ts +379 -0
  4. package/lib/RoundTripTypes.js +2 -0
  5. package/lib/RoundTripTypes.js.map +1 -0
  6. package/lib/Sparql11types.d.ts +68 -0
  7. package/lib/Sparql11types.js +2 -0
  8. package/lib/Sparql11types.js.map +1 -0
  9. package/lib/SparqlParser.d.ts +23 -0
  10. package/lib/SparqlParser.js +32 -0
  11. package/lib/SparqlParser.js.map +1 -0
  12. package/lib/expressionHelpers.d.ts +45 -0
  13. package/lib/expressionHelpers.js +161 -0
  14. package/lib/expressionHelpers.js.map +1 -0
  15. package/lib/factory.d.ts +447 -0
  16. package/lib/factory.js +105 -0
  17. package/lib/factory.js.map +1 -0
  18. package/lib/factoryMixins/ContextFactory.d.ts +38 -0
  19. package/lib/factoryMixins/ContextFactory.js +30 -0
  20. package/lib/factoryMixins/ContextFactory.js.map +1 -0
  21. package/lib/factoryMixins/ExpressionFactory.d.ts +60 -0
  22. package/lib/factoryMixins/ExpressionFactory.js +83 -0
  23. package/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  24. package/lib/factoryMixins/GraphRefFactory.d.ts +43 -0
  25. package/lib/factoryMixins/GraphRefFactory.js +51 -0
  26. package/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  27. package/lib/factoryMixins/PathFactory.d.ts +51 -0
  28. package/lib/factoryMixins/PathFactory.js +68 -0
  29. package/lib/factoryMixins/PathFactory.js.map +1 -0
  30. package/lib/factoryMixins/Patternfactory.d.ts +55 -0
  31. package/lib/factoryMixins/Patternfactory.js +98 -0
  32. package/lib/factoryMixins/Patternfactory.js.map +1 -0
  33. package/lib/factoryMixins/QueryFactory.d.ts +41 -0
  34. package/lib/factoryMixins/QueryFactory.js +43 -0
  35. package/lib/factoryMixins/QueryFactory.js.map +1 -0
  36. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +43 -0
  37. package/lib/factoryMixins/SolutionModifiersFactory.js +55 -0
  38. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  39. package/lib/factoryMixins/TermFactory.d.ts +76 -0
  40. package/lib/factoryMixins/TermFactory.js +84 -0
  41. package/lib/factoryMixins/TermFactory.js.map +1 -0
  42. package/lib/factoryMixins/UpdateOperationFactory.d.ts +68 -0
  43. package/lib/factoryMixins/UpdateOperationFactory.js +126 -0
  44. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  45. package/lib/factoryMixins/mixins.d.ts +14 -0
  46. package/lib/factoryMixins/mixins.js +20 -0
  47. package/lib/factoryMixins/mixins.js.map +1 -0
  48. package/lib/grammar/builtIn.d.ts +89 -0
  49. package/lib/grammar/builtIn.js +247 -0
  50. package/lib/grammar/builtIn.js.map +1 -0
  51. package/lib/grammar/dataSetClause.d.ts +34 -0
  52. package/lib/grammar/dataSetClause.js +81 -0
  53. package/lib/grammar/dataSetClause.js.map +1 -0
  54. package/lib/grammar/expression.d.ts +63 -0
  55. package/lib/grammar/expression.js +383 -0
  56. package/lib/grammar/expression.js.map +1 -0
  57. package/lib/grammar/general.d.ts +36 -0
  58. package/lib/grammar/general.js +145 -0
  59. package/lib/grammar/general.js.map +1 -0
  60. package/lib/grammar/index.d.ts +12 -0
  61. package/lib/grammar/index.js +13 -0
  62. package/lib/grammar/index.js.map +1 -0
  63. package/lib/grammar/literals.d.ts +55 -0
  64. package/lib/grammar/literals.js +258 -0
  65. package/lib/grammar/literals.js.map +1 -0
  66. package/lib/grammar/propertyPaths.d.ts +43 -0
  67. package/lib/grammar/propertyPaths.js +182 -0
  68. package/lib/grammar/propertyPaths.js.map +1 -0
  69. package/lib/grammar/queryUnit/queryUnit.d.ts +48 -0
  70. package/lib/grammar/queryUnit/queryUnit.js +366 -0
  71. package/lib/grammar/queryUnit/queryUnit.js.map +1 -0
  72. package/lib/grammar/solutionModifier.d.ts +44 -0
  73. package/lib/grammar/solutionModifier.js +253 -0
  74. package/lib/grammar/solutionModifier.js.map +1 -0
  75. package/lib/grammar/tripleBlock.d.ts +36 -0
  76. package/lib/grammar/tripleBlock.js +357 -0
  77. package/lib/grammar/tripleBlock.js.map +1 -0
  78. package/lib/grammar/updateUnit/updateUnit.d.ts +95 -0
  79. package/lib/grammar/updateUnit/updateUnit.js +493 -0
  80. package/lib/grammar/updateUnit/updateUnit.js.map +1 -0
  81. package/lib/grammar/whereClause.d.ts +76 -0
  82. package/lib/grammar/whereClause.js +441 -0
  83. package/lib/grammar/whereClause.js.map +1 -0
  84. package/lib/grammar-helpers/utils.d.ts +12 -0
  85. package/lib/grammar-helpers/utils.js +16 -0
  86. package/lib/grammar-helpers/utils.js.map +1 -0
  87. package/lib/index.cjs +14565 -0
  88. package/lib/index.d.ts +10 -0
  89. package/lib/index.js +11 -0
  90. package/lib/index.js.map +1 -0
  91. package/lib/lexer/BuildinCalls.d.ts +126 -0
  92. package/lib/lexer/BuildinCalls.js +188 -0
  93. package/lib/lexer/BuildinCalls.js.map +1 -0
  94. package/lib/lexer/graph.d.ts +6 -0
  95. package/lib/lexer/graph.js +8 -0
  96. package/lib/lexer/graph.js.map +1 -0
  97. package/lib/lexer/index.d.ts +5 -0
  98. package/lib/lexer/index.js +6 -0
  99. package/lib/lexer/index.js.map +1 -0
  100. package/lib/lexer/lexer.d.ts +54 -0
  101. package/lib/lexer/lexer.js +70 -0
  102. package/lib/lexer/lexer.js.map +1 -0
  103. package/lib/lexer/symbols.d.ts +28 -0
  104. package/lib/lexer/symbols.js +29 -0
  105. package/lib/lexer/symbols.js.map +1 -0
  106. package/lib/lexer/terminals.d.ts +26 -0
  107. package/lib/lexer/terminals.js +63 -0
  108. package/lib/lexer/terminals.js.map +1 -0
  109. package/lib/utils.d.ts +5 -0
  110. package/lib/utils.js +24 -0
  111. package/lib/utils.js.map +1 -0
  112. package/lib/validation/validators.d.ts +14 -0
  113. package/lib/validation/validators.js +235 -0
  114. package/lib/validation/validators.js.map +1 -0
  115. package/package.json +48 -0
@@ -0,0 +1,493 @@
1
+ import { unCapitalize } from '@traqula/core';
2
+ import * as l from '../../lexer';
3
+ import { updateNoReuseBlankNodeLabels } from '../../validation/validators';
4
+ import { usingClauseStar } from '../dataSetClause';
5
+ import { prologue, varOrIri, varOrTerm } from '../general';
6
+ import { iri } from '../literals';
7
+ import { triplesBlock, triplesTemplate } from '../tripleBlock';
8
+ import { groupGraphPattern } from '../whereClause';
9
+ /**
10
+ * [[3]](https://www.w3.org/TR/sparql11-query/#rUpdateUnit)
11
+ */
12
+ export const updateUnit = {
13
+ name: 'updateUnit',
14
+ impl: ({ SUBRULE }) => () => SUBRULE(update, undefined),
15
+ };
16
+ /**
17
+ * [[29]](https://www.w3.org/TR/sparql11-query/#rUpdate)
18
+ */
19
+ export const update = {
20
+ name: 'update',
21
+ impl: ({ ACTION, SUBRULE, SUBRULE1, SUBRULE2, CONSUME, OPTION1, MANY }) => (C) => {
22
+ // Override prologueValues on new reads of prologue and sink them into updates later
23
+ const updates = [];
24
+ const prologueValues = SUBRULE1(prologue, undefined);
25
+ updates.push({ context: prologueValues });
26
+ let parsedSemi = true;
27
+ MANY({
28
+ GATE: () => parsedSemi,
29
+ DEF: () => {
30
+ parsedSemi = false;
31
+ updates.at(-1).operation = SUBRULE(update1, undefined);
32
+ OPTION1(() => {
33
+ CONSUME(l.symbols.semi);
34
+ parsedSemi = true;
35
+ const innerPrologue = SUBRULE2(prologue, undefined);
36
+ updates.push({ context: innerPrologue });
37
+ });
38
+ },
39
+ });
40
+ return ACTION(() => {
41
+ const update = {
42
+ type: 'update',
43
+ updates,
44
+ loc: C.factory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation),
45
+ };
46
+ updateNoReuseBlankNodeLabels(update);
47
+ return update;
48
+ });
49
+ },
50
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
51
+ for (const update of ast.updates) {
52
+ SUBRULE(prologue, update.context, undefined);
53
+ if (update.operation) {
54
+ SUBRULE(update1, update.operation, undefined);
55
+ F.printFilter(ast, () => PRINT_WORD(' ;\n'));
56
+ }
57
+ }
58
+ },
59
+ };
60
+ /**
61
+ * [[30]](https://www.w3.org/TR/sparql11-query/#rUpdate1)
62
+ */
63
+ export const update1 = {
64
+ name: 'update1',
65
+ impl: ({ SUBRULE, OR }) => () => OR([
66
+ { ALT: () => SUBRULE(load, undefined) },
67
+ { ALT: () => SUBRULE(clear, undefined) },
68
+ { ALT: () => SUBRULE(drop, undefined) },
69
+ { ALT: () => SUBRULE(add, undefined) },
70
+ { ALT: () => SUBRULE(move, undefined) },
71
+ { ALT: () => SUBRULE(copy, undefined) },
72
+ { ALT: () => SUBRULE(create, undefined) },
73
+ { ALT: () => SUBRULE(insertData, undefined) },
74
+ { ALT: () => SUBRULE(deleteData, undefined) },
75
+ { ALT: () => SUBRULE(deleteWhere, undefined) },
76
+ { ALT: () => SUBRULE(modify, undefined) },
77
+ ]),
78
+ gImpl: ({ SUBRULE }) => (ast) => {
79
+ switch (ast.subType) {
80
+ case ('load'):
81
+ SUBRULE(load, ast, undefined);
82
+ break;
83
+ case ('clear'):
84
+ SUBRULE(clear, ast, undefined);
85
+ break;
86
+ case ('drop'):
87
+ SUBRULE(drop, ast, undefined);
88
+ break;
89
+ case ('add'):
90
+ SUBRULE(add, ast, undefined);
91
+ break;
92
+ case ('move'):
93
+ SUBRULE(move, ast, undefined);
94
+ break;
95
+ case ('copy'):
96
+ SUBRULE(copy, ast, undefined);
97
+ break;
98
+ case ('create'):
99
+ SUBRULE(create, ast, undefined);
100
+ break;
101
+ case ('insertdata'):
102
+ SUBRULE(insertData, ast, undefined);
103
+ break;
104
+ case ('deletedata'):
105
+ SUBRULE(deleteData, ast, undefined);
106
+ break;
107
+ case ('deletewhere'):
108
+ SUBRULE(deleteWhere, ast, undefined);
109
+ break;
110
+ case ('modify'):
111
+ SUBRULE(modify, ast, undefined);
112
+ break;
113
+ }
114
+ },
115
+ };
116
+ /**
117
+ * [[31]](https://www.w3.org/TR/sparql11-query/#rLoad)
118
+ */
119
+ export const load = {
120
+ name: 'load',
121
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION1, OPTION2 }) => (C) => {
122
+ const loadToken = CONSUME(l.load);
123
+ const silent = OPTION1(() => CONSUME(l.silent));
124
+ const source = SUBRULE1(iri, undefined);
125
+ const destination = OPTION2(() => {
126
+ CONSUME(l.loadInto);
127
+ return SUBRULE1(graphRef, undefined);
128
+ });
129
+ return ACTION(() => C.factory.updateOperationLoad(C.factory.sourceLocation(loadToken, source, destination), source, Boolean(silent), destination));
130
+ },
131
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
132
+ F.printFilter(ast, () => {
133
+ PRINT_WORD('LOAD');
134
+ if (ast.silent) {
135
+ PRINT_WORD('SILENT');
136
+ }
137
+ });
138
+ SUBRULE(iri, ast.source, undefined);
139
+ if (ast.destination) {
140
+ F.printFilter(ast, () => PRINT_WORD('INTO'));
141
+ SUBRULE(graphRefAll, ast.destination, undefined);
142
+ }
143
+ },
144
+ };
145
+ function clearOrDrop(operation) {
146
+ return {
147
+ name: unCapitalize(operation.name),
148
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
149
+ const opToken = CONSUME(operation);
150
+ const silent = OPTION(() => CONSUME(l.silent));
151
+ const destination = SUBRULE1(graphRefAll, undefined);
152
+ return ACTION(() => C.factory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent), destination, C.factory.sourceLocation(opToken, destination)));
153
+ },
154
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
155
+ F.printFilter(ast, () => {
156
+ PRINT_WORD(operation.name.toUpperCase());
157
+ if (ast.silent) {
158
+ PRINT_WORD('SILENT');
159
+ }
160
+ });
161
+ SUBRULE(graphRefAll, ast.destination, undefined);
162
+ },
163
+ };
164
+ }
165
+ /**
166
+ * [[32]](https://www.w3.org/TR/sparql11-query/#rClear)
167
+ */
168
+ export const clear = clearOrDrop(l.clear);
169
+ /**
170
+ * [[33]](https://www.w3.org/TR/sparql11-query/#rDrop)
171
+ */
172
+ export const drop = clearOrDrop(l.drop);
173
+ /**
174
+ * [[34]](https://www.w3.org/TR/sparql11-query/#rCreate)
175
+ */
176
+ export const create = {
177
+ name: 'create',
178
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
179
+ const createToken = CONSUME(l.create);
180
+ const silent = OPTION(() => CONSUME(l.silent));
181
+ const destination = SUBRULE1(graphRef, undefined);
182
+ return ACTION(() => C.factory.updateOperationCreate(destination, Boolean(silent), C.factory.sourceLocation(createToken, destination)));
183
+ },
184
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
185
+ F.printFilter(ast, () => {
186
+ PRINT_WORD('CREATE');
187
+ if (ast.silent) {
188
+ PRINT_WORD('SILENT');
189
+ }
190
+ });
191
+ SUBRULE(graphRefAll, ast.destination, undefined);
192
+ },
193
+ };
194
+ function copyMoveAddOperation(operation) {
195
+ return {
196
+ name: unCapitalize(operation.name),
197
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION }) => (C) => {
198
+ const op = CONSUME(operation);
199
+ const silent = OPTION(() => CONSUME(l.silent));
200
+ const source = SUBRULE1(graphOrDefault, undefined);
201
+ CONSUME(l.to);
202
+ const destination = SUBRULE2(graphOrDefault, undefined);
203
+ return ACTION(() => C.factory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent), C.factory.sourceLocation(op, destination)));
204
+ },
205
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
206
+ F.printFilter(ast, () => {
207
+ PRINT_WORD(operation.name.toUpperCase());
208
+ if (ast.silent) {
209
+ PRINT_WORD('SILENT');
210
+ }
211
+ });
212
+ SUBRULE(graphRefAll, ast.source, undefined);
213
+ F.printFilter(ast, () => PRINT_WORD('TO'));
214
+ SUBRULE(graphRefAll, ast.destination, undefined);
215
+ },
216
+ };
217
+ }
218
+ /**
219
+ * [[35]](https://www.w3.org/TR/sparql11-query/#rAdd)
220
+ */
221
+ export const add = copyMoveAddOperation(l.add);
222
+ /**
223
+ * [[36]](https://www.w3.org/TR/sparql11-query/#rMove)
224
+ */
225
+ export const move = copyMoveAddOperation(l.move);
226
+ /**
227
+ * [[37]](https://www.w3.org/TR/sparql11-query/#rCopy)
228
+ */
229
+ export const copy = copyMoveAddOperation(l.copy);
230
+ /**
231
+ * [[48]](https://www.w3.org/TR/sparql11-query/#rQuadPattern)
232
+ */
233
+ export const quadPattern = {
234
+ name: 'quadPattern',
235
+ impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
236
+ const open = CONSUME(l.symbols.LCurly);
237
+ const val = SUBRULE1(quads, undefined);
238
+ const close = CONSUME(l.symbols.RCurly);
239
+ return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
240
+ },
241
+ };
242
+ /**
243
+ * [[49]](https://www.w3.org/TR/sparql11-query/#rQuadData)
244
+ */
245
+ export const quadData = {
246
+ name: 'quadData',
247
+ impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
248
+ const open = CONSUME(l.symbols.LCurly);
249
+ const couldParseVars = ACTION(() => C.parseMode.delete('canParseVars'));
250
+ const val = SUBRULE1(quads, undefined);
251
+ ACTION(() => couldParseVars && C.parseMode.add('canParseVars'));
252
+ const close = CONSUME(l.symbols.RCurly);
253
+ return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
254
+ },
255
+ };
256
+ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
257
+ return {
258
+ name,
259
+ impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
260
+ const insDelToken = CONSUME(cons1);
261
+ CONSUME(cons2);
262
+ let couldCreateBlankNodes = true;
263
+ if (name !== 'insertData') {
264
+ couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));
265
+ }
266
+ const data = SUBRULE1(dataRule, undefined);
267
+ if (name !== 'insertData') {
268
+ ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));
269
+ }
270
+ return ACTION(() => C.factory.updateOperationInsDelDataWhere(subType, data.val, C.factory.sourceLocation(insDelToken, data)));
271
+ },
272
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
273
+ F.printFilter(ast, () => PRINT_WORD(subType === 'insertdata' ?
274
+ 'INSERT DATA' :
275
+ (subType === 'deletedata' ? 'DELETE DATA' : 'DELETE WHERE'), '{'));
276
+ SUBRULE(quads, F.wrap(ast.data, ast.loc), undefined);
277
+ F.printFilter(ast, () => PRINT_WORD('}'));
278
+ },
279
+ };
280
+ }
281
+ /**
282
+ * [[38]](https://www.w3.org/TR/sparql11-query/#rInsertData)
283
+ */
284
+ export const insertData = insertDeleteDelWhere('insertData', 'insertdata', l.insertClause, l.dataClause, quadData);
285
+ /**
286
+ * [[39]](https://www.w3.org/TR/sparql11-query/#rDeleteData)
287
+ */
288
+ export const deleteData = insertDeleteDelWhere('deleteData', 'deletedata', l.deleteClause, l.dataClause, quadData);
289
+ /**
290
+ * [[40]](https://www.w3.org/TR/sparql11-query/#rDeleteWhere)
291
+ */
292
+ export const deleteWhere = insertDeleteDelWhere('deleteWhere', 'deletewhere', l.deleteClause, l.where, quadPattern);
293
+ /**
294
+ * [[41]](https://www.w3.org/TR/sparql11-query/#rModify)
295
+ */
296
+ export const modify = {
297
+ name: 'modify',
298
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {
299
+ const graph = OPTION1(() => {
300
+ const withToken = CONSUME(l.modifyWith);
301
+ const graph = SUBRULE1(iri, undefined);
302
+ return { withToken, graph };
303
+ });
304
+ const { insert, del } = OR([
305
+ { ALT: () => {
306
+ const del = SUBRULE1(deleteClause, undefined);
307
+ const insert = OPTION2(() => SUBRULE1(insertClause, undefined));
308
+ return { del, insert };
309
+ } },
310
+ { ALT: () => {
311
+ const insert = SUBRULE2(insertClause, undefined);
312
+ return { insert, del: undefined };
313
+ } },
314
+ ]);
315
+ const using = SUBRULE1(usingClauseStar, undefined);
316
+ CONSUME(l.where);
317
+ const where = SUBRULE1(groupGraphPattern, undefined);
318
+ return ACTION(() => C.factory.updateOperationModify(C.factory.sourceLocation(graph?.withToken, del, insert, where), insert?.val ?? [], del?.val ?? [], where, using, graph?.graph));
319
+ },
320
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
321
+ if (ast.graph) {
322
+ F.printFilter(ast, () => PRINT_WORD('WITH'));
323
+ SUBRULE(iri, ast.graph, undefined);
324
+ }
325
+ if (ast.delete.length > 0) {
326
+ F.printFilter(ast, () => PRINT_WORD('DELETE', '{'));
327
+ SUBRULE(quads, F.wrap(ast.delete, ast.loc), undefined);
328
+ F.printFilter(ast, () => PRINT_WORD('}'));
329
+ }
330
+ if (ast.insert.length > 0) {
331
+ F.printFilter(ast, () => PRINT_WORD('INSERT', '{'));
332
+ SUBRULE(quads, F.wrap(ast.insert, ast.loc), undefined);
333
+ F.printFilter(ast, () => PRINT_WORD('}'));
334
+ }
335
+ SUBRULE(usingClauseStar, ast.from, undefined);
336
+ F.printFilter(ast, () => PRINT_WORD('WHERE'));
337
+ SUBRULE(groupGraphPattern, ast.where, undefined);
338
+ },
339
+ };
340
+ /**
341
+ * [[42]](https://www.w3.org/TR/sparql11-query/#rDeleteClause)
342
+ */
343
+ export const deleteClause = {
344
+ name: 'deleteClause',
345
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
346
+ const delToken = CONSUME(l.deleteClause);
347
+ const couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));
348
+ const del = SUBRULE(quadPattern, undefined);
349
+ ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));
350
+ return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
351
+ },
352
+ };
353
+ /**
354
+ * [[43]](https://www.w3.org/TR/sparql11-query/#rInsertClause)
355
+ */
356
+ export const insertClause = {
357
+ name: 'insertClause',
358
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
359
+ const insertToken = CONSUME(l.insertClause);
360
+ const insert = SUBRULE(quadPattern, undefined);
361
+ return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
362
+ },
363
+ };
364
+ /**
365
+ * [[45]](https://www.w3.org/TR/sparql11-query/#rGraphOrDefault)
366
+ */
367
+ export const graphOrDefault = {
368
+ name: 'graphOrDefault',
369
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => C => OR([
370
+ { ALT: () => {
371
+ const def = CONSUME(l.graph.default_);
372
+ return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
373
+ } },
374
+ { ALT: () => {
375
+ const graph = OPTION(() => CONSUME(l.graph.graph));
376
+ const name = SUBRULE1(iri, undefined);
377
+ return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph, name)));
378
+ } },
379
+ ]),
380
+ };
381
+ /**
382
+ * [[46]](https://www.w3.org/TR/sparql11-query/#rGraphRef)
383
+ */
384
+ export const graphRef = {
385
+ name: 'graphRef',
386
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
387
+ const graph = CONSUME(l.graph.graph);
388
+ const val = SUBRULE(iri, undefined);
389
+ return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph, val)));
390
+ },
391
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
392
+ F.printFilter(ast, () => PRINT_WORD('GRAPH'));
393
+ SUBRULE(iri, ast.graph, undefined);
394
+ },
395
+ };
396
+ /**
397
+ * [[47]](https://www.w3.org/TR/sparql11-query/#rGraphRefAll)
398
+ */
399
+ export const graphRefAll = {
400
+ name: 'graphRefAll',
401
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => C => OR([
402
+ { ALT: () => SUBRULE(graphRef, undefined) },
403
+ { ALT: () => {
404
+ const def = CONSUME(l.graph.default_);
405
+ return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
406
+ } },
407
+ { ALT: () => {
408
+ const named = CONSUME(l.graph.named);
409
+ return ACTION(() => C.factory.graphRefNamed(C.factory.sourceLocation(named)));
410
+ } },
411
+ { ALT: () => {
412
+ const graphAll = CONSUME(l.graph.graphAll);
413
+ return ACTION(() => C.factory.graphRefAll(C.factory.sourceLocation(graphAll)));
414
+ } },
415
+ ]),
416
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
417
+ if (F.isGraphRefSpecific(ast)) {
418
+ SUBRULE(graphRef, ast, undefined);
419
+ }
420
+ else if (F.isGraphRefDefault(ast)) {
421
+ F.printFilter(ast, () => PRINT_WORD('DEFAULT'));
422
+ }
423
+ else if (F.isGraphRefNamed(ast)) {
424
+ F.printFilter(ast, () => PRINT_WORD('NAMED'));
425
+ }
426
+ else if (F.isGraphRefAll(ast)) {
427
+ F.printFilter(ast, () => PRINT_WORD('ALL'));
428
+ }
429
+ },
430
+ };
431
+ /**
432
+ * [[50]](https://www.w3.org/TR/sparql11-query/#rQuads)
433
+ */
434
+ export const quads = {
435
+ name: 'quads',
436
+ impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => (C) => {
437
+ const quads = [];
438
+ let last;
439
+ OPTION1(() => {
440
+ const triples = SUBRULE1(triplesTemplate, undefined);
441
+ last = triples;
442
+ ACTION(() => quads.push(triples));
443
+ });
444
+ MANY(() => {
445
+ const notTriples = SUBRULE(quadsNotTriples, undefined);
446
+ last = notTriples;
447
+ quads.push(notTriples);
448
+ OPTION2(() => {
449
+ const dotToken = CONSUME(l.symbols.dot);
450
+ last = dotToken;
451
+ return dotToken;
452
+ });
453
+ OPTION3(() => {
454
+ const triples = SUBRULE2(triplesTemplate, undefined);
455
+ last = triples;
456
+ ACTION(() => quads.push(triples));
457
+ });
458
+ });
459
+ return ACTION(() => C.factory.wrap(quads, C.factory.sourceLocation(quads.at(0), last)));
460
+ },
461
+ gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
462
+ for (const quad of ast.val) {
463
+ if (F.isPattern(quad)) {
464
+ SUBRULE(triplesBlock, quad, undefined);
465
+ }
466
+ else {
467
+ SUBRULE(quadsNotTriples, quad, undefined);
468
+ }
469
+ }
470
+ },
471
+ };
472
+ /**
473
+ * [[51]](https://www.w3.org/TR/sparql11-query/#rQuadsNotTriples)
474
+ */
475
+ export const quadsNotTriples = {
476
+ name: 'quadsNotTriples',
477
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
478
+ const graph = CONSUME(l.graph.graph);
479
+ const name = SUBRULE1(varOrIri, undefined);
480
+ CONSUME(l.symbols.LCurly);
481
+ const triples = OPTION(() => SUBRULE1(triplesTemplate, undefined));
482
+ const close = CONSUME(l.symbols.RCurly);
483
+ return ACTION(() => C.factory.graphQuads(name, triples ?? C.factory.patternBgp([], C.factory.sourceLocationNoMaterialize()), C.factory.sourceLocation(graph, close)));
484
+ },
485
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
486
+ F.printFilter(ast, () => PRINT_WORD('GRAPH'));
487
+ SUBRULE(varOrTerm, ast.graph, undefined);
488
+ F.printFilter(ast, () => PRINT_WORD('{'));
489
+ SUBRULE(triplesBlock, ast.triples, undefined);
490
+ F.printFilter(ast, () => PRINT_WORD('}'));
491
+ },
492
+ };
493
+ //# sourceMappingURL=updateUnit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateUnit.js","sourceRoot":"","sources":["updateUnit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Localized, RuleDefReturn, Wrap } from '@traqula/core';\nimport { unCapitalize } from '@traqula/core';\nimport type { IToken, TokenType } from 'chevrotain';\nimport * as l from '../../lexer';\nimport type {\n GraphQuads,\n GraphRef,\n GraphRefDefault,\n GraphRefSpecific,\n Quads,\n Update,\n UpdateOperation,\n UpdateOperationAdd,\n UpdateOperationClear,\n UpdateOperationCopy,\n UpdateOperationCreate,\n UpdateOperationDeleteData,\n UpdateOperationDeleteWhere,\n UpdateOperationDrop,\n UpdateOperationInsertData,\n UpdateOperationLoad,\n UpdateOperationModify,\n UpdateOperationMove,\n} from '../../RoundTripTypes';\nimport type {\n SparqlGrammarRule,\n SparqlRule,\n} from '../../Sparql11types';\nimport { updateNoReuseBlankNodeLabels } from '../../validation/validators';\nimport { usingClauseStar } from '../dataSetClause';\nimport { prologue, varOrIri, varOrTerm } from '../general';\nimport { iri } from '../literals';\nimport { triplesBlock, triplesTemplate } from '../tripleBlock';\nimport { groupGraphPattern } from '../whereClause';\n\n/**\n * [[3]](https://www.w3.org/TR/sparql11-query/#rUpdateUnit)\n */\nexport const updateUnit: SparqlGrammarRule<'updateUnit', Update> = <const> {\n name: 'updateUnit',\n impl: ({ SUBRULE }) => () => SUBRULE(update, undefined),\n};\n\n/**\n * [[29]](https://www.w3.org/TR/sparql11-query/#rUpdate)\n */\nexport const update: SparqlRule<'update', Update> = <const> {\n name: 'update',\n impl: ({ ACTION, SUBRULE, SUBRULE1, SUBRULE2, CONSUME, OPTION1, MANY }) => (C) => {\n // Override prologueValues on new reads of prologue and sink them into updates later\n const updates: Update['updates'] = [];\n const prologueValues = SUBRULE1(prologue, undefined);\n updates.push({ context: prologueValues });\n\n let parsedSemi = true;\n MANY({\n GATE: () => parsedSemi,\n DEF: () => {\n parsedSemi = false;\n updates.at(-1)!.operation = SUBRULE(update1, undefined);\n\n OPTION1(() => {\n CONSUME(l.symbols.semi);\n\n parsedSemi = true;\n const innerPrologue = SUBRULE2(prologue, undefined);\n updates.push({ context: innerPrologue });\n });\n },\n });\n return ACTION(() => {\n const update = {\n type: 'update',\n updates,\n loc: C.factory.sourceLocation(\n ...updates[0].context,\n updates[0].operation,\n ...updates.at(-1)!.context,\n updates.at(-1)?.operation,\n ),\n } satisfies Update;\n updateNoReuseBlankNodeLabels(update);\n return update;\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n for (const update of ast.updates) {\n SUBRULE(prologue, update.context, undefined);\n if (update.operation) {\n SUBRULE(update1, update.operation, undefined);\n F.printFilter(ast, () => PRINT_WORD(' ;\\n'));\n }\n }\n },\n};\n\n/**\n * [[30]](https://www.w3.org/TR/sparql11-query/#rUpdate1)\n */\nexport const update1: SparqlRule<'update1', UpdateOperation> = <const> {\n name: 'update1',\n impl: ({ SUBRULE, OR }) => () => OR<UpdateOperation>([\n { ALT: () => SUBRULE(load, undefined) },\n { ALT: () => SUBRULE(clear, undefined) },\n { ALT: () => SUBRULE(drop, undefined) },\n { ALT: () => SUBRULE(add, undefined) },\n { ALT: () => SUBRULE(move, undefined) },\n { ALT: () => SUBRULE(copy, undefined) },\n { ALT: () => SUBRULE(create, undefined) },\n { ALT: () => SUBRULE(insertData, undefined) },\n { ALT: () => SUBRULE(deleteData, undefined) },\n { ALT: () => SUBRULE(deleteWhere, undefined) },\n { ALT: () => SUBRULE(modify, undefined) },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n switch (ast.subType) {\n case ('load'):\n SUBRULE(load, ast, undefined);\n break;\n case ('clear'):\n SUBRULE(clear, ast, undefined);\n break;\n case ('drop'):\n SUBRULE(drop, ast, undefined);\n break;\n case ('add'):\n SUBRULE(add, ast, undefined);\n break;\n case ('move'):\n SUBRULE(move, ast, undefined);\n break;\n case ('copy'):\n SUBRULE(copy, ast, undefined);\n break;\n case ('create'):\n SUBRULE(create, ast, undefined);\n break;\n case ('insertdata'):\n SUBRULE(insertData, ast, undefined);\n break;\n case ('deletedata'):\n SUBRULE(deleteData, ast, undefined);\n break;\n case ('deletewhere'):\n SUBRULE(deleteWhere, ast, undefined);\n break;\n case ('modify'):\n SUBRULE(modify, ast, undefined);\n break;\n }\n },\n};\n\n/**\n * [[31]](https://www.w3.org/TR/sparql11-query/#rLoad)\n */\nexport const load: SparqlRule<'load', UpdateOperationLoad> = <const> {\n name: 'load',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION1, OPTION2 }) => (C) => {\n const loadToken = CONSUME(l.load);\n const silent = OPTION1(() => CONSUME(l.silent));\n const source = SUBRULE1(iri, undefined);\n const destination = OPTION2(() => {\n CONSUME(l.loadInto);\n return SUBRULE1(graphRef, undefined);\n });\n return ACTION(() => C.factory.updateOperationLoad(\n C.factory.sourceLocation(loadToken, source, destination),\n source,\n Boolean(silent),\n destination,\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD('LOAD');\n if (ast.silent) {\n PRINT_WORD('SILENT');\n }\n });\n SUBRULE(iri, ast.source, undefined);\n if (ast.destination) {\n F.printFilter(ast, () => PRINT_WORD('INTO'));\n SUBRULE(graphRefAll, ast.destination, undefined);\n }\n },\n};\n\nfunction clearOrDrop<T extends 'Clear' | 'Drop'>(operation: TokenType & { name: T }):\nSparqlRule<Uncapitalize<T>, UpdateOperationClear | UpdateOperationDrop> {\n return {\n name: unCapitalize(operation.name),\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {\n const opToken = CONSUME(operation);\n const silent = OPTION(() => CONSUME(l.silent));\n const destination = SUBRULE1(graphRefAll, undefined);\n return ACTION(() => C.factory.updateOperationClearDrop(\n unCapitalize(operation.name),\n Boolean(silent),\n destination,\n C.factory.sourceLocation(opToken, destination),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD(operation.name.toUpperCase());\n if (ast.silent) {\n PRINT_WORD('SILENT');\n }\n });\n SUBRULE(graphRefAll, ast.destination, undefined);\n },\n };\n}\n\n/**\n * [[32]](https://www.w3.org/TR/sparql11-query/#rClear)\n */\nexport const clear = clearOrDrop(l.clear);\n\n/**\n * [[33]](https://www.w3.org/TR/sparql11-query/#rDrop)\n */\nexport const drop = clearOrDrop(l.drop);\n\n/**\n * [[34]](https://www.w3.org/TR/sparql11-query/#rCreate)\n */\nexport const create: SparqlRule<'create', UpdateOperationCreate> = <const> {\n name: 'create',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {\n const createToken = CONSUME(l.create);\n const silent = OPTION(() => CONSUME(l.silent));\n const destination = SUBRULE1(graphRef, undefined);\n\n return ACTION(() => C.factory.updateOperationCreate(\n destination,\n Boolean(silent),\n C.factory.sourceLocation(createToken, destination),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD('CREATE');\n if (ast.silent) {\n PRINT_WORD('SILENT');\n }\n });\n SUBRULE(graphRefAll, ast.destination, undefined);\n },\n};\n\nfunction copyMoveAddOperation<T extends 'Copy' | 'Move' | 'Add'>(operation: TokenType & { name: T }):\nSparqlRule<Uncapitalize<T>, UpdateOperationAdd | UpdateOperationMove | UpdateOperationCopy> {\n return {\n name: unCapitalize(operation.name),\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION }) => (C) => {\n const op = CONSUME(operation);\n const silent = OPTION(() => CONSUME(l.silent));\n const source = SUBRULE1(graphOrDefault, undefined);\n CONSUME(l.to);\n const destination = SUBRULE2(graphOrDefault, undefined);\n\n return ACTION(() => C.factory.updateOperationAddMoveCopy(\n unCapitalize(operation.name),\n source,\n destination,\n Boolean(silent),\n C.factory.sourceLocation(op, destination),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD(operation.name.toUpperCase());\n if (ast.silent) {\n PRINT_WORD('SILENT');\n }\n });\n SUBRULE(graphRefAll, ast.source, undefined);\n F.printFilter(ast, () => PRINT_WORD('TO'));\n SUBRULE(graphRefAll, ast.destination, undefined);\n },\n };\n}\n\n/**\n * [[35]](https://www.w3.org/TR/sparql11-query/#rAdd)\n */\nexport const add = copyMoveAddOperation(l.add);\n\n/**\n * [[36]](https://www.w3.org/TR/sparql11-query/#rMove)\n */\nexport const move = copyMoveAddOperation(l.move);\n\n/**\n * [[37]](https://www.w3.org/TR/sparql11-query/#rCopy)\n */\nexport const copy = copyMoveAddOperation(l.copy);\n\n/**\n * [[48]](https://www.w3.org/TR/sparql11-query/#rQuadPattern)\n */\nexport const quadPattern: SparqlGrammarRule<'quadPattern', Wrap<Quads[]>> = <const> {\n name: 'quadPattern',\n impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {\n const open = CONSUME(l.symbols.LCurly);\n const val = SUBRULE1(quads, undefined);\n const close = CONSUME(l.symbols.RCurly);\n return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[49]](https://www.w3.org/TR/sparql11-query/#rQuadData)\n */\nexport const quadData: SparqlGrammarRule<'quadData', Wrap<Quads[]>> = <const> {\n name: 'quadData',\n impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {\n const open = CONSUME(l.symbols.LCurly);\n\n const couldParseVars = ACTION(() => C.parseMode.delete('canParseVars'));\n const val = SUBRULE1(quads, undefined);\n ACTION(() => couldParseVars && C.parseMode.add('canParseVars'));\n\n const close = CONSUME(l.symbols.RCurly);\n return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));\n },\n};\n\nfunction insertDeleteDelWhere<T extends string>(\n name: T,\n subType: 'insertdata' | 'deletedata' | 'deletewhere',\n cons1: TokenType,\n cons2: TokenType,\n dataRule: SparqlGrammarRule<any, Wrap<Quads[]>>,\n): SparqlRule<T, UpdateOperationInsertData | UpdateOperationDeleteData | UpdateOperationDeleteWhere> {\n return {\n name,\n impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {\n const insDelToken = CONSUME(cons1);\n CONSUME(cons2);\n\n let couldCreateBlankNodes = true;\n if (name !== 'insertData') {\n couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));\n }\n const data = SUBRULE1(dataRule, undefined);\n if (name !== 'insertData') {\n ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));\n }\n\n return ACTION(() =>\n C.factory.updateOperationInsDelDataWhere(subType, data.val, C.factory.sourceLocation(insDelToken, data)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD(\n subType === 'insertdata' ?\n 'INSERT DATA' :\n (subType === 'deletedata' ? 'DELETE DATA' : 'DELETE WHERE'),\n '{',\n ));\n SUBRULE(quads, F.wrap(ast.data, ast.loc), undefined);\n F.printFilter(ast, () => PRINT_WORD('}'));\n },\n };\n}\n\n/**\n * [[38]](https://www.w3.org/TR/sparql11-query/#rInsertData)\n */\nexport const insertData = insertDeleteDelWhere('insertData', 'insertdata', l.insertClause, l.dataClause, quadData);\n\n/**\n * [[39]](https://www.w3.org/TR/sparql11-query/#rDeleteData)\n */\nexport const deleteData = insertDeleteDelWhere('deleteData', 'deletedata', l.deleteClause, l.dataClause, quadData);\n\n/**\n * [[40]](https://www.w3.org/TR/sparql11-query/#rDeleteWhere)\n */\nexport const deleteWhere = insertDeleteDelWhere('deleteWhere', 'deletewhere', l.deleteClause, l.where, quadPattern);\n\n/**\n * [[41]](https://www.w3.org/TR/sparql11-query/#rModify)\n */\nexport const modify: SparqlRule<'modify', UpdateOperationModify> = <const> {\n name: 'modify',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {\n const graph = OPTION1(() => {\n const withToken = CONSUME(l.modifyWith);\n const graph = SUBRULE1(iri, undefined);\n return { withToken, graph };\n });\n const { insert, del } = OR<{\n del: RuleDefReturn<typeof deleteClause> | undefined;\n insert: RuleDefReturn<typeof insertClause> | undefined;\n }>([\n { ALT: () => {\n const del = SUBRULE1(deleteClause, undefined);\n const insert = OPTION2(() => SUBRULE1(insertClause, undefined));\n return { del, insert };\n } },\n { ALT: () => {\n const insert = SUBRULE2(insertClause, undefined);\n return { insert, del: undefined };\n } },\n ]);\n const using = SUBRULE1(usingClauseStar, undefined);\n CONSUME(l.where);\n const where = SUBRULE1(groupGraphPattern, undefined);\n\n return ACTION(() => C.factory.updateOperationModify(\n C.factory.sourceLocation(graph?.withToken, del, insert, where),\n insert?.val ?? [],\n del?.val ?? [],\n where,\n using,\n graph?.graph,\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n if (ast.graph) {\n F.printFilter(ast, () => PRINT_WORD('WITH'));\n SUBRULE(iri, ast.graph, undefined);\n }\n if (ast.delete.length > 0) {\n F.printFilter(ast, () => PRINT_WORD('DELETE', '{'));\n SUBRULE(quads, F.wrap(ast.delete, ast.loc), undefined);\n F.printFilter(ast, () => PRINT_WORD('}'));\n }\n if (ast.insert.length > 0) {\n F.printFilter(ast, () => PRINT_WORD('INSERT', '{'));\n SUBRULE(quads, F.wrap(ast.insert, ast.loc), undefined);\n F.printFilter(ast, () => PRINT_WORD('}'));\n }\n SUBRULE(usingClauseStar, ast.from, undefined);\n F.printFilter(ast, () => PRINT_WORD('WHERE'));\n SUBRULE(groupGraphPattern, ast.where, undefined);\n },\n};\n\n/**\n * [[42]](https://www.w3.org/TR/sparql11-query/#rDeleteClause)\n */\nexport const deleteClause: SparqlGrammarRule<'deleteClause', Wrap<Quads[]>> = <const> {\n name: 'deleteClause',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const delToken = CONSUME(l.deleteClause);\n const couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));\n const del = SUBRULE(quadPattern, undefined);\n ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));\n\n return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));\n },\n};\n\n/**\n * [[43]](https://www.w3.org/TR/sparql11-query/#rInsertClause)\n */\nexport const insertClause: SparqlGrammarRule<'insertClause', Wrap<Quads[]>> = <const> {\n name: 'insertClause',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const insertToken = CONSUME(l.insertClause);\n const insert = SUBRULE(quadPattern, undefined);\n\n return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));\n },\n};\n\n/**\n * [[45]](https://www.w3.org/TR/sparql11-query/#rGraphOrDefault)\n */\nexport const graphOrDefault: SparqlGrammarRule<'graphOrDefault', GraphRefDefault | GraphRefSpecific> = <const> {\n name: 'graphOrDefault',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => C => OR<GraphRefDefault | GraphRefSpecific>([\n { ALT: () => {\n const def = CONSUME(l.graph.default_);\n return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));\n } },\n { ALT: () => {\n const graph = OPTION(() => CONSUME(l.graph.graph));\n const name = SUBRULE1(iri, undefined);\n return ACTION(() =>\n C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph, name)));\n } },\n ]),\n};\n\n/**\n * [[46]](https://www.w3.org/TR/sparql11-query/#rGraphRef)\n */\nexport const graphRef: SparqlRule<'graphRef', GraphRefSpecific> = <const> {\n name: 'graphRef',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const graph = CONSUME(l.graph.graph);\n const val = SUBRULE(iri, undefined);\n return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph, val)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('GRAPH'));\n SUBRULE(iri, ast.graph, undefined);\n },\n};\n\n/**\n * [[47]](https://www.w3.org/TR/sparql11-query/#rGraphRefAll)\n */\nexport const graphRefAll: SparqlRule<'graphRefAll', GraphRef> = <const> {\n name: 'graphRefAll',\n impl: ({ ACTION, SUBRULE, CONSUME, OR }) => C => OR<GraphRef>([\n { ALT: () => SUBRULE(graphRef, undefined) },\n { ALT: () => {\n const def = CONSUME(l.graph.default_);\n return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));\n } },\n { ALT: () => {\n const named = CONSUME(l.graph.named);\n return ACTION(() => C.factory.graphRefNamed(C.factory.sourceLocation(named)));\n } },\n { ALT: () => {\n const graphAll = CONSUME(l.graph.graphAll);\n return ACTION(() => C.factory.graphRefAll(C.factory.sourceLocation(graphAll)));\n } },\n ]),\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n if (F.isGraphRefSpecific(ast)) {\n SUBRULE(graphRef, ast, undefined);\n } else if (F.isGraphRefDefault(ast)) {\n F.printFilter(ast, () => PRINT_WORD('DEFAULT'));\n } else if (F.isGraphRefNamed(ast)) {\n F.printFilter(ast, () => PRINT_WORD('NAMED'));\n } else if (F.isGraphRefAll(ast)) {\n F.printFilter(ast, () => PRINT_WORD('ALL'));\n }\n },\n};\n\n/**\n * [[50]](https://www.w3.org/TR/sparql11-query/#rQuads)\n */\nexport const quads: SparqlRule<'quads', Wrap<Quads[]>> = <const> {\n name: 'quads',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => (C) => {\n const quads: Quads[] = [];\n let last: IToken | Localized | undefined;\n\n OPTION1(() => {\n const triples = SUBRULE1(triplesTemplate, undefined);\n last = triples;\n ACTION(() => quads.push(triples));\n });\n\n MANY(() => {\n const notTriples = SUBRULE(quadsNotTriples, undefined);\n last = notTriples;\n quads.push(notTriples);\n OPTION2(() => {\n const dotToken = CONSUME(l.symbols.dot);\n last = dotToken;\n return dotToken;\n });\n OPTION3(() => {\n const triples = SUBRULE2(triplesTemplate, undefined);\n last = triples;\n ACTION(() => quads.push(triples));\n });\n });\n\n return ACTION(() => C.factory.wrap(quads, C.factory.sourceLocation(quads.at(0), last)));\n },\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n for (const quad of ast.val) {\n if (F.isPattern(quad)) {\n SUBRULE(triplesBlock, quad, undefined);\n } else {\n SUBRULE(quadsNotTriples, quad, undefined);\n }\n }\n },\n};\n\n/**\n * [[51]](https://www.w3.org/TR/sparql11-query/#rQuadsNotTriples)\n */\nexport const quadsNotTriples: SparqlRule<'quadsNotTriples', GraphQuads> = <const> {\n name: 'quadsNotTriples',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {\n const graph = CONSUME(l.graph.graph);\n const name = SUBRULE1(varOrIri, undefined);\n CONSUME(l.symbols.LCurly);\n const triples = OPTION(() => SUBRULE1(triplesTemplate, undefined));\n const close = CONSUME(l.symbols.RCurly);\n\n return ACTION(() => C.factory.graphQuads(\n name,\n triples ?? C.factory.patternBgp([], C.factory.sourceLocationNoMaterialize()),\n C.factory.sourceLocation(graph, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('GRAPH'));\n SUBRULE(varOrTerm, ast.graph, undefined);\n F.printFilter(ast, () => PRINT_WORD('{'));\n SUBRULE(triplesBlock, ast.triples, undefined);\n F.printFilter(ast, () => PRINT_WORD('}'));\n },\n};\n"]}
@@ -0,0 +1,76 @@
1
+ import type { Wrap } from '@traqula/core';
2
+ import type { Expression, ExpressionFunctionCall, PatternFilter, Pattern, PatternGroup, PatternUnion, PatternMinus, TermIri, TermLiteral, PatternBind, PatternService, PatternOptional, PatternGraph, PatternValues, ValuePatternRow, SubSelect, PatternBgp } from '../RoundTripTypes';
3
+ import type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from '../Sparql11types';
4
+ /**
5
+ * [[17]](https://www.w3.org/TR/sparql11-query/#rWhereClause)
6
+ */
7
+ export declare const whereClause: SparqlRule<'whereClause', Wrap<PatternGroup>>;
8
+ /**
9
+ * [[53]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPattern)
10
+ */
11
+ export declare const groupGraphPattern: SparqlRule<'groupGraphPattern', PatternGroup>;
12
+ export declare const generatePattern: SparqlGeneratorRule<'generatePattern', Pattern>;
13
+ /**
14
+ * [[54]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPatternSub)
15
+ */
16
+ export declare const groupGraphPatternSub: SparqlGrammarRule<'groupGraphPatternSub', Pattern[]>;
17
+ /**
18
+ * [[56]](https://www.w3.org/TR/sparql11-query/#rGraphPatternNotTriples)
19
+ */
20
+ export declare const graphPatternNotTriples: SparqlRule<'graphPatternNotTriples', Exclude<Pattern, SubSelect | PatternBgp>>;
21
+ /**
22
+ * [[57]](https://www.w3.org/TR/sparql11-query/#rOptionalGraphPattern)
23
+ */
24
+ export declare const optionalGraphPattern: SparqlRule<'optionalGraphPattern', PatternOptional>;
25
+ /**
26
+ * [[58]](https://www.w3.org/TR/sparql11-query/#rGraphGraphPattern)
27
+ */
28
+ export declare const graphGraphPattern: SparqlRule<'graphGraphPattern', PatternGraph>;
29
+ /**
30
+ * [[59]](https://www.w3.org/TR/sparql11-query/#rServiceGraphPattern)
31
+ */
32
+ export declare const serviceGraphPattern: SparqlRule<'serviceGraphPattern', PatternService>;
33
+ /**
34
+ * [[60]](https://www.w3.org/TR/sparql11-query/#rBind)
35
+ */
36
+ export declare const bind: SparqlRule<'bind', PatternBind>;
37
+ /**
38
+ * [[61]](https://www.w3.org/TR/sparql11-query/#rInlineData)
39
+ */
40
+ export declare const inlineData: SparqlRule<'inlineData', PatternValues>;
41
+ /**
42
+ * [[62]](https://www.w3.org/TR/sparql11-query/#rDataBlock)
43
+ */
44
+ export declare const dataBlock: SparqlGrammarRule<'dataBlock', Wrap<ValuePatternRow[]>>;
45
+ /**
46
+ * [[63]](https://www.w3.org/TR/sparql11-query/#rInlineDataOneVar)
47
+ */
48
+ export declare const inlineDataOneVar: SparqlGrammarRule<'inlineDataOneVar', Wrap<ValuePatternRow[]>>;
49
+ /**
50
+ * [[64]](https://www.w3.org/TR/sparql11-query/#rInlineDataFull)
51
+ */
52
+ export declare const inlineDataFull: SparqlGrammarRule<'inlineDataFull', Wrap<ValuePatternRow[]>>;
53
+ /**
54
+ * [[65]](https://www.w3.org/TR/sparql11-query/#rDataBlockValue)
55
+ */
56
+ export declare const dataBlockValue: SparqlGrammarRule<'dataBlockValue', TermIri | TermLiteral | undefined>;
57
+ /**
58
+ * [[66]](https://www.w3.org/TR/sparql11-query/#rMinusGraphPattern)
59
+ */
60
+ export declare const minusGraphPattern: SparqlRule<'minusGraphPattern', PatternMinus>;
61
+ /**
62
+ * [[67]](https://www.w3.org/TR/sparql11-query/#rGroupOrUnionGraphPattern)
63
+ */
64
+ export declare const groupOrUnionGraphPattern: SparqlRule<'groupOrUnionGraphPattern', PatternGroup | PatternUnion>;
65
+ /**
66
+ * [[68]](https://www.w3.org/TR/sparql11-query/#rFilter)
67
+ */
68
+ export declare const filter: SparqlRule<'filter', PatternFilter>;
69
+ /**
70
+ * [[69]](https://www.w3.org/TR/sparql11-query/#rConstraint)
71
+ */
72
+ export declare const constraint: SparqlGrammarRule<'constraint', Expression>;
73
+ /**
74
+ * [[70]](https://www.w3.org/TR/sparql11-query/#rFunctionCall)
75
+ */
76
+ export declare const functionCall: SparqlGrammarRule<'functionCall', ExpressionFunctionCall>;