npm.io
1.5.0-alpha.6 • Published 4d ago

@traqula/generator-sparql-1-1

Licence
MIT
Version
1.5.0-alpha.6
Deps
2
Size
41 kB
Vulns
0
Weekly
0
Stars
28

Traqula logo

A query language transpiler framework for JavaScript

Traqula SPARQL 1.1 generator

npm version

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.

Installation

npm install @traqula/generator-sparql-1-1

or

yarn add @traqula/generator-sparql-1-1

Import

Either through ESM import:

import { Generator } from '@traqula/generator-sparql-1-1';

or CJS require:

const Generator = require('@traqula/generator-sparql-1-1').Generator;

Usage

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.

Configuration

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,
})

Round-tripping generation

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.

Modifying the built Generator

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.