The SPARQL 1.1 Query Language allows to query datasources of RDF triples. SPARQL.js translates SPARQL into a JSON structure, so you can use SPARQL queries in your JavaScript applications.
It fully supports the SPARQL 1.1 specification, including property paths, federation, and updates.
// Parse a SPARQL query to a JSON object
var SparqlParser = require('sparqljs').Parser;
var parser = new SparqlParser();
var parsedQuery = parser.parse(
'PREFIX foaf: <http://xmlns.com/foaf/0.1/> ' +
'SELECT * { ?mickey foaf:name "Mickey Mouse"@en; foaf:knows ?other. }');
// Regenerate a SPARQL query from a JSON object
var SparqlGenerator = require('sparqljs').Generator;
var generator = new SparqlGenerator();
query.variables = ['?mickey'];
var generatedQuery = generator.stringify(query);
$ sparql-to-json query.sparql
Through browserify:
$ cd SPARQL.js
$ npm install
$ browserify sparql.js -s sparqljs -i fs -i path -i _process > sparqljs-browser.js
$ uglifyjs sparqljs-browser.js -c -m > sparqljs-browser-min.js
Queries are represented in a JSON structure. The most easy way to get acquainted with this structure is to try the examples in the queries
folder through sparql-to-json
. All examples of the SPARQL 1.1 specification have been included, in case you wonder how a specific syntactical construct is represented.
Here is a simple query in SPARQL:
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
SELECT ?p ?c WHERE {
?p a dbpedia-owl:Artist.
?p dbpedia-owl:birthPlace ?c.
?c <http://xmlns.com/foaf/0.1/name> "York"@en.
}
And here is the same query in JSON:
{
"type": "query",
"prefixes": {
"dbpedia-owl": "http://dbpedia.org/ontology/"
},
"queryType": "SELECT",
"variables": [ "?p", "?c" ],
"where": [
{
"type": "bgp",
"triples": [
{
"subject": "?p",
"predicate": "http://www.w3.org/1999/02/22-rdf-syntax-ns#type",
"object": "http://dbpedia.org/ontology/Artist"
},
{
"subject": "?p",
"predicate": "http://dbpedia.org/ontology/birthPlace",
"object": "?c"
},
{
"subject": "?c",
"predicate": "http://xmlns.com/foaf/0.1/name",
"object": "\"York\"@en"
}
]
}
]
}
The representation of triples is the same as that of the N3.js library.
$ [sudo] npm [-g] install sparqljs
The SPARQL.js library is copyrighted by Ruben Verborgh and released under the MIT License.
Contributions are welcome, and bug reports or pull requests are always helpful.
- Thanks to Tim Ermilov for driving the SPARQL generator