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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/cjs/lib/MinimalSparqlParser.js +35 -58
  2. package/dist/cjs/lib/MinimalSparqlParser.js.map +1 -0
  3. package/dist/cjs/lib/Sparql11types.js +2 -15
  4. package/dist/cjs/lib/Sparql11types.js.map +1 -0
  5. package/dist/cjs/lib/astFactory.js +107 -119
  6. package/dist/cjs/lib/astFactory.js.map +1 -0
  7. package/dist/cjs/lib/expressionHelpers.js +181 -191
  8. package/dist/cjs/lib/expressionHelpers.js.map +1 -0
  9. package/dist/cjs/lib/factoryMixins/ContextFactory.js +30 -52
  10. package/dist/cjs/lib/factoryMixins/ContextFactory.js.map +1 -0
  11. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js +83 -102
  12. package/dist/cjs/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  13. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js +51 -73
  14. package/dist/cjs/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  15. package/dist/cjs/lib/factoryMixins/PathFactory.js +68 -87
  16. package/dist/cjs/lib/factoryMixins/PathFactory.js.map +1 -0
  17. package/dist/cjs/lib/factoryMixins/Patternfactory.js +98 -120
  18. package/dist/cjs/lib/factoryMixins/Patternfactory.js.map +1 -0
  19. package/dist/cjs/lib/factoryMixins/QueryFactory.js +43 -65
  20. package/dist/cjs/lib/factoryMixins/QueryFactory.js.map +1 -0
  21. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js +55 -77
  22. package/dist/cjs/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  23. package/dist/cjs/lib/factoryMixins/TermFactory.js +81 -102
  24. package/dist/cjs/lib/factoryMixins/TermFactory.js.map +1 -0
  25. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js +126 -147
  26. package/dist/cjs/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  27. package/dist/cjs/lib/factoryMixins/mixins.js +21 -38
  28. package/dist/cjs/lib/factoryMixins/mixins.js.map +1 -0
  29. package/dist/cjs/lib/grammar/builtIn.js +277 -377
  30. package/dist/cjs/lib/grammar/builtIn.js.map +1 -0
  31. package/dist/cjs/lib/grammar/dataSetClause.js +110 -109
  32. package/dist/cjs/lib/grammar/dataSetClause.js.map +1 -0
  33. package/dist/cjs/lib/grammar/expression.js +387 -358
  34. package/dist/cjs/lib/grammar/expression.js.map +1 -0
  35. package/dist/cjs/lib/grammar/general.js +173 -158
  36. package/dist/cjs/lib/grammar/general.js.map +1 -0
  37. package/dist/cjs/lib/grammar/index.js +94 -111
  38. package/dist/cjs/lib/grammar/index.js.map +1 -0
  39. package/dist/cjs/lib/grammar/literals.js +282 -266
  40. package/dist/cjs/lib/grammar/literals.js.map +1 -0
  41. package/dist/cjs/lib/grammar/propertyPaths.js +206 -193
  42. package/dist/cjs/lib/grammar/propertyPaths.js.map +1 -0
  43. package/dist/cjs/lib/grammar/queryUnit.js +395 -372
  44. package/dist/cjs/lib/grammar/queryUnit.js.map +1 -0
  45. package/dist/cjs/lib/grammar/solutionModifier.js +281 -265
  46. package/dist/cjs/lib/grammar/solutionModifier.js.map +1 -0
  47. package/dist/cjs/lib/grammar/tripleBlock.js +390 -355
  48. package/dist/cjs/lib/grammar/tripleBlock.js.map +1 -0
  49. package/dist/cjs/lib/grammar/updateUnit.js +551 -519
  50. package/dist/cjs/lib/grammar/updateUnit.js.map +1 -0
  51. package/dist/cjs/lib/grammar/whereClause.js +486 -459
  52. package/dist/cjs/lib/grammar/whereClause.js.map +1 -0
  53. package/dist/cjs/lib/index.js +47 -54
  54. package/dist/cjs/lib/index.js.map +1 -0
  55. package/dist/cjs/lib/lexer/BuiltInCalls.js +188 -333
  56. package/dist/cjs/lib/lexer/BuiltInCalls.js.map +1 -0
  57. package/dist/cjs/lib/lexer/graph.js +10 -40
  58. package/dist/cjs/lib/lexer/graph.js.map +1 -0
  59. package/dist/cjs/lib/lexer/index.js +43 -48
  60. package/dist/cjs/lib/lexer/index.js.map +1 -0
  61. package/dist/cjs/lib/lexer/lexer.js +84 -195
  62. package/dist/cjs/lib/lexer/lexer.js.map +1 -0
  63. package/dist/cjs/lib/lexer/lexerPatterns.js +40 -132
  64. package/dist/cjs/lib/lexer/lexerPatterns.js.map +1 -0
  65. package/dist/cjs/lib/lexer/symbols.js +31 -106
  66. package/dist/cjs/lib/lexer/symbols.js.map +1 -0
  67. package/dist/cjs/lib/lexer/terminals.js +100 -102
  68. package/dist/cjs/lib/lexer/terminals.js.map +1 -0
  69. package/dist/cjs/lib/sparql11HelperTypes.js +2 -15
  70. package/dist/cjs/lib/sparql11HelperTypes.js.map +1 -0
  71. package/dist/cjs/lib/utils.js +40 -58
  72. package/dist/cjs/lib/utils.js.map +1 -0
  73. package/dist/cjs/lib/validation/validators.js +197 -186
  74. package/dist/cjs/lib/validation/validators.js.map +1 -0
  75. package/package.json +10 -10
@@ -1,282 +1,298 @@
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 literals_exports = {};
30
- __export(literals_exports, {
31
- blankNode: () => blankNode,
32
- booleanLiteral: () => booleanLiteral,
33
- canCreateBlankNodes: () => canCreateBlankNodes,
34
- iri: () => iri,
35
- iriFull: () => iriFull,
36
- numericLiteral: () => numericLiteral,
37
- numericLiteralNegative: () => numericLiteralNegative,
38
- numericLiteralPositive: () => numericLiteralPositive,
39
- numericLiteralUnsigned: () => numericLiteralUnsigned,
40
- prefixedName: () => prefixedName,
41
- rdfLiteral: () => rdfLiteral,
42
- string: () => string,
43
- stringEscapedLexical: () => stringEscapedLexical,
44
- verbA: () => verbA
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;
45
17
  });
46
- module.exports = __toCommonJS(literals_exports);
47
- var l = __toESM(require("../lexer/index.js"), 1);
48
- var import_utils = require("../utils.js");
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.verbA = exports.blankNode = exports.canCreateBlankNodes = exports.prefixedName = exports.iriFull = exports.iri = exports.string = exports.booleanLiteral = exports.numericLiteralNegative = exports.numericLiteralPositive = exports.numericLiteralUnsigned = exports.numericLiteral = exports.rdfLiteral = void 0;
37
+ exports.stringEscapedLexical = stringEscapedLexical;
38
+ const l = __importStar(require("../lexer/index.js"));
39
+ const utils_js_1 = require("../utils.js");
49
40
  function stringEscapedLexical(str) {
50
- const lexical = str.replaceAll(/["\\\t\n\r\b\f]/gu, (char) => {
51
- switch (char) {
52
- case " ":
53
- return "\\t";
54
- case "\n":
55
- return "\\n";
56
- case "\r":
57
- return "\\r";
58
- case "\b":
59
- return "\\b";
60
- case "\f":
61
- return "\\f";
62
- case '"':
63
- return '\\"';
64
- case "\\":
65
- return "\\\\";
66
- default:
67
- return char;
68
- }
69
- });
70
- return `"${lexical}"`;
71
- }
72
- const rdfLiteral = {
73
- name: "rdfLiteral",
74
- impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
75
- const value = SUBRULE1(string);
76
- return OPTION(() => OR([
77
- { ALT: () => {
78
- const lang = CONSUME(l.terminals.langTag);
79
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, lang), value.value, lang.image.slice(1).toLowerCase()));
80
- } },
81
- { ALT: () => {
82
- CONSUME(l.symbols.hathat);
83
- const iriVal = SUBRULE1(iri);
84
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
85
- } }
86
- ])) ?? value;
87
- },
88
- gImpl: ({ SUBRULE, PRINT, PRINT_WORD }) => (ast, { astFactory }) => {
89
- astFactory.printFilter(ast, () => {
90
- PRINT_WORD("");
91
- PRINT(stringEscapedLexical(ast.value));
41
+ const lexical = str.replaceAll(/["\\\t\n\r\b\f]/gu, (char) => {
42
+ switch (char) {
43
+ case '\t':
44
+ return '\\t';
45
+ case '\n':
46
+ return '\\n';
47
+ case '\r':
48
+ return '\\r';
49
+ case '\b':
50
+ return '\\b';
51
+ case '\f':
52
+ return '\\f';
53
+ case '"':
54
+ return '\\"';
55
+ case '\\':
56
+ return '\\\\';
57
+ default:
58
+ return char;
59
+ }
92
60
  });
93
- if (ast.langOrIri) {
94
- if (typeof ast.langOrIri === "string") {
95
- astFactory.printFilter(ast, () => PRINT("@", ast.langOrIri));
96
- } else {
97
- astFactory.printFilter(ast, () => PRINT("^^"));
98
- SUBRULE(iri, ast.langOrIri);
99
- }
100
- }
101
- }
61
+ return `"${lexical}"`;
62
+ }
63
+ /**
64
+ * [[120]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)
65
+ */
66
+ exports.rdfLiteral = {
67
+ name: 'rdfLiteral',
68
+ impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {
69
+ const value = SUBRULE1(exports.string);
70
+ return OPTION(() => OR([
71
+ { ALT: () => {
72
+ const lang = CONSUME(l.terminals.langTag);
73
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, lang), value.value, lang.image.slice(1).toLowerCase()));
74
+ } },
75
+ { ALT: () => {
76
+ CONSUME(l.symbols.hathat);
77
+ const iriVal = SUBRULE1(exports.iri);
78
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(value, iriVal), value.value, iriVal));
79
+ } },
80
+ ])) ?? value;
81
+ },
82
+ gImpl: ({ SUBRULE, PRINT, PRINT_WORD }) => (ast, { astFactory }) => {
83
+ astFactory.printFilter(ast, () => {
84
+ PRINT_WORD('');
85
+ PRINT(stringEscapedLexical(ast.value));
86
+ });
87
+ if (ast.langOrIri) {
88
+ if (typeof ast.langOrIri === 'string') {
89
+ astFactory.printFilter(ast, () => PRINT('@', ast.langOrIri));
90
+ }
91
+ else {
92
+ astFactory.printFilter(ast, () => PRINT('^^'));
93
+ SUBRULE(exports.iri, ast.langOrIri);
94
+ }
95
+ }
96
+ },
102
97
  };
103
- const numericLiteral = {
104
- name: "numericLiteral",
105
- impl: ({ SUBRULE, OR }) => () => OR([
106
- { ALT: () => SUBRULE(numericLiteralUnsigned) },
107
- { ALT: () => SUBRULE(numericLiteralPositive) },
108
- { ALT: () => SUBRULE(numericLiteralNegative) }
109
- ])
98
+ /**
99
+ * Parses a numeric literal.
100
+ * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)
101
+ */
102
+ exports.numericLiteral = {
103
+ name: 'numericLiteral',
104
+ impl: ({ SUBRULE, OR }) => () => OR([
105
+ { ALT: () => SUBRULE(exports.numericLiteralUnsigned) },
106
+ { ALT: () => SUBRULE(exports.numericLiteralPositive) },
107
+ { ALT: () => SUBRULE(exports.numericLiteralNegative) },
108
+ ]),
110
109
  };
111
- const numericLiteralUnsigned = {
112
- name: "numericLiteralUnsigned",
113
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
114
- const parsed = OR([
115
- { ALT: () => [CONSUME(l.terminals.integer), import_utils.CommonIRIs.INTEGER] },
116
- { ALT: () => [CONSUME(l.terminals.decimal), import_utils.CommonIRIs.DECIMAL] },
117
- { ALT: () => [CONSUME(l.terminals.double), import_utils.CommonIRIs.DOUBLE] }
118
- ]);
119
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
120
- }
110
+ /**
111
+ * Parses an unsigned numeric literal.
112
+ * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)
113
+ */
114
+ exports.numericLiteralUnsigned = {
115
+ name: 'numericLiteralUnsigned',
116
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
117
+ const parsed = OR([
118
+ { ALT: () => [CONSUME(l.terminals.integer), utils_js_1.CommonIRIs.INTEGER] },
119
+ { ALT: () => [CONSUME(l.terminals.decimal), utils_js_1.CommonIRIs.DECIMAL] },
120
+ { ALT: () => [CONSUME(l.terminals.double), utils_js_1.CommonIRIs.DOUBLE] },
121
+ ]);
122
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
123
+ },
121
124
  };
122
- const numericLiteralPositive = {
123
- name: "numericLiteralPositive",
124
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
125
- const parsed = OR([
126
- { ALT: () => [CONSUME(l.terminals.integerPositive), import_utils.CommonIRIs.INTEGER] },
127
- { ALT: () => [CONSUME(l.terminals.decimalPositive), import_utils.CommonIRIs.DECIMAL] },
128
- { ALT: () => [CONSUME(l.terminals.doublePositive), import_utils.CommonIRIs.DOUBLE] }
129
- ]);
130
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
131
- }
125
+ /**
126
+ * Parses a positive numeric literal.
127
+ * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)
128
+ */
129
+ exports.numericLiteralPositive = {
130
+ name: 'numericLiteralPositive',
131
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
132
+ const parsed = OR([
133
+ { ALT: () => [CONSUME(l.terminals.integerPositive), utils_js_1.CommonIRIs.INTEGER] },
134
+ { ALT: () => [CONSUME(l.terminals.decimalPositive), utils_js_1.CommonIRIs.DECIMAL] },
135
+ { ALT: () => [CONSUME(l.terminals.doublePositive), utils_js_1.CommonIRIs.DOUBLE] },
136
+ ]);
137
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
138
+ },
132
139
  };
133
- const numericLiteralNegative = {
134
- name: "numericLiteralNegative",
135
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
136
- const parsed = OR([
137
- { ALT: () => [CONSUME(l.terminals.integerNegative), import_utils.CommonIRIs.INTEGER] },
138
- { ALT: () => [CONSUME(l.terminals.decimalNegative), import_utils.CommonIRIs.DECIMAL] },
139
- { ALT: () => [CONSUME(l.terminals.doubleNegative), import_utils.CommonIRIs.DOUBLE] }
140
- ]);
141
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
142
- }
140
+ /**
141
+ * Parses a negative numeric literal.
142
+ * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)
143
+ */
144
+ exports.numericLiteralNegative = {
145
+ name: 'numericLiteralNegative',
146
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
147
+ const parsed = OR([
148
+ { ALT: () => [CONSUME(l.terminals.integerNegative), utils_js_1.CommonIRIs.INTEGER] },
149
+ { ALT: () => [CONSUME(l.terminals.decimalNegative), utils_js_1.CommonIRIs.DECIMAL] },
150
+ { ALT: () => [CONSUME(l.terminals.doubleNegative), utils_js_1.CommonIRIs.DOUBLE] },
151
+ ]);
152
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(parsed[0]), parsed[0].image, C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1])));
153
+ },
143
154
  };
144
- const booleanLiteral = {
145
- name: "booleanLiteral",
146
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
147
- const token = OR([
148
- { ALT: () => CONSUME(l.true_) },
149
- { ALT: () => CONSUME(l.false_) }
150
- ]);
151
- return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), import_utils.CommonIRIs.BOOLEAN)));
152
- }
155
+ /**
156
+ * Parses a boolean literal.
157
+ * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)
158
+ */
159
+ exports.booleanLiteral = {
160
+ name: 'booleanLiteral',
161
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
162
+ const token = OR([
163
+ { ALT: () => CONSUME(l.true_) },
164
+ { ALT: () => CONSUME(l.false_) },
165
+ ]);
166
+ return ACTION(() => C.astFactory.termLiteral(C.astFactory.sourceLocation(token), token.image.toLowerCase(), C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), utils_js_1.CommonIRIs.BOOLEAN)));
167
+ },
153
168
  };
154
- const string = {
155
- name: "string",
156
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
157
- const x = OR([
158
- { ALT: () => {
159
- const token = CONSUME(l.terminals.stringLiteral1);
160
- return [token, token.image.slice(1, -1)];
161
- } },
162
- { ALT: () => {
163
- const token = CONSUME(l.terminals.stringLiteral2);
164
- return [token, token.image.slice(1, -1)];
165
- } },
166
- { ALT: () => {
167
- const token = CONSUME(l.terminals.stringLiteralLong1);
168
- return [token, token.image.slice(3, -3)];
169
- } },
170
- { ALT: () => {
171
- const token = CONSUME(l.terminals.stringLiteralLong2);
172
- return [token, token.image.slice(3, -3)];
173
- } }
174
- ]);
175
- return ACTION(() => {
176
- const F = C.astFactory;
177
- const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
178
- switch (char) {
179
- case "t":
180
- return " ";
181
- case "n":
182
- return "\n";
183
- case "r":
184
- return "\r";
185
- case "b":
186
- return "\b";
187
- case "f":
188
- return "\f";
189
- default:
190
- return char;
191
- }
192
- });
193
- return F.termLiteral(F.sourceLocation(x[0]), value);
194
- });
195
- }
169
+ /**
170
+ * Parses a string literal.
171
+ * [[135]](https://www.w3.org/TR/sparql11-query/#rString)
172
+ */
173
+ exports.string = {
174
+ name: 'string',
175
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
176
+ const x = OR([
177
+ { ALT: () => {
178
+ const token = CONSUME(l.terminals.stringLiteral1);
179
+ return [token, token.image.slice(1, -1)];
180
+ } },
181
+ { ALT: () => {
182
+ const token = CONSUME(l.terminals.stringLiteral2);
183
+ return [token, token.image.slice(1, -1)];
184
+ } },
185
+ { ALT: () => {
186
+ const token = CONSUME(l.terminals.stringLiteralLong1);
187
+ return [token, token.image.slice(3, -3)];
188
+ } },
189
+ { ALT: () => {
190
+ const token = CONSUME(l.terminals.stringLiteralLong2);
191
+ return [token, token.image.slice(3, -3)];
192
+ } },
193
+ ]);
194
+ // Handle string escapes (19.7). (19.2 is handled at input level.)
195
+ return ACTION(() => {
196
+ const F = C.astFactory;
197
+ const value = x[1].replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
198
+ switch (char) {
199
+ case 't':
200
+ return '\t';
201
+ case 'n':
202
+ return '\n';
203
+ case 'r':
204
+ return '\r';
205
+ case 'b':
206
+ return '\b';
207
+ case 'f':
208
+ return '\f';
209
+ default:
210
+ return char;
211
+ }
212
+ });
213
+ return F.termLiteral(F.sourceLocation(x[0]), value);
214
+ });
215
+ },
196
216
  };
197
- const iri = {
198
- name: "iri",
199
- impl: ({ SUBRULE, OR }) => () => OR([
200
- { ALT: () => SUBRULE(iriFull) },
201
- { ALT: () => SUBRULE(prefixedName) }
202
- ]),
203
- gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => F.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast)
217
+ /**
218
+ * Parses a named node, either as an IRI or as a prefixed name.
219
+ * [[136]](https://www.w3.org/TR/sparql11-query/#riri)
220
+ */
221
+ exports.iri = {
222
+ name: 'iri',
223
+ impl: ({ SUBRULE, OR }) => () => OR([
224
+ { ALT: () => SUBRULE(exports.iriFull) },
225
+ { ALT: () => SUBRULE(exports.prefixedName) },
226
+ ]),
227
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => F.isTermNamedPrefixed(ast) ? SUBRULE(exports.prefixedName, ast) : SUBRULE(exports.iriFull, ast),
204
228
  };
205
- const iriFull = {
206
- name: "iriFull",
207
- impl: ({ ACTION, CONSUME }) => (C) => {
208
- const iriToken = CONSUME(l.terminals.iriRef);
209
- return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
210
- },
211
- gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
212
- F.printFilter(ast, () => PRINT("<", ast.value, ">"));
213
- }
229
+ exports.iriFull = {
230
+ name: 'iriFull',
231
+ impl: ({ ACTION, CONSUME }) => (C) => {
232
+ const iriToken = CONSUME(l.terminals.iriRef);
233
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));
234
+ },
235
+ gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
236
+ F.printFilter(ast, () => PRINT('<', ast.value, '>'));
237
+ },
214
238
  };
215
- const prefixedName = {
216
- name: "prefixedName",
217
- impl: ({ ACTION, CONSUME, OR }) => (C) => OR([
218
- { ALT: () => {
219
- const longName = CONSUME(l.terminals.pNameLn);
220
- return ACTION(() => {
221
- const [prefix, localName] = longName.image.split(":");
222
- return C.astFactory.termNamed(C.astFactory.sourceLocation(longName), localName, prefix);
223
- });
224
- } },
225
- { ALT: () => {
226
- const shortName = CONSUME(l.terminals.pNameNs);
227
- return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(shortName), "", shortName.image.slice(0, -1)));
228
- } }
229
- ]),
230
- gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
231
- F.printFilter(ast, () => PRINT(ast.prefix, ":", ast.value));
232
- }
239
+ /**
240
+ * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.
241
+ * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)
242
+ */
243
+ exports.prefixedName = {
244
+ name: 'prefixedName',
245
+ impl: ({ ACTION, CONSUME, OR }) => C => OR([
246
+ { ALT: () => {
247
+ const longName = CONSUME(l.terminals.pNameLn);
248
+ return ACTION(() => {
249
+ const [prefix, localName] = longName.image.split(':');
250
+ return C.astFactory.termNamed(C.astFactory.sourceLocation(longName), localName, prefix);
251
+ });
252
+ } },
253
+ { ALT: () => {
254
+ const shortName = CONSUME(l.terminals.pNameNs);
255
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(shortName), '', shortName.image.slice(0, -1)));
256
+ } },
257
+ ]),
258
+ gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {
259
+ F.printFilter(ast, () => PRINT(ast.prefix, ':', ast.value));
260
+ },
233
261
  };
234
- const canCreateBlankNodes = Symbol("canCreateBlankNodes");
235
- const blankNode = {
236
- name: "blankNode",
237
- impl: ({ ACTION, CONSUME, OR }) => (C) => {
238
- const result = OR([
239
- { ALT: () => {
240
- const labelToken = CONSUME(l.terminals.blankNodeLabel);
241
- return ACTION(() => C.astFactory.termBlank(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
242
- } },
243
- { ALT: () => {
244
- const anonToken = CONSUME(l.terminals.anon);
245
- return ACTION(() => C.astFactory.termBlank(void 0, C.astFactory.sourceLocation(anonToken)));
246
- } }
247
- ]);
248
- ACTION(() => {
249
- if (!C.parseMode.has("canCreateBlankNodes")) {
250
- throw new Error("Blank nodes are not allowed in this context");
251
- }
252
- });
253
- return result;
254
- },
255
- gImpl: ({ PRINT }) => (ast, { astFactory }) => {
256
- astFactory.printFilter(ast, () => PRINT("_:", ast.label.replace(/^e_/u, "")));
257
- }
262
+ exports.canCreateBlankNodes = Symbol('canCreateBlankNodes');
263
+ /**
264
+ * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.
265
+ * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)
266
+ */
267
+ exports.blankNode = {
268
+ name: 'blankNode',
269
+ impl: ({ ACTION, CONSUME, OR }) => (C) => {
270
+ const result = OR([
271
+ { ALT: () => {
272
+ const labelToken = CONSUME(l.terminals.blankNodeLabel);
273
+ return ACTION(() => C.astFactory.termBlank(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));
274
+ } },
275
+ { ALT: () => {
276
+ const anonToken = CONSUME(l.terminals.anon);
277
+ return ACTION(() => C.astFactory.termBlank(undefined, C.astFactory.sourceLocation(anonToken)));
278
+ } },
279
+ ]);
280
+ ACTION(() => {
281
+ if (!C.parseMode.has('canCreateBlankNodes')) {
282
+ throw new Error('Blank nodes are not allowed in this context');
283
+ }
284
+ });
285
+ return result;
286
+ },
287
+ gImpl: ({ PRINT }) => (ast, { astFactory }) => {
288
+ astFactory.printFilter(ast, () => PRINT('_:', ast.label.replace(/^e_/u, '')));
289
+ },
258
290
  };
259
- const verbA = {
260
- name: "VerbA",
261
- impl: ({ ACTION, CONSUME }) => (C) => {
262
- const token = CONSUME(l.a);
263
- return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), import_utils.CommonIRIs.TYPE, void 0));
264
- }
291
+ exports.verbA = {
292
+ name: 'VerbA',
293
+ impl: ({ ACTION, CONSUME }) => (C) => {
294
+ const token = CONSUME(l.a);
295
+ return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), utils_js_1.CommonIRIs.TYPE, undefined));
296
+ },
265
297
  };
266
- // Annotate the CommonJS export names for ESM import in node:
267
- 0 && (module.exports = {
268
- blankNode,
269
- booleanLiteral,
270
- canCreateBlankNodes,
271
- iri,
272
- iriFull,
273
- numericLiteral,
274
- numericLiteralNegative,
275
- numericLiteralPositive,
276
- numericLiteralUnsigned,
277
- prefixedName,
278
- rdfLiteral,
279
- string,
280
- stringEscapedLexical,
281
- verbA
282
- });
298
+ //# sourceMappingURL=literals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["../../../../lib/grammar/literals.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IToken } from '@traqula/chevrotain';\nimport * as l from '../lexer/index.js';\nimport type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes.js';\nimport type {\n TermBlank,\n TermIri,\n TermIriFull,\n TermIriPrefixed,\n TermLiteral,\n TermLiteralStr,\n TermLiteralTyped,\n} from '../Sparql11types.js';\nimport { CommonIRIs } from '../utils.js';\n\nexport function stringEscapedLexical(str: string): string {\n const lexical = str.replaceAll(/[\"\\\\\\t\\n\\r\\b\\f]/gu, (char) => {\n switch (char) {\n case '\\t':\n return '\\\\t';\n case '\\n':\n return '\\\\n';\n case '\\r':\n return '\\\\r';\n case '\\b':\n return '\\\\b';\n case '\\f':\n return '\\\\f';\n case '\"':\n return '\\\\\"';\n case '\\\\':\n return '\\\\\\\\';\n default:\n return char;\n }\n });\n return `\"${lexical}\"`;\n}\n\n/**\n * [[120]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlRule<'rdfLiteral', TermLiteral> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => (C) => {\n const value = SUBRULE1(string);\n return OPTION(() => OR<TermLiteral>([\n { ALT: () => {\n const lang = CONSUME(l.terminals.langTag);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, lang),\n value.value,\n lang.image.slice(1).toLowerCase(),\n ));\n } },\n { ALT: () => {\n CONSUME(l.symbols.hathat);\n const iriVal = SUBRULE1(iri);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n gImpl: ({ SUBRULE, PRINT, PRINT_WORD }) => (ast, { astFactory }) => {\n astFactory.printFilter(ast, () => {\n PRINT_WORD('');\n PRINT(stringEscapedLexical(ast.value));\n });\n\n if (ast.langOrIri) {\n if (typeof ast.langOrIri === 'string') {\n astFactory.printFilter(ast, () => PRINT('@', ast.langOrIri));\n } else {\n astFactory.printFilter(ast, () => PRINT('^^'));\n SUBRULE(iri, ast.langOrIri);\n }\n }\n },\n};\n\n/**\n * Parses a numeric literal.\n * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)\n */\nexport const numericLiteral: SparqlGrammarRule<'numericLiteral', TermLiteralTyped> = <const> {\n name: 'numericLiteral',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(numericLiteralUnsigned) },\n { ALT: () => SUBRULE(numericLiteralPositive) },\n { ALT: () => SUBRULE(numericLiteralNegative) },\n ]),\n};\n\n/**\n * Parses an unsigned numeric literal.\n * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)\n */\nexport const numericLiteralUnsigned: SparqlGrammarRule<'numericLiteralUnsigned', TermLiteralTyped> = <const> {\n name: 'numericLiteralUnsigned',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const parsed = OR<[IToken, string]>([\n { ALT: () => <const> [ CONSUME(l.terminals.integer), CommonIRIs.INTEGER ]},\n { ALT: () => <const> [ CONSUME(l.terminals.decimal), CommonIRIs.DECIMAL ]},\n { ALT: () => <const> [ CONSUME(l.terminals.double), CommonIRIs.DOUBLE ]},\n ]);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(parsed[0]),\n parsed[0].image,\n C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1]),\n ));\n },\n};\n\n/**\n * Parses a positive numeric literal.\n * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)\n */\nexport const numericLiteralPositive: SparqlGrammarRule<'numericLiteralPositive', TermLiteralTyped> = <const> {\n name: 'numericLiteralPositive',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const parsed = OR<[IToken, string]>([\n { ALT: () => <const> [ CONSUME(l.terminals.integerPositive), CommonIRIs.INTEGER ]},\n { ALT: () => <const> [ CONSUME(l.terminals.decimalPositive), CommonIRIs.DECIMAL ]},\n { ALT: () => <const> [ CONSUME(l.terminals.doublePositive), CommonIRIs.DOUBLE ]},\n ]);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(parsed[0]),\n parsed[0].image,\n C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1]),\n ));\n },\n};\n\n/**\n * Parses a negative numeric literal.\n * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)\n */\nexport const numericLiteralNegative: SparqlGrammarRule<'numericLiteralNegative', TermLiteralTyped> = <const> {\n name: 'numericLiteralNegative',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const parsed = OR<[IToken, string]>([\n { ALT: () => <const> [ CONSUME(l.terminals.integerNegative), CommonIRIs.INTEGER ]},\n { ALT: () => <const> [ CONSUME(l.terminals.decimalNegative), CommonIRIs.DECIMAL ]},\n { ALT: () => <const> [ CONSUME(l.terminals.doubleNegative), CommonIRIs.DOUBLE ]},\n ]);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(parsed[0]),\n parsed[0].image,\n C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), parsed[1]),\n ));\n },\n};\n\n/**\n * Parses a boolean literal.\n * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)\n */\nexport const booleanLiteral: SparqlGrammarRule<'booleanLiteral', TermLiteralTyped> = <const> {\n name: 'booleanLiteral',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l.true_) },\n { ALT: () => CONSUME(l.false_) },\n ]);\n\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(token),\n token.image.toLowerCase(),\n C.astFactory.termNamed(C.astFactory.sourceLocationNoMaterialize(), CommonIRIs.BOOLEAN),\n ));\n },\n};\n\n/**\n * Parses a string literal.\n * [[135]](https://www.w3.org/TR/sparql11-query/#rString)\n */\nexport const string: SparqlGrammarRule<'string', TermLiteralStr> = <const> {\n name: 'string',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const x = OR([\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteral1);\n return <const>[ token, token.image.slice(1, -1) ];\n } },\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteral2);\n return <const>[ token, token.image.slice(1, -1) ];\n } },\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteralLong1);\n return <const>[ token, token.image.slice(3, -3) ];\n } },\n { ALT: () => {\n const token = CONSUME(l.terminals.stringLiteralLong2);\n return <const>[ token, token.image.slice(3, -3) ];\n } },\n ]);\n // Handle string escapes (19.7). (19.2 is handled at input level.)\n return ACTION(() => {\n const F = C.astFactory;\n const value = x[1].replaceAll(/\\\\([tnrbf\"'\\\\])/gu, (_, char: string) => {\n switch (char) {\n case 't':\n return '\\t';\n case 'n':\n return '\\n';\n case 'r':\n return '\\r';\n case 'b':\n return '\\b';\n case 'f':\n return '\\f';\n default:\n return char;\n }\n });\n return F.termLiteral(F.sourceLocation(x[0]), value);\n });\n },\n};\n\n/**\n * Parses a named node, either as an IRI or as a prefixed name.\n * [[136]](https://www.w3.org/TR/sparql11-query/#riri)\n */\nexport const iri: SparqlRule<'iri', TermIri> = <const> {\n name: 'iri',\n impl: ({ SUBRULE, OR }) => () => OR<TermIri>([\n { ALT: () => SUBRULE(iriFull) },\n { ALT: () => SUBRULE(prefixedName) },\n ]),\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) =>\n F.isTermNamedPrefixed(ast) ? SUBRULE(prefixedName, ast) : SUBRULE(iriFull, ast),\n};\n\nexport const iriFull: SparqlRule<'iriFull', TermIriFull> = <const> {\n name: 'iriFull',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const iriToken = CONSUME(l.terminals.iriRef);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(iriToken), iriToken.image.slice(1, -1)));\n },\n gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT('<', ast.value, '>'));\n },\n};\n\n/**\n * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.\n * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)\n */\nexport const prefixedName: SparqlRule<'prefixedName', TermIriPrefixed> = <const> {\n name: 'prefixedName',\n impl: ({ ACTION, CONSUME, OR }) => C => OR([\n { ALT: () => {\n const longName = CONSUME(l.terminals.pNameLn);\n return ACTION(() => {\n const [ prefix, localName ] = longName.image.split(':');\n return C.astFactory.termNamed(C.astFactory.sourceLocation(longName), localName, prefix);\n });\n } },\n { ALT: () => {\n const shortName = CONSUME(l.terminals.pNameNs);\n return ACTION(() => C.astFactory.termNamed(\n C.astFactory.sourceLocation(shortName),\n '',\n shortName.image.slice(0, -1),\n ));\n } },\n ]),\n gImpl: ({ PRINT }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT(ast.prefix, ':', ast.value));\n },\n};\n\nexport const canCreateBlankNodes = Symbol('canCreateBlankNodes');\n\n/**\n * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.\n * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)\n */\nexport const blankNode: SparqlRule<'blankNode', TermBlank> = <const> {\n name: 'blankNode',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const result = OR([\n { ALT: () => {\n const labelToken = CONSUME(l.terminals.blankNodeLabel);\n return ACTION(() =>\n C.astFactory.termBlank(labelToken.image.slice(2), C.astFactory.sourceLocation(labelToken)));\n } },\n { ALT: () => {\n const anonToken = CONSUME(l.terminals.anon);\n return ACTION(() => C.astFactory.termBlank(undefined, C.astFactory.sourceLocation(anonToken)));\n } },\n ]);\n ACTION(() => {\n if (!C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Blank nodes are not allowed in this context');\n }\n });\n return result;\n },\n gImpl: ({ PRINT }) => (ast, { astFactory }) => {\n astFactory.printFilter(ast, () => PRINT('_:', ast.label.replace(/^e_/u, '')));\n },\n};\n\nexport const verbA: SparqlGrammarRule<'VerbA', TermIriFull> = <const> {\n name: 'VerbA',\n impl: ({ ACTION, CONSUME }) => (C) => {\n const token = CONSUME(l.a);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.TYPE, undefined));\n },\n};\n"]}