@traqula/rules-sparql-1-1 0.0.23 → 0.0.25

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 (116) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/lib/MinimalSparqlParser.js +66 -58
  3. package/dist/cjs/lib/MinimalSparqlParser.js.map +1 -0
  4. package/dist/cjs/lib/Sparql11types.js +2 -15
  5. package/dist/cjs/lib/Sparql11types.js.map +1 -0
  6. package/dist/cjs/lib/astFactory.js +110 -119
  7. package/dist/cjs/lib/astFactory.js.map +1 -0
  8. package/dist/cjs/lib/expressionHelpers.js +181 -191
  9. package/dist/cjs/lib/expressionHelpers.js.map +1 -0
  10. package/dist/cjs/lib/factoryMixins/ContextFactory.js +30 -52
  11. package/dist/cjs/lib/factoryMixins/ContextFactory.js.map +1 -0
  12. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js +83 -102
  13. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  14. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js +51 -73
  15. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  16. package/dist/cjs/lib/factoryMixins/PathFactory.js +68 -87
  17. package/dist/cjs/lib/factoryMixins/PathFactory.js.map +1 -0
  18. package/dist/cjs/lib/factoryMixins/Patternfactory.js +98 -120
  19. package/dist/cjs/lib/factoryMixins/Patternfactory.js.map +1 -0
  20. package/dist/cjs/lib/factoryMixins/QueryFactory.js +43 -65
  21. package/dist/cjs/lib/factoryMixins/QueryFactory.js.map +1 -0
  22. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js +55 -77
  23. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  24. package/dist/cjs/lib/factoryMixins/TermFactory.js +81 -102
  25. package/dist/cjs/lib/factoryMixins/TermFactory.js.map +1 -0
  26. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js +126 -147
  27. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  28. package/dist/cjs/lib/factoryMixins/mixins.js +21 -38
  29. package/dist/cjs/lib/factoryMixins/mixins.js.map +1 -0
  30. package/dist/cjs/lib/grammar/builtIn.js +277 -377
  31. package/dist/cjs/lib/grammar/builtIn.js.map +1 -0
  32. package/dist/cjs/lib/grammar/dataSetClause.js +110 -109
  33. package/dist/cjs/lib/grammar/dataSetClause.js.map +1 -0
  34. package/dist/cjs/lib/grammar/expression.js +387 -358
  35. package/dist/cjs/lib/grammar/expression.js.map +1 -0
  36. package/dist/cjs/lib/grammar/general.js +173 -158
  37. package/dist/cjs/lib/grammar/general.js.map +1 -0
  38. package/dist/cjs/lib/grammar/index.js +94 -111
  39. package/dist/cjs/lib/grammar/index.js.map +1 -0
  40. package/dist/cjs/lib/grammar/literals.js +292 -266
  41. package/dist/cjs/lib/grammar/literals.js.map +1 -0
  42. package/dist/cjs/lib/grammar/propertyPaths.js +206 -193
  43. package/dist/cjs/lib/grammar/propertyPaths.js.map +1 -0
  44. package/dist/cjs/lib/grammar/queryUnit.js +395 -372
  45. package/dist/cjs/lib/grammar/queryUnit.js.map +1 -0
  46. package/dist/cjs/lib/grammar/solutionModifier.js +281 -265
  47. package/dist/cjs/lib/grammar/solutionModifier.js.map +1 -0
  48. package/dist/cjs/lib/grammar/tripleBlock.js +396 -355
  49. package/dist/cjs/lib/grammar/tripleBlock.js.map +1 -0
  50. package/dist/cjs/lib/grammar/updateUnit.js +551 -519
  51. package/dist/cjs/lib/grammar/updateUnit.js.map +1 -0
  52. package/dist/cjs/lib/grammar/whereClause.js +486 -459
  53. package/dist/cjs/lib/grammar/whereClause.js.map +1 -0
  54. package/dist/cjs/lib/index.js +47 -54
  55. package/dist/cjs/lib/index.js.map +1 -0
  56. package/dist/cjs/lib/lexer/BuiltInCalls.js +188 -333
  57. package/dist/cjs/lib/lexer/BuiltInCalls.js.map +1 -0
  58. package/dist/cjs/lib/lexer/graph.js +10 -40
  59. package/dist/cjs/lib/lexer/graph.js.map +1 -0
  60. package/dist/cjs/lib/lexer/index.js +43 -48
  61. package/dist/cjs/lib/lexer/index.js.map +1 -0
  62. package/dist/cjs/lib/lexer/lexer.js +84 -195
  63. package/dist/cjs/lib/lexer/lexer.js.map +1 -0
  64. package/dist/cjs/lib/lexer/lexerPatterns.js +40 -132
  65. package/dist/cjs/lib/lexer/lexerPatterns.js.map +1 -0
  66. package/dist/cjs/lib/lexer/symbols.js +31 -106
  67. package/dist/cjs/lib/lexer/symbols.js.map +1 -0
  68. package/dist/cjs/lib/lexer/terminals.js +100 -102
  69. package/dist/cjs/lib/lexer/terminals.js.map +1 -0
  70. package/dist/cjs/lib/sparql11HelperTypes.js +2 -15
  71. package/dist/cjs/lib/sparql11HelperTypes.js.map +1 -0
  72. package/dist/cjs/lib/utils.js +40 -58
  73. package/dist/cjs/lib/utils.js.map +1 -0
  74. package/dist/cjs/lib/validation/validators.js +217 -196
  75. package/dist/cjs/lib/validation/validators.js.map +1 -0
  76. package/dist/esm/lib/MinimalSparqlParser.d.ts +26 -8
  77. package/dist/esm/lib/MinimalSparqlParser.js +40 -11
  78. package/dist/esm/lib/MinimalSparqlParser.js.map +1 -1
  79. package/dist/esm/lib/astFactory.d.ts +66 -45
  80. package/dist/esm/lib/astFactory.js +3 -0
  81. package/dist/esm/lib/astFactory.js.map +1 -1
  82. package/dist/esm/lib/factoryMixins/ContextFactory.d.ts +7 -5
  83. package/dist/esm/lib/factoryMixins/ExpressionFactory.d.ts +7 -5
  84. package/dist/esm/lib/factoryMixins/GraphRefFactory.d.ts +7 -5
  85. package/dist/esm/lib/factoryMixins/PathFactory.d.ts +7 -5
  86. package/dist/esm/lib/factoryMixins/Patternfactory.d.ts +7 -5
  87. package/dist/esm/lib/factoryMixins/QueryFactory.d.ts +7 -5
  88. package/dist/esm/lib/factoryMixins/SolutionModifiersFactory.d.ts +7 -5
  89. package/dist/esm/lib/factoryMixins/TermFactory.d.ts +7 -5
  90. package/dist/esm/lib/factoryMixins/UpdateOperationFactory.d.ts +7 -5
  91. package/dist/esm/lib/grammar/index.js +1 -1
  92. package/dist/esm/lib/grammar/index.js.map +1 -1
  93. package/dist/esm/lib/grammar/literals.js +23 -13
  94. package/dist/esm/lib/grammar/literals.js.map +1 -1
  95. package/dist/esm/lib/grammar/propertyPaths.d.ts +2 -2
  96. package/dist/esm/lib/grammar/tripleBlock.d.ts +4 -4
  97. package/dist/esm/lib/grammar/tripleBlock.js +18 -12
  98. package/dist/esm/lib/grammar/tripleBlock.js.map +1 -1
  99. package/dist/esm/lib/grammar/updateUnit.js +2 -2
  100. package/dist/esm/lib/grammar/updateUnit.js.map +1 -1
  101. package/dist/esm/lib/lexer/BuiltInCalls.d.ts +1 -1
  102. package/dist/esm/lib/lexer/graph.d.ts +1 -1
  103. package/dist/esm/lib/lexer/lexer.d.ts +2 -2
  104. package/dist/esm/lib/lexer/lexerPatterns.d.ts +1 -1
  105. package/dist/esm/lib/lexer/lexerPatterns.js +1 -1
  106. package/dist/esm/lib/lexer/lexerPatterns.js.map +1 -1
  107. package/dist/esm/lib/lexer/symbols.d.ts +1 -1
  108. package/dist/esm/lib/lexer/terminals.d.ts +2 -2
  109. package/dist/esm/lib/lexer/terminals.js +3 -3
  110. package/dist/esm/lib/lexer/terminals.js.map +1 -1
  111. package/dist/esm/lib/sparql11HelperTypes.d.ts +1 -1
  112. package/dist/esm/lib/sparql11HelperTypes.js.map +1 -1
  113. package/dist/esm/lib/validation/validators.d.ts +2 -2
  114. package/dist/esm/lib/validation/validators.js +61 -51
  115. package/dist/esm/lib/validation/validators.js.map +1 -1
  116. package/package.json +10 -10
@@ -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