A query language transpiler framework for JavaScript
Traqula Generator SPARQL 1.1 is a SPARQL 1.1 query generator for TypeScript. It can generate SPARQL given the AST created by Traqula parser SPARQL 1.1.
npm install @traqula/generator-sparql-1-1
or
yarn add @traqula/generator-sparql-1-1
Either through ESM import:
import { Generator } from '@traqula/generator-sparql-1-1';
or CJS require:
const Generator = require('@traqula/generator-sparql-1-1').Generator;
This package contains a Generator that is able to generate SPARQL 1.1 queries:
import { Parser } from '@traqula/parser-sparql-1-1';
import { Generator } from '@traqula/generator-sparql-1-1';
const query = `SELECT * WHERE { ?s ?p ?o }`
const parser = new Parser();
const ast = parser.parse(query)
const generator = new Generator();
const queryString = generator.generate(ast);
Note that a single generator cannot generate multiple queries in parallel.
Optionally, the following parameters can be set in to the generator:
astFactory: A custom AstFactory that is able to create the various AST nodes. (default: new AstFactory)indentInc: the number of spaces the built-in 'pretty print' mode must print for a single indentation level. (default: 2).origSource: the original query string the ast is constructed from.[traqulaIndentation] from @traqula/core: the current number of spaces to print on a newline.
Whenever this number is negative, no newline will be printed. (default: 0)[traqulaNewlineAlternative] from @traqula/core: the character that should be printed instead of a newline in case [traqulaIndentation] is negative. (default: ' ')To create a generator without pretty print:
import { Generator } from '@traqula/generator-sparql-1-1';
import { traqulaIndentation } from '@traqula/core';
const flatGenerator = new Generator({
indentInc: 0,
[traqulaIndentation]: -1,
})
By default, the generator will emit the round tripped query string where possible. In order to create an AST that supports round-tripping, you should make sure the parser is set up correctly.
Minor versions keep this engine's API and behavior, and the name, signature and behavior of the rules in its builders, but can add rules or change how existing rules are implemented, such as which rules they call. This only affects projects that patch, delete or individually register rules. See versioning.