Skip to main content

Python API to query a SPARQL endpoint

Project description

sparql-client is a library to query a SPARQL endpoint. It will automatically convert literals to the coresponding Python types.

Visit for documentation and examples.


First you open a connection to the endpoint:

s = sparql.Service(endpoint, "utf-8", "GET")

Then you make the query:

result = s.query(statement)

If you have made a SELECT query, then you can read the result with fetchone() or fetchall():

for row in result.fetchone():

If you have made an ASK query, then you can read the result (a boolean value) with hasresult():

works = result.hasresult()

Conversion of data types

The library will automatically convert typed literals to a coresponding simple type in Python. Dates are also converted if the dateutil library is available.

Running the unit tests

If you have nose installed, just run nosetests in the top-level directory. Some tests require the python-dateutil (version 1.5) or mock libraries. Tested under Python 2.4 through 2.7.


The contents of this package are subject to the Mozilla Public License Version 1.1 (the “License”); you may not use this package except in compliance with the License. You may obtain a copy of the License at

Software distributed under the License is distributed on an “AS IS” basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License.

The Original Code is SPARQL client version 1.0.

The Initial Owner of the Original Code is European Environment Agency (EEA). Portions created by Eau de Web for EEA are Copyright (C) European Environment Agency. All Rights Reserved.


  • Søren Roug, EEA
  • Alex Morega, Eau de Web


3.0 - (2017-11-14)

  • Change: Added handler for SAXParseException and wrote a test in order to cover this exception [petchesi-iulian refs #88573]

2.9 - (2017-09-29)

  • Change: Changed the projects tests structure in order to make the tests work [petchesi-iulian refs #88509]

2.8 - (2017-08-16)

  • Change: Added sparql export method formats (xml, xmlschema, json) to be stored and retrieved from cache [zoltan_andras refs #86464]

2.7 - (2017-04-24)

  • Change: updated package information [eduard-fironda]

2.6 - (2016-10-04)

  • Change: added timeout parameter for _get_response

2.5 - (2016-07-29)

  • Bug fix: Safely get __version__ from version.txt [voineali refs #74283]

2.4 - (2016-07-29)

  • Bug fix: Read __version__ from version.txt [voineali refs #74283]

2.3 - (2016-07-19)

  • Change: fixed changelog markup and removed __version__ [alecghica refs #74151]

2.2 - (2016-06-16)

  • Feature: Fix Comment in sparql queries [lucas refs #72876]

2.1 - (2016-06-02)

  • Bug fix: Fix passing of method from service to query

2.0 - (2016-04-18)

  • Bug fix: fixed error reporting when running query [alecghica refs #68990]

1.9 - (2016-02-01)

  • Bug fix: fix timeout exception call now that we have moved to eventlet [ichim-david refs #17334]

1.8 - (2015-10-05)

  • Bug fix: set socket timeout to prevent Zope instances hanging out when the external service is not responding [lucas refs #29063]

1.7 - (2015-07-28)

  • Change: Replace pycurl2 with eventlet [david-batranu refs #25721]

1.6 - (2014-09-15)

  • Feature: change the default query method from GET to POST. [pasoviul refs #20501]

1.5 - (2013-11-21)

  • Feature: added “method” as a parameter for query() and now we can use either GET or POST methods [ghicaale refs #14491]

1.4 - (2013-07-08)

  • Bug fix: Use a temporary file for parsing instead of using a huge string [szabozo0 refs #14826]

1.3 - (2013-05-20)

  • Bug fix: fixed ReST merkup under HISTORY.txt [ghicaale refs #14554]

1.2 - (2013-05-20)

  • Upgrade step:
    • install system dependency libcurl3-dev (Debian/Ubuntu) / curl-devel (CentOS)
    • [szabozo0 refs #14349]
  • Change: Use pycurl2 instead of pycurl [szabozo0 refs #14349]
  • Bug fix: Use pycurl instead of urllib2, added timeout functionality [szabozo0 refs #14349]

1.1 - (2013-03-15)

  • Feature: Removed sparql error handling quickfix [szabozo0 refs #13705]

1.0 - (2013-01-28)

  • Feature: Handle sparql errors [szabozo0 #9608]

0.16 - (2013-01-15)

  • Bug fix: Strip the endpoint url [szabozo0]

0.15 - (2013-01-10)

  • Packaging fix: inline contents of version.txt [moregale]

0.14 - (2013-01-10)

  • Bug fix: updated History.txt [ghicaale]
  • Buf fix: unit test [moregale]

0.13 - (2012-09-11)

  • Change: changed from HTTP POST to GET [roug]

0.12 - (2012-09-11)

  • No changes

0.11 - (2012-04-15)

  • Feature: added copyright message to [roug]

0.10 - (2012-03-05)

  • Feature: map the xsd:int type to Python’s int [moregale]

0.9 - (2011-10-24)

  • Feature: new argument convert_type for unpack_row [moregale]

0.8 - (2011-08-29)

  • First version available on PyPI [roug, moregale]

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sparql-client, version 3.0
Filename, size File type Python version Upload date Hashes
Filename, size (32.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page