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

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 (188) hide show
  1. package/dist/cjs/lib/MinimalSparqlParser.js +64 -0
  2. package/dist/cjs/lib/Sparql11types.js +16 -0
  3. package/dist/cjs/lib/astFactory.js +121 -0
  4. package/dist/cjs/lib/expressionHelpers.js +215 -0
  5. package/dist/cjs/lib/factoryMixins/ContextFactory.js +55 -0
  6. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js +105 -0
  7. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js +76 -0
  8. package/dist/cjs/lib/factoryMixins/PathFactory.js +90 -0
  9. package/dist/cjs/lib/factoryMixins/Patternfactory.js +123 -0
  10. package/dist/cjs/lib/factoryMixins/QueryFactory.js +68 -0
  11. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js +80 -0
  12. package/dist/cjs/lib/factoryMixins/TermFactory.js +105 -0
  13. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js +150 -0
  14. package/dist/cjs/lib/factoryMixins/mixins.js +43 -0
  15. package/dist/cjs/lib/grammar/builtIn.js +385 -0
  16. package/dist/cjs/lib/grammar/dataSetClause.js +118 -0
  17. package/dist/cjs/lib/grammar/expression.js +384 -0
  18. package/dist/cjs/lib/grammar/general.js +168 -0
  19. package/dist/cjs/lib/grammar/index.js +115 -0
  20. package/dist/cjs/lib/grammar/literals.js +282 -0
  21. package/dist/cjs/lib/grammar/propertyPaths.js +206 -0
  22. package/dist/cjs/lib/grammar/queryUnit.js +390 -0
  23. package/dist/cjs/lib/grammar/solutionModifier.js +280 -0
  24. package/dist/cjs/lib/grammar/tripleBlock.js +384 -0
  25. package/dist/cjs/lib/grammar/updateUnit.js +546 -0
  26. package/dist/cjs/lib/grammar/whereClause.js +483 -0
  27. package/dist/cjs/lib/index.js +56 -0
  28. package/dist/cjs/lib/lexer/BuiltInCalls.js +337 -0
  29. package/dist/cjs/lib/lexer/graph.js +41 -0
  30. package/dist/cjs/lib/lexer/index.js +50 -0
  31. package/dist/cjs/lib/lexer/lexer.js +199 -0
  32. package/dist/cjs/lib/lexer/lexerPatterns.js +133 -0
  33. package/dist/cjs/lib/lexer/symbols.js +107 -0
  34. package/dist/cjs/lib/lexer/terminals.js +103 -0
  35. package/dist/cjs/lib/sparql11HelperTypes.js +16 -0
  36. package/dist/cjs/lib/utils.js +64 -0
  37. package/dist/cjs/lib/validation/validators.js +214 -0
  38. package/dist/cjs/package.json +1 -0
  39. package/dist/esm/lib/MinimalSparqlParser.js.map +1 -0
  40. package/dist/esm/lib/Sparql11types.js.map +1 -0
  41. package/dist/esm/lib/astFactory.js.map +1 -0
  42. package/{lib → dist/esm/lib}/expressionHelpers.d.ts +1 -1
  43. package/dist/esm/lib/expressionHelpers.js.map +1 -0
  44. package/dist/esm/lib/factoryMixins/ContextFactory.js.map +1 -0
  45. package/dist/esm/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  46. package/dist/esm/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  47. package/dist/esm/lib/factoryMixins/PathFactory.js.map +1 -0
  48. package/dist/esm/lib/factoryMixins/Patternfactory.js.map +1 -0
  49. package/dist/esm/lib/factoryMixins/QueryFactory.js.map +1 -0
  50. package/dist/esm/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  51. package/dist/esm/lib/factoryMixins/TermFactory.js.map +1 -0
  52. package/dist/esm/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  53. package/dist/esm/lib/factoryMixins/mixins.js.map +1 -0
  54. package/{lib → dist/esm/lib}/grammar/builtIn.d.ts +1 -1
  55. package/dist/esm/lib/grammar/builtIn.js.map +1 -0
  56. package/{lib → dist/esm/lib}/grammar/dataSetClause.d.ts +1 -1
  57. package/dist/esm/lib/grammar/dataSetClause.js.map +1 -0
  58. package/dist/esm/lib/grammar/expression.js.map +1 -0
  59. package/dist/esm/lib/grammar/general.js.map +1 -0
  60. package/dist/esm/lib/grammar/index.js.map +1 -0
  61. package/dist/esm/lib/grammar/literals.js.map +1 -0
  62. package/{lib → dist/esm/lib}/grammar/propertyPaths.d.ts +3 -3
  63. package/dist/esm/lib/grammar/propertyPaths.js.map +1 -0
  64. package/dist/esm/lib/grammar/queryUnit.js.map +1 -0
  65. package/dist/esm/lib/grammar/solutionModifier.js.map +1 -0
  66. package/{lib → dist/esm/lib}/grammar/tripleBlock.d.ts +4 -4
  67. package/dist/esm/lib/grammar/tripleBlock.js.map +1 -0
  68. package/dist/esm/lib/grammar/updateUnit.js.map +1 -0
  69. package/dist/esm/lib/grammar/whereClause.js.map +1 -0
  70. package/dist/esm/lib/index.js.map +1 -0
  71. package/{lib → dist/esm/lib}/lexer/BuiltInCalls.d.ts +1 -1
  72. package/dist/esm/lib/lexer/BuiltInCalls.js.map +1 -0
  73. package/{lib → dist/esm/lib}/lexer/graph.d.ts +1 -1
  74. package/dist/esm/lib/lexer/graph.js.map +1 -0
  75. package/dist/esm/lib/lexer/index.js.map +1 -0
  76. package/{lib → dist/esm/lib}/lexer/lexer.d.ts +2 -2
  77. package/dist/esm/lib/lexer/lexer.js.map +1 -0
  78. package/dist/esm/lib/lexer/lexerPatterns.js.map +1 -0
  79. package/{lib → dist/esm/lib}/lexer/symbols.d.ts +1 -1
  80. package/dist/esm/lib/lexer/symbols.js.map +1 -0
  81. package/{lib → dist/esm/lib}/lexer/terminals.d.ts +1 -1
  82. package/{lib → dist/esm/lib}/lexer/terminals.js +1 -1
  83. package/dist/esm/lib/lexer/terminals.js.map +1 -0
  84. package/dist/esm/lib/sparql11HelperTypes.js.map +1 -0
  85. package/dist/esm/lib/utils.js.map +1 -0
  86. package/dist/esm/lib/validation/validators.js.map +1 -0
  87. package/package.json +14 -18
  88. package/lib/MinimalSparqlParser.js.map +0 -1
  89. package/lib/Sparql11types.js.map +0 -1
  90. package/lib/astFactory.js.map +0 -1
  91. package/lib/expressionHelpers.js.map +0 -1
  92. package/lib/factoryMixins/ContextFactory.js.map +0 -1
  93. package/lib/factoryMixins/ExpressionFactory.js.map +0 -1
  94. package/lib/factoryMixins/GraphRefFactory.js.map +0 -1
  95. package/lib/factoryMixins/PathFactory.js.map +0 -1
  96. package/lib/factoryMixins/Patternfactory.js.map +0 -1
  97. package/lib/factoryMixins/QueryFactory.js.map +0 -1
  98. package/lib/factoryMixins/SolutionModifiersFactory.js.map +0 -1
  99. package/lib/factoryMixins/TermFactory.js.map +0 -1
  100. package/lib/factoryMixins/UpdateOperationFactory.js.map +0 -1
  101. package/lib/factoryMixins/mixins.js.map +0 -1
  102. package/lib/grammar/builtIn.js.map +0 -1
  103. package/lib/grammar/dataSetClause.js.map +0 -1
  104. package/lib/grammar/expression.js.map +0 -1
  105. package/lib/grammar/general.js.map +0 -1
  106. package/lib/grammar/index.js.map +0 -1
  107. package/lib/grammar/literals.js.map +0 -1
  108. package/lib/grammar/propertyPaths.js.map +0 -1
  109. package/lib/grammar/queryUnit.js.map +0 -1
  110. package/lib/grammar/solutionModifier.js.map +0 -1
  111. package/lib/grammar/tripleBlock.js.map +0 -1
  112. package/lib/grammar/updateUnit.js.map +0 -1
  113. package/lib/grammar/whereClause.js.map +0 -1
  114. package/lib/index.cjs +0 -14673
  115. package/lib/index.js.map +0 -1
  116. package/lib/lexer/BuiltInCalls.js.map +0 -1
  117. package/lib/lexer/graph.js.map +0 -1
  118. package/lib/lexer/index.js.map +0 -1
  119. package/lib/lexer/lexer.js.map +0 -1
  120. package/lib/lexer/lexerPatterns.js.map +0 -1
  121. package/lib/lexer/symbols.js.map +0 -1
  122. package/lib/lexer/terminals.js.map +0 -1
  123. package/lib/sparql11HelperTypes.js.map +0 -1
  124. package/lib/utils.js.map +0 -1
  125. package/lib/validation/validators.js.map +0 -1
  126. /package/{lib → dist/esm/lib}/MinimalSparqlParser.d.ts +0 -0
  127. /package/{lib → dist/esm/lib}/MinimalSparqlParser.js +0 -0
  128. /package/{lib → dist/esm/lib}/Sparql11types.d.ts +0 -0
  129. /package/{lib → dist/esm/lib}/Sparql11types.js +0 -0
  130. /package/{lib → dist/esm/lib}/astFactory.d.ts +0 -0
  131. /package/{lib → dist/esm/lib}/astFactory.js +0 -0
  132. /package/{lib → dist/esm/lib}/expressionHelpers.js +0 -0
  133. /package/{lib → dist/esm/lib}/factoryMixins/ContextFactory.d.ts +0 -0
  134. /package/{lib → dist/esm/lib}/factoryMixins/ContextFactory.js +0 -0
  135. /package/{lib → dist/esm/lib}/factoryMixins/ExpressionFactory.d.ts +0 -0
  136. /package/{lib → dist/esm/lib}/factoryMixins/ExpressionFactory.js +0 -0
  137. /package/{lib → dist/esm/lib}/factoryMixins/GraphRefFactory.d.ts +0 -0
  138. /package/{lib → dist/esm/lib}/factoryMixins/GraphRefFactory.js +0 -0
  139. /package/{lib → dist/esm/lib}/factoryMixins/PathFactory.d.ts +0 -0
  140. /package/{lib → dist/esm/lib}/factoryMixins/PathFactory.js +0 -0
  141. /package/{lib → dist/esm/lib}/factoryMixins/Patternfactory.d.ts +0 -0
  142. /package/{lib → dist/esm/lib}/factoryMixins/Patternfactory.js +0 -0
  143. /package/{lib → dist/esm/lib}/factoryMixins/QueryFactory.d.ts +0 -0
  144. /package/{lib → dist/esm/lib}/factoryMixins/QueryFactory.js +0 -0
  145. /package/{lib → dist/esm/lib}/factoryMixins/SolutionModifiersFactory.d.ts +0 -0
  146. /package/{lib → dist/esm/lib}/factoryMixins/SolutionModifiersFactory.js +0 -0
  147. /package/{lib → dist/esm/lib}/factoryMixins/TermFactory.d.ts +0 -0
  148. /package/{lib → dist/esm/lib}/factoryMixins/TermFactory.js +0 -0
  149. /package/{lib → dist/esm/lib}/factoryMixins/UpdateOperationFactory.d.ts +0 -0
  150. /package/{lib → dist/esm/lib}/factoryMixins/UpdateOperationFactory.js +0 -0
  151. /package/{lib → dist/esm/lib}/factoryMixins/mixins.d.ts +0 -0
  152. /package/{lib → dist/esm/lib}/factoryMixins/mixins.js +0 -0
  153. /package/{lib → dist/esm/lib}/grammar/builtIn.js +0 -0
  154. /package/{lib → dist/esm/lib}/grammar/dataSetClause.js +0 -0
  155. /package/{lib → dist/esm/lib}/grammar/expression.d.ts +0 -0
  156. /package/{lib → dist/esm/lib}/grammar/expression.js +0 -0
  157. /package/{lib → dist/esm/lib}/grammar/general.d.ts +0 -0
  158. /package/{lib → dist/esm/lib}/grammar/general.js +0 -0
  159. /package/{lib → dist/esm/lib}/grammar/index.d.ts +0 -0
  160. /package/{lib → dist/esm/lib}/grammar/index.js +0 -0
  161. /package/{lib → dist/esm/lib}/grammar/literals.d.ts +0 -0
  162. /package/{lib → dist/esm/lib}/grammar/literals.js +0 -0
  163. /package/{lib → dist/esm/lib}/grammar/propertyPaths.js +0 -0
  164. /package/{lib → dist/esm/lib}/grammar/queryUnit.d.ts +0 -0
  165. /package/{lib → dist/esm/lib}/grammar/queryUnit.js +0 -0
  166. /package/{lib → dist/esm/lib}/grammar/solutionModifier.d.ts +0 -0
  167. /package/{lib → dist/esm/lib}/grammar/solutionModifier.js +0 -0
  168. /package/{lib → dist/esm/lib}/grammar/tripleBlock.js +0 -0
  169. /package/{lib → dist/esm/lib}/grammar/updateUnit.d.ts +0 -0
  170. /package/{lib → dist/esm/lib}/grammar/updateUnit.js +0 -0
  171. /package/{lib → dist/esm/lib}/grammar/whereClause.d.ts +0 -0
  172. /package/{lib → dist/esm/lib}/grammar/whereClause.js +0 -0
  173. /package/{lib → dist/esm/lib}/index.d.ts +0 -0
  174. /package/{lib → dist/esm/lib}/index.js +0 -0
  175. /package/{lib → dist/esm/lib}/lexer/BuiltInCalls.js +0 -0
  176. /package/{lib → dist/esm/lib}/lexer/graph.js +0 -0
  177. /package/{lib → dist/esm/lib}/lexer/index.d.ts +0 -0
  178. /package/{lib → dist/esm/lib}/lexer/index.js +0 -0
  179. /package/{lib → dist/esm/lib}/lexer/lexer.js +0 -0
  180. /package/{lib → dist/esm/lib}/lexer/lexerPatterns.d.ts +0 -0
  181. /package/{lib → dist/esm/lib}/lexer/lexerPatterns.js +0 -0
  182. /package/{lib → dist/esm/lib}/lexer/symbols.js +0 -0
  183. /package/{lib → dist/esm/lib}/sparql11HelperTypes.d.ts +0 -0
  184. /package/{lib → dist/esm/lib}/sparql11HelperTypes.js +0 -0
  185. /package/{lib → dist/esm/lib}/utils.d.ts +0 -0
  186. /package/{lib → dist/esm/lib}/utils.js +0 -0
  187. /package/{lib → dist/esm/lib}/validation/validators.d.ts +0 -0
  188. /package/{lib → dist/esm/lib}/validation/validators.js +0 -0
@@ -0,0 +1,384 @@
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 expression_exports = {};
30
+ __export(expression_exports, {
31
+ additiveExpression: () => additiveExpression,
32
+ argList: () => argList,
33
+ brackettedExpression: () => brackettedExpression,
34
+ conditionalAndExpression: () => conditionalAndExpression,
35
+ conditionalOrExpression: () => conditionalOrExpression,
36
+ expression: () => expression,
37
+ expressionList: () => expressionList,
38
+ iriOrFunction: () => iriOrFunction,
39
+ multiplicativeExpression: () => multiplicativeExpression,
40
+ numericExpression: () => numericExpression,
41
+ primaryExpression: () => primaryExpression,
42
+ relationalExpression: () => relationalExpression,
43
+ unaryExpression: () => unaryExpression,
44
+ valueLogical: () => valueLogical
45
+ });
46
+ module.exports = __toCommonJS(expression_exports);
47
+ var l = __toESM(require("../lexer/index.js"), 1);
48
+ var import_builtIn = require("./builtIn.js");
49
+ var import_general = require("./general.js");
50
+ var import_literals = require("./literals.js");
51
+ var import_whereClause = require("./whereClause.js");
52
+ const argList = {
53
+ name: "argList",
54
+ impl: ({ ACTION, CONSUME, SUBRULE1, OPTION, OR, AT_LEAST_ONE_SEP }) => (C) => OR([
55
+ { ALT: () => {
56
+ const nil = CONSUME(l.terminals.nil);
57
+ return ACTION(() => C.astFactory.wrap({ args: [], distinct: false }, C.astFactory.sourceLocation(nil)));
58
+ } },
59
+ { ALT: () => {
60
+ const args = [];
61
+ const open = CONSUME(l.symbols.LParen);
62
+ const distinct = OPTION(() => {
63
+ CONSUME(l.distinct);
64
+ return true;
65
+ }) ?? false;
66
+ AT_LEAST_ONE_SEP({
67
+ SEP: l.symbols.comma,
68
+ DEF: () => {
69
+ const arg = SUBRULE1(expression);
70
+ args.push(arg);
71
+ }
72
+ });
73
+ const close = CONSUME(l.symbols.RParen);
74
+ return ACTION(() => C.astFactory.wrap({ args, distinct }, C.astFactory.sourceLocation(open, close)));
75
+ } }
76
+ ]),
77
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
78
+ F.printFilter(ast, () => {
79
+ PRINT_WORD("(");
80
+ if (ast.val.distinct) {
81
+ PRINT_WORD("DISTINCT");
82
+ }
83
+ });
84
+ const [head, ...tail] = ast.val.args;
85
+ if (head) {
86
+ SUBRULE(expression, head);
87
+ }
88
+ for (const expr of tail) {
89
+ F.printFilter(ast, () => PRINT_WORD(","));
90
+ SUBRULE(expression, expr);
91
+ }
92
+ F.printFilter(ast, () => PRINT_WORD(")"));
93
+ }
94
+ };
95
+ const expressionList = {
96
+ name: "expressionList",
97
+ impl: ({ ACTION, CONSUME, MANY, OR, SUBRULE1, SUBRULE2 }) => (C) => OR([
98
+ { ALT: () => {
99
+ const nil = CONSUME(l.terminals.nil);
100
+ return ACTION(() => C.astFactory.wrap([], C.astFactory.sourceLocation(nil)));
101
+ } },
102
+ { ALT: () => {
103
+ const open = CONSUME(l.symbols.LParen);
104
+ const expr1 = SUBRULE1(expression);
105
+ const args = [expr1];
106
+ MANY(() => {
107
+ CONSUME(l.symbols.comma);
108
+ const expr = SUBRULE2(expression);
109
+ args.push(expr);
110
+ });
111
+ const close = CONSUME(l.symbols.RParen);
112
+ return ACTION(() => C.astFactory.wrap(args, C.astFactory.sourceLocation(open, close)));
113
+ } }
114
+ ])
115
+ };
116
+ const infixOperators = /* @__PURE__ */ new Set(["in", "notin", "||", "&&", "=", "!=", "<", ">", "<=", ">=", "+", "-", "*", "/"]);
117
+ const prefixOperator = /* @__PURE__ */ new Set(["!", "UPLUS", "UMINUS"]);
118
+ const expression = {
119
+ name: "expression",
120
+ impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression),
121
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
122
+ if (F.isTerm(ast)) {
123
+ SUBRULE(import_general.varOrTerm, ast);
124
+ } else if (F.isExpressionOperator(ast)) {
125
+ if (infixOperators.has(ast.operator)) {
126
+ const [left, ...right] = ast.args;
127
+ F.printFilter(ast, () => PRINT_WORD("("));
128
+ SUBRULE(expression, left);
129
+ F.printFilter(ast, () => {
130
+ if (ast.operator === "notin") {
131
+ PRINT_WORD("NOT IN");
132
+ } else if (ast.operator === "in") {
133
+ PRINT_WORD("IN");
134
+ } else {
135
+ PRINT_WORD(ast.operator.toUpperCase());
136
+ }
137
+ });
138
+ if (right.length === 1) {
139
+ SUBRULE(expression, right[0]);
140
+ } else {
141
+ SUBRULE(argList, F.wrap({ args: right, distinct: false }, ast.loc));
142
+ }
143
+ F.printFilter(ast, () => PRINT_WORD(")"));
144
+ } else if (prefixOperator.has(ast.operator)) {
145
+ const [expr] = ast.args;
146
+ F.printFilter(ast, () => PRINT_WORD(ast.operator.toUpperCase()));
147
+ SUBRULE(expression, expr);
148
+ } else {
149
+ F.printFilter(ast, () => PRINT_WORD(ast.operator.toUpperCase(), "("));
150
+ const [head, ...tail] = ast.args;
151
+ if (head) {
152
+ SUBRULE(expression, head);
153
+ }
154
+ for (const arg of tail) {
155
+ F.printFilter(ast, () => PRINT_WORD(","));
156
+ SUBRULE(expression, arg);
157
+ }
158
+ F.printFilter(ast, () => PRINT_WORD(")"));
159
+ }
160
+ } else if (F.isExpressionPatternOperation(ast)) {
161
+ const patterns = ast.args;
162
+ F.printFilter(ast, () => PRINT_WORD(ast.operator === "exists" ? "EXISTS" : "NOT EXISTS"));
163
+ SUBRULE(import_whereClause.groupGraphPattern, patterns);
164
+ } else if (F.isExpressionFunctionCall(ast)) {
165
+ SUBRULE(iriOrFunction, ast);
166
+ } else if (F.isExpressionAggregate(ast)) {
167
+ SUBRULE(import_builtIn.aggregate, ast);
168
+ }
169
+ }
170
+ };
171
+ function constructLeftDeep(startGenerator, restGenerator, ACTION, MANY) {
172
+ let iterExpr = startGenerator();
173
+ MANY(() => {
174
+ const res = restGenerator();
175
+ ACTION(() => {
176
+ iterExpr = res(iterExpr);
177
+ });
178
+ });
179
+ return iterExpr;
180
+ }
181
+ const conditionalOrExpression = {
182
+ name: "conditionalOrExpression",
183
+ impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => constructLeftDeep(() => SUBRULE1(conditionalAndExpression), () => {
184
+ CONSUME(l.symbols.logicOr);
185
+ const args = SUBRULE2(conditionalAndExpression);
186
+ return (left) => ACTION(() => C.astFactory.expressionOperation("||", [left, args], C.astFactory.sourceLocation(left, args)));
187
+ }, ACTION, MANY)
188
+ };
189
+ const conditionalAndExpression = {
190
+ name: "conditionalAndExpression",
191
+ impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => constructLeftDeep(() => SUBRULE1(valueLogical), () => {
192
+ CONSUME(l.symbols.logicAnd);
193
+ const arg = SUBRULE2(valueLogical);
194
+ return (left) => ACTION(() => C.astFactory.expressionOperation("&&", [left, arg], C.astFactory.sourceLocation(left, arg)));
195
+ }, ACTION, MANY)
196
+ };
197
+ const valueLogical = {
198
+ name: "valueLogical",
199
+ impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression)
200
+ };
201
+ const relationalExpression = {
202
+ name: "relationalExpression",
203
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3 }) => (C) => {
204
+ const args1 = SUBRULE1(numericExpression);
205
+ const expression2 = OPTION(() => OR1([
206
+ { ALT: () => {
207
+ const operator = OR2([
208
+ { ALT: () => CONSUME(l.symbols.equal) },
209
+ { ALT: () => CONSUME(l.symbols.notEqual) },
210
+ { ALT: () => CONSUME(l.symbols.lessThan) },
211
+ { ALT: () => CONSUME(l.symbols.greaterThan) },
212
+ { ALT: () => CONSUME(l.symbols.lessThanEqual) },
213
+ { ALT: () => CONSUME(l.symbols.greaterThanEqual) }
214
+ ]);
215
+ const expr = SUBRULE2(numericExpression);
216
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, expr], C.astFactory.sourceLocation(args1, expr)));
217
+ } },
218
+ { ALT: () => {
219
+ const operator = OR3([
220
+ { ALT: () => CONSUME(l.in_) },
221
+ { ALT: () => CONSUME(l.notIn) }
222
+ ]);
223
+ const args = SUBRULE1(expressionList);
224
+ return ACTION(() => C.astFactory.expressionOperation(operator.image, [args1, ...args.val], C.astFactory.sourceLocation(args1, args)));
225
+ } }
226
+ ]));
227
+ return expression2 ?? args1;
228
+ }
229
+ };
230
+ const numericExpression = {
231
+ name: "numericExpression",
232
+ impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression)
233
+ };
234
+ const additiveExpression = {
235
+ name: "additiveExpression",
236
+ impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OR1, OR2, OR3, OR4 }) => (C) => constructLeftDeep(() => SUBRULE1(multiplicativeExpression), () => OR1([
237
+ { ALT: () => {
238
+ const operator = OR2([
239
+ { ALT: () => CONSUME(l.symbols.opPlus) },
240
+ { ALT: () => CONSUME(l.symbols.opMinus) }
241
+ ]);
242
+ const arg = SUBRULE2(multiplicativeExpression);
243
+ return ACTION(() => (left) => C.astFactory.expressionOperation(operator.image, [left, arg], C.astFactory.sourceLocation(left, arg)));
244
+ } },
245
+ { ALT: () => {
246
+ const { operator, startInt } = OR3([
247
+ { ALT: () => {
248
+ const integer = SUBRULE(import_literals.numericLiteralPositive);
249
+ return ACTION(() => {
250
+ integer.value = integer.value.replace(/^\+/u, "");
251
+ return {
252
+ operator: "+",
253
+ startInt: integer
254
+ };
255
+ });
256
+ } },
257
+ { ALT: () => {
258
+ const integer = SUBRULE(import_literals.numericLiteralNegative);
259
+ return ACTION(() => {
260
+ integer.value = integer.value.replace(/^-/u, "");
261
+ return {
262
+ operator: "-",
263
+ startInt: integer
264
+ };
265
+ });
266
+ } }
267
+ ]);
268
+ const multiplicativeExpr = constructLeftDeep(() => ACTION(() => startInt), () => {
269
+ const innerOperator = OR4([
270
+ { ALT: () => CONSUME(l.symbols.star) },
271
+ { ALT: () => CONSUME(l.symbols.slash) }
272
+ ]);
273
+ const innerExpr = SUBRULE1(unaryExpression);
274
+ return ACTION(() => (leftInner) => C.astFactory.expressionOperation(innerOperator.image, [leftInner, innerExpr], C.astFactory.sourceLocation(leftInner, innerExpr)));
275
+ }, ACTION, MANY2);
276
+ return (left) => C.astFactory.expressionOperation(operator, [left, multiplicativeExpr], C.astFactory.sourceLocation(left, multiplicativeExpr));
277
+ } }
278
+ ]), ACTION, MANY1)
279
+ };
280
+ const multiplicativeExpression = {
281
+ name: "multiplicativeExpression",
282
+ impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OR }) => (C) => constructLeftDeep(() => SUBRULE1(unaryExpression), () => {
283
+ const operator = OR([
284
+ { ALT: () => CONSUME(l.symbols.star) },
285
+ { ALT: () => CONSUME(l.symbols.slash) }
286
+ ]);
287
+ const expr = SUBRULE2(unaryExpression);
288
+ return (left) => ({
289
+ type: "expression",
290
+ subType: "operation",
291
+ operator: operator.image,
292
+ args: [left, expr],
293
+ loc: C.astFactory.sourceLocation(left, expr)
294
+ });
295
+ }, ACTION, MANY)
296
+ };
297
+ const unaryExpression = {
298
+ name: "unaryExpression",
299
+ impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => (C) => OR1([
300
+ { ALT: () => SUBRULE1(primaryExpression) },
301
+ { ALT: () => {
302
+ const operator = OR2([
303
+ { ALT: () => CONSUME(l.symbols.exclamation) },
304
+ { ALT: () => CONSUME(l.symbols.opPlus) },
305
+ { ALT: () => CONSUME(l.symbols.opMinus) }
306
+ ]);
307
+ const expr = SUBRULE2(primaryExpression);
308
+ return ACTION(() => C.astFactory.expressionOperation(operator.image === "!" ? "!" : operator.image === "+" ? "UPLUS" : "UMINUS", [expr], C.astFactory.sourceLocation(operator, expr)));
309
+ } }
310
+ ])
311
+ };
312
+ const primaryExpression = {
313
+ name: "primaryExpression",
314
+ impl: ({ SUBRULE, OR }) => () => OR([
315
+ { ALT: () => SUBRULE(brackettedExpression) },
316
+ { ALT: () => SUBRULE(import_builtIn.builtInCall) },
317
+ { ALT: () => SUBRULE(iriOrFunction) },
318
+ { ALT: () => SUBRULE(import_literals.rdfLiteral) },
319
+ { ALT: () => SUBRULE(import_literals.numericLiteral) },
320
+ { ALT: () => SUBRULE(import_literals.booleanLiteral) },
321
+ { ALT: () => SUBRULE(import_general.var_) }
322
+ ])
323
+ };
324
+ const brackettedExpression = {
325
+ name: "brackettedExpression",
326
+ impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
327
+ const open = CONSUME(l.symbols.LParen);
328
+ const expr = SUBRULE(expression);
329
+ const close = CONSUME(l.symbols.RParen);
330
+ return ACTION(() => {
331
+ expr.loc = C.astFactory.sourceLocation(open, close);
332
+ return expr;
333
+ });
334
+ }
335
+ };
336
+ const iriOrFunction = {
337
+ name: "iriOrFunction",
338
+ impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {
339
+ const iriVal = SUBRULE(import_literals.iri);
340
+ const functionCall = OPTION(() => {
341
+ const args = SUBRULE(argList);
342
+ return ACTION(() => {
343
+ const distinct = args.val.distinct;
344
+ if (!C.parseMode.has("canParseAggregate") && distinct) {
345
+ throw new Error(`DISTINCT implies that this function is an aggregated function, which is not allowed in this context.`);
346
+ }
347
+ return {
348
+ type: "expression",
349
+ subType: "functionCall",
350
+ function: iriVal,
351
+ args: args.val.args,
352
+ distinct,
353
+ loc: C.astFactory.sourceLocation(iriVal, args)
354
+ };
355
+ });
356
+ });
357
+ return functionCall ?? iriVal;
358
+ },
359
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
360
+ if (F.isTermNamed(ast)) {
361
+ SUBRULE(import_literals.iri, ast);
362
+ } else {
363
+ SUBRULE(import_literals.iri, ast.function);
364
+ SUBRULE(argList, F.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc));
365
+ }
366
+ }
367
+ };
368
+ // Annotate the CommonJS export names for ESM import in node:
369
+ 0 && (module.exports = {
370
+ additiveExpression,
371
+ argList,
372
+ brackettedExpression,
373
+ conditionalAndExpression,
374
+ conditionalOrExpression,
375
+ expression,
376
+ expressionList,
377
+ iriOrFunction,
378
+ multiplicativeExpression,
379
+ numericExpression,
380
+ primaryExpression,
381
+ relationalExpression,
382
+ unaryExpression,
383
+ valueLogical
384
+ });
@@ -0,0 +1,168 @@
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 general_exports = {};
30
+ __export(general_exports, {
31
+ baseDecl: () => baseDecl,
32
+ graphTerm: () => graphTerm,
33
+ prefixDecl: () => prefixDecl,
34
+ prologue: () => prologue,
35
+ varOrIri: () => varOrIri,
36
+ varOrTerm: () => varOrTerm,
37
+ var_: () => var_,
38
+ verb: () => verb
39
+ });
40
+ module.exports = __toCommonJS(general_exports);
41
+ var l = __toESM(require("../lexer/index.js"), 1);
42
+ var import_utils = require("../utils.js");
43
+ var import_literals = require("./literals.js");
44
+ const prologue = {
45
+ name: "prologue",
46
+ impl: ({ SUBRULE, MANY, OR }) => () => {
47
+ const result = [];
48
+ MANY(() => OR([
49
+ { ALT: () => result.push(SUBRULE(baseDecl)) },
50
+ // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
51
+ // We might need to check this.
52
+ { ALT: () => result.push(SUBRULE(prefixDecl)) }
53
+ ]));
54
+ return result;
55
+ },
56
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
57
+ for (const context of ast) {
58
+ if (F.isContextDefinitionBase(context)) {
59
+ SUBRULE(baseDecl, context);
60
+ } else if (F.isContextDefinitionPrefix(context)) {
61
+ SUBRULE(prefixDecl, context);
62
+ }
63
+ }
64
+ }
65
+ };
66
+ const baseDecl = {
67
+ name: "baseDecl",
68
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
69
+ const base = CONSUME(l.baseDecl);
70
+ const val = SUBRULE(import_literals.iriFull);
71
+ return ACTION(() => C.astFactory.contextDefinitionBase(C.astFactory.sourceLocation(base, val), val));
72
+ },
73
+ gImpl: ({ SUBRULE, PRINT_ON_EMPTY, NEW_LINE }) => (ast, { astFactory: F }) => {
74
+ F.printFilter(ast, () => PRINT_ON_EMPTY("BASE "));
75
+ SUBRULE(import_literals.iri, ast.value);
76
+ F.printFilter(ast, () => NEW_LINE());
77
+ }
78
+ };
79
+ const prefixDecl = {
80
+ name: "prefixDecl",
81
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
82
+ const prefix = CONSUME(l.prefixDecl);
83
+ const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);
84
+ const value = SUBRULE(import_literals.iriFull);
85
+ return ACTION(() => C.astFactory.contextDefinitionPrefix(C.astFactory.sourceLocation(prefix, value), name, value));
86
+ },
87
+ gImpl: ({ SUBRULE, PRINT_ON_EMPTY, NEW_LINE }) => (ast, { astFactory: F }) => {
88
+ F.printFilter(ast, () => {
89
+ PRINT_ON_EMPTY("PREFIX ", `${ast.key}: `);
90
+ });
91
+ SUBRULE(import_literals.iri, ast.value);
92
+ F.printFilter(ast, () => NEW_LINE());
93
+ }
94
+ };
95
+ const verb = {
96
+ name: "verb",
97
+ impl: ({ SUBRULE, OR }) => () => OR([
98
+ { ALT: () => SUBRULE(varOrIri) },
99
+ { ALT: () => SUBRULE(import_literals.verbA) }
100
+ ])
101
+ };
102
+ const varOrTerm = {
103
+ name: "varOrTerm",
104
+ impl: ({ SUBRULE, OR }) => (C) => OR([
105
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
106
+ { ALT: () => SUBRULE(graphTerm) }
107
+ ]),
108
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
109
+ if (F.isTermVariable(ast)) {
110
+ return SUBRULE(var_, ast);
111
+ }
112
+ return SUBRULE(graphTerm, ast);
113
+ }
114
+ };
115
+ const varOrIri = {
116
+ name: "varOrIri",
117
+ impl: ({ SUBRULE, OR }) => (C) => OR([
118
+ { GATE: () => C.parseMode.has("canParseVars"), ALT: () => SUBRULE(var_) },
119
+ { ALT: () => SUBRULE(import_literals.iri) }
120
+ ])
121
+ };
122
+ const var_ = {
123
+ name: "var",
124
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
125
+ const varToken = OR([
126
+ { ALT: () => CONSUME(l.terminals.var1) },
127
+ { ALT: () => CONSUME(l.terminals.var2) }
128
+ ]);
129
+ return ACTION(() => C.astFactory.termVariable(varToken.image.slice(1), C.astFactory.sourceLocation(varToken)));
130
+ },
131
+ gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
132
+ F.printFilter(ast, () => PRINT(`?${ast.value}`));
133
+ }
134
+ };
135
+ const graphTerm = {
136
+ name: "graphTerm",
137
+ impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => OR([
138
+ { ALT: () => SUBRULE(import_literals.iri) },
139
+ { ALT: () => SUBRULE(import_literals.rdfLiteral) },
140
+ { ALT: () => SUBRULE(import_literals.numericLiteral) },
141
+ { ALT: () => SUBRULE(import_literals.booleanLiteral) },
142
+ { GATE: () => C.parseMode.has("canCreateBlankNodes"), ALT: () => SUBRULE(import_literals.blankNode) },
143
+ { ALT: () => {
144
+ const tokenNil = CONSUME(l.terminals.nil);
145
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(tokenNil), import_utils.CommonIRIs.NIL));
146
+ } }
147
+ ]),
148
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
149
+ if (F.isTermNamed(ast)) {
150
+ SUBRULE(import_literals.iri, ast);
151
+ } else if (F.isTermLiteral(ast)) {
152
+ SUBRULE(import_literals.rdfLiteral, ast);
153
+ } else if (F.isTermBlank(ast)) {
154
+ SUBRULE(import_literals.blankNode, ast);
155
+ }
156
+ }
157
+ };
158
+ // Annotate the CommonJS export names for ESM import in node:
159
+ 0 && (module.exports = {
160
+ baseDecl,
161
+ graphTerm,
162
+ prefixDecl,
163
+ prologue,
164
+ varOrIri,
165
+ varOrTerm,
166
+ var_,
167
+ verb
168
+ });
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var grammar_exports = {};
21
+ __export(grammar_exports, {
22
+ queryOrUpdate: () => queryOrUpdate
23
+ });
24
+ module.exports = __toCommonJS(grammar_exports);
25
+ var import_lexer = require("../lexer/index.js");
26
+ var import_validators = require("../validation/validators.js");
27
+ var import_general = require("./general.js");
28
+ var import_queryUnit = require("./queryUnit.js");
29
+ var import_updateUnit = require("./updateUnit.js");
30
+ __reExport(grammar_exports, require("./queryUnit.js"), module.exports);
31
+ __reExport(grammar_exports, require("./updateUnit.js"), module.exports);
32
+ __reExport(grammar_exports, require("./builtIn.js"), module.exports);
33
+ __reExport(grammar_exports, require("./dataSetClause.js"), module.exports);
34
+ __reExport(grammar_exports, require("./expression.js"), module.exports);
35
+ __reExport(grammar_exports, require("../expressionHelpers.js"), module.exports);
36
+ __reExport(grammar_exports, require("./general.js"), module.exports);
37
+ __reExport(grammar_exports, require("./literals.js"), module.exports);
38
+ __reExport(grammar_exports, require("./propertyPaths.js"), module.exports);
39
+ __reExport(grammar_exports, require("./solutionModifier.js"), module.exports);
40
+ __reExport(grammar_exports, require("./tripleBlock.js"), module.exports);
41
+ __reExport(grammar_exports, require("./whereClause.js"), module.exports);
42
+ const queryOrUpdate = {
43
+ name: "queryOrUpdate",
44
+ impl: ({ ACTION, SUBRULE, OR1, OR2, MANY, OPTION1, CONSUME, SUBRULE2 }) => (C) => {
45
+ const prologueValues = SUBRULE(import_general.prologue);
46
+ return OR1([
47
+ { ALT: () => {
48
+ const subType = OR2([
49
+ { ALT: () => SUBRULE(import_queryUnit.selectQuery) },
50
+ { ALT: () => SUBRULE(import_queryUnit.constructQuery) },
51
+ { ALT: () => SUBRULE(import_queryUnit.describeQuery) },
52
+ { ALT: () => SUBRULE(import_queryUnit.askQuery) }
53
+ ]);
54
+ const values = SUBRULE(import_queryUnit.valuesClause);
55
+ return ACTION(() => ({
56
+ context: prologueValues,
57
+ ...subType,
58
+ type: "query",
59
+ ...values && { values },
60
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values)
61
+ }));
62
+ } },
63
+ { ALT: () => {
64
+ const updates = [];
65
+ updates.push({ context: prologueValues });
66
+ let parsedSemi = true;
67
+ MANY({
68
+ GATE: () => parsedSemi,
69
+ DEF: () => {
70
+ parsedSemi = false;
71
+ updates.at(-1).operation = SUBRULE(import_updateUnit.update1);
72
+ OPTION1(() => {
73
+ CONSUME(import_lexer.symbols.semi);
74
+ parsedSemi = true;
75
+ const innerPrologue = SUBRULE2(import_general.prologue);
76
+ updates.push({ context: innerPrologue });
77
+ });
78
+ }
79
+ });
80
+ return ACTION(() => {
81
+ const update2 = {
82
+ type: "update",
83
+ updates,
84
+ loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation)
85
+ };
86
+ (0, import_validators.updateNoReuseBlankNodeLabels)(update2);
87
+ return update2;
88
+ });
89
+ } }
90
+ ]);
91
+ },
92
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
93
+ if (F.isQuery(ast)) {
94
+ SUBRULE(import_queryUnit.query, ast);
95
+ } else {
96
+ SUBRULE(import_updateUnit.update, ast);
97
+ }
98
+ }
99
+ };
100
+ // Annotate the CommonJS export names for ESM import in node:
101
+ 0 && (module.exports = {
102
+ queryOrUpdate,
103
+ ...require("./queryUnit.js"),
104
+ ...require("./updateUnit.js"),
105
+ ...require("./builtIn.js"),
106
+ ...require("./dataSetClause.js"),
107
+ ...require("./expression.js"),
108
+ ...require("../expressionHelpers.js"),
109
+ ...require("./general.js"),
110
+ ...require("./literals.js"),
111
+ ...require("./propertyPaths.js"),
112
+ ...require("./solutionModifier.js"),
113
+ ...require("./tripleBlock.js"),
114
+ ...require("./whereClause.js")
115
+ });