Redland Rasqal RDF Query Library
C Roff HTML Makefile Perl M4 Other
Failed to load latest commit information.
build Add pkg.m4 from pkg-config 0.28 to prevent more work Apr 5, 2013
data Add triple patterns matching test Sep 23, 2009
docs 2015 Jan 7, 2015
getopt Add libgetopt convienience library Nov 16, 2013
libmtwist @ 5c9b486 Update submodules Jan 15, 2014
libsv @ 9fadf53 Update to libsv 9fadf5379274833893b8f11e9b4a7abc3b754c9f Jul 1, 2017
scripts Exit on error immediately Jan 8, 2015
src (rasqal_query_generate_bnodeid): Add missing else. Jul 1, 2017
tests Replace sprintf() with snprintf() and fix gcc pragma format wrappers May 3, 2015
utils Revert 8e53443 - adding default cases Dec 7, 2014
win32 rasqal win32 build files update from John Barstow Mar 28, 2006
.gitignore Ignore .trs Mar 13, 2013
.gitmodules Moved libtsv repo to libsv Dec 1, 2013
.travis.yml Travis CI: Try to exclude some matrix combinations Nov 23, 2014
AUTHORS Added Lauri Aalto Aug 17, 2010
COPYING Add specific versions of GPL (2) and LGPL (2.1) to source control Jul 17, 2009
COPYING.LIB Add specific versions of GPL (2) and LGPL (2.1) to source control Jul 17, 2009
ChangeLog 2015 Jan 5, 2015
ChangeLog.1 ChangeLogs Jan 17, 2007
ChangeLog.10 ChangeLog.10 for 2012 Jan 25, 2013
ChangeLog.11 ChangeLog.11 for 2013 Mar 25, 2014
ChangeLog.12 2015 Jan 5, 2015
ChangeLog.2 ChangeLogs Jan 17, 2007
ChangeLog.3 ChangeLogs Jan 17, 2007
ChangeLog.4 2007 Apr 22, 2007
ChangeLog.5 Add ChangeLog.5 Jul 20, 2008
ChangeLog.6 Add ChangeLog.6 for 2008 Nov 29, 2009
ChangeLog.7 Add ChangeLog.7 for 2009 Feb 12, 2010
ChangeLog.8 Add ChangeLog.8 for 2010 Jan 27, 2011
ChangeLog.9 ChangeLog.9 for 2011 May 14, 2012
INSTALL.html Fix typos. Mar 4, 2017
LICENSE-2.0.txt LGPL / Apache 2.0 license Oct 21, 2004
LICENSE.html 2015 Jan 5, 2015 2015 Jan 5, 2015
NEWS.html 2015 Jan 5, 2015
NOTICE LGPL / Apache 2.0 licenseLICENSE-2.0.txt Oct 21, 2004
README.html Bye bye sf Aug 3, 2014
RELEASE.html Fix typos. Mar 4, 2017
TODO.html 2015 Jan 5, 2015 Handle updated glibtoolize (OSX) name in --version Feb 1, 2015 Fix BASHisn in test for raptor version: use -lt for string less than May 3, 2015 pkg-config raptor2 only Jan 12, 2011 Kill support for Raptor V1 Jan 5, 2011 Update package files to remove RDQL May 14, 2012 Update package files to remove RDQL May 14, 2012


<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">
<html xmlns="" lang="en" xml:lang="en">
  <title>Rasqal RDF Query Library</title>
  <link rel="meta" type="application/rdf+xml" title="DOAP" href="rasqal.rdf" />

<h1 style="text-align:center">Rasqal RDF Query Library</h1>
<h2 style="text-align:center"><a href="">Dave Beckett</a></h2>


<p><a href="">Rasqal</a> is a free software
/ Open Source C library that handles Resource Description Framework
(RDF) query language syntaxes, query construction and execution of
queries returning results as bindings, boolean, RDF graphs/triples or
syntaxes.  The supported query languages are SPARQL Query 1.0, SPARQL
Query 1.1, SPARQL Update 1.1 (no executing) and the Experimental
SPARQL extensions (LAQRS).  Rasqal can write binding query results in
and Turtle / N3 and read them in SPARQL XML, CSV, TSV,
RDF/XML and Turtle / N3.

<p>Rasqal was designed to work closely with the
<a href="">Redland RDF library</a>
and the <a href="">Raptor</a>
RDF Syntax Library but is entirely separate from both.

<p>This is a beta quality library - the code is mature, the API is
mostly stable but changing slowly. Rasqal supports all of SPARQL 1.0
query and most of SPARQL 1.1 query. It is a portable library and has
been tested on multiple POSIX systems and architectures.  Rasqal has
no known memory leaks.

<p>A summary of the changes can be found in the
<a href="NEWS.html">NEWS</a> file and detailed API changes in the
<a href="RELEASE.html">release notes</a>.</p>

<p>Rasqal provides:</p>
<li>An RDF <a href="docs/api/query.html">query</a> construction and access API.</li>
<li>Query language support for <a href="">SPARQL 1.0 Query</a>.</li>
<li>Query language support for most of <a href="">SPARQL 1.1 Query</a>.</li>
<li>A query execution engine executing sub-queries, aggregate expressions and grouping.</li>
<li>The complete SPARQL 1.1 (draft) built-in function and operator library</li>
<li>A query result binding API.</li>
<li>Query result bindings formatting into SPARQL XML, SPARQL JSON, CSV, TSV, HTML, ASCII tables, RDF/XML, Turtle / N3 and from SPARQL XML, RDF/XML and Turtle / N3.</li>
<li>Triple store querying APIs to support running over external RDF graphs.</li>
<li>No memory leaks.</li>
<li><a href="roqet.html">roqet</a> standalone command line RDF query utility program</li>

<p>Known bugs and issues are recorded in the
<a href="">Redland issue tracker</a>.

<p>Rasqal does not provide an RDF API or triple store, but relies on
external libraries implementing the triple store API providing
matched RDF data originally from a specified content URI.  Rasqal
ships with a triple store implementation using the output of an RDF
parser from <a href="">Raptor</a>.
This can be called using the standalone
command line <a href="roqet.html">roqet</a>
query utility giving a query language
identifier (default sparql), the query string and optionally
the data to use unless it is declared in the query string.

<p>Rasqal is used inside Redland to provide support for query
languages, a query API and a result bindings API over graphs stored
in indexed Redland triple stores.  Since this can index the triples
it will be faster than the default rasqal triple store of reading
the triples from Raptor into memory when the queries are complex.

<h2>Supported Query Languages</h2>

<h3>SPARQL Query Language for RDF</h3>

<p>Rasqal provides complete support for the W3C SPARQL Query Language 1.0
developed by the W3C
<a href="">RDF Data Access Working Group</a>,
as defined in
<a href="">SPARQL Query Language for RDF (1.0)</a>, W3C Recommendation 15 January 2008.

<p>Rasqal implements most of the
<a href="">SPARQL 1.1 Query Language</a>
<a href="">SPARQL 1.1 Update</a>
W3C Recommendations 21 March 2013 including aggregates,
subqueries, expression in SELECT, assignment, short form for
<code>CONSTRUCT</code> and all the new set of builtin functions and

<p>Unimplemented parts of SPARQL 1.1:</p>
  <li><code>BIND</code> scope</li>
  <li><code>VALUES</code>: part of federated query</li>
  <li>Decimal and double canonical format details</li>
  <li><code>EXISTS</code> / <code>NOT EXISTS</code></li>
  <li>JSON result format reading</li>
  <li><em>Property Paths</em>: These are likely never be supported
  since it is a lot of work (estimate: 3 months full time) and might
  need multiple new APIs to talk to the storage layer.</li>
  <li><code>SERVICE</code>: Part of federated query</li>

<p>Out of scope parts of SPARQL 1.1:</p>
  <li>Entailment and inference: Rasqal is not an inference engine</li>
  <li><em>SPARQL Federated Query</em></li>
  <li><em>SPARQL Update</em> (also called SPARQL Protocol): The Update
  syntax is parsed with parser name 'sparql-update' but nothing is
  executed inside Rasqal. Supporting SPARQL Update requires a protocol
  server that responds to requests to perform operations on a graph
  store. Rasqal is a query library and does not have an event loop or
  triple store.
  <a href="">Redstore</a> is a system
  supporting SPARQL Update and Service Description built with Rasqal by
  using Redland librdf for graph storage and query.</li>

<p>The details on the Rasqal support for SPARQL 1.1 can be found at the
<a href="">rasqal testing SPARQL 1.1 page</a>
which shows the SPARQL 1.1 tests that fail and any diagnosis.

<h3>LAQRS Adds to Querying RDF in SPARQL (LAQRS)</h3>

<a href="">LAQRS</a> is
an <b>experimental</b> set of syntax extensions for SPARQL.  The
syntax and features may change at any time.  At present Rasqal
provides parsing and API support for alternate update syntaxes,
the <code>EXPLAIN</code> keyword, plus executing a few experimental
extension functions:
<code>NOW()</code> / <code>CURRENT_DATETIME()</code>,
<code>FROM_UNIXTIME()</code> and

<h2>Installation and Documentation</h2>

<p>The public API is described in the
<a href="docs/api/index.html">API reference</a>.
It is demonstrated in the
<a href="roqet.html">roqet</a>
utility program which shows how to call the query engine and
operate over the query results.  When Rasqal is used inside
<a href="">Redland</a>,
the Redland documentation explains
how to call the query engine and contains several example programs.

<p>To build and install Rasqal from sources see the
<a href="INSTALL.html">Installation document</a>.


<p>The packaged sources are available from
<a href=""></a>.
The development GIT sources can also be
<a href="">browsed on GitHub</a>
or checked out at git://

<p>Rasqal requires <a href="">Raptor</a> 2.0.7
or newer to build and run, which can be downloaded from the same area
as the Rasqal source and binaries.</p>


<p>This library is free software / open source software released
under the LGPL (GPL) or Apache 2.0 licenses.  See
<a href="LICENSE.html">LICENSE.html</a> for full details.</p>

<h2>Mailing Lists</h2>

<a href="">Redland mailing lists</a>
discusses the development and use of Rasqal and Redland as well as
future plans and announcement of releases.</p>

<hr />

<p>Copyright (C) 2003-2014 <a href="">Dave Beckett</a><br />Copyright (C) 2003-2005 <a href="">University of Bristol</a></p>