Public SPARQL Endpoint

This site describes basic configuration parameters and important usage notes or limitations regarding the public DBpedia SPARQL Endpoint query service. The information on this side only applies for the English DBpedia SPARQL endpoint. For information about the endpoints of individual chapters see the website of the according chapter.

Backend and frontend type

The SPARQL backend is powered by Virtuoso and hosted by OpenLink Software

The frontend uses nginx to cache request for a query string (???)

Rates and Limitations

A Fair Use Policy is in place in order to provide a stable and responsive endpoint for the community. There is a limit on the number of connections/sec you can make, as well as restrictions on result set sizes and query time, conforming to the following settings:

   ResultSetMaxRows           = 10000
   MaxQueryExecutionTime      =   120  (seconds)
   MaxQueryCostEstimationTime =  1500  (seconds)
   Connection limit           =    50  (parallel connections per IP address)
   maximum request rate       =   100  (requests per second per IP address, with an initial burst of 120 requests)

NOTE: Queries which time out will return PARTIAL results in a best effort fashion, and will NOT return an error. This is realized by Virtuoso's Anytime Query feature which is enabled for the public endpoint. See the subsection below for more details.

Partial Results for Large Result Sets

The public endpoint limits the size of result sets, currently to 10000 rows.

ATTENTION: Partial result sets are returned the same way as complete result sets.  There is no HTTP error status code; just a 200 OK code). 

To check whether a query has delivered partial results, an application must evaluate the HTTP return headers. If full execution of the query would have returned more than the configured maximum number of rows, the X-SPARQL-MaxRows HTTP response header is added, as shown below::

     X-SPARQL-default-graph: http://dbpedia.org
     X-SPARQL-MaxRows: 10000
     Expires: Tue, 07 Jan 2018 12:00:00 GMT

Partial Results for Timed-Out Queries (Anytime Queries)

The public endpoint features Virtuoso's anytime queries to return partial results for timed-out queries. See the Virtuoso product manual for a detailed explanation.

ATTENTION: Timed-out queries will return partial results the same way as complete result sets.  There is no HTTP error status code; just a 200 OK code).  

NOTE: This means that the values returned for any aggregate query may not be correct with respect to the whole DBpedia dataset and can vary between query executions!

To check whether a query has delivered partial results, an application must evaluate the HTTP return headers. If results are impacted by the anytime query feature, this is indicated by the additional X-SQL-State, X-SQL-Message, X-Exec-Milliseconds, and X-Exec-DB-Activity HTTP response headers in the query response, as shown here:

     X-SPARQL-default-graph: http://dbpedia.org
     X-SQL-State: S1TAT
     X-SQL-Message: RC...: Returning incomplete results, query interrupted by result timeout.  Activity:      7 rnd  64.87M seq      0 same seg       1 same pg      0 same par      0 disk      0 spec disk      0B /      0 mess
     X-Exec-Milliseconds: 30000
     X-Exec-DB-Activity: 7 rnd  64.87M seq      0 same seg       1 same pg      0 same par      0 disk      0 spec disk      0B /      0 messages      0 fork
     Expires: Tue, 07 Jan 2018 12:00:00 GMT

Loaded Datasets

The public endpoint for the English chapter does NOT include all available DBpedia data sets. The following datasets are loaded (Release 2016-10) 

Further Reading

For more information about the current restrictions on the public DBpedia endpoint and how to deal with them, you can read  this usage report from January, 2018.

These threads from the DBpedia Discussion mailing list may also be useful: