Package Exports
- @vterzic/sparql-builder
- @vterzic/sparql-builder/dist/sparql-builder.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@vterzic/sparql-builder) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
sparql-builder
Just a simple, zero-dependency library for creating SPARQL queries.
Motivation
This library was made in order to speed up development process when creation of SPARQL queries is needed.
TODO
SELECT Query- CONSTRUCT Query
- UPDATE Query
Installation
npm i @vterzic/sparql-builder
Examples
Examples can also be found in ./test/select-query.spec.ts
Simple select
SELECT * WHERE {
?s ?p ?o .
}
const { builder } = require('@vterzic/sparql-builder');
const q = new Select()
.select('*')
.where('s', 'p', 'o');
q.render();
Simple select with variables
SELECT ?s ?p WHERE {
?s ?p ?o .
}
const { builder } = require('@vterzic/sparql-builder');
const q = builder.selectQuery()
.select('s', 'p')
.where('s', 'p', 'o');
q.render();
Select with optionals
SELECT * WHERE {
?s ?p ?o .
OPTIONAL {
?o ?p2 ?o2 .
?o ?p3 ?o3 .
}
}
const { builder } = require('@vterzic/sparql-builder');
const q = builder.selectQuery()
.select('*')
.where('s', 'p', 'o')
.optional(
builder
.optional()
.where('o', 'p2', 'o2')
.where('o', 'p3', 'o3')
);
q.render();
Select with offset and limit
SELECT ?s ?p WHERE {
?s ?p ?o .
} OFFSET 5 LIMIT 10
const { builder } = require('@vterzic/sparql-builder');
const q = builder.selectQuery()
.select('s', 'p')
.where('s', 'p', 'o')
.offset(5)
.limit(10);
q.render();
Group by query
SELECT ?location (SUM(?amount) as ?totalAmount) WHERE {
?location schema:amount ?amount .
} GROUP BY ?location HAVING(?totalAmount > 10) OFFSET 5 LIMIT 10
const { builder, operators: op } = require('@vterzic/sparql-builder');
const q = builder.selectQuery()
.prefix(op.prefix('schema', op.iri('http://schema.org/')))
.select('location', op.sum('?amount', 'totalAmount'))
.where('location', 'schema:amount', '?amount')
.groupBy('location')
.having('?totalAmount > 10')
.offset(5)
.limit(10);
q.render();
Order by
SELECT * WHERE {
?s ?p ?o .
} ORDER BY DESC(?p) ASC(?o)
const { builder, operators: op } = require('@vterzic/sparql-builder');
const q = builder.selectQuery()
.select('*')
.where('s', 'p', 'o')
.orderBy(op.desc('p'))
.orderBy(op.asc('o'));
Nested query (subquery)
PREFIX schema: <http://schema.org/>
SELECT * WHERE {
{
SELECT ?s WHERE {
BIND ('sparql-builder' as ?varName) .
?s schema:name ?varName .
}
}
}
const { builder, operators: op } = require('@vterzic/sparql-builder');
const q = const q = builder.selectQuery()
.prefix(op.prefix('schema', 'http://schema.org/'))
.select('*')
.nest(
builder.selectQuery()
.bind(op.toStringLiteral('sparql-builder'), 'varName')
.select('s')
.where('s', 'schema:name', 'varName'),
);
q.render();
Nested queries UNION
const { builder } = require('@vterzic/sparql-builder');
PREFIX schema: <http://schema.org/>
SELECT * WHERE {
{
SELECT ?s WHERE {
?s schema:name 'example1' .
}
}
UNION
{
SELECT ?s WHERE {
?s schema:lastName 'example2' .
}
}
}
const { builder, operators: op } = require('@vterzic/sparql-builder');
const subQuery1 = builder.selectQuery()
.select('s')
.where('s', 'schema:name', op.toStringLiteral('example1'));
const subQuery2 = builder.selectQuery()
.select('s')
.where('s', 'schema:lastName', op.toStringLiteral('example2'));
const q = builder.selectQuery()
.prefix(op.prefix('schema', 'http://schema.org/'))
.select('*')
.nest(subQuery1)
.nest(subQuery2, 'UNION');
q.render();
Nested queries optional
PREFIX schema: <http://schema.org/>
SELECT * WHERE {
{
SELECT ?s WHERE {
?s schema:name 'example1' .
}
}
OPTIONAL {
SELECT ?s WHERE {
?s schema:lastName 'example2' .
}
}
}
const { builder, operators: op } = require('@vterzic/sparql-builder');
const subQuery1 = new SelectQuery()
.select('s')
.where('s', 'schema:name', op.toStringLiteral('example1'));
const subQuery2 = new SelectQuery()
.select('s')
.where('s', 'schema:lastName', op.toStringLiteral('example2'));
const q = new SelectQuery()
.prefix(op.prefix('schema', 'http://schema.org/'))
.select('*')
.nest(subQuery1)
.nest(subQuery2, 'OPTIONAL');
q.redner();