@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.
@@ -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, "queryOrUpdate" | "query" | "selectQuery" | "constructQuery" | "describeQuery" | "askQuery" | "selectClause" | "update" | "update1" | "load" | "clear" | "drop" | "create" | "copy" | "move" | "add" | "insertData" | "deleteData" | "deleteWhere" | "modify" | "graphRef" | "graphRefAll" | "quads" | "quadsNotTriples" | "aggregate" | "datasetClauses" | "usingClauses" | "argList" | "expression" | "iriOrFunction" | "prologue" | "prefixDecl" | "baseDecl" | "varOrTerm" | "var" | "graphTerm" | "blankNode" | "rdfLiteral" | "iri" | "iriFull" | "prefixedName" | "path" | "solutionModifier" | "groupClause" | "havingClause" | "orderClause" | "limitOffsetClauses" | "triplesBlock" | "collectionPath" | "blankNodePropertyListPath" | "triplesNodePath" | "graphNodePath" | "whereClause" | "generatePattern" | "groupGraphPattern" | "graphPatternNotTriples" | "filter" | "bind" | "optionalGraphPattern" | "graphGraphPattern" | "serviceGraphPattern" | "inlineData" | "minusGraphPattern" | "groupOrUnionGraphPattern", {
4
- queryOrUpdate: import("@traqula/core").GeneratorRule<any, "queryOrUpdate"> & T11.SparqlGrammarRule<"queryOrUpdate", T11.SparqlQuery, []> & T11.SparqlGeneratorRule<"queryOrUpdate", T11.SparqlQuery, []>;
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
- expression: import("@traqula/core").GeneratorRule<any, "expression"> & T11.SparqlGrammarRule<"expression", T11.Expression, []> & T11.SparqlGeneratorRule<"expression", T11.Expression, []>;
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
- graphNodePath: import("@traqula/core").GeneratorRule<any, "graphNodePath"> & T11.SparqlGrammarRule<"graphNodePath", T11.Term | T11.TripleCollection, []> & T11.SparqlGeneratorRule<"graphNodePath", T11.Term | T11.TripleCollection, []>;
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