skip to navigation
skip to content

rdflib-sparql 0.2


A SPARQL 1.1 implementation for RDFLib.

This replaces the old implementation available in RDFExtras, hopefully
with more maintainable code.

[![Build Status](](


Install with setuptools, either easy_install or pip will register the
SPARQL processor with RDFLib automatically. I cannot recommend this
strongly enough.

(you should also uninstall rdfextras - although my test with both
installed still gave me the NEW sparql implementation - but I belive
this was random, i.e. depending on a hash value of something)


g = rdflib.Graph()

for row in g.query(
'select ?s where { [] <http:"" foaf="" 0.1="" knows=""> ?s .}'):
print row

Prepared Queries

Queries can be parsed/translated beforehand - and the initBindings
kwarg to graph.query can be used to fill in variables that are known:

# ./examples/

import rdflib
from rdflib_sparql.processor import prepareQuery

q = prepareQuery(
'select ?s where { ?person <http:"" foaf="" 0.1="" knows=""> ?s .}')

g = rdflib.Graph()

tim = rdflib.URIRef("")

for row in g.query(q, initBindings={'person': tim}):
print row


Property Paths

SPARQL PropertyPaths are also available as "pseudo properties" in python
code. See docs in *rdflib_sparql/*

# ./examples/

g = Graph()

tim = URIRef("")

print("Timbl knows:")

# find name of everyone tim knows:
for o in g.objects(tim, FOAF.knows/
print o


SPARQL Update is implemented - but no HTTP/SPARQL Protocol yet.
SPARQL Update requests can be evaluated with

# ./examples/*

import rdflib
from rdflib_sparql.processor import processUpdate

g = rdflib.Graph()

processUpdate(g, '''
PREFIX foaf: <http:"" foaf="" 0.1=""/>
PREFIX dbpedia: <http:"" resource=""/>
{ ?s a dbpedia:Human . }
{ ?s a foaf:Person . }

for x in g.subjects(



Currently about 90% of SPARQL 1.0 and SPARQL 1.1 Query tests pass. This
should be much better than the RDFExtras implementation.

For test results, see also:

So far, only functional testing has been done, i.e. performance may be rubbish.

If you would like to dig into the code, see DEVELOPERS

I would welcome any feedback on this!

- Gunnar

File Type Py Version Uploaded on Size
rdflib-sparql-0.2.tar.gz (md5) Source 2013-04-19 1MB