Simple library to create SPARQL queries with tagged ES Template Strings
- Focuses on graph patterns. No need to remember exact syntax
- Still looks like SPARQL, having a familiar structure and little glue code
- Has the IDE provide syntactic hints of valid SPARQL keywords
- Ensures correct formatting of terms (URI nodes, literals variables) via @tpluscode/rdf-string
- Automatically shortens URIs with
@zazuko/prefixes
npm i -S @tpluscode/sparql-builder
To be able to execute queries against a remote endpoint install a peer dependency:
npm i -S sparql-http-client
import rdf from '@zazuko/env'
import { SELECT } from '@tpluscode/sparql-builder'
const ex = rdf.namespace('http://example.com/')
const { foaf } = rdf.ns
/*
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?person ?name
FROM <http://example.com/People>
WHERE
{
?person a foaf:Person ;
foaf:name ?name .
}
*/
const person = rdf.variable('person')
const query =
SELECT`${person} ?name`
.FROM(ex.People)
.WHERE`
${person} a ${foaf.Person} ;
${foaf.name} ?name .
`.build()
Using sparql-http-client
import rdf from '@zazuko/env'
import SparqlHttp from 'sparql-http-client'
import { ASK } from '@tpluscode/sparql-builder'
const { dbo } = rdf.ns
const dbr = rdf.namespace('http://dbpedia.org/resource/')
const client = new SparqlHttp({
factory: rdf,
endpointUrl: 'http://dbpedia.org/sparql',
})
const scoobyDoo = dbr('Scooby-Doo')
/*
PREFIX dbo: <http://dbpedia.org/ontology/>
ASK {
<http://dbpedia.org/resource/Scooby-Doo> a dbo:Person .
}
*/
ASK`${scoobyDoo} a ${dbo.Person}`
.execute(client)
.then(isScoobyAPerson => {
// Fun fact: DBpedia seems to claim that Scooby-Doo is indeed a Person...
return isScoobyAPerson
})
The example in docs/examples
can be executed locally. To do so, first replace the package import to point to the repository root.
-const { /* */ } = require('@tpluscode/sparql-builder')
+const { /* */ } = require('../..')
Then simply npm run example
.