@traqula/generator-sparql-1-1 0.0.23 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/cjs/lib/index.js +51 -51
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/esm/lib/index.d.ts +56 -42
- package/dist/esm/lib/index.js +19 -5
- package/dist/esm/lib/index.js.map +1 -1
- package/package.json +12 -12
- package/dist/cjs/test/integration.test.js +0 -175
- package/dist/cjs/test/statics.test.js +0 -68
- package/dist/esm/test/integration.test.d.ts +0 -1
- package/dist/esm/test/integration.test.js +0 -180
- package/dist/esm/test/integration.test.js.map +0 -1
- package/dist/esm/test/statics.test.d.ts +0 -1
- package/dist/esm/test/statics.test.js +0 -49
- package/dist/esm/test/statics.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
# Traqula SPARQL 1.1 generator
|
|
10
10
|
|
|
11
|
+
[](https://www.npmjs.com/package/@traqula/generator-sparql-1-1)
|
|
12
|
+
|
|
11
13
|
Traqula Generator Sparql 1.1 is a [SPARQL 1.1](https://www.w3.org/TR/sparql11-query/#grammar) query generator for TypeScript.
|
|
12
14
|
It can generate SPARQL given the AST created by [Traqula parser SPARQL 1-1](https://github.com/comunica/traqula/tree/main/engines/parser-sparql-1-1).
|
|
13
15
|
|
package/dist/cjs/lib/index.js
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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);
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Generator = exports.sparql11GeneratorBuilder = void 0;
|
|
4
|
+
const core_1 = require("@traqula/core");
|
|
5
|
+
const rules_sparql_1_1_1 = require("@traqula/rules-sparql-1-1");
|
|
6
|
+
exports.sparql11GeneratorBuilder = core_1.GeneratorBuilder.create([
|
|
7
|
+
rules_sparql_1_1_1.gram.queryOrUpdate,
|
|
8
|
+
rules_sparql_1_1_1.gram.query,
|
|
9
|
+
rules_sparql_1_1_1.gram.selectQuery,
|
|
10
|
+
rules_sparql_1_1_1.gram.constructQuery,
|
|
11
|
+
rules_sparql_1_1_1.gram.describeQuery,
|
|
12
|
+
rules_sparql_1_1_1.gram.askQuery,
|
|
13
|
+
rules_sparql_1_1_1.gram.selectClause,
|
|
14
|
+
])
|
|
15
|
+
.addMany(rules_sparql_1_1_1.gram.update, rules_sparql_1_1_1.gram.update1, rules_sparql_1_1_1.gram.load, rules_sparql_1_1_1.gram.clear, rules_sparql_1_1_1.gram.drop, rules_sparql_1_1_1.gram.create, rules_sparql_1_1_1.gram.copy, rules_sparql_1_1_1.gram.move, rules_sparql_1_1_1.gram.add, rules_sparql_1_1_1.gram.insertData, rules_sparql_1_1_1.gram.deleteData, rules_sparql_1_1_1.gram.deleteWhere, rules_sparql_1_1_1.gram.modify, rules_sparql_1_1_1.gram.graphRef, rules_sparql_1_1_1.gram.graphRefAll, rules_sparql_1_1_1.gram.quads, rules_sparql_1_1_1.gram.quadsNotTriples)
|
|
16
|
+
.addRule(rules_sparql_1_1_1.gram.aggregate)
|
|
17
|
+
.addMany(rules_sparql_1_1_1.gram.datasetClauseStar, rules_sparql_1_1_1.gram.usingClauseStar)
|
|
18
|
+
.addMany(rules_sparql_1_1_1.gram.argList, rules_sparql_1_1_1.gram.expression, rules_sparql_1_1_1.gram.iriOrFunction)
|
|
19
|
+
.addMany(rules_sparql_1_1_1.gram.prologue, rules_sparql_1_1_1.gram.prefixDecl, rules_sparql_1_1_1.gram.baseDecl, rules_sparql_1_1_1.gram.varOrTerm, rules_sparql_1_1_1.gram.var_, rules_sparql_1_1_1.gram.graphTerm)
|
|
20
|
+
.addMany(rules_sparql_1_1_1.gram.rdfLiteral, rules_sparql_1_1_1.gram.iri, rules_sparql_1_1_1.gram.iriFull, rules_sparql_1_1_1.gram.prefixedName, rules_sparql_1_1_1.gram.blankNode)
|
|
21
|
+
.addRule(rules_sparql_1_1_1.gram.pathGenerator)
|
|
22
|
+
.addMany(rules_sparql_1_1_1.gram.solutionModifier, rules_sparql_1_1_1.gram.groupClause, rules_sparql_1_1_1.gram.havingClause, rules_sparql_1_1_1.gram.orderClause, rules_sparql_1_1_1.gram.limitOffsetClauses)
|
|
23
|
+
.addMany(rules_sparql_1_1_1.gram.triplesBlock, rules_sparql_1_1_1.gram.collectionPath, rules_sparql_1_1_1.gram.blankNodePropertyListPath, rules_sparql_1_1_1.gram.triplesNodePath, rules_sparql_1_1_1.gram.graphNodePath)
|
|
24
|
+
.addMany(rules_sparql_1_1_1.gram.whereClause, rules_sparql_1_1_1.gram.generatePattern, rules_sparql_1_1_1.gram.groupGraphPattern, rules_sparql_1_1_1.gram.graphPatternNotTriples, rules_sparql_1_1_1.gram.optionalGraphPattern, rules_sparql_1_1_1.gram.graphGraphPattern, rules_sparql_1_1_1.gram.serviceGraphPattern, rules_sparql_1_1_1.gram.bind, rules_sparql_1_1_1.gram.inlineData, rules_sparql_1_1_1.gram.minusGraphPattern, rules_sparql_1_1_1.gram.groupOrUnionGraphPattern, rules_sparql_1_1_1.gram.filter);
|
|
25
|
+
/**
|
|
26
|
+
* Generator that can generate a SPARQL 1.1 query string given a SPARQL 1.1 Traqula AST.
|
|
27
|
+
*/
|
|
36
28
|
class Generator {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
defaultContext;
|
|
30
|
+
constructor(defaultContext = {}) {
|
|
31
|
+
this.defaultContext = (0, rules_sparql_1_1_1.completeGeneratorContext)(defaultContext);
|
|
32
|
+
}
|
|
33
|
+
generator = exports.sparql11GeneratorBuilder.build();
|
|
34
|
+
/**
|
|
35
|
+
* Generates a query string starting from the
|
|
36
|
+
* [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)
|
|
37
|
+
* or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.
|
|
38
|
+
* @param ast
|
|
39
|
+
* @param context
|
|
40
|
+
*/
|
|
41
|
+
generate(ast, context = {}) {
|
|
42
|
+
return this.generator.queryOrUpdate(ast, { ...this.defaultContext, ...context }).trim();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generates a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.
|
|
46
|
+
* @param ast
|
|
47
|
+
* @param context
|
|
48
|
+
*/
|
|
49
|
+
generatePath(ast, context = {}) {
|
|
50
|
+
return this.generator.path(ast, (0, rules_sparql_1_1_1.completeGeneratorContext)({ ...this.defaultContext, ...context }), undefined).trim();
|
|
51
|
+
}
|
|
49
52
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
Generator,
|
|
53
|
-
sparql11GeneratorBuilder
|
|
54
|
-
});
|
|
53
|
+
exports.Generator = Generator;
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -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 { gram, completeGeneratorContext } 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\n/**\n * Generator that can generate a SPARQL 1.1 query string given a SPARQL 1.1 Traqula AST.\n */\nexport class Generator {\n protected readonly defaultContext: T11.SparqlGeneratorContext;\n public constructor(defaultContext: Partial<T11.SparqlGeneratorContext> = {}) {\n this.defaultContext = completeGeneratorContext(defaultContext);\n }\n\n private readonly generator: SparqlGenerator = sparql11GeneratorBuilder.build();\n\n /**\n * Generates a query string starting from the\n * [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)\n * or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.\n * @param ast\n * @param context\n */\n public generate(ast: T11.Query | T11.Update, context: Partial<T11.SparqlGeneratorContext> = {}): string {\n return this.generator.queryOrUpdate(ast, { ...this.defaultContext, ...context }).trim();\n }\n\n /**\n * Generates a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.\n * @param ast\n * @param context\n */\n public generatePath(ast: T11.Path, context: Partial<T11.SparqlGeneratorContext> = {}): string {\n return this.generator.path(ast, completeGeneratorContext({ ...this.defaultContext, ...context }), undefined).trim();\n }\n}\n"]}
|
package/dist/esm/lib/index.d.ts
CHANGED
|
@@ -1,62 +1,44 @@
|
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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, []>;
|
|
3
|
+
export declare const sparql11GeneratorBuilder: GeneratorBuilder<T11.SparqlGeneratorContext, "path" | "queryOrUpdate" | "triplesBlock" | "blankNode" | "collectionPath" | "triplesNodePath" | "blankNodePropertyListPath" | "graphNodePath" | "query" | "expression" | "aggregate" | "argList" | "iriOrFunction" | "var" | "rdfLiteral" | "iri" | "prefixedName" | "varOrTerm" | "graphTerm" | "iriFull" | "datasetClauses" | "filter" | "bind" | "solutionModifier" | "selectQuery" | "selectClause" | "constructQuery" | "describeQuery" | "askQuery" | "prologue" | "baseDecl" | "prefixDecl" | "groupClause" | "havingClause" | "orderClause" | "limitOffsetClauses" | "whereClause" | "groupGraphPattern" | "graphPatternNotTriples" | "optionalGraphPattern" | "graphGraphPattern" | "serviceGraphPattern" | "inlineData" | "minusGraphPattern" | "groupOrUnionGraphPattern" | "graphRef" | "load" | "clear" | "drop" | "create" | "add" | "move" | "copy" | "modify" | "update" | "update1" | "insertData" | "deleteData" | "deleteWhere" | "graphRefAll" | "quads" | "quadsNotTriples" | "usingClauses" | "generatePattern", {
|
|
4
|
+
path: import("@traqula/core").GeneratorRule<T11.SparqlGeneratorContext, "path", T11.Path, [boolean | undefined]>;
|
|
5
|
+
queryOrUpdate: import("@traqula/core").GeneratorRule<any, "queryOrUpdate"> & T11.SparqlGrammarRule<"queryOrUpdate", T11.SparqlQuery, []> & T11.SparqlGeneratorRule<"queryOrUpdate", T11.SparqlQuery, []>;
|
|
6
|
+
triplesBlock: import("@traqula/core").GeneratorRule<any, "triplesBlock"> & T11.SparqlGrammarRule<"triplesBlock", T11.PatternBgp, []> & T11.SparqlGeneratorRule<"triplesBlock", T11.PatternBgp, []>;
|
|
7
|
+
blankNode: import("@traqula/core").GeneratorRule<any, "blankNode"> & T11.SparqlGrammarRule<"blankNode", T11.TermBlank, []> & T11.SparqlGeneratorRule<"blankNode", T11.TermBlank, []>;
|
|
8
|
+
collectionPath: import("@traqula/core").GeneratorRule<any, "collectionPath"> & T11.SparqlGrammarRule<"collectionPath", T11.TripleCollectionList, []> & T11.SparqlGeneratorRule<"collectionPath", T11.TripleCollectionList, []>;
|
|
9
|
+
triplesNodePath: import("@traqula/core").GeneratorRule<any, "triplesNodePath"> & T11.SparqlGrammarRule<"triplesNodePath", T11.TripleCollection, []> & T11.SparqlGeneratorRule<"triplesNodePath", T11.TripleCollection, []>;
|
|
10
|
+
blankNodePropertyListPath: import("@traqula/core").GeneratorRule<any, "blankNodePropertyListPath"> & T11.SparqlGrammarRule<"blankNodePropertyListPath", T11.TripleCollectionBlankNodeProperties, []> & T11.SparqlGeneratorRule<"blankNodePropertyListPath", T11.TripleCollectionBlankNodeProperties, []>;
|
|
11
|
+
graphNodePath: import("@traqula/core").GeneratorRule<any, "graphNodePath"> & T11.SparqlGrammarRule<"graphNodePath", T11.Term | T11.TripleCollection, []> & T11.SparqlGeneratorRule<"graphNodePath", T11.Term | T11.TripleCollection, []>;
|
|
15
12
|
query: import("@traqula/core").GeneratorRule<any, "query"> & T11.SparqlGrammarRule<"query", T11.Query, []> & T11.SparqlGeneratorRule<"query", T11.Query, []>;
|
|
13
|
+
expression: import("@traqula/core").GeneratorRule<any, "expression"> & T11.SparqlGrammarRule<"expression", T11.Expression, []> & T11.SparqlGeneratorRule<"expression", T11.Expression, []>;
|
|
14
|
+
aggregate: import("@traqula/core").GeneratorRule<T11.SparqlGeneratorContext, "aggregate", T11.ExpressionAggregate, []>;
|
|
15
|
+
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>, []>;
|
|
16
|
+
iriOrFunction: import("@traqula/core").GeneratorRule<any, "iriOrFunction"> & T11.SparqlGrammarRule<"iriOrFunction", T11.TermIri | T11.ExpressionFunctionCall, []> & T11.SparqlGeneratorRule<"iriOrFunction", T11.TermIri | T11.ExpressionFunctionCall, []>;
|
|
17
|
+
var: import("@traqula/core").GeneratorRule<any, "var"> & T11.SparqlGrammarRule<"var", T11.TermVariable, []> & T11.SparqlGeneratorRule<"var", T11.TermVariable, []>;
|
|
18
|
+
rdfLiteral: import("@traqula/core").GeneratorRule<any, "rdfLiteral"> & T11.SparqlGrammarRule<"rdfLiteral", T11.TermLiteral, []> & T11.SparqlGeneratorRule<"rdfLiteral", T11.TermLiteral, []>;
|
|
19
|
+
iri: import("@traqula/core").GeneratorRule<any, "iri"> & T11.SparqlGrammarRule<"iri", T11.TermIri, []> & T11.SparqlGeneratorRule<"iri", T11.TermIri, []>;
|
|
20
|
+
prefixedName: import("@traqula/core").GeneratorRule<any, "prefixedName"> & T11.SparqlGrammarRule<"prefixedName", T11.TermIriPrefixed, []> & T11.SparqlGeneratorRule<"prefixedName", T11.TermIriPrefixed, []>;
|
|
21
|
+
varOrTerm: import("@traqula/core").GeneratorRule<any, "varOrTerm"> & T11.SparqlGrammarRule<"varOrTerm", T11.Term, []> & T11.SparqlGeneratorRule<"varOrTerm", T11.Term, []>;
|
|
22
|
+
graphTerm: import("@traqula/core").GeneratorRule<any, "graphTerm"> & T11.SparqlGrammarRule<"graphTerm", T11.GraphTerm, []> & T11.SparqlGeneratorRule<"graphTerm", T11.GraphTerm, []>;
|
|
23
|
+
iriFull: import("@traqula/core").GeneratorRule<any, "iriFull"> & T11.SparqlGrammarRule<"iriFull", T11.TermIriFull, []> & T11.SparqlGeneratorRule<"iriFull", T11.TermIriFull, []>;
|
|
16
24
|
datasetClauses: import("@traqula/core").GeneratorRule<any, "datasetClauses"> & T11.SparqlGrammarRule<"datasetClauses", T11.DatasetClauses, []> & T11.SparqlGeneratorRule<"datasetClauses", T11.DatasetClauses, []>;
|
|
25
|
+
filter: import("@traqula/core").GeneratorRule<any, "filter"> & T11.SparqlGrammarRule<"filter", T11.PatternFilter, []> & T11.SparqlGeneratorRule<"filter", T11.PatternFilter, []>;
|
|
17
26
|
bind: import("@traqula/core").GeneratorRule<any, "bind"> & T11.SparqlGrammarRule<"bind", T11.PatternBind, []> & T11.SparqlGeneratorRule<"bind", T11.PatternBind, []>;
|
|
18
27
|
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, []>;
|
|
23
28
|
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
29
|
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">>, []>;
|
|
25
30
|
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>, []>;
|
|
26
31
|
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>, []>;
|
|
27
32
|
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>, []>;
|
|
28
|
-
update1: import("@traqula/core").GeneratorRule<any, "update1"> & T11.SparqlGrammarRule<"update1", T11.UpdateOperation, []> & T11.SparqlGeneratorRule<"update1", T11.UpdateOperation, []>;
|
|
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, []>;
|
|
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, []>;
|
|
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, []>;
|
|
32
|
-
graphRefAll: import("@traqula/core").GeneratorRule<any, "graphRefAll"> & T11.SparqlGrammarRule<"graphRefAll", T11.GraphRef, []> & T11.SparqlGeneratorRule<"graphRefAll", T11.GraphRef, []>;
|
|
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[]>, []>;
|
|
34
|
-
quadsNotTriples: import("@traqula/core").GeneratorRule<any, "quadsNotTriples"> & T11.SparqlGrammarRule<"quadsNotTriples", T11.GraphQuads, []> & T11.SparqlGeneratorRule<"quadsNotTriples", T11.GraphQuads, []>;
|
|
35
|
-
usingClauses: import("@traqula/core").GeneratorRule<any, "usingClauses"> & T11.SparqlGrammarRule<"usingClauses", T11.DatasetClauses, []> & T11.SparqlGeneratorRule<"usingClauses", T11.DatasetClauses, []>;
|
|
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>, []>;
|
|
37
|
-
iriOrFunction: import("@traqula/core").GeneratorRule<any, "iriOrFunction"> & T11.SparqlGrammarRule<"iriOrFunction", T11.ExpressionFunctionCall | T11.TermIri, []> & T11.SparqlGeneratorRule<"iriOrFunction", T11.ExpressionFunctionCall | T11.TermIri, []>;
|
|
38
33
|
prologue: import("@traqula/core").GeneratorRule<any, "prologue"> & T11.SparqlGrammarRule<"prologue", T11.ContextDefinition[], []> & T11.SparqlGeneratorRule<"prologue", T11.ContextDefinition[], []>;
|
|
39
34
|
baseDecl: import("@traqula/core").GeneratorRule<any, "baseDecl"> & T11.SparqlGrammarRule<"baseDecl", T11.ContextDefinitionBase, []> & T11.SparqlGeneratorRule<"baseDecl", T11.ContextDefinitionBase, []>;
|
|
40
35
|
prefixDecl: import("@traqula/core").GeneratorRule<any, "prefixDecl"> & T11.SparqlGrammarRule<"prefixDecl", T11.ContextDefinitionPrefix, []> & T11.SparqlGeneratorRule<"prefixDecl", T11.ContextDefinitionPrefix, []>;
|
|
41
|
-
varOrTerm: import("@traqula/core").GeneratorRule<any, "varOrTerm"> & T11.SparqlGrammarRule<"varOrTerm", T11.Term, []> & T11.SparqlGeneratorRule<"varOrTerm", T11.Term, []>;
|
|
42
|
-
var: import("@traqula/core").GeneratorRule<any, "var"> & T11.SparqlGrammarRule<"var", T11.TermVariable, []> & T11.SparqlGeneratorRule<"var", T11.TermVariable, []>;
|
|
43
|
-
graphTerm: import("@traqula/core").GeneratorRule<any, "graphTerm"> & T11.SparqlGrammarRule<"graphTerm", T11.GraphTerm, []> & T11.SparqlGeneratorRule<"graphTerm", T11.GraphTerm, []>;
|
|
44
|
-
rdfLiteral: import("@traqula/core").GeneratorRule<any, "rdfLiteral"> & T11.SparqlGrammarRule<"rdfLiteral", T11.TermLiteral, []> & T11.SparqlGeneratorRule<"rdfLiteral", T11.TermLiteral, []>;
|
|
45
|
-
iri: import("@traqula/core").GeneratorRule<any, "iri"> & T11.SparqlGrammarRule<"iri", T11.TermIri, []> & T11.SparqlGeneratorRule<"iri", T11.TermIri, []>;
|
|
46
|
-
iriFull: import("@traqula/core").GeneratorRule<any, "iriFull"> & T11.SparqlGrammarRule<"iriFull", T11.TermIriFull, []> & T11.SparqlGeneratorRule<"iriFull", T11.TermIriFull, []>;
|
|
47
|
-
prefixedName: import("@traqula/core").GeneratorRule<any, "prefixedName"> & T11.SparqlGrammarRule<"prefixedName", T11.TermIriPrefixed, []> & T11.SparqlGeneratorRule<"prefixedName", T11.TermIriPrefixed, []>;
|
|
48
36
|
groupClause: import("@traqula/core").GeneratorRule<any, "groupClause"> & T11.SparqlGrammarRule<"groupClause", T11.SolutionModifierGroup, []> & T11.SparqlGeneratorRule<"groupClause", T11.SolutionModifierGroup, []>;
|
|
49
37
|
havingClause: import("@traqula/core").GeneratorRule<any, "havingClause"> & T11.SparqlGrammarRule<"havingClause", T11.SolutionModifierHaving, []> & T11.SparqlGeneratorRule<"havingClause", T11.SolutionModifierHaving, []>;
|
|
50
38
|
orderClause: import("@traqula/core").GeneratorRule<any, "orderClause"> & T11.SparqlGrammarRule<"orderClause", T11.SolutionModifierOrder, []> & T11.SparqlGeneratorRule<"orderClause", T11.SolutionModifierOrder, []>;
|
|
51
39
|
limitOffsetClauses: import("@traqula/core").GeneratorRule<any, "limitOffsetClauses"> & T11.SparqlGrammarRule<"limitOffsetClauses", T11.SolutionModifierLimitOffset, []> & T11.SparqlGeneratorRule<"limitOffsetClauses", T11.SolutionModifierLimitOffset, []>;
|
|
52
|
-
triplesBlock: import("@traqula/core").GeneratorRule<any, "triplesBlock"> & T11.SparqlGrammarRule<"triplesBlock", T11.PatternBgp, []> & T11.SparqlGeneratorRule<"triplesBlock", T11.PatternBgp, []>;
|
|
53
|
-
collectionPath: import("@traqula/core").GeneratorRule<any, "collectionPath"> & T11.SparqlGrammarRule<"collectionPath", T11.TripleCollectionList, []> & T11.SparqlGeneratorRule<"collectionPath", T11.TripleCollectionList, []>;
|
|
54
|
-
triplesNodePath: import("@traqula/core").GeneratorRule<any, "triplesNodePath"> & T11.SparqlGrammarRule<"triplesNodePath", T11.TripleCollection, []> & T11.SparqlGeneratorRule<"triplesNodePath", 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, []>;
|
|
57
40
|
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>, []>;
|
|
58
41
|
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>;
|
|
60
42
|
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, []>;
|
|
61
43
|
optionalGraphPattern: import("@traqula/core").GeneratorRule<any, "optionalGraphPattern"> & T11.SparqlGrammarRule<"optionalGraphPattern", T11.PatternOptional, []> & T11.SparqlGeneratorRule<"optionalGraphPattern", T11.PatternOptional, []>;
|
|
62
44
|
graphGraphPattern: import("@traqula/core").GeneratorRule<any, "graphGraphPattern"> & T11.SparqlGrammarRule<"graphGraphPattern", T11.PatternGraph, []> & T11.SparqlGeneratorRule<"graphGraphPattern", T11.PatternGraph, []>;
|
|
@@ -64,14 +46,46 @@ export declare const sparql11GeneratorBuilder: GeneratorBuilder<T11.SparqlGenera
|
|
|
64
46
|
inlineData: import("@traqula/core").GeneratorRule<any, "inlineData"> & T11.SparqlGrammarRule<"inlineData", T11.PatternValues, []> & T11.SparqlGeneratorRule<"inlineData", T11.PatternValues, []>;
|
|
65
47
|
minusGraphPattern: import("@traqula/core").GeneratorRule<any, "minusGraphPattern"> & T11.SparqlGrammarRule<"minusGraphPattern", T11.PatternMinus, []> & T11.SparqlGeneratorRule<"minusGraphPattern", T11.PatternMinus, []>;
|
|
66
48
|
groupOrUnionGraphPattern: import("@traqula/core").GeneratorRule<any, "groupOrUnionGraphPattern"> & T11.SparqlGrammarRule<"groupOrUnionGraphPattern", T11.PatternGroup | T11.PatternUnion, []> & T11.SparqlGeneratorRule<"groupOrUnionGraphPattern", T11.PatternGroup | T11.PatternUnion, []>;
|
|
67
|
-
|
|
49
|
+
graphRef: import("@traqula/core").GeneratorRule<any, "graphRef"> & T11.SparqlGrammarRule<"graphRef", T11.GraphRefSpecific, []> & T11.SparqlGeneratorRule<"graphRef", T11.GraphRefSpecific, []>;
|
|
50
|
+
load: import("@traqula/core").GeneratorRule<any, "load"> & T11.SparqlGrammarRule<"load", T11.UpdateOperationLoad, []> & T11.SparqlGeneratorRule<"load", T11.UpdateOperationLoad, []>;
|
|
51
|
+
clear: import("@traqula/core").GeneratorRule<any, "clear"> & T11.SparqlGrammarRule<"clear", T11.UpdateOperationClear | T11.UpdateOperationDrop, []> & T11.SparqlGeneratorRule<"clear", T11.UpdateOperationClear | T11.UpdateOperationDrop, []>;
|
|
52
|
+
drop: import("@traqula/core").GeneratorRule<any, "drop"> & T11.SparqlGrammarRule<"drop", T11.UpdateOperationClear | T11.UpdateOperationDrop, []> & T11.SparqlGeneratorRule<"drop", T11.UpdateOperationClear | T11.UpdateOperationDrop, []>;
|
|
53
|
+
create: import("@traqula/core").GeneratorRule<any, "create"> & T11.SparqlGrammarRule<"create", T11.UpdateOperationCreate, []> & T11.SparqlGeneratorRule<"create", T11.UpdateOperationCreate, []>;
|
|
54
|
+
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, []>;
|
|
55
|
+
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, []>;
|
|
56
|
+
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, []>;
|
|
57
|
+
modify: import("@traqula/core").GeneratorRule<any, "modify"> & T11.SparqlGrammarRule<"modify", T11.UpdateOperationModify, []> & T11.SparqlGeneratorRule<"modify", T11.UpdateOperationModify, []>;
|
|
58
|
+
update: import("@traqula/core").GeneratorRule<any, "update"> & T11.SparqlGrammarRule<"update", T11.Update, []> & T11.SparqlGeneratorRule<"update", T11.Update, []>;
|
|
59
|
+
update1: import("@traqula/core").GeneratorRule<any, "update1"> & T11.SparqlGrammarRule<"update1", T11.UpdateOperation, []> & T11.SparqlGeneratorRule<"update1", T11.UpdateOperation, []>;
|
|
60
|
+
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, []>;
|
|
61
|
+
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, []>;
|
|
62
|
+
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, []>;
|
|
63
|
+
graphRefAll: import("@traqula/core").GeneratorRule<any, "graphRefAll"> & T11.SparqlGrammarRule<"graphRefAll", T11.GraphRef, []> & T11.SparqlGeneratorRule<"graphRefAll", T11.GraphRef, []>;
|
|
64
|
+
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[]>, []>;
|
|
65
|
+
quadsNotTriples: import("@traqula/core").GeneratorRule<any, "quadsNotTriples"> & T11.SparqlGrammarRule<"quadsNotTriples", T11.GraphQuads, []> & T11.SparqlGeneratorRule<"quadsNotTriples", T11.GraphQuads, []>;
|
|
66
|
+
usingClauses: import("@traqula/core").GeneratorRule<any, "usingClauses"> & T11.SparqlGrammarRule<"usingClauses", T11.DatasetClauses, []> & T11.SparqlGeneratorRule<"usingClauses", T11.DatasetClauses, []>;
|
|
67
|
+
generatePattern: import("@traqula/core").GeneratorRule<any, "generatePattern"> & T11.SparqlGeneratorRule<"generatePattern", T11.Pattern>;
|
|
68
68
|
}>;
|
|
69
69
|
export type SparqlGenerator = ReturnType<typeof sparql11GeneratorBuilder.build>;
|
|
70
|
+
/**
|
|
71
|
+
* Generator that can generate a SPARQL 1.1 query string given a SPARQL 1.1 Traqula AST.
|
|
72
|
+
*/
|
|
70
73
|
export declare class Generator {
|
|
71
|
-
|
|
74
|
+
protected readonly defaultContext: T11.SparqlGeneratorContext;
|
|
72
75
|
constructor(defaultContext?: Partial<T11.SparqlGeneratorContext>);
|
|
73
76
|
private readonly generator;
|
|
74
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Generates a query string starting from the
|
|
79
|
+
* [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)
|
|
80
|
+
* or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.
|
|
81
|
+
* @param ast
|
|
82
|
+
* @param context
|
|
83
|
+
*/
|
|
75
84
|
generate(ast: T11.Query | T11.Update, context?: Partial<T11.SparqlGeneratorContext>): string;
|
|
85
|
+
/**
|
|
86
|
+
* Generates a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.
|
|
87
|
+
* @param ast
|
|
88
|
+
* @param context
|
|
89
|
+
*/
|
|
76
90
|
generatePath(ast: T11.Path, context?: Partial<T11.SparqlGeneratorContext>): string;
|
|
77
91
|
}
|
package/dist/esm/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GeneratorBuilder } from '@traqula/core';
|
|
2
|
-
import {
|
|
2
|
+
import { gram, completeGeneratorContext } from '@traqula/rules-sparql-1-1';
|
|
3
3
|
export const sparql11GeneratorBuilder = GeneratorBuilder.create([
|
|
4
4
|
gram.queryOrUpdate,
|
|
5
5
|
gram.query,
|
|
@@ -19,18 +19,32 @@ export const sparql11GeneratorBuilder = GeneratorBuilder.create([
|
|
|
19
19
|
.addMany(gram.solutionModifier, gram.groupClause, gram.havingClause, gram.orderClause, gram.limitOffsetClauses)
|
|
20
20
|
.addMany(gram.triplesBlock, gram.collectionPath, gram.blankNodePropertyListPath, gram.triplesNodePath, gram.graphNodePath)
|
|
21
21
|
.addMany(gram.whereClause, gram.generatePattern, gram.groupGraphPattern, gram.graphPatternNotTriples, gram.optionalGraphPattern, gram.graphGraphPattern, gram.serviceGraphPattern, gram.bind, gram.inlineData, gram.minusGraphPattern, gram.groupOrUnionGraphPattern, gram.filter);
|
|
22
|
+
/**
|
|
23
|
+
* Generator that can generate a SPARQL 1.1 query string given a SPARQL 1.1 Traqula AST.
|
|
24
|
+
*/
|
|
22
25
|
export class Generator {
|
|
23
26
|
defaultContext;
|
|
24
27
|
constructor(defaultContext = {}) {
|
|
25
|
-
this.defaultContext = defaultContext;
|
|
28
|
+
this.defaultContext = completeGeneratorContext(defaultContext);
|
|
26
29
|
}
|
|
27
30
|
generator = sparql11GeneratorBuilder.build();
|
|
28
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Generates a query string starting from the
|
|
33
|
+
* [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)
|
|
34
|
+
* or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.
|
|
35
|
+
* @param ast
|
|
36
|
+
* @param context
|
|
37
|
+
*/
|
|
29
38
|
generate(ast, context = {}) {
|
|
30
|
-
return this.generator.queryOrUpdate(ast,
|
|
39
|
+
return this.generator.queryOrUpdate(ast, { ...this.defaultContext, ...context }).trim();
|
|
31
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Generates a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.
|
|
43
|
+
* @param ast
|
|
44
|
+
* @param context
|
|
45
|
+
*/
|
|
32
46
|
generatePath(ast, context = {}) {
|
|
33
|
-
return this.generator.path(ast,
|
|
47
|
+
return this.generator.path(ast, completeGeneratorContext({ ...this.defaultContext, ...context }), undefined).trim();
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
50
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,
|
|
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 { gram, completeGeneratorContext } 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\n/**\n * Generator that can generate a SPARQL 1.1 query string given a SPARQL 1.1 Traqula AST.\n */\nexport class Generator {\n protected readonly defaultContext: T11.SparqlGeneratorContext;\n public constructor(defaultContext: Partial<T11.SparqlGeneratorContext> = {}) {\n this.defaultContext = completeGeneratorContext(defaultContext);\n }\n\n private readonly generator: SparqlGenerator = sparql11GeneratorBuilder.build();\n\n /**\n * Generates a query string starting from the\n * [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)\n * or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.\n * @param ast\n * @param context\n */\n public generate(ast: T11.Query | T11.Update, context: Partial<T11.SparqlGeneratorContext> = {}): string {\n return this.generator.queryOrUpdate(ast, { ...this.defaultContext, ...context }).trim();\n }\n\n /**\n * Generates a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.\n * @param ast\n * @param context\n */\n public generatePath(ast: T11.Path, context: Partial<T11.SparqlGeneratorContext> = {}): string {\n return this.generator.path(ast, completeGeneratorContext({ ...this.defaultContext, ...context }), undefined).trim();\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@traqula/generator-sparql-1-1",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.25",
|
|
5
5
|
"description": "SPARQL 1.1 generator",
|
|
6
6
|
"lsd:module": true,
|
|
7
7
|
"license": "MIT",
|
|
@@ -27,26 +27,26 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"files": [
|
|
30
|
-
"dist/**/*.d.ts",
|
|
31
|
-
"dist/**/*.js",
|
|
32
|
-
"dist/**/*.js.map",
|
|
33
|
-
"dist
|
|
30
|
+
"dist/*/lib/**/*.d.ts",
|
|
31
|
+
"dist/*/lib/**/*.js",
|
|
32
|
+
"dist/*/lib/**/*.js.map",
|
|
33
|
+
"dist/cjs/package.json"
|
|
34
34
|
],
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": "^20.19.0 || >=22.12.0"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
|
-
"build": "yarn build:ts && yarn build:
|
|
39
|
+
"build": "yarn build:ts && yarn build:cjs",
|
|
40
40
|
"build:ts": "node \"../../node_modules/typescript/bin/tsc\" -b",
|
|
41
|
-
"build:
|
|
41
|
+
"build:cjs": "node \"../../node_modules/typescript/bin/tsc\" -b tsconfig.cjs.json"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@traqula/core": "^0.0.
|
|
45
|
-
"@traqula/rules-sparql-1-1": "^0.0.
|
|
44
|
+
"@traqula/core": "^0.0.25",
|
|
45
|
+
"@traqula/rules-sparql-1-1": "^0.0.25"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@traqula/parser-sparql-1-1": "^0.0.
|
|
49
|
-
"@traqula/test-utils": "^0.0.
|
|
48
|
+
"@traqula/parser-sparql-1-1": "^0.0.25",
|
|
49
|
+
"@traqula/test-utils": "^0.0.25"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "52cfb2b513294dc154febc0209ac811ceeb6785b"
|
|
52
52
|
}
|
|
@@ -1,175 +0,0 @@
|
|
|
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
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,180 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../test/integration.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC;IAEzC,EAAE,CAAE,gCAAgC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACnD,MAAM,KAAK,GAAG,6BAA6B,CAAC;QAC5C,MAAM,GAAG,GAAe,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAE,6BAA6B,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,+BAA+B,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACxG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,2BAA2B,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YAC7C,MAAM,KAAK,GAAG,6BAA6B,CAAC;YAC5C,MAAM,GAAG,GAAe,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE5C,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,CAC/C,GAAG,EACH,EAAE,EACF,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;wBAClB,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;4BAC7C,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,+BAA+B,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC5E,QAAQ;qBACX,EAAC,EAAC,CACJ,CAAC;YAEF,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsClB,CAAC;YACG,MAAM,GAAG,GAAe,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAE5C,SAAS,iBAAiB,CAAC,UAAgC;gBACzD,MAAM,MAAM,GAAwB,EAAE,CAAC;gBACvC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;oBAC7B,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;wBACvC,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClD,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAClB,OAAO,EACP,IAAI,EACJ,KAAK,CAAC,MAAM,EACZ,CAAC,CAAC,GAAG,EAAE,CACR,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,qBAAqB,CAC1D,GAAG,EACH,EAAE,EACF,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;wBAChB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;4BACrB,MAAM,OAAO,GAAG,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM,UAAU,GAAwB,EAAE,CAAC;4BAC3C,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gCACpC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oCACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;oCAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;oCAC7B,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;wCACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;wCAC5B,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;wCACxD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;wCACrD,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;oCAChD,CAAC;yCAAM,CAAC;wCACN,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CACtB,OAAO,EACP,IAAI,EACJ,KAAK,CAAC,MAAM,EACZ,CAAC,CAAC,GAAG,EAAE,CACR,CAAC,CAAC;oCACL,CAAC;gCACH,CAAC;qCAAM,CAAC;oCACN,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;oCAC5C,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gCACjC,CAAC;4BACH,CAAC;4BACD,OAAO,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,+BAA+B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;wBAClF,CAAC;qBACF,EAAC,EAAC,CACJ,CAAC;YAEF,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCxB,CAAC,CAAC;QACA,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAE,kCAAkC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACrD,MAAM,KAAK,GAAG;;;EAGhB,CAAC;QACC,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC;YACxB,SAAS,EAAE,CAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAE;YAClC,QAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YAClD,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC;gBACpB,CAAC,CAAC,UAAU,CAAC;oBACX,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;iBACnG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;aACZ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YACX,iBAAiB,EAAE,EAAE;SACtB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACZ,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { traqulaIndentation } from '@traqula/core';\nimport { Parser } from '@traqula/parser-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport { AstFactory, AstTransformer } from '@traqula/rules-sparql-1-1';\nimport { describe, it } from 'vitest';\nimport { Generator } from '../lib/index.js';\n\ndescribe('a SPARQL 1.1 generator', () => {\n const generator = new Generator();\n const parser = new Parser();\n const F = new AstFactory();\n const transformer = new AstTransformer();\n\n it ('generates simple round tripped', ({ expect }) => {\n const query = 'SELECT * WHERE { ?s ?p ?o }';\n const ast = <T11.Query> parser.parse(query);\n const result = generator.generate(ast, { origSource: query });\n expect(result).toBe(query);\n });\n\n it ('self generates on no pretty', ({ expect }) => {\n const query = 'SELECT * WHERE { ?s ?p ?o . }';\n const ast = parser.parse(query);\n const result = generator.generate(F.forcedAutoGenTree(ast), { [traqulaIndentation]: -1, indentInc: 0 });\n expect(result).toBe(query);\n });\n\n describe('on altered nodes', () => {\n it('translates ?s -> ?subject', ({ expect }) => {\n const query = 'SELECT * WHERE { ?s ?p ?o }';\n const ast = <T11.Query> parser.parse(query);\n\n const altered = transformer.transformNodeSpecific<'unsafe', T11.Query>(\n ast,\n {},\n { term: { variable: {\n transform: variable => variable.value === 's' ?\n F.termVariable('subject', F.sourceLocationNodeReplaceUnsafe(variable.loc)) :\n variable,\n }}},\n );\n\n const result = generator.generate(altered, { origSource: query });\n expect(result).toBe(`SELECT * WHERE { ?subject ?p ?o }`);\n });\n\n it('translates blanknodes -> variables', ({ expect }) => {\n const query = `\n\nBASE <ex:>\nCONSTRUCT { \n ?s0 ?p0 _:g_0 .\n_:g_0 <a0> _:g_1 .\n_:g_1 <b0> <c0> .\n[\n <a0> [\n <b0> <c0> ; \n ] ; \n] ?p0 ?o0 .\n\n}\nWHERE {\n ?s1 ?p1 _:g_4 .\n?s1 ?p1 <a1> .\n?s1 ?q1 <b1> .\n?s1 ?q1 <c1> .\n_:g_5 ?p2 ?o2 .\n?s3 ?p3 _:g_6 .\n_:g_6 <a3> <b3> .\n?s4 ?p4 _:g_7 .\n_:g_7 <a4> <b4> .\n_:g_7 <c4> <d4> .\n_:g_7 <c4> <e4> .\n?s5 ?p5 _:g_8 .\n_:g_8 <a5> _:g_9 .\n_:g_9 <b5> <c5> .\n[\n <a6> [\n <b6> <c6> ; \n ] ; \n] ?p6 ?o6 .\n_:g_12 <a7> <b7> .\n_:g_12 <c7> <d7> .\n_:g_12 <c7> <e7> .\n\n}`;\n const ast = <T11.Query> parser.parse(query);\n\n function extractCollection(collection: T11.TripleCollection): T11.TripleNesting[] {\n const result: T11.TripleNesting[] = [];\n for (const entry of collection.triples) {\n const subject = entry.subject;\n const pred = entry.predicate;\n if (F.isTripleCollection(entry.object)) {\n const identifier = { ...F.graphNodeIdentifier(entry.object) };\n result.push(F.triple(subject, pred, identifier, F.gen()));\n result.push(...extractCollection(entry.object));\n } else {\n result.push(F.triple(\n subject,\n pred,\n entry.object,\n F.gen(),\n ));\n }\n }\n return result;\n }\n\n const flattenCollections = transformer.transformNodeSpecific<'unsafe', T11.Query>(\n ast,\n {},\n { pattern: { bgp: {\n transform: (current) => {\n const bgpCopy = F.forcedAutoGenTree(current);\n const newTriples: T11.TripleNesting[] = [];\n for (const entry of bgpCopy.triples) {\n if (F.isTriple(entry)) {\n const subject = entry.subject;\n const pred = entry.predicate;\n if (F.isTripleCollection(entry.object)) {\n const object = entry.object;\n const identifier = { ...F.graphNodeIdentifier(object) };\n newTriples.push(F.triple(subject, pred, identifier));\n newTriples.push(...extractCollection(object));\n } else {\n newTriples.push(F.triple(\n subject,\n pred,\n entry.object,\n F.gen(),\n ));\n }\n } else {\n const genTriples = extractCollection(entry);\n newTriples.push(...genTriples);\n }\n }\n return F.patternBgp(newTriples, F.sourceLocationNodeReplaceUnsafe(current.loc));\n },\n }}},\n );\n\n const result = generator.generate(flattenCollections, { origSource: query });\n expect(result).toBe(`BASE <ex:>\nCONSTRUCT { \n ?s0 ?p0 _:g_0 .\n_:g_0 <a0> _:g_1 .\n_:g_1 <b0> <c0> .\n[\n <a0> [\n <b0> <c0> ;\n ] ;\n] ?p0 ?o0 .\n\n\n}\nWHERE {\n ?s1 ?p1 _:g_4 .\n?s1 ?p1 <a1> .\n?s1 ?q1 <b1> .\n?s1 ?q1 <c1> .\n_:g_5 ?p2 ?o2 .\n?s3 ?p3 _:g_6 .\n_:g_6 <a3> <b3> .\n?s4 ?p4 _:g_7 .\n_:g_7 <a4> <b4> .\n_:g_7 <c4> <d4> .\n_:g_7 <c4> <e4> .\n?s5 ?p5 _:g_8 .\n_:g_8 <a5> _:g_9 .\n_:g_9 <b5> <c5> .\n[\n <a6> [\n <b6> <c6> ;\n ] ;\n] ?p6 ?o6 .\n_:g_12 <a7> <b7> .\n_:g_12 <c7> <d7> .\n_:g_12 <c7> <e7> .\n\n\n}`);\n });\n });\n\n it ('generates hand constructed query', ({ expect }) => {\n const query = `\nSELECT * WHERE {\n ?s ?p ?o .\n}`;\n const ast = F.querySelect({\n variables: [ F.wildcard(F.gen()) ],\n datasets: F.datasetClauses([], F.sourceLocation()),\n context: [],\n where: F.patternGroup([\n F.patternBgp([\n F.triple(F.termVariable('s', F.gen()), F.termVariable('p', F.gen()), F.termVariable('o', F.gen())),\n ], F.gen()),\n ], F.gen()),\n solutionModifiers: {},\n }, F.gen());\n const result = generator.generate(ast);\n expect(result.trim()).toBe(query.trim());\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { AstFactory } from '@traqula/rules-sparql-1-1';
|
|
4
|
-
import { positiveTest, getStaticFilePath } from '@traqula/test-utils';
|
|
5
|
-
import { describe, it } from 'vitest';
|
|
6
|
-
import { Generator } from '../lib/index.js';
|
|
7
|
-
describe('a SPARQL 1.1 generator', () => {
|
|
8
|
-
const generator = new Generator();
|
|
9
|
-
const F = new AstFactory();
|
|
10
|
-
function _sinkGenerated(suite, test, response) {
|
|
11
|
-
const dir = getStaticFilePath();
|
|
12
|
-
const fileLoc = path.join(dir, suite, `${test}-generated.sparql`);
|
|
13
|
-
// eslint-disable-next-line no-sync
|
|
14
|
-
fs.writeFileSync(fileLoc, response);
|
|
15
|
-
}
|
|
16
|
-
describe('positive paths', () => {
|
|
17
|
-
for (const { name, statics } of positiveTest('paths')) {
|
|
18
|
-
it(`can generate ${name}`, async ({ expect }) => {
|
|
19
|
-
const { query, ast, autoGen } = await statics();
|
|
20
|
-
const path = ast;
|
|
21
|
-
const generated = generator.generatePath(path, { origSource: query });
|
|
22
|
-
expect(generated, 'round-trip generation').toEqual(query.trim());
|
|
23
|
-
const replaceLoc = F.sourceLocationNodeReplaceUnsafe(path.loc);
|
|
24
|
-
const autoGenAst = F.forcedAutoGenTree(path);
|
|
25
|
-
autoGenAst.loc = replaceLoc;
|
|
26
|
-
const selfGenerated = generator.generatePath(autoGenAst);
|
|
27
|
-
// _sinkGenerated('paths', name, selfGenerated);
|
|
28
|
-
expect(selfGenerated, 'auto generated').toEqual(autoGen.trim());
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
describe('positive sparql 1.1', () => {
|
|
33
|
-
for (const { name, statics } of positiveTest('sparql-1-1')) {
|
|
34
|
-
it(`can generate ${name}`, async ({ expect }) => {
|
|
35
|
-
const { query, ast, autoGen } = await statics();
|
|
36
|
-
const queryUpdate = ast;
|
|
37
|
-
const roundTripped = generator.generate(queryUpdate, { origSource: query });
|
|
38
|
-
expect(roundTripped, 'round-trip generation').toEqual(query.trim());
|
|
39
|
-
const replaceLoc = F.sourceLocationNodeReplaceUnsafe(queryUpdate.loc);
|
|
40
|
-
const autoGenAst = F.forcedAutoGenTree(queryUpdate);
|
|
41
|
-
autoGenAst.loc = replaceLoc;
|
|
42
|
-
const selfGenerated = generator.generate(autoGenAst);
|
|
43
|
-
// _sinkGenerated('sparql-1-1', name, selfGenerated);
|
|
44
|
-
expect(selfGenerated, 'auto generated').toEqual(autoGen.trim());
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
//# sourceMappingURL=statics.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statics.test.js","sourceRoot":"","sources":["../../../test/statics.test.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport { AstFactory } from '@traqula/rules-sparql-1-1';\nimport { positiveTest, getStaticFilePath } from '@traqula/test-utils';\nimport { describe, it } from 'vitest';\nimport { Generator } from '../lib/index.js';\n\ndescribe('a SPARQL 1.1 generator', () => {\n const generator = new Generator();\n const F = new AstFactory();\n\n function _sinkGenerated(suite: string, test: string, response: string): void {\n const dir = getStaticFilePath();\n const fileLoc = path.join(dir, suite, `${test}-generated.sparql`);\n // eslint-disable-next-line no-sync\n fs.writeFileSync(fileLoc, response);\n }\n\n describe('positive paths', () => {\n for (const { name, statics } of positiveTest('paths')) {\n it(`can generate ${name}`, async({ expect }) => {\n const { query, ast, autoGen } = await statics();\n const path = <T11.Path>ast;\n\n const generated = generator.generatePath(path, { origSource: query });\n expect(generated, 'round-trip generation').toEqual(query.trim());\n\n const replaceLoc = F.sourceLocationNodeReplaceUnsafe(path.loc);\n const autoGenAst = F.forcedAutoGenTree(path);\n autoGenAst.loc = replaceLoc;\n const selfGenerated = generator.generatePath(autoGenAst);\n // _sinkGenerated('paths', name, selfGenerated);\n expect(selfGenerated, 'auto generated').toEqual(autoGen.trim());\n });\n }\n });\n\n describe('positive sparql 1.1', () => {\n for (const { name, statics } of positiveTest('sparql-1-1')) {\n it(`can generate ${name}`, async({ expect }) => {\n const { query, ast, autoGen } = await statics();\n const queryUpdate = <T11.Query | T11.Update>ast;\n\n const roundTripped = generator.generate(queryUpdate, { origSource: query });\n expect(roundTripped, 'round-trip generation').toEqual(query.trim());\n\n const replaceLoc = F.sourceLocationNodeReplaceUnsafe(queryUpdate.loc);\n const autoGenAst = F.forcedAutoGenTree(queryUpdate);\n autoGenAst.loc = replaceLoc;\n const selfGenerated = generator.generate(autoGenAst);\n // _sinkGenerated('sparql-1-1', name, selfGenerated);\n expect(selfGenerated, 'auto generated').toEqual(autoGen.trim());\n });\n }\n });\n});\n"]}
|