@traqula/generator-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.
- package/dist/cjs/lib/index.js +54 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/test/integration.test.js +175 -0
- package/dist/cjs/test/statics.test.js +68 -0
- package/{lib → dist/esm/lib}/index.d.ts +26 -26
- package/dist/esm/lib/index.js.map +1 -0
- package/dist/esm/test/integration.test.d.ts +1 -0
- package/dist/esm/test/integration.test.js +180 -0
- package/dist/esm/test/integration.test.js.map +1 -0
- package/dist/esm/test/statics.test.d.ts +1 -0
- package/dist/esm/test/statics.test.js +49 -0
- package/dist/esm/test/statics.test.js.map +1 -0
- package/package.json +16 -17
- package/lib/index.cjs +0 -14918
- package/lib/index.js.map +0 -1
- /package/{lib → dist/esm/lib}/index.js +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
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 __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var lib_exports = {};
|
|
20
|
+
__export(lib_exports, {
|
|
21
|
+
Generator: () => Generator,
|
|
22
|
+
sparql11GeneratorBuilder: () => sparql11GeneratorBuilder
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(lib_exports);
|
|
25
|
+
var import_core = require("@traqula/core");
|
|
26
|
+
var import_rules_sparql_1_1 = require("@traqula/rules-sparql-1-1");
|
|
27
|
+
const sparql11GeneratorBuilder = import_core.GeneratorBuilder.create([
|
|
28
|
+
import_rules_sparql_1_1.gram.queryOrUpdate,
|
|
29
|
+
import_rules_sparql_1_1.gram.query,
|
|
30
|
+
import_rules_sparql_1_1.gram.selectQuery,
|
|
31
|
+
import_rules_sparql_1_1.gram.constructQuery,
|
|
32
|
+
import_rules_sparql_1_1.gram.describeQuery,
|
|
33
|
+
import_rules_sparql_1_1.gram.askQuery,
|
|
34
|
+
import_rules_sparql_1_1.gram.selectClause
|
|
35
|
+
]).addMany(import_rules_sparql_1_1.gram.update, import_rules_sparql_1_1.gram.update1, import_rules_sparql_1_1.gram.load, import_rules_sparql_1_1.gram.clear, import_rules_sparql_1_1.gram.drop, import_rules_sparql_1_1.gram.create, import_rules_sparql_1_1.gram.copy, import_rules_sparql_1_1.gram.move, import_rules_sparql_1_1.gram.add, import_rules_sparql_1_1.gram.insertData, import_rules_sparql_1_1.gram.deleteData, import_rules_sparql_1_1.gram.deleteWhere, import_rules_sparql_1_1.gram.modify, import_rules_sparql_1_1.gram.graphRef, import_rules_sparql_1_1.gram.graphRefAll, import_rules_sparql_1_1.gram.quads, import_rules_sparql_1_1.gram.quadsNotTriples).addRule(import_rules_sparql_1_1.gram.aggregate).addMany(import_rules_sparql_1_1.gram.datasetClauseStar, import_rules_sparql_1_1.gram.usingClauseStar).addMany(import_rules_sparql_1_1.gram.argList, import_rules_sparql_1_1.gram.expression, import_rules_sparql_1_1.gram.iriOrFunction).addMany(import_rules_sparql_1_1.gram.prologue, import_rules_sparql_1_1.gram.prefixDecl, import_rules_sparql_1_1.gram.baseDecl, import_rules_sparql_1_1.gram.varOrTerm, import_rules_sparql_1_1.gram.var_, import_rules_sparql_1_1.gram.graphTerm).addMany(import_rules_sparql_1_1.gram.rdfLiteral, import_rules_sparql_1_1.gram.iri, import_rules_sparql_1_1.gram.iriFull, import_rules_sparql_1_1.gram.prefixedName, import_rules_sparql_1_1.gram.blankNode).addRule(import_rules_sparql_1_1.gram.pathGenerator).addMany(import_rules_sparql_1_1.gram.solutionModifier, import_rules_sparql_1_1.gram.groupClause, import_rules_sparql_1_1.gram.havingClause, import_rules_sparql_1_1.gram.orderClause, import_rules_sparql_1_1.gram.limitOffsetClauses).addMany(import_rules_sparql_1_1.gram.triplesBlock, import_rules_sparql_1_1.gram.collectionPath, import_rules_sparql_1_1.gram.blankNodePropertyListPath, import_rules_sparql_1_1.gram.triplesNodePath, import_rules_sparql_1_1.gram.graphNodePath).addMany(import_rules_sparql_1_1.gram.whereClause, import_rules_sparql_1_1.gram.generatePattern, import_rules_sparql_1_1.gram.groupGraphPattern, import_rules_sparql_1_1.gram.graphPatternNotTriples, import_rules_sparql_1_1.gram.optionalGraphPattern, import_rules_sparql_1_1.gram.graphGraphPattern, import_rules_sparql_1_1.gram.serviceGraphPattern, import_rules_sparql_1_1.gram.bind, import_rules_sparql_1_1.gram.inlineData, import_rules_sparql_1_1.gram.minusGraphPattern, import_rules_sparql_1_1.gram.groupOrUnionGraphPattern, import_rules_sparql_1_1.gram.filter);
|
|
36
|
+
class Generator {
|
|
37
|
+
defaultContext;
|
|
38
|
+
constructor(defaultContext = {}) {
|
|
39
|
+
this.defaultContext = defaultContext;
|
|
40
|
+
}
|
|
41
|
+
generator = sparql11GeneratorBuilder.build();
|
|
42
|
+
factory = new import_rules_sparql_1_1.AstFactory();
|
|
43
|
+
generate(ast, context = {}) {
|
|
44
|
+
return this.generator.queryOrUpdate(ast, (0, import_rules_sparql_1_1.completeParseContext)({ ...this.defaultContext, ...context })).trim();
|
|
45
|
+
}
|
|
46
|
+
generatePath(ast, context = {}) {
|
|
47
|
+
return this.generator.path(ast, (0, import_rules_sparql_1_1.completeParseContext)({ ...this.defaultContext, ...context }), void 0).trim();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
51
|
+
0 && (module.exports = {
|
|
52
|
+
Generator,
|
|
53
|
+
sparql11GeneratorBuilder
|
|
54
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "commonjs" }
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_core = require("@traqula/core");
|
|
3
|
+
var import_parser_sparql_1_1 = require("@traqula/parser-sparql-1-1");
|
|
4
|
+
var import_rules_sparql_1_1 = require("@traqula/rules-sparql-1-1");
|
|
5
|
+
var import_vitest = require("vitest");
|
|
6
|
+
var import_lib = require("../lib/index.js");
|
|
7
|
+
(0, import_vitest.describe)("a SPARQL 1.1 generator", () => {
|
|
8
|
+
const generator = new import_lib.Generator();
|
|
9
|
+
const parser = new import_parser_sparql_1_1.Parser();
|
|
10
|
+
const F = new import_rules_sparql_1_1.AstFactory();
|
|
11
|
+
const transformer = new import_rules_sparql_1_1.AstTransformer();
|
|
12
|
+
(0, import_vitest.it)("generates simple round tripped", ({ expect }) => {
|
|
13
|
+
const query = "SELECT * WHERE { ?s ?p ?o }";
|
|
14
|
+
const ast = parser.parse(query);
|
|
15
|
+
const result = generator.generate(ast, { origSource: query });
|
|
16
|
+
expect(result).toBe(query);
|
|
17
|
+
});
|
|
18
|
+
(0, import_vitest.it)("self generates on no pretty", ({ expect }) => {
|
|
19
|
+
const query = "SELECT * WHERE { ?s ?p ?o . }";
|
|
20
|
+
const ast = parser.parse(query);
|
|
21
|
+
const result = generator.generate(F.forcedAutoGenTree(ast), { [import_core.traqulaIndentation]: -1, indentInc: 0 });
|
|
22
|
+
expect(result).toBe(query);
|
|
23
|
+
});
|
|
24
|
+
(0, import_vitest.describe)("on altered nodes", () => {
|
|
25
|
+
(0, import_vitest.it)("translates ?s -> ?subject", ({ expect }) => {
|
|
26
|
+
const query = "SELECT * WHERE { ?s ?p ?o }";
|
|
27
|
+
const ast = parser.parse(query);
|
|
28
|
+
const altered = transformer.transformNodeSpecific(ast, {}, { term: { variable: {
|
|
29
|
+
transform: (variable) => variable.value === "s" ? F.termVariable("subject", F.sourceLocationNodeReplaceUnsafe(variable.loc)) : variable
|
|
30
|
+
} } });
|
|
31
|
+
const result = generator.generate(altered, { origSource: query });
|
|
32
|
+
expect(result).toBe(`SELECT * WHERE { ?subject ?p ?o }`);
|
|
33
|
+
});
|
|
34
|
+
(0, import_vitest.it)("translates blanknodes -> variables", ({ expect }) => {
|
|
35
|
+
const query = `
|
|
36
|
+
|
|
37
|
+
BASE <ex:>
|
|
38
|
+
CONSTRUCT {
|
|
39
|
+
?s0 ?p0 _:g_0 .
|
|
40
|
+
_:g_0 <a0> _:g_1 .
|
|
41
|
+
_:g_1 <b0> <c0> .
|
|
42
|
+
[
|
|
43
|
+
<a0> [
|
|
44
|
+
<b0> <c0> ;
|
|
45
|
+
] ;
|
|
46
|
+
] ?p0 ?o0 .
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
WHERE {
|
|
50
|
+
?s1 ?p1 _:g_4 .
|
|
51
|
+
?s1 ?p1 <a1> .
|
|
52
|
+
?s1 ?q1 <b1> .
|
|
53
|
+
?s1 ?q1 <c1> .
|
|
54
|
+
_:g_5 ?p2 ?o2 .
|
|
55
|
+
?s3 ?p3 _:g_6 .
|
|
56
|
+
_:g_6 <a3> <b3> .
|
|
57
|
+
?s4 ?p4 _:g_7 .
|
|
58
|
+
_:g_7 <a4> <b4> .
|
|
59
|
+
_:g_7 <c4> <d4> .
|
|
60
|
+
_:g_7 <c4> <e4> .
|
|
61
|
+
?s5 ?p5 _:g_8 .
|
|
62
|
+
_:g_8 <a5> _:g_9 .
|
|
63
|
+
_:g_9 <b5> <c5> .
|
|
64
|
+
[
|
|
65
|
+
<a6> [
|
|
66
|
+
<b6> <c6> ;
|
|
67
|
+
] ;
|
|
68
|
+
] ?p6 ?o6 .
|
|
69
|
+
_:g_12 <a7> <b7> .
|
|
70
|
+
_:g_12 <c7> <d7> .
|
|
71
|
+
_:g_12 <c7> <e7> .
|
|
72
|
+
|
|
73
|
+
}`;
|
|
74
|
+
const ast = parser.parse(query);
|
|
75
|
+
function extractCollection(collection) {
|
|
76
|
+
const result2 = [];
|
|
77
|
+
for (const entry of collection.triples) {
|
|
78
|
+
const subject = entry.subject;
|
|
79
|
+
const pred = entry.predicate;
|
|
80
|
+
if (F.isTripleCollection(entry.object)) {
|
|
81
|
+
const identifier = { ...F.graphNodeIdentifier(entry.object) };
|
|
82
|
+
result2.push(F.triple(subject, pred, identifier, F.gen()));
|
|
83
|
+
result2.push(...extractCollection(entry.object));
|
|
84
|
+
} else {
|
|
85
|
+
result2.push(F.triple(subject, pred, entry.object, F.gen()));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return result2;
|
|
89
|
+
}
|
|
90
|
+
const flattenCollections = transformer.transformNodeSpecific(ast, {}, { pattern: { bgp: {
|
|
91
|
+
transform: (current) => {
|
|
92
|
+
const bgpCopy = F.forcedAutoGenTree(current);
|
|
93
|
+
const newTriples = [];
|
|
94
|
+
for (const entry of bgpCopy.triples) {
|
|
95
|
+
if (F.isTriple(entry)) {
|
|
96
|
+
const subject = entry.subject;
|
|
97
|
+
const pred = entry.predicate;
|
|
98
|
+
if (F.isTripleCollection(entry.object)) {
|
|
99
|
+
const object = entry.object;
|
|
100
|
+
const identifier = { ...F.graphNodeIdentifier(object) };
|
|
101
|
+
newTriples.push(F.triple(subject, pred, identifier));
|
|
102
|
+
newTriples.push(...extractCollection(object));
|
|
103
|
+
} else {
|
|
104
|
+
newTriples.push(F.triple(subject, pred, entry.object, F.gen()));
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
const genTriples = extractCollection(entry);
|
|
108
|
+
newTriples.push(...genTriples);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return F.patternBgp(newTriples, F.sourceLocationNodeReplaceUnsafe(current.loc));
|
|
112
|
+
}
|
|
113
|
+
} } });
|
|
114
|
+
const result = generator.generate(flattenCollections, { origSource: query });
|
|
115
|
+
expect(result).toBe(`BASE <ex:>
|
|
116
|
+
CONSTRUCT {
|
|
117
|
+
?s0 ?p0 _:g_0 .
|
|
118
|
+
_:g_0 <a0> _:g_1 .
|
|
119
|
+
_:g_1 <b0> <c0> .
|
|
120
|
+
[
|
|
121
|
+
<a0> [
|
|
122
|
+
<b0> <c0> ;
|
|
123
|
+
] ;
|
|
124
|
+
] ?p0 ?o0 .
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
}
|
|
128
|
+
WHERE {
|
|
129
|
+
?s1 ?p1 _:g_4 .
|
|
130
|
+
?s1 ?p1 <a1> .
|
|
131
|
+
?s1 ?q1 <b1> .
|
|
132
|
+
?s1 ?q1 <c1> .
|
|
133
|
+
_:g_5 ?p2 ?o2 .
|
|
134
|
+
?s3 ?p3 _:g_6 .
|
|
135
|
+
_:g_6 <a3> <b3> .
|
|
136
|
+
?s4 ?p4 _:g_7 .
|
|
137
|
+
_:g_7 <a4> <b4> .
|
|
138
|
+
_:g_7 <c4> <d4> .
|
|
139
|
+
_:g_7 <c4> <e4> .
|
|
140
|
+
?s5 ?p5 _:g_8 .
|
|
141
|
+
_:g_8 <a5> _:g_9 .
|
|
142
|
+
_:g_9 <b5> <c5> .
|
|
143
|
+
[
|
|
144
|
+
<a6> [
|
|
145
|
+
<b6> <c6> ;
|
|
146
|
+
] ;
|
|
147
|
+
] ?p6 ?o6 .
|
|
148
|
+
_:g_12 <a7> <b7> .
|
|
149
|
+
_:g_12 <c7> <d7> .
|
|
150
|
+
_:g_12 <c7> <e7> .
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
}`);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
(0, import_vitest.it)("generates hand constructed query", ({ expect }) => {
|
|
157
|
+
const query = `
|
|
158
|
+
SELECT * WHERE {
|
|
159
|
+
?s ?p ?o .
|
|
160
|
+
}`;
|
|
161
|
+
const ast = F.querySelect({
|
|
162
|
+
variables: [F.wildcard(F.gen())],
|
|
163
|
+
datasets: F.datasetClauses([], F.sourceLocation()),
|
|
164
|
+
context: [],
|
|
165
|
+
where: F.patternGroup([
|
|
166
|
+
F.patternBgp([
|
|
167
|
+
F.triple(F.termVariable("s", F.gen()), F.termVariable("p", F.gen()), F.termVariable("o", F.gen()))
|
|
168
|
+
], F.gen())
|
|
169
|
+
], F.gen()),
|
|
170
|
+
solutionModifiers: {}
|
|
171
|
+
}, F.gen());
|
|
172
|
+
const result = generator.generate(ast);
|
|
173
|
+
expect(result.trim()).toBe(query.trim());
|
|
174
|
+
});
|
|
175
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
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 __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var import_node_fs = __toESM(require("node:fs"), 1);
|
|
25
|
+
var import_node_path = __toESM(require("node:path"), 1);
|
|
26
|
+
var import_rules_sparql_1_1 = require("@traqula/rules-sparql-1-1");
|
|
27
|
+
var import_test_utils = require("@traqula/test-utils");
|
|
28
|
+
var import_vitest = require("vitest");
|
|
29
|
+
var import_lib = require("../lib/index.js");
|
|
30
|
+
(0, import_vitest.describe)("a SPARQL 1.1 generator", () => {
|
|
31
|
+
const generator = new import_lib.Generator();
|
|
32
|
+
const F = new import_rules_sparql_1_1.AstFactory();
|
|
33
|
+
function _sinkGenerated(suite, test, response) {
|
|
34
|
+
const dir = (0, import_test_utils.getStaticFilePath)();
|
|
35
|
+
const fileLoc = import_node_path.default.join(dir, suite, `${test}-generated.sparql`);
|
|
36
|
+
import_node_fs.default.writeFileSync(fileLoc, response);
|
|
37
|
+
}
|
|
38
|
+
(0, import_vitest.describe)("positive paths", () => {
|
|
39
|
+
for (const { name, statics } of (0, import_test_utils.positiveTest)("paths")) {
|
|
40
|
+
(0, import_vitest.it)(`can generate ${name}`, async ({ expect }) => {
|
|
41
|
+
const { query, ast, autoGen } = await statics();
|
|
42
|
+
const path2 = ast;
|
|
43
|
+
const generated = generator.generatePath(path2, { origSource: query });
|
|
44
|
+
expect(generated, "round-trip generation").toEqual(query.trim());
|
|
45
|
+
const replaceLoc = F.sourceLocationNodeReplaceUnsafe(path2.loc);
|
|
46
|
+
const autoGenAst = F.forcedAutoGenTree(path2);
|
|
47
|
+
autoGenAst.loc = replaceLoc;
|
|
48
|
+
const selfGenerated = generator.generatePath(autoGenAst);
|
|
49
|
+
expect(selfGenerated, "auto generated").toEqual(autoGen.trim());
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
(0, import_vitest.describe)("positive sparql 1.1", () => {
|
|
54
|
+
for (const { name, statics } of (0, import_test_utils.positiveTest)("sparql-1-1")) {
|
|
55
|
+
(0, import_vitest.it)(`can generate ${name}`, async ({ expect }) => {
|
|
56
|
+
const { query, ast, autoGen } = await statics();
|
|
57
|
+
const queryUpdate = ast;
|
|
58
|
+
const roundTripped = generator.generate(queryUpdate, { origSource: query });
|
|
59
|
+
expect(roundTripped, "round-trip generation").toEqual(query.trim());
|
|
60
|
+
const replaceLoc = F.sourceLocationNodeReplaceUnsafe(queryUpdate.loc);
|
|
61
|
+
const autoGenAst = F.forcedAutoGenTree(queryUpdate);
|
|
62
|
+
autoGenAst.loc = replaceLoc;
|
|
63
|
+
const selfGenerated = generator.generate(autoGenAst);
|
|
64
|
+
expect(selfGenerated, "auto generated").toEqual(autoGen.trim());
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
});
|
|
@@ -1,70 +1,70 @@
|
|
|
1
1
|
import { GeneratorBuilder } from '@traqula/core';
|
|
2
2
|
import type * as T11 from '@traqula/rules-sparql-1-1';
|
|
3
|
-
export declare const sparql11GeneratorBuilder: GeneratorBuilder<T11.SparqlGeneratorContext, "
|
|
4
|
-
|
|
3
|
+
export declare const sparql11GeneratorBuilder: GeneratorBuilder<T11.SparqlGeneratorContext, "filter" | "copy" | "graphRef" | "load" | "clear" | "drop" | "create" | "add" | "move" | "modify" | "update" | "query" | "datasetClauses" | "bind" | "solutionModifier" | "expression" | "aggregate" | "path" | "blankNode" | "selectQuery" | "selectClause" | "constructQuery" | "describeQuery" | "askQuery" | "update1" | "insertData" | "deleteData" | "deleteWhere" | "graphRefAll" | "quads" | "quadsNotTriples" | "usingClauses" | "argList" | "iriOrFunction" | "prologue" | "baseDecl" | "prefixDecl" | "varOrTerm" | "var" | "graphTerm" | "rdfLiteral" | "iri" | "iriFull" | "prefixedName" | "groupClause" | "havingClause" | "orderClause" | "limitOffsetClauses" | "triplesBlock" | "collectionPath" | "triplesNodePath" | "blankNodePropertyListPath" | "graphNodePath" | "whereClause" | "groupGraphPattern" | "generatePattern" | "graphPatternNotTriples" | "optionalGraphPattern" | "graphGraphPattern" | "serviceGraphPattern" | "inlineData" | "minusGraphPattern" | "groupOrUnionGraphPattern" | "queryOrUpdate", {
|
|
4
|
+
filter: import("@traqula/core").GeneratorRule<any, "filter"> & T11.SparqlGrammarRule<"filter", T11.PatternFilter, []> & T11.SparqlGeneratorRule<"filter", T11.PatternFilter, []>;
|
|
5
|
+
copy: import("@traqula/core").GeneratorRule<any, "copy"> & T11.SparqlGrammarRule<"copy", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []> & T11.SparqlGeneratorRule<"copy", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []>;
|
|
6
|
+
graphRef: import("@traqula/core").GeneratorRule<any, "graphRef"> & T11.SparqlGrammarRule<"graphRef", T11.GraphRefSpecific, []> & T11.SparqlGeneratorRule<"graphRef", T11.GraphRefSpecific, []>;
|
|
7
|
+
load: import("@traqula/core").GeneratorRule<any, "load"> & T11.SparqlGrammarRule<"load", T11.UpdateOperationLoad, []> & T11.SparqlGeneratorRule<"load", T11.UpdateOperationLoad, []>;
|
|
8
|
+
clear: import("@traqula/core").GeneratorRule<any, "clear"> & T11.SparqlGrammarRule<"clear", T11.UpdateOperationClear | T11.UpdateOperationDrop, []> & T11.SparqlGeneratorRule<"clear", T11.UpdateOperationClear | T11.UpdateOperationDrop, []>;
|
|
9
|
+
drop: import("@traqula/core").GeneratorRule<any, "drop"> & T11.SparqlGrammarRule<"drop", T11.UpdateOperationClear | T11.UpdateOperationDrop, []> & T11.SparqlGeneratorRule<"drop", T11.UpdateOperationClear | T11.UpdateOperationDrop, []>;
|
|
10
|
+
create: import("@traqula/core").GeneratorRule<any, "create"> & T11.SparqlGrammarRule<"create", T11.UpdateOperationCreate, []> & T11.SparqlGeneratorRule<"create", T11.UpdateOperationCreate, []>;
|
|
11
|
+
add: import("@traqula/core").GeneratorRule<any, "add"> & T11.SparqlGrammarRule<"add", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []> & T11.SparqlGeneratorRule<"add", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []>;
|
|
12
|
+
move: import("@traqula/core").GeneratorRule<any, "move"> & T11.SparqlGrammarRule<"move", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []> & T11.SparqlGeneratorRule<"move", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []>;
|
|
13
|
+
modify: import("@traqula/core").GeneratorRule<any, "modify"> & T11.SparqlGrammarRule<"modify", T11.UpdateOperationModify, []> & T11.SparqlGeneratorRule<"modify", T11.UpdateOperationModify, []>;
|
|
14
|
+
update: import("@traqula/core").GeneratorRule<any, "update"> & T11.SparqlGrammarRule<"update", T11.Update, []> & T11.SparqlGeneratorRule<"update", T11.Update, []>;
|
|
5
15
|
query: import("@traqula/core").GeneratorRule<any, "query"> & T11.SparqlGrammarRule<"query", T11.Query, []> & T11.SparqlGeneratorRule<"query", T11.Query, []>;
|
|
16
|
+
datasetClauses: import("@traqula/core").GeneratorRule<any, "datasetClauses"> & T11.SparqlGrammarRule<"datasetClauses", T11.DatasetClauses, []> & T11.SparqlGeneratorRule<"datasetClauses", T11.DatasetClauses, []>;
|
|
17
|
+
bind: import("@traqula/core").GeneratorRule<any, "bind"> & T11.SparqlGrammarRule<"bind", T11.PatternBind, []> & T11.SparqlGeneratorRule<"bind", T11.PatternBind, []>;
|
|
18
|
+
solutionModifier: import("@traqula/core").GeneratorRule<any, "solutionModifier"> & T11.SparqlGrammarRule<"solutionModifier", T11.SolutionModifiers, []> & T11.SparqlGeneratorRule<"solutionModifier", T11.SolutionModifiers, []>;
|
|
19
|
+
expression: import("@traqula/core").GeneratorRule<any, "expression"> & T11.SparqlGrammarRule<"expression", T11.Expression, []> & T11.SparqlGeneratorRule<"expression", T11.Expression, []>;
|
|
20
|
+
aggregate: import("@traqula/core").GeneratorRule<T11.SparqlGeneratorContext, "aggregate", T11.ExpressionAggregate, []>;
|
|
21
|
+
path: import("@traqula/core").GeneratorRule<T11.SparqlGeneratorContext, "path", T11.Path, [boolean | undefined]>;
|
|
22
|
+
blankNode: import("@traqula/core").GeneratorRule<any, "blankNode"> & T11.SparqlGrammarRule<"blankNode", T11.TermBlank, []> & T11.SparqlGeneratorRule<"blankNode", T11.TermBlank, []>;
|
|
6
23
|
selectQuery: import("@traqula/core").GeneratorRule<any, "selectQuery"> & T11.SparqlGrammarRule<"selectQuery", Omit<T11.QuerySelect, T11.gram.HandledByBase>, []> & T11.SparqlGeneratorRule<"selectQuery", Omit<T11.QuerySelect, T11.gram.HandledByBase>, []>;
|
|
24
|
+
selectClause: import("@traqula/core").GeneratorRule<any, "selectClause"> & T11.SparqlGrammarRule<"selectClause", import("@traqula/core").Wrap<Pick<T11.QuerySelect, "variables" | "distinct" | "reduced">>, []> & T11.SparqlGeneratorRule<"selectClause", import("@traqula/core").Wrap<Pick<T11.QuerySelect, "variables" | "distinct" | "reduced">>, []>;
|
|
7
25
|
constructQuery: import("@traqula/core").GeneratorRule<any, "constructQuery"> & T11.SparqlGrammarRule<"constructQuery", Omit<T11.QueryConstruct, T11.gram.HandledByBase>, []> & T11.SparqlGeneratorRule<"constructQuery", Omit<T11.QueryConstruct, T11.gram.HandledByBase>, []>;
|
|
8
26
|
describeQuery: import("@traqula/core").GeneratorRule<any, "describeQuery"> & T11.SparqlGrammarRule<"describeQuery", Omit<T11.QueryDescribe, T11.gram.HandledByBase>, []> & T11.SparqlGeneratorRule<"describeQuery", Omit<T11.QueryDescribe, T11.gram.HandledByBase>, []>;
|
|
9
27
|
askQuery: import("@traqula/core").GeneratorRule<any, "askQuery"> & T11.SparqlGrammarRule<"askQuery", Omit<T11.QueryAsk, T11.gram.HandledByBase>, []> & T11.SparqlGeneratorRule<"askQuery", Omit<T11.QueryAsk, T11.gram.HandledByBase>, []>;
|
|
10
|
-
selectClause: import("@traqula/core").GeneratorRule<any, "selectClause"> & T11.SparqlGrammarRule<"selectClause", import("@traqula/core").Wrap<Pick<T11.QuerySelect, "variables" | "distinct" | "reduced">>, []> & T11.SparqlGeneratorRule<"selectClause", import("@traqula/core").Wrap<Pick<T11.QuerySelect, "variables" | "distinct" | "reduced">>, []>;
|
|
11
|
-
update: import("@traqula/core").GeneratorRule<any, "update"> & T11.SparqlGrammarRule<"update", T11.Update, []> & T11.SparqlGeneratorRule<"update", T11.Update, []>;
|
|
12
28
|
update1: import("@traqula/core").GeneratorRule<any, "update1"> & T11.SparqlGrammarRule<"update1", T11.UpdateOperation, []> & T11.SparqlGeneratorRule<"update1", T11.UpdateOperation, []>;
|
|
13
|
-
load: import("@traqula/core").GeneratorRule<any, "load"> & T11.SparqlGrammarRule<"load", T11.UpdateOperationLoad, []> & T11.SparqlGeneratorRule<"load", T11.UpdateOperationLoad, []>;
|
|
14
|
-
clear: import("@traqula/core").GeneratorRule<any, "clear"> & T11.SparqlGrammarRule<"clear", T11.UpdateOperationClear | T11.UpdateOperationDrop, []> & T11.SparqlGeneratorRule<"clear", T11.UpdateOperationClear | T11.UpdateOperationDrop, []>;
|
|
15
|
-
drop: import("@traqula/core").GeneratorRule<any, "drop"> & T11.SparqlGrammarRule<"drop", T11.UpdateOperationClear | T11.UpdateOperationDrop, []> & T11.SparqlGeneratorRule<"drop", T11.UpdateOperationClear | T11.UpdateOperationDrop, []>;
|
|
16
|
-
create: import("@traqula/core").GeneratorRule<any, "create"> & T11.SparqlGrammarRule<"create", T11.UpdateOperationCreate, []> & T11.SparqlGeneratorRule<"create", T11.UpdateOperationCreate, []>;
|
|
17
|
-
copy: import("@traqula/core").GeneratorRule<any, "copy"> & T11.SparqlGrammarRule<"copy", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []> & T11.SparqlGeneratorRule<"copy", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []>;
|
|
18
|
-
move: import("@traqula/core").GeneratorRule<any, "move"> & T11.SparqlGrammarRule<"move", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []> & T11.SparqlGeneratorRule<"move", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []>;
|
|
19
|
-
add: import("@traqula/core").GeneratorRule<any, "add"> & T11.SparqlGrammarRule<"add", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []> & T11.SparqlGeneratorRule<"add", T11.UpdateOperationAdd | T11.UpdateOperationMove | T11.UpdateOperationCopy, []>;
|
|
20
29
|
insertData: import("@traqula/core").GeneratorRule<any, "insertData"> & T11.SparqlGrammarRule<"insertData", T11.UpdateOperationInsertData | T11.UpdateOperationDeleteData | T11.UpdateOperationDeleteWhere, []> & T11.SparqlGeneratorRule<"insertData", T11.UpdateOperationInsertData | T11.UpdateOperationDeleteData | T11.UpdateOperationDeleteWhere, []>;
|
|
21
30
|
deleteData: import("@traqula/core").GeneratorRule<any, "deleteData"> & T11.SparqlGrammarRule<"deleteData", T11.UpdateOperationInsertData | T11.UpdateOperationDeleteData | T11.UpdateOperationDeleteWhere, []> & T11.SparqlGeneratorRule<"deleteData", T11.UpdateOperationInsertData | T11.UpdateOperationDeleteData | T11.UpdateOperationDeleteWhere, []>;
|
|
22
31
|
deleteWhere: import("@traqula/core").GeneratorRule<any, "deleteWhere"> & T11.SparqlGrammarRule<"deleteWhere", T11.UpdateOperationInsertData | T11.UpdateOperationDeleteData | T11.UpdateOperationDeleteWhere, []> & T11.SparqlGeneratorRule<"deleteWhere", T11.UpdateOperationInsertData | T11.UpdateOperationDeleteData | T11.UpdateOperationDeleteWhere, []>;
|
|
23
|
-
modify: import("@traqula/core").GeneratorRule<any, "modify"> & T11.SparqlGrammarRule<"modify", T11.UpdateOperationModify, []> & T11.SparqlGeneratorRule<"modify", T11.UpdateOperationModify, []>;
|
|
24
|
-
graphRef: import("@traqula/core").GeneratorRule<any, "graphRef"> & T11.SparqlGrammarRule<"graphRef", T11.GraphRefSpecific, []> & T11.SparqlGeneratorRule<"graphRef", T11.GraphRefSpecific, []>;
|
|
25
32
|
graphRefAll: import("@traqula/core").GeneratorRule<any, "graphRefAll"> & T11.SparqlGrammarRule<"graphRefAll", T11.GraphRef, []> & T11.SparqlGeneratorRule<"graphRefAll", T11.GraphRef, []>;
|
|
26
33
|
quads: import("@traqula/core").GeneratorRule<any, "quads"> & T11.SparqlGrammarRule<"quads", import("@traqula/core").Wrap<T11.Quads[]>, []> & T11.SparqlGeneratorRule<"quads", import("@traqula/core").Wrap<T11.Quads[]>, []>;
|
|
27
34
|
quadsNotTriples: import("@traqula/core").GeneratorRule<any, "quadsNotTriples"> & T11.SparqlGrammarRule<"quadsNotTriples", T11.GraphQuads, []> & T11.SparqlGeneratorRule<"quadsNotTriples", T11.GraphQuads, []>;
|
|
28
|
-
aggregate: import("@traqula/core").GeneratorRule<T11.SparqlGeneratorContext, "aggregate", T11.ExpressionAggregate, []>;
|
|
29
|
-
datasetClauses: import("@traqula/core").GeneratorRule<any, "datasetClauses"> & T11.SparqlGrammarRule<"datasetClauses", T11.DatasetClauses, []> & T11.SparqlGeneratorRule<"datasetClauses", T11.DatasetClauses, []>;
|
|
30
35
|
usingClauses: import("@traqula/core").GeneratorRule<any, "usingClauses"> & T11.SparqlGrammarRule<"usingClauses", T11.DatasetClauses, []> & T11.SparqlGeneratorRule<"usingClauses", T11.DatasetClauses, []>;
|
|
31
36
|
argList: import("@traqula/core").GeneratorRule<any, "argList"> & T11.SparqlGrammarRule<"argList", import("@traqula/core").Wrap<T11.gram.IArgList>, []> & T11.SparqlGeneratorRule<"argList", import("@traqula/core").Wrap<T11.gram.IArgList>, []>;
|
|
32
|
-
|
|
33
|
-
iriOrFunction: import("@traqula/core").GeneratorRule<any, "iriOrFunction"> & T11.SparqlGrammarRule<"iriOrFunction", T11.TermIri | T11.ExpressionFunctionCall, []> & T11.SparqlGeneratorRule<"iriOrFunction", T11.TermIri | T11.ExpressionFunctionCall, []>;
|
|
37
|
+
iriOrFunction: import("@traqula/core").GeneratorRule<any, "iriOrFunction"> & T11.SparqlGrammarRule<"iriOrFunction", T11.ExpressionFunctionCall | T11.TermIri, []> & T11.SparqlGeneratorRule<"iriOrFunction", T11.ExpressionFunctionCall | T11.TermIri, []>;
|
|
34
38
|
prologue: import("@traqula/core").GeneratorRule<any, "prologue"> & T11.SparqlGrammarRule<"prologue", T11.ContextDefinition[], []> & T11.SparqlGeneratorRule<"prologue", T11.ContextDefinition[], []>;
|
|
35
|
-
prefixDecl: import("@traqula/core").GeneratorRule<any, "prefixDecl"> & T11.SparqlGrammarRule<"prefixDecl", T11.ContextDefinitionPrefix, []> & T11.SparqlGeneratorRule<"prefixDecl", T11.ContextDefinitionPrefix, []>;
|
|
36
39
|
baseDecl: import("@traqula/core").GeneratorRule<any, "baseDecl"> & T11.SparqlGrammarRule<"baseDecl", T11.ContextDefinitionBase, []> & T11.SparqlGeneratorRule<"baseDecl", T11.ContextDefinitionBase, []>;
|
|
40
|
+
prefixDecl: import("@traqula/core").GeneratorRule<any, "prefixDecl"> & T11.SparqlGrammarRule<"prefixDecl", T11.ContextDefinitionPrefix, []> & T11.SparqlGeneratorRule<"prefixDecl", T11.ContextDefinitionPrefix, []>;
|
|
37
41
|
varOrTerm: import("@traqula/core").GeneratorRule<any, "varOrTerm"> & T11.SparqlGrammarRule<"varOrTerm", T11.Term, []> & T11.SparqlGeneratorRule<"varOrTerm", T11.Term, []>;
|
|
38
42
|
var: import("@traqula/core").GeneratorRule<any, "var"> & T11.SparqlGrammarRule<"var", T11.TermVariable, []> & T11.SparqlGeneratorRule<"var", T11.TermVariable, []>;
|
|
39
43
|
graphTerm: import("@traqula/core").GeneratorRule<any, "graphTerm"> & T11.SparqlGrammarRule<"graphTerm", T11.GraphTerm, []> & T11.SparqlGeneratorRule<"graphTerm", T11.GraphTerm, []>;
|
|
40
|
-
blankNode: import("@traqula/core").GeneratorRule<any, "blankNode"> & T11.SparqlGrammarRule<"blankNode", T11.TermBlank, []> & T11.SparqlGeneratorRule<"blankNode", T11.TermBlank, []>;
|
|
41
44
|
rdfLiteral: import("@traqula/core").GeneratorRule<any, "rdfLiteral"> & T11.SparqlGrammarRule<"rdfLiteral", T11.TermLiteral, []> & T11.SparqlGeneratorRule<"rdfLiteral", T11.TermLiteral, []>;
|
|
42
45
|
iri: import("@traqula/core").GeneratorRule<any, "iri"> & T11.SparqlGrammarRule<"iri", T11.TermIri, []> & T11.SparqlGeneratorRule<"iri", T11.TermIri, []>;
|
|
43
46
|
iriFull: import("@traqula/core").GeneratorRule<any, "iriFull"> & T11.SparqlGrammarRule<"iriFull", T11.TermIriFull, []> & T11.SparqlGeneratorRule<"iriFull", T11.TermIriFull, []>;
|
|
44
47
|
prefixedName: import("@traqula/core").GeneratorRule<any, "prefixedName"> & T11.SparqlGrammarRule<"prefixedName", T11.TermIriPrefixed, []> & T11.SparqlGeneratorRule<"prefixedName", T11.TermIriPrefixed, []>;
|
|
45
|
-
path: import("@traqula/core").GeneratorRule<T11.SparqlGeneratorContext, "path", T11.Path, [boolean | undefined]>;
|
|
46
|
-
solutionModifier: import("@traqula/core").GeneratorRule<any, "solutionModifier"> & T11.SparqlGrammarRule<"solutionModifier", T11.SolutionModifiers, []> & T11.SparqlGeneratorRule<"solutionModifier", T11.SolutionModifiers, []>;
|
|
47
48
|
groupClause: import("@traqula/core").GeneratorRule<any, "groupClause"> & T11.SparqlGrammarRule<"groupClause", T11.SolutionModifierGroup, []> & T11.SparqlGeneratorRule<"groupClause", T11.SolutionModifierGroup, []>;
|
|
48
49
|
havingClause: import("@traqula/core").GeneratorRule<any, "havingClause"> & T11.SparqlGrammarRule<"havingClause", T11.SolutionModifierHaving, []> & T11.SparqlGeneratorRule<"havingClause", T11.SolutionModifierHaving, []>;
|
|
49
50
|
orderClause: import("@traqula/core").GeneratorRule<any, "orderClause"> & T11.SparqlGrammarRule<"orderClause", T11.SolutionModifierOrder, []> & T11.SparqlGeneratorRule<"orderClause", T11.SolutionModifierOrder, []>;
|
|
50
51
|
limitOffsetClauses: import("@traqula/core").GeneratorRule<any, "limitOffsetClauses"> & T11.SparqlGrammarRule<"limitOffsetClauses", T11.SolutionModifierLimitOffset, []> & T11.SparqlGeneratorRule<"limitOffsetClauses", T11.SolutionModifierLimitOffset, []>;
|
|
51
52
|
triplesBlock: import("@traqula/core").GeneratorRule<any, "triplesBlock"> & T11.SparqlGrammarRule<"triplesBlock", T11.PatternBgp, []> & T11.SparqlGeneratorRule<"triplesBlock", T11.PatternBgp, []>;
|
|
52
53
|
collectionPath: import("@traqula/core").GeneratorRule<any, "collectionPath"> & T11.SparqlGrammarRule<"collectionPath", T11.TripleCollectionList, []> & T11.SparqlGeneratorRule<"collectionPath", T11.TripleCollectionList, []>;
|
|
53
|
-
blankNodePropertyListPath: import("@traqula/core").GeneratorRule<any, "blankNodePropertyListPath"> & T11.SparqlGrammarRule<"blankNodePropertyListPath", T11.TripleCollectionBlankNodeProperties, []> & T11.SparqlGeneratorRule<"blankNodePropertyListPath", T11.TripleCollectionBlankNodeProperties, []>;
|
|
54
54
|
triplesNodePath: import("@traqula/core").GeneratorRule<any, "triplesNodePath"> & T11.SparqlGrammarRule<"triplesNodePath", T11.TripleCollection, []> & T11.SparqlGeneratorRule<"triplesNodePath", T11.TripleCollection, []>;
|
|
55
|
-
|
|
55
|
+
blankNodePropertyListPath: import("@traqula/core").GeneratorRule<any, "blankNodePropertyListPath"> & T11.SparqlGrammarRule<"blankNodePropertyListPath", T11.TripleCollectionBlankNodeProperties, []> & T11.SparqlGeneratorRule<"blankNodePropertyListPath", T11.TripleCollectionBlankNodeProperties, []>;
|
|
56
|
+
graphNodePath: import("@traqula/core").GeneratorRule<any, "graphNodePath"> & T11.SparqlGrammarRule<"graphNodePath", T11.TripleCollection | T11.Term, []> & T11.SparqlGeneratorRule<"graphNodePath", T11.TripleCollection | T11.Term, []>;
|
|
56
57
|
whereClause: import("@traqula/core").GeneratorRule<any, "whereClause"> & T11.SparqlGrammarRule<"whereClause", import("@traqula/core").Wrap<T11.PatternGroup>, []> & T11.SparqlGeneratorRule<"whereClause", import("@traqula/core").Wrap<T11.PatternGroup>, []>;
|
|
57
|
-
generatePattern: import("@traqula/core").GeneratorRule<any, "generatePattern"> & T11.SparqlGeneratorRule<"generatePattern", T11.Pattern>;
|
|
58
58
|
groupGraphPattern: import("@traqula/core").GeneratorRule<any, "groupGraphPattern"> & T11.SparqlGrammarRule<"groupGraphPattern", T11.PatternGroup, []> & T11.SparqlGeneratorRule<"groupGraphPattern", T11.PatternGroup, []>;
|
|
59
|
+
generatePattern: import("@traqula/core").GeneratorRule<any, "generatePattern"> & T11.SparqlGeneratorRule<"generatePattern", T11.Pattern>;
|
|
59
60
|
graphPatternNotTriples: import("@traqula/core").GeneratorRule<any, "graphPatternNotTriples"> & T11.SparqlGrammarRule<"graphPatternNotTriples", T11.PatternGroup | T11.PatternUnion | T11.PatternOptional | T11.PatternMinus | T11.PatternGraph | T11.PatternService | T11.PatternFilter | T11.PatternBind | T11.PatternValues, []> & T11.SparqlGeneratorRule<"graphPatternNotTriples", T11.PatternGroup | T11.PatternUnion | T11.PatternOptional | T11.PatternMinus | T11.PatternGraph | T11.PatternService | T11.PatternFilter | T11.PatternBind | T11.PatternValues, []>;
|
|
60
|
-
filter: import("@traqula/core").GeneratorRule<any, "filter"> & T11.SparqlGrammarRule<"filter", T11.PatternFilter, []> & T11.SparqlGeneratorRule<"filter", T11.PatternFilter, []>;
|
|
61
|
-
bind: import("@traqula/core").GeneratorRule<any, "bind"> & T11.SparqlGrammarRule<"bind", T11.PatternBind, []> & T11.SparqlGeneratorRule<"bind", T11.PatternBind, []>;
|
|
62
61
|
optionalGraphPattern: import("@traqula/core").GeneratorRule<any, "optionalGraphPattern"> & T11.SparqlGrammarRule<"optionalGraphPattern", T11.PatternOptional, []> & T11.SparqlGeneratorRule<"optionalGraphPattern", T11.PatternOptional, []>;
|
|
63
62
|
graphGraphPattern: import("@traqula/core").GeneratorRule<any, "graphGraphPattern"> & T11.SparqlGrammarRule<"graphGraphPattern", T11.PatternGraph, []> & T11.SparqlGeneratorRule<"graphGraphPattern", T11.PatternGraph, []>;
|
|
64
63
|
serviceGraphPattern: import("@traqula/core").GeneratorRule<any, "serviceGraphPattern"> & T11.SparqlGrammarRule<"serviceGraphPattern", T11.PatternService, []> & T11.SparqlGeneratorRule<"serviceGraphPattern", T11.PatternService, []>;
|
|
65
64
|
inlineData: import("@traqula/core").GeneratorRule<any, "inlineData"> & T11.SparqlGrammarRule<"inlineData", T11.PatternValues, []> & T11.SparqlGeneratorRule<"inlineData", T11.PatternValues, []>;
|
|
66
65
|
minusGraphPattern: import("@traqula/core").GeneratorRule<any, "minusGraphPattern"> & T11.SparqlGrammarRule<"minusGraphPattern", T11.PatternMinus, []> & T11.SparqlGeneratorRule<"minusGraphPattern", T11.PatternMinus, []>;
|
|
67
66
|
groupOrUnionGraphPattern: import("@traqula/core").GeneratorRule<any, "groupOrUnionGraphPattern"> & T11.SparqlGrammarRule<"groupOrUnionGraphPattern", T11.PatternGroup | T11.PatternUnion, []> & T11.SparqlGeneratorRule<"groupOrUnionGraphPattern", T11.PatternGroup | T11.PatternUnion, []>;
|
|
67
|
+
queryOrUpdate: import("@traqula/core").GeneratorRule<any, "queryOrUpdate"> & T11.SparqlGrammarRule<"queryOrUpdate", T11.SparqlQuery, []> & T11.SparqlGeneratorRule<"queryOrUpdate", T11.SparqlQuery, []>;
|
|
68
68
|
}>;
|
|
69
69
|
export type SparqlGenerator = ReturnType<typeof sparql11GeneratorBuilder.build>;
|
|
70
70
|
export declare class Generator {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { GeneratorBuilder } from '@traqula/core';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport { completeParseContext, AstFactory, gram } from '@traqula/rules-sparql-1-1';\n\nexport const sparql11GeneratorBuilder = GeneratorBuilder.create(<const> [\n gram.queryOrUpdate,\n gram.query,\n gram.selectQuery,\n gram.constructQuery,\n gram.describeQuery,\n gram.askQuery,\n gram.selectClause,\n])\n .addMany(\n gram.update,\n gram.update1,\n gram.load,\n gram.clear,\n gram.drop,\n gram.create,\n gram.copy,\n gram.move,\n gram.add,\n gram.insertData,\n gram.deleteData,\n gram.deleteWhere,\n gram.modify,\n gram.graphRef,\n gram.graphRefAll,\n gram.quads,\n gram.quadsNotTriples,\n )\n .addRule(gram.aggregate)\n .addMany(\n gram.datasetClauseStar,\n gram.usingClauseStar,\n )\n .addMany(\n gram.argList,\n gram.expression,\n gram.iriOrFunction,\n )\n .addMany(\n gram.prologue,\n gram.prefixDecl,\n gram.baseDecl,\n gram.varOrTerm,\n gram.var_,\n gram.graphTerm,\n )\n .addMany(\n gram.rdfLiteral,\n gram.iri,\n gram.iriFull,\n gram.prefixedName,\n gram.blankNode,\n )\n .addRule(gram.pathGenerator)\n .addMany(\n gram.solutionModifier,\n gram.groupClause,\n gram.havingClause,\n gram.orderClause,\n gram.limitOffsetClauses,\n )\n .addMany(\n gram.triplesBlock,\n gram.collectionPath,\n gram.blankNodePropertyListPath,\n gram.triplesNodePath,\n gram.graphNodePath,\n )\n .addMany(\n gram.whereClause,\n gram.generatePattern,\n gram.groupGraphPattern,\n gram.graphPatternNotTriples,\n gram.optionalGraphPattern,\n gram.graphGraphPattern,\n gram.serviceGraphPattern,\n gram.bind,\n gram.inlineData,\n gram.minusGraphPattern,\n gram.groupOrUnionGraphPattern,\n gram.filter,\n );\n\nexport type SparqlGenerator = ReturnType<typeof sparql11GeneratorBuilder.build>;\n\nexport class Generator {\n public constructor(private readonly defaultContext: Partial<T11.SparqlGeneratorContext> = {}) {}\n\n private readonly generator: SparqlGenerator = sparql11GeneratorBuilder.build();\n private readonly factory = new AstFactory();\n\n public generate(ast: T11.Query | T11.Update, context: Partial<T11.SparqlGeneratorContext> = {}): string {\n return this.generator.queryOrUpdate(ast, completeParseContext({ ...this.defaultContext, ...context })).trim();\n }\n\n public generatePath(ast: T11.Path, context: Partial<T11.SparqlGeneratorContext> = {}): string {\n return this.generator.path(ast, completeParseContext({ ...this.defaultContext, ...context }), undefined).trim();\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { traqulaIndentation } from '@traqula/core';
|
|
2
|
+
import { Parser } from '@traqula/parser-sparql-1-1';
|
|
3
|
+
import { AstFactory, AstTransformer } from '@traqula/rules-sparql-1-1';
|
|
4
|
+
import { describe, it } from 'vitest';
|
|
5
|
+
import { Generator } from '../lib/index.js';
|
|
6
|
+
describe('a SPARQL 1.1 generator', () => {
|
|
7
|
+
const generator = new Generator();
|
|
8
|
+
const parser = new Parser();
|
|
9
|
+
const F = new AstFactory();
|
|
10
|
+
const transformer = new AstTransformer();
|
|
11
|
+
it('generates simple round tripped', ({ expect }) => {
|
|
12
|
+
const query = 'SELECT * WHERE { ?s ?p ?o }';
|
|
13
|
+
const ast = parser.parse(query);
|
|
14
|
+
const result = generator.generate(ast, { origSource: query });
|
|
15
|
+
expect(result).toBe(query);
|
|
16
|
+
});
|
|
17
|
+
it('self generates on no pretty', ({ expect }) => {
|
|
18
|
+
const query = 'SELECT * WHERE { ?s ?p ?o . }';
|
|
19
|
+
const ast = parser.parse(query);
|
|
20
|
+
const result = generator.generate(F.forcedAutoGenTree(ast), { [traqulaIndentation]: -1, indentInc: 0 });
|
|
21
|
+
expect(result).toBe(query);
|
|
22
|
+
});
|
|
23
|
+
describe('on altered nodes', () => {
|
|
24
|
+
it('translates ?s -> ?subject', ({ expect }) => {
|
|
25
|
+
const query = 'SELECT * WHERE { ?s ?p ?o }';
|
|
26
|
+
const ast = parser.parse(query);
|
|
27
|
+
const altered = transformer.transformNodeSpecific(ast, {}, { term: { variable: {
|
|
28
|
+
transform: variable => variable.value === 's' ?
|
|
29
|
+
F.termVariable('subject', F.sourceLocationNodeReplaceUnsafe(variable.loc)) :
|
|
30
|
+
variable,
|
|
31
|
+
} } });
|
|
32
|
+
const result = generator.generate(altered, { origSource: query });
|
|
33
|
+
expect(result).toBe(`SELECT * WHERE { ?subject ?p ?o }`);
|
|
34
|
+
});
|
|
35
|
+
it('translates blanknodes -> variables', ({ expect }) => {
|
|
36
|
+
const query = `
|
|
37
|
+
|
|
38
|
+
BASE <ex:>
|
|
39
|
+
CONSTRUCT {
|
|
40
|
+
?s0 ?p0 _:g_0 .
|
|
41
|
+
_:g_0 <a0> _:g_1 .
|
|
42
|
+
_:g_1 <b0> <c0> .
|
|
43
|
+
[
|
|
44
|
+
<a0> [
|
|
45
|
+
<b0> <c0> ;
|
|
46
|
+
] ;
|
|
47
|
+
] ?p0 ?o0 .
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
WHERE {
|
|
51
|
+
?s1 ?p1 _:g_4 .
|
|
52
|
+
?s1 ?p1 <a1> .
|
|
53
|
+
?s1 ?q1 <b1> .
|
|
54
|
+
?s1 ?q1 <c1> .
|
|
55
|
+
_:g_5 ?p2 ?o2 .
|
|
56
|
+
?s3 ?p3 _:g_6 .
|
|
57
|
+
_:g_6 <a3> <b3> .
|
|
58
|
+
?s4 ?p4 _:g_7 .
|
|
59
|
+
_:g_7 <a4> <b4> .
|
|
60
|
+
_:g_7 <c4> <d4> .
|
|
61
|
+
_:g_7 <c4> <e4> .
|
|
62
|
+
?s5 ?p5 _:g_8 .
|
|
63
|
+
_:g_8 <a5> _:g_9 .
|
|
64
|
+
_:g_9 <b5> <c5> .
|
|
65
|
+
[
|
|
66
|
+
<a6> [
|
|
67
|
+
<b6> <c6> ;
|
|
68
|
+
] ;
|
|
69
|
+
] ?p6 ?o6 .
|
|
70
|
+
_:g_12 <a7> <b7> .
|
|
71
|
+
_:g_12 <c7> <d7> .
|
|
72
|
+
_:g_12 <c7> <e7> .
|
|
73
|
+
|
|
74
|
+
}`;
|
|
75
|
+
const ast = parser.parse(query);
|
|
76
|
+
function extractCollection(collection) {
|
|
77
|
+
const result = [];
|
|
78
|
+
for (const entry of collection.triples) {
|
|
79
|
+
const subject = entry.subject;
|
|
80
|
+
const pred = entry.predicate;
|
|
81
|
+
if (F.isTripleCollection(entry.object)) {
|
|
82
|
+
const identifier = { ...F.graphNodeIdentifier(entry.object) };
|
|
83
|
+
result.push(F.triple(subject, pred, identifier, F.gen()));
|
|
84
|
+
result.push(...extractCollection(entry.object));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
result.push(F.triple(subject, pred, entry.object, F.gen()));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
const flattenCollections = transformer.transformNodeSpecific(ast, {}, { pattern: { bgp: {
|
|
93
|
+
transform: (current) => {
|
|
94
|
+
const bgpCopy = F.forcedAutoGenTree(current);
|
|
95
|
+
const newTriples = [];
|
|
96
|
+
for (const entry of bgpCopy.triples) {
|
|
97
|
+
if (F.isTriple(entry)) {
|
|
98
|
+
const subject = entry.subject;
|
|
99
|
+
const pred = entry.predicate;
|
|
100
|
+
if (F.isTripleCollection(entry.object)) {
|
|
101
|
+
const object = entry.object;
|
|
102
|
+
const identifier = { ...F.graphNodeIdentifier(object) };
|
|
103
|
+
newTriples.push(F.triple(subject, pred, identifier));
|
|
104
|
+
newTriples.push(...extractCollection(object));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
newTriples.push(F.triple(subject, pred, entry.object, F.gen()));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
const genTriples = extractCollection(entry);
|
|
112
|
+
newTriples.push(...genTriples);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return F.patternBgp(newTriples, F.sourceLocationNodeReplaceUnsafe(current.loc));
|
|
116
|
+
},
|
|
117
|
+
} } });
|
|
118
|
+
const result = generator.generate(flattenCollections, { origSource: query });
|
|
119
|
+
expect(result).toBe(`BASE <ex:>
|
|
120
|
+
CONSTRUCT {
|
|
121
|
+
?s0 ?p0 _:g_0 .
|
|
122
|
+
_:g_0 <a0> _:g_1 .
|
|
123
|
+
_:g_1 <b0> <c0> .
|
|
124
|
+
[
|
|
125
|
+
<a0> [
|
|
126
|
+
<b0> <c0> ;
|
|
127
|
+
] ;
|
|
128
|
+
] ?p0 ?o0 .
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
WHERE {
|
|
133
|
+
?s1 ?p1 _:g_4 .
|
|
134
|
+
?s1 ?p1 <a1> .
|
|
135
|
+
?s1 ?q1 <b1> .
|
|
136
|
+
?s1 ?q1 <c1> .
|
|
137
|
+
_:g_5 ?p2 ?o2 .
|
|
138
|
+
?s3 ?p3 _:g_6 .
|
|
139
|
+
_:g_6 <a3> <b3> .
|
|
140
|
+
?s4 ?p4 _:g_7 .
|
|
141
|
+
_:g_7 <a4> <b4> .
|
|
142
|
+
_:g_7 <c4> <d4> .
|
|
143
|
+
_:g_7 <c4> <e4> .
|
|
144
|
+
?s5 ?p5 _:g_8 .
|
|
145
|
+
_:g_8 <a5> _:g_9 .
|
|
146
|
+
_:g_9 <b5> <c5> .
|
|
147
|
+
[
|
|
148
|
+
<a6> [
|
|
149
|
+
<b6> <c6> ;
|
|
150
|
+
] ;
|
|
151
|
+
] ?p6 ?o6 .
|
|
152
|
+
_:g_12 <a7> <b7> .
|
|
153
|
+
_:g_12 <c7> <d7> .
|
|
154
|
+
_:g_12 <c7> <e7> .
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
}`);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
it('generates hand constructed query', ({ expect }) => {
|
|
161
|
+
const query = `
|
|
162
|
+
SELECT * WHERE {
|
|
163
|
+
?s ?p ?o .
|
|
164
|
+
}`;
|
|
165
|
+
const ast = F.querySelect({
|
|
166
|
+
variables: [F.wildcard(F.gen())],
|
|
167
|
+
datasets: F.datasetClauses([], F.sourceLocation()),
|
|
168
|
+
context: [],
|
|
169
|
+
where: F.patternGroup([
|
|
170
|
+
F.patternBgp([
|
|
171
|
+
F.triple(F.termVariable('s', F.gen()), F.termVariable('p', F.gen()), F.termVariable('o', F.gen())),
|
|
172
|
+
], F.gen()),
|
|
173
|
+
], F.gen()),
|
|
174
|
+
solutionModifiers: {},
|
|
175
|
+
}, F.gen());
|
|
176
|
+
const result = generator.generate(ast);
|
|
177
|
+
expect(result.trim()).toBe(query.trim());
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
//# sourceMappingURL=integration.test.js.map
|