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 'engines/generator-sparql-1-1';
or CJS require:
const Generator = require('engines/generator-sparql-1-1').Generator;
This package contains a Generator that is able to generate SPARQL 1.1 queries:
import { Parser } from 'parser/generator-sparql-1-1';
import { Generator } from 'engines/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.