@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,115 +1,98 @@
1
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;
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
15
  };
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) }
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.queryOrUpdate = void 0;
18
+ const index_js_1 = require("../lexer/index.js");
19
+ const validators_js_1 = require("../validation/validators.js");
20
+ const general_js_1 = require("./general.js");
21
+ const queryUnit_js_1 = require("./queryUnit.js");
22
+ const updateUnit_js_1 = require("./updateUnit.js");
23
+ __exportStar(require("./queryUnit.js"), exports);
24
+ __exportStar(require("./updateUnit.js"), exports);
25
+ __exportStar(require("./builtIn.js"), exports);
26
+ __exportStar(require("./dataSetClause.js"), exports);
27
+ __exportStar(require("./expression.js"), exports);
28
+ __exportStar(require("../expressionHelpers.js"), exports);
29
+ __exportStar(require("./general.js"), exports);
30
+ __exportStar(require("./literals.js"), exports);
31
+ __exportStar(require("./propertyPaths.js"), exports);
32
+ __exportStar(require("./solutionModifier.js"), exports);
33
+ __exportStar(require("./tripleBlock.js"), exports);
34
+ __exportStar(require("./whereClause.js"), exports);
35
+ /**
36
+ * Query or update, optimized for the Query case.
37
+ * One could implement a new rule that does not use BACKTRACK.
38
+ */
39
+ exports.queryOrUpdate = {
40
+ name: 'queryOrUpdate',
41
+ impl: ({ ACTION, SUBRULE, OR1, OR2, MANY, OPTION1, CONSUME, SUBRULE2 }) => (C) => {
42
+ const prologueValues = SUBRULE(general_js_1.prologue);
43
+ return OR1([
44
+ { ALT: () => {
45
+ const subType = OR2([
46
+ { ALT: () => SUBRULE(queryUnit_js_1.selectQuery) },
47
+ { ALT: () => SUBRULE(queryUnit_js_1.constructQuery) },
48
+ { ALT: () => SUBRULE(queryUnit_js_1.describeQuery) },
49
+ { ALT: () => SUBRULE(queryUnit_js_1.askQuery) },
50
+ ]);
51
+ const values = SUBRULE(queryUnit_js_1.valuesClause);
52
+ return ACTION(() => ({
53
+ context: prologueValues,
54
+ ...subType,
55
+ type: 'query',
56
+ ...(values && { values }),
57
+ loc: C.astFactory.sourceLocation(prologueValues.at(0), subType, values),
58
+ }));
59
+ } },
60
+ { ALT: () => {
61
+ const updates = [];
62
+ updates.push({ context: prologueValues });
63
+ let parsedSemi = true;
64
+ MANY({
65
+ GATE: () => parsedSemi,
66
+ DEF: () => {
67
+ parsedSemi = false;
68
+ updates.at(-1).operation = SUBRULE(updateUnit_js_1.update1);
69
+ OPTION1(() => {
70
+ CONSUME(index_js_1.symbols.semi);
71
+ parsedSemi = true;
72
+ const innerPrologue = SUBRULE2(general_js_1.prologue);
73
+ updates.push({ context: innerPrologue });
74
+ });
75
+ },
76
+ });
77
+ return ACTION(() => {
78
+ const update = {
79
+ type: 'update',
80
+ updates,
81
+ loc: C.astFactory.sourceLocation(...updates.flatMap(x => [...x.context, x.operation])),
82
+ };
83
+ (0, validators_js_1.updateNoReuseBlankNodeLabels)(update);
84
+ return update;
85
+ });
86
+ } },
53
87
  ]);
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
- }
88
+ },
89
+ gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
90
+ if (F.isQuery(ast)) {
91
+ SUBRULE(queryUnit_js_1.query, ast);
92
+ }
93
+ else {
94
+ SUBRULE(updateUnit_js_1.update, ast);
95
+ }
96
+ },
99
97
  };
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
- });
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/grammar/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { symbols } from '../lexer/index.js';\nimport type { SparqlRule } from '../sparql11HelperTypes.js';\nimport type { Query, SparqlQuery, Update } from '../Sparql11types.js';\nimport { updateNoReuseBlankNodeLabels } from '../validation/validators.js';\nimport { prologue } from './general.js';\nimport type { HandledByBase } from './queryUnit.js';\nimport { query, askQuery, constructQuery, describeQuery, selectQuery, valuesClause } from './queryUnit.js';\nimport { update, update1 } from './updateUnit.js';\n\nexport * from './queryUnit.js';\nexport * from './updateUnit.js';\nexport * from './builtIn.js';\nexport * from './dataSetClause.js';\nexport * from './expression.js';\nexport * from '../expressionHelpers.js';\nexport * from './general.js';\nexport * from './literals.js';\nexport * from './propertyPaths.js';\nexport * from './solutionModifier.js';\nexport * from './tripleBlock.js';\nexport * from './whereClause.js';\n\n/**\n * Query or update, optimized for the Query case.\n * One could implement a new rule that does not use BACKTRACK.\n */\nexport const queryOrUpdate: SparqlRule<'queryOrUpdate', SparqlQuery> = {\n name: 'queryOrUpdate',\n impl: ({ ACTION, SUBRULE, OR1, OR2, MANY, OPTION1, CONSUME, SUBRULE2 }) => (C) => {\n const prologueValues = SUBRULE(prologue);\n return OR1<Query | Update>([\n { ALT: () => {\n const subType = OR2<Omit<Query, HandledByBase>>([\n { ALT: () => SUBRULE(selectQuery) },\n { ALT: () => SUBRULE(constructQuery) },\n { ALT: () => SUBRULE(describeQuery) },\n { ALT: () => SUBRULE(askQuery) },\n ]);\n const values = SUBRULE(valuesClause);\n return ACTION(() => (<Query>{\n context: prologueValues,\n ...subType,\n type: 'query',\n ...(values && { values }),\n loc: C.astFactory.sourceLocation(\n prologueValues.at(0),\n subType,\n values,\n ),\n }));\n } },\n { ALT: () => {\n const updates: Update['updates'] = [];\n updates.push({ context: prologueValues });\n let parsedSemi = true;\n MANY({\n GATE: () => parsedSemi,\n DEF: () => {\n parsedSemi = false;\n updates.at(-1)!.operation = SUBRULE(update1);\n\n OPTION1(() => {\n CONSUME(symbols.semi);\n\n parsedSemi = true;\n const innerPrologue = SUBRULE2(prologue);\n updates.push({ context: innerPrologue });\n });\n },\n });\n return ACTION(() => {\n const update = {\n type: 'update',\n updates,\n loc: C.astFactory.sourceLocation(\n ...updates.flatMap(x => [ ...x.context, x.operation ]),\n ),\n } satisfies Update;\n updateNoReuseBlankNodeLabels(update);\n return update;\n });\n } },\n ]);\n },\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n if (F.isQuery(ast)) {\n SUBRULE(query, ast);\n } else {\n SUBRULE(update, ast);\n }\n },\n};\n"]}