mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-06 14:52:34 +02:00
1884 lines
66 KiB
HTML
1884 lines
66 KiB
HTML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
|
<head>
|
|
<title>Rasqal RDF Query Library - Release Notes</title>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>Rasqal RDF Query Library - Release Notes</h1>
|
|
|
|
<h2 id="rel0_9_16"><a name="rel0_9_16">Rasqal 0.9.16 Changes</a></h2>
|
|
|
|
<blockquote>
|
|
<p><b>WARNING: ABI AND API CHANGED IN THIS RELEASE.</b></p>
|
|
|
|
<p>This means: functions were removed, modified and added.</p>
|
|
|
|
<p>Consequently the shared library major soname version has changed from 0 to 1.</p>
|
|
|
|
<p>The header files moved to be installed in
|
|
<em>PREFIX</em>/include/rasqal such as
|
|
<code>/usr/include/rasqal</code> for usual installs.</p>
|
|
</blockquote>
|
|
|
|
<h3>Major Changes (break ABI and API)</h3>
|
|
|
|
<p>Removed <code>rasqal_init()</code> and <code>rasqal_finish()</code>
|
|
functions.</p>
|
|
|
|
<p>Added a new <code>rasqal_world</code> object to manage
|
|
library allocations and classes with new library
|
|
constructor/initializing function
|
|
<code>rasqal_world *rasqal_new_world(void)</code>
|
|
and destructor/cleanup function:
|
|
<code>void rasqal_free_world(rasqal_world*)</code>
|
|
</p>
|
|
|
|
<p>The following functions now take a <code>librdf_world*
|
|
world</code> argument as the first argument:
|
|
<code>rasqal_language_name_check()</code>,
|
|
<code>rasqal_languages_enumerate()</code>,
|
|
<code>rasqal_new_query()</code>,
|
|
<code>rasqal_query_results_formats_check ()</code>,
|
|
<code>rasqal_new_query_results_formatter()</code>,
|
|
<code>rasqal_new_query_results_formatter_by_mime_type()</code>,
|
|
<code>rasqal_new_integer_literal()</code>,
|
|
<code>rasqal_new_typed_literal()</code>,
|
|
<code>rasqal_new_double_literal()</code>,
|
|
<code>rasqal_new_float_literal()</code>,
|
|
<code>rasqal_new_uri_literal()</code>,
|
|
<code>rasqal_new_pattern_literal()</code>,
|
|
<code>rasqal_new_string_literal()</code>,
|
|
<code>rasqal_new_simple_literal()</code>,
|
|
<code>rasqal_new_boolean_literal()</code>,
|
|
<code>rasqal_new_variable_literal()</code>,
|
|
<code>rasqal_new_decimal_literal()</code>,
|
|
<code>rasqal_new_decimal_literal_from_decimal()</code>
|
|
</p>
|
|
|
|
<p>Removed deprecated
|
|
<code>rasqal_new_floating_literal()</code>,
|
|
<code>rasqal_graph_pattern_get_flags()</code>,
|
|
<code>rasqal_expression_foreach()</code> functions,
|
|
<code>RASQAL_LITERAL_FLOATING</code> macro and
|
|
<code>rasqal_expression_foreach_fn</code> typedef.
|
|
</p>
|
|
|
|
<p>
|
|
Modified <code>rasqal_triples_match</code> struct to add a
|
|
rasqal_world* world field.
|
|
</p>
|
|
|
|
<p>There is no more static data such as error pointers, arrays of
|
|
query languages, URI objects; it is all attached to the rasqal_world
|
|
object.</p>
|
|
|
|
|
|
<h3>Misc changes</h3>
|
|
|
|
<p>Fixed memory leaks in lang() expression evaluation. (Lauri Aalto)</p>
|
|
|
|
<p>Made several low-memory resiliance fixes in query construction and
|
|
execution. (Lauri Aalto)</p>
|
|
|
|
<p>Library requires raptor 1.4.17 or newer to get the newly public
|
|
raptor SAX2 API for reading SPARQL XML Results format.</p>
|
|
|
|
<p>Updated mpfr configure check to look for modern functions rather
|
|
than functions that are also in the older gmp-mpfr library too.
|
|
</p>
|
|
|
|
<p>Only the first error is reported for syntax errors in lex/parse
|
|
of SPARQL and RDQL since the lack of error recovery means that the
|
|
consequent messages are of little use.</p>
|
|
|
|
<p>Fatal errors in SPARQL and RDQL lexer/parser no longer does an
|
|
abort, but exits via setjmp/longjmp.</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Added internal rowsource class to get rows from an execution
|
|
engine or a syntax (query result formatter).</p>
|
|
|
|
|
|
<h3>Graph Pattern Class Changes</h3>
|
|
<p>Modified <code>rasqal_graph_pattern_add_sub_graph_pattern()</code> to
|
|
have an int return value for catching allocation failures.
|
|
</p>
|
|
|
|
<h3>Query Class Changes</h3>
|
|
<p>Modified <code>rasqal_query_add_variable()</code> and
|
|
<code>rasqal_query_add_prefix()</code> to have int return values for
|
|
catching allocation failures.
|
|
</p>
|
|
|
|
<h3>Query Results Class Changes</h3>
|
|
|
|
<p>Updated the internals to allow construction of a query result
|
|
outside the query engine, such as from a syntax.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_query_results_read()</code> to read a query
|
|
results from an iostream in some format.
|
|
</p>
|
|
|
|
<p>Modified <code>rasqal_query_results_formats_enumerate()</code> to add
|
|
a flags argument with
|
|
<code>RASQAL_QUERY_RESULTS_FORMAT_FLAG_READER</code> and
|
|
<code>RASQAL_QUERY_RESULTS_FORMAT_FLAG_WRITER</code> choices to
|
|
choose formats for read or write enumeration.</p>
|
|
|
|
<p>Removed function
|
|
<code>rasqal_query_results_formats_enumerate_full</code> now handled
|
|
by <code>rasqal_query_results_formats_enumerate()</code>.</p>
|
|
|
|
<p>Added <code>rasqal_query_results_formatter_read()</code> to read
|
|
query results from a syntax via an iostream.</p>
|
|
|
|
<h3>Variable Class Changes</h3>
|
|
|
|
<p>Added <code>rasqal_new_variable_from_variable()</code> copy
|
|
constructor.</p>
|
|
|
|
|
|
<h2 id="rel0_9_15"><a name="rel0_9_15">Rasqal 0.9.15 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Many updates for better SPARQL support. Rasqal 0.9.15 passes over
|
|
92% of the DAWG SPARQL Test Suite as of 2007-11-13.</p>
|
|
|
|
<p>Rasqal still does not support either <code>UNION</code> or
|
|
<code>GROUP</code> and <code>OPTIONAL</code> remains buggy. There
|
|
remain a few other minor areas not yet completely supported such as
|
|
XSD <code>date</code> and XSD <code>dateTime</code> equality and
|
|
comparisons.
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p><b>WARNING: ABI AND API CHANGE in Rasqal 0.9.16. The next
|
|
release of Rasqal will be incompatible with this one.</b></p>
|
|
|
|
<p>It will have both ABI and API changes that will require source
|
|
updates.</p>
|
|
|
|
<p>The shared library major soname will change from 0 to 1.</p>
|
|
|
|
<p>The header files will move to be installed in
|
|
<em>PREFIX</em>/include/rasqal such as
|
|
<code>/usr/include/rasqal</code> for usual installs.</p>
|
|
|
|
<p>The full details of the API change have not been decided but the
|
|
driving change is that using the library will be done via a new
|
|
Rasqal world object,k will now be used to working like a Redland
|
|
<code>librdf_world</code>. All constructors will take this world
|
|
object as an argument and all static data will be indirected from the
|
|
object. Handlers such as the uri_handler/data and error handlers
|
|
will also move to be set/get via the world object.
|
|
</p>
|
|
|
|
<p>There are almost certainly other API changes and cleanups that
|
|
will be done, and some possibly some of the data structures may be
|
|
made internal.</p>
|
|
|
|
</blockquote>
|
|
|
|
<p>Fixed issues:</p>
|
|
<ul>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=190">Issue#0000190</a>: Memory leaks in rasqal_literal.c</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=191">Issue#0000191</a>: RAPTOR_API in rasqal.h</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=193">Issue#0000193</a>: SPARQL "ASK" always returns true</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=196">Issue#0000196</a>: Memory leak with RASQAL_REGEX_PCRE</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=197">Issue#0000197</a>: Problem with float comparison in rasqal</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=198">Issue#0000198</a>: rasqal_redland.c compilation errors</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=199">Issue#0000199</a>: SPARQL effective boolean value: empty string literal not false</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=200">Issue#0000200</a>: SPARQL filter scope</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=201">Issue#0000201</a>: SPARQL langMatches patch</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=203">Issue#0000203</a>: API declarations for Symbian portability</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=204">Issue#0000204</a>: SPARQL WHERE is optional</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=219">Issue#0000219</a>: SPARQL BASE makes rasqal query->locator.uri a dangling pointer</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=220">Issue#0000220</a>: Query offset off by one</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=221">Issue#0000221</a>: rasqal_literal_as_integer() with RASQAL_LITERAL_INTEGER literals</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=225">Issue#0000225</a>: SPARQL parser leaks memory on syntax error</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=234">Issue#0000234</a>: autogen.sh $dir quoting</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=235">Issue#0000235</a>: $(EXEEXT) in tests</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=236">Issue#0000236</a>: EOL issues when building svn version on cygwin</li>
|
|
</ul>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Many updates to support the SPARQL
|
|
<a href="http://www.w3.org/TR/2007/CR-rdf-sparql-query-20070614/">Candidate Recommendation</a> and
|
|
<a href="http://www.w3.org/TR/2007/PR-rdf-sparql-query-20071112/">Proposed Recommendation</a> versions of the language including:</p>
|
|
<ul>
|
|
<li>Added <code>REDUCED</code> syntax support (no query engine support)</li>
|
|
<li>Added <code>SAMETERM()</code> support.</li>
|
|
<li>Allowing numbers at the start of local names.</li>
|
|
<li>Allowing <code>@</code><em>lang</em> and
|
|
<code>^^</code><em>datatype</em> after triple-quoted literals.</li>
|
|
<li>Make unary + and - work</li>
|
|
<li>Remove <code>CONSTRUCT *</code> that is no longer in the spec</li>
|
|
<li>Removed hexadecimal literals which were never in the spec</li>
|
|
<li>Made queries with the <code>ASK</code> verb work again.</li>
|
|
<li>Made <code>LANG()</code> and <code>DATATYPE()</code> work to
|
|
spec on typed literals.</li>
|
|
<li>Remove warning about optional SPARQL <code>WHERE</code>
|
|
although it is still a dumb idea to have useless keywords.</li>
|
|
</ul>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Many internal changes were made including refactoring the engine
|
|
core and adding of additional internal documentation for the engine
|
|
functions.</p>
|
|
|
|
<p>Substantial improvements were made to datatypes support:</p>
|
|
<ul>
|
|
<li>SPARQL / XQuery / XPath numeric type promotion is now supported,
|
|
including derived types of <code>xsd:integer</code> etc.</li>
|
|
<li>Added XSD <code>xsd:decimal</code> implementation either using
|
|
GNU MP, MPFR, C99 <code>_Decimal</code> (but I have yet to find a
|
|
working implementation) or by default and inaccurately, C
|
|
doubles.</li>
|
|
<li>Added XSD <code>xsd:dateTime</code> initial support for validation.</li>
|
|
<li>Numeric operations such as +, -, *, / and ! as well as comparisons
|
|
are now done in the appropriate datatype (which may be a promotion).</li>
|
|
</ul>
|
|
|
|
<p>Improved the way that literal equality and comparisons work
|
|
especially with respect to datatypes. Triple pattern matching
|
|
(equality) works with RDF terms. SPARQL <code>FILTER</code> literal
|
|
equality and comparisons follow SPARQL rules with possible numeric
|
|
type promotion, then using RDF Term if the types are different.
|
|
<code>ORDER</code> comparison or <code>DISTINCT</code> equality
|
|
checks use RDF Term. RDQL execution uses it's own existing "stringy"
|
|
rules.
|
|
</p>
|
|
|
|
<p>Set the query base URI.</p>
|
|
|
|
<p>Make queries that bind the origin (SPARQL <code>GRAPH</code>)
|
|
match correctly against the default graph.
|
|
</p>
|
|
|
|
<p>Memory reduction in stack usage when evaluation expressions
|
|
(such as SPARQL <code>FILTER</code>s).</p>
|
|
|
|
|
|
<h3>Public API changes</h3>
|
|
|
|
<p>Added <code>rasqal_home_url_string</code> static constant.</p>
|
|
|
|
<p>Added <code>rasqal_xsd_decimal</code> class and API calls
|
|
described below.</p>
|
|
|
|
<p>Added a <code>decimal</code> part to the rasqal_literal union
|
|
value for <code>RASQAL_LITERAL_DECIMAL</code> types.</p>
|
|
|
|
<p>Added a <code>parent_type</code> part to the rasqal_literal when
|
|
the type can be promoted.</p>
|
|
|
|
<p>Added <code>RASQAL_EXPR_SAMETERM</code> expression</p>
|
|
|
|
<p>Added <code>RASQAL_COMPARE_RDF</code> and
|
|
<code>RASQAL_COMPARE_URI</code> comparison types for RDF Term
|
|
comparsion rules and allowing URI comparison (without
|
|
<code>STR()</code>) respectively.</p>
|
|
|
|
<p>Added <code>rasqal_new_typed_literal()</code> to make an RDF typed
|
|
literal from a type and string (no language).</p>
|
|
|
|
<p>Added <code>rasqal_new_float_literal()</code> for wrapping a C
|
|
<code>float</code> as XSD float.</p>
|
|
|
|
<p>Added new decimal literal constructor
|
|
rasqal_literal* rasqal_new_decimal_literal_from_decimal(const unsigned char *string, rasqal_ xsd_decimal* decimal)
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_literal_datatype</code> method to get the datatype
|
|
URI of a literal.</p>
|
|
|
|
<p>Added <code>rasqal_literal_value</code> method to get the literal
|
|
value of a literal, looking up any variables to their value.
|
|
FIXME should this not involve query results?
|
|
</p>
|
|
|
|
<p>Added addition <code>rasqal_triple_parts</code> enums:
|
|
<code>RASQAL_TRIPLE_GRAPH</code> for just the named graph part
|
|
<code>RASQAL_TRIPLE_SPO</code> for subject, predicate and objects and
|
|
<code>RASQAL_TRIPLE_SPOG</code> for all parts including named grpah.
|
|
</p>
|
|
|
|
|
|
<h3>Decimal Class</h3>
|
|
|
|
<p>A new <code>rasqal_xsd_decimal</code> class was added to handle
|
|
XSD decimals with accurate decimal arithmetic.</p>
|
|
|
|
<p>Constructor:</p>
|
|
<pre>
|
|
rasqal_xsd_decimal* rasqal_new_xsd_decimal(void);
|
|
</pre>
|
|
|
|
<p>Destructor:</p>
|
|
<pre>
|
|
void rasqal_free_xsd_decimal(rasqal_xsd_decimal* dec);
|
|
</pre>
|
|
|
|
<p>Methods:</p>
|
|
<pre>
|
|
double rasqal_xsd_decimal_get_double(rasqal_xsd_decimal* dec);
|
|
int rasqal_xsd_decimal_set_double(rasqal_xsd_decimal* dec, double d);
|
|
iint rasqal_xsd_decimal_set_string(rasqal_xsd_decimal* dec, const char* string);
|
|
int rasqal_xsd_decimal_set_long(rasqal_xsd_decimal* dec, long l);
|
|
int rasqal_xsd_decimal_print(rasqal_xsd_decimal* dec, FILE* stream);
|
|
char* rasqal_xsd_decimal_as_string(rasqal_xsd_decimal* dec);
|
|
char* rasqal_xsd_decimal_as_counted_string(rasqal_xsd_decimal* dec, size_t* len_p);
|
|
</pre>
|
|
|
|
<p>Numeric methods (writing to the <code>result</code> argument):</p>
|
|
<pre>
|
|
int rasqal_xsd_decimal_add(rasqal_xsd_decimal* result,
|
|
rasqal_xsd_decimal* a, rasqal_xsd_decimal* b);
|
|
int rasqal_xsd_decimal_subtract(rasqal_xsd_decimal* result,
|
|
rasqal_xsd_decimal* a, rasqal_xsd_decimal* b);
|
|
int rasqal_xsd_decimal_multiply(rasqal_xsd_decimal* result,
|
|
rasqal_xsd_decimal* a, rasqal_xsd_decimal* b);
|
|
int rasqal_xsd_decimal_divide(rasqal_xsd_decimal* result,
|
|
rasqal_xsd_decimal* a, rasqal_xsd_decimal* b);
|
|
int rasqal_xsd_decimal_negate(rasqal_xsd_decimal* result,
|
|
rasqal_xsd_decimal* a);
|
|
</pre>
|
|
|
|
<p>Comparison methods:</p>
|
|
<pre>
|
|
int rasqal_xsd_decimal_compare(rasqal_xsd_decimal* a, rasqal_xsd_decimal* b);
|
|
int rasqal_xsd_decimal_equals(rasqal_xsd_decimal* a, rasqal_xsd_decimal* b);
|
|
int rasqal_xsd_decimal_is_zero(rasqal_xsd_decimal* d);
|
|
</pre>
|
|
|
|
|
|
<h3>Query Results Formatter Class Changes</h3>
|
|
|
|
<p>Updated to the 4th version of the SPARQL XML Results format by
|
|
removing the <code>ordered</code> and <code>distict</code>
|
|
attributes. Removed support for all the earlier versions 1 to 3.</p>
|
|
|
|
|
|
<h3><code>roqet</code> Utility Changes</h3>
|
|
|
|
<p>Added <code>-D</code> / <code>--data</code> options for specifying
|
|
data URis for the default graph and <code>-G</code> /
|
|
<code>--named</code> for URIs of named graphs (the existing
|
|
<code>-s</code> is a also a synonym for the latter).
|
|
</p>
|
|
|
|
|
|
<h3>Other Changes</h3>
|
|
|
|
<p>Many internal fixes and cleanups after failures so that memory is
|
|
not lost and/or rasqal does not crash. These many changes were
|
|
primarily made by Lauri Aalto.</p>
|
|
|
|
<p>Several portability fixes for helping with low-memory, embedded
|
|
systems and using a compiler that is not gcc.
|
|
</p>
|
|
|
|
<p>The SPARQL test runner <code>check-sparql</code> was improved to
|
|
read the SPARQL XML Results format (but not via
|
|
<code>XML::Simple</code> because it is insanely complex and
|
|
counterintuitive), handle DAWG test manifests and generate EARL
|
|
reports. It also has new help and usage messages.
|
|
</p>
|
|
|
|
|
|
<h2 id="rel0_9_14"><a name="rel0_9_14">Rasqal 0.9.14 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Added syntax and API support (but no query engine support)
|
|
for <b>experimental</b> extensions to SPARQL called
|
|
<a href="http://www.dajobe.org/2007/04/laqrs/">LAQRS</a>:
|
|
LAQRS Adds to Querying RDF in SPARQL.
|
|
</p>
|
|
|
|
<p>Updated the query results formatter to allow better introspection
|
|
of supported formats.</p>
|
|
|
|
<p>Fixed issues:</p>
|
|
<ul>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=152">Issue#0000152</a>: Allow <code><_:NAME></code> to work as <code>_:NAME</code> in SPARQL.</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=156">Issue#0000156</a>: Add LAQRS extensions to SPARQL grammar</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=160">Issue#0000160</a>: rasqal_strcasecmp without prototype</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=167">Issue#0000167</a>: Make CONSTRUCT work with LIMIT</li>
|
|
<li><a href="http://bugs.librdf.org/mantis/view.php?id=182">Issue#0000182</a>: Allow '-' in SPARQL language tags (and RDQL)</li>
|
|
</ul>
|
|
|
|
|
|
<h3>LAQRS Adds to Querying RDF in SPARQL (LAQRS)</h3>
|
|
|
|
<p>LAQRS is <b>experimental</b> and Rasqal provides only syntax and
|
|
API support (but no query engine support) for:</p>
|
|
<ul>
|
|
<li><code>DELETE</code> via query verb <code>RASQAL_QUERY_VERB_DELETE</code></li>
|
|
<li><code>EXPLAIN</code> as a keyword allowed before any query. Returned by <code>rasqal_query_get_explain()</code></li>
|
|
<li><code>INSERT</code> via query verb <code>RASQAL_QUERY_VERB_INSERT</code></li>
|
|
<li><code>COUNT()</code> and COUNT(*) via new expressions <code>RASQAL_EXPR_COUNT</code> and <code>RASQAL_EXPR_VARSTAR</code></li>
|
|
<li><code>SELECT </code><em>expression</em> <code>AS</code> <em>variable</em> via the new expression field of rasqal_variable</li>
|
|
<li><code>GROUP BY</code> results via rasqal_query_get_group_conditions_sequence() and rasqal_query_get_group_condition() and new expressions <code>RASQAL_EXPR_GROUP_COND_ASC</code> and <code>RASQAL_EXPR_GROUP_COND_DESC</code></li>
|
|
</ul>
|
|
|
|
<p>Repeating <b>THERE IS NO QUERY ENGINE SUPPORT FOR ANY OF THE ABOVE</b></p>
|
|
|
|
<p>LAQRS is not enabled by default in Rasqal (unless using
|
|
maintainer mode or building from Subversion). To enable it,
|
|
configure Rasqal like this:</p>
|
|
<pre>
|
|
$ ./configure '--enable-query-languages=sparql rdql laqrs'
|
|
...
|
|
|
|
Rasqal build summary:
|
|
RDF query languages available : rdql sparql
|
|
RDF query languages enabled : sparql rdql laqrs
|
|
Triples source : raptor 1.4.15
|
|
$
|
|
</pre>
|
|
|
|
<p>The API changes for LAQRS are as follows:</p>
|
|
|
|
<p>Added new query verbs <code>RASQAL_QUERY_VERB_DELETE</code> and
|
|
<code>RASQAL_QUERY_VERB_INSERT</code>
|
|
</p>
|
|
|
|
<p>Added a constructor to create a constant or 0-operand expression
|
|
(for COUNT):</p>
|
|
<pre>
|
|
rasqal_expression* rasqal_new_0op_expression(rasqal_op op);
|
|
</pre>
|
|
|
|
<p>Added a query method to get the explain flag:</p>
|
|
<pre>
|
|
int rasqal_query_get_explain(rasqal_query* query);
|
|
</pre>
|
|
|
|
<p>Added a query method to get the 'group by' condition expressions:</p>
|
|
<pre>
|
|
raptor_sequence*
|
|
rasqal_query_get_group_conditions_sequence(rasqal_query* query);
|
|
|
|
rasqal_expression*
|
|
rasqal_query_get_group_condition(rasqal_query* query, int idx);
|
|
</pre>
|
|
|
|
<p>Added <code>rasqal_expression</code> expression types:</p>
|
|
<ul>
|
|
<li><code>RASQAL_EXPR_GROUP_COND_ASC</code> for group condition ascending.</li>
|
|
<li><code>RASQAL_EXPR_GROUP_COND_DESC</code> for group condition descending.</li>
|
|
<li><code>RASQAL_EXPR_COUNT</code> for select <code>COUNT()</code></li>
|
|
<li><code>RASQAL_EXPR_VARSTAR</code> for select <code>COUNT(*)</code></li>
|
|
</ul>
|
|
|
|
<p><code>rasqal_variable</code> now has
|
|
a <code>rasqal_expression*</code> field <code>expression</code>.
|
|
</p>
|
|
|
|
|
|
<h3>Configuration and Build Changes</h3>
|
|
|
|
<p>The pkgconfig rasqal.pc file and the <code>rasqal-config</code>
|
|
script now separates directly linked shared libraries and indirectly
|
|
linked ones. This prevents unnecessary references to libraries. The
|
|
regular libraries includes -L plus <code>-lrasqal</code> and the
|
|
dynamic and static libraries are available with:</p>
|
|
<ul>
|
|
<li><code>pkgconfig rasqal --static --libs</code></li>
|
|
<li><code>rasqal-config --libs --private-libs</code></li>
|
|
</ul>
|
|
|
|
<p>So for example to statically link with rasqal, use either:</p>
|
|
<pre>
|
|
$ cc .. -o foo foo.c `pkgconfig rasqal --static --libs`
|
|
|
|
$ cc .. -o foo foo.c `rasqal-config --libs --private-libs`
|
|
</pre>
|
|
|
|
|
|
<h3>Query Results Formatter Changes</h3>
|
|
|
|
<p>Made it easier to discover and create of query results in a syntax
|
|
by using a MIME Type.</p>
|
|
|
|
<p>Added query results formatter constructor by required mime type:</p>
|
|
<pre>
|
|
rasqal_query_results_formatter*
|
|
rasqal_new_query_results_formatter_by_mime_type(const char *mime_type);
|
|
</pre>
|
|
<p>Added a method to return the mime type of a selected formatter:</p>
|
|
<pre>
|
|
const char*
|
|
rasqal_query_results_formatter_get_mime_type(
|
|
rasqal_query_results_formatter *formatter);
|
|
</pre>
|
|
|
|
<p>Added another query results formatter static method to enumerate
|
|
possible results formats, their names, labels and (new) mime type.</p>
|
|
<pre>
|
|
int
|
|
rasqal_query_results_formats_enumerate_full(const unsigned int counter,
|
|
const char **name, const char **label,
|
|
const unsigned char **uri_string, const char **mime_type);
|
|
</pre>
|
|
|
|
<p>Added a static method to check for support for a query results
|
|
format.</p>
|
|
<pre>
|
|
int rasqal_query_results_formats_check(const char *name,
|
|
raptor_uri* uri, const char *mime_type);
|
|
</pre>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Updated for the
|
|
<a href="http://www.w3.org/TR/2007/WD-rdf-sparql-query-20070326/">SPARQL Query Language for RDF</a>, W3C Working Draft 26 March 2007</p>
|
|
<ul>
|
|
<li>Added <code>REDUCED</code> token. This entailed changing the
|
|
distinct flag from a boolean to a mode.
|
|
<code>rasqal_query_get_distinct</code> and
|
|
<code>rasqal_query_set_distinct</code> now takes a mode (0, 1
|
|
DISTINCT, 2 REDUCED) rather than the former boolean flag.
|
|
There is no query engine support for REDUCED at present.
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Added the possibility that a query's native result is a syntax
|
|
(rather than natively bindings, boolean or triples) and added
|
|
a method to check for that:</p>
|
|
<pre>
|
|
int rasqal_query_results_is_syntax(rasqal_query_results* query_results);
|
|
</pre>
|
|
|
|
<p>Many query engine internal changes, but these remain unsupported:
|
|
OPTIONAL graph pattern (partially working), GROUP graph pattern (no
|
|
support), UNION graph pattern (no support) and new <code>SELECT
|
|
REDUCED</code> (no support).
|
|
</p>
|
|
|
|
|
|
<h3><code>roqet</code> Utility Changes</h3>
|
|
|
|
<p><code>roqet</code> can use -r to generate a chosen result syntax
|
|
for bindings results or triples (using raptor).</p>
|
|
|
|
<p>roqet now generates namespace declarations for triples when
|
|
serializing output. The result is that they are used when the
|
|
serializer handles them such as generating RDF/XML (Abbreviated)
|
|
or Turtle.
|
|
</p>
|
|
|
|
|
|
<h3>Other Changes</h3>
|
|
|
|
<p><code>rasqal_expression</code> lost the unused
|
|
<code>rasqal_variable*</code> field <code>variable</code>
|
|
</p>
|
|
|
|
<p>Added exported variables to return the license string
|
|
in <code>rasqal_license_string</code>
|
|
and home page in <code>rasqal_home_url_string</code>
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="rel0_9_13"><a name="rel0_9_13">Rasqal 0.9.13 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Added a new <code>rasqal_query_results_formatter</code> class.
|
|
</p>
|
|
|
|
<p>Many internal query engine changes, mostly to separate query and
|
|
query_results internals so that eventually the run-time execution
|
|
context is entirely separated from the static query structure.
|
|
</p>
|
|
|
|
<p>Added query features system with one initial feature
|
|
<code>RASQAL_FEATURE_NO_NET</code>.</p>
|
|
|
|
|
|
<h3>Configuration and Build Changes</h3>
|
|
|
|
<p>Allow shell variable <code>LEX</code> to be set to things that
|
|
aren't exactly <code>flex</code> Recommend flex 2.5.33 and update
|
|
configure to point at the main flex site whichq finally gets 2.5.33
|
|
after 9 years.</p>
|
|
|
|
<p><code>PKGCONFIG</code> vars not substituted
|
|
correctly in configure.ac. Remove @LDFLAGS from rasqal.pc.in.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=98">Issue#0000098</a>.
|
|
</p>
|
|
|
|
<p>Win32 build fixes.Correct win32 static linking of rasqal.
|
|
(Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=100">Issue#0000100</a>)
|
|
and include float.h and <code>#define isnan</code> on win32.
|
|
(Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=111">Issue#0000111</a>).
|
|
</p>
|
|
|
|
<p>In maintainer mode, add all the supported compiler <code>-W</code>
|
|
warning flags to the CFLAGS.
|
|
</p>
|
|
|
|
<p>Declare several rasqal functions with GCC printf-formatting
|
|
attributes when using a new enough GCC.</p>
|
|
|
|
<p>Remove broken debug messages.
|
|
<a href="http://bugs.librdf.org/mantis/view.php?id=131">#0000131</a>.
|
|
</p>
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Added labels to grammar tokens using bison to give better error messages.</p>
|
|
|
|
<p>Fix looking for EOF in an unsigned variable since it may be negative
|
|
on some systems.</p>
|
|
|
|
<p>The query engine now implements SPARQL <code>GRAPH</code> matching.
|
|
</p>
|
|
|
|
|
|
<h3>RDQL Query Language Changes</h3>
|
|
|
|
<p>Added labels to grammar tokens using bison to give better error messages.</p>
|
|
|
|
<p>Fix looking for EOF in an unsigned variable since it may be negative
|
|
on some systems.</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>The query engine now implements SPARQL <code>GRAPH</code> matching.
|
|
</p>
|
|
|
|
<p>Merge only all adjacent sequences of basic graph pattern triples, not
|
|
anything with triples such as optional BGP triples.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=80">Issue#0000080</a>.
|
|
</p>
|
|
|
|
<p>When an exact triple match is present, do not execute a query forever.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=94">Issue#0000094</a>.
|
|
</p>
|
|
|
|
<p> Fail if a variable argument to <code>LANG()</code> has an
|
|
undefined value rather than try to execute a NULL pointer.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=113">Issue#0000113</a>.
|
|
</p>
|
|
|
|
<p>Add query / query_results link early so reference counting is done right.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=95">Issue#0000095</a>.
|
|
</p>
|
|
|
|
<p>Report failure as well as query finished when an error occurs
|
|
during making results.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=118">Issue#0000118</a>.
|
|
</p>
|
|
|
|
<p>Added a hack to check an outer constraint expression.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=129">Issue#0000129</a>.
|
|
</p>
|
|
|
|
<p>Free origins (<code>GRAPH</code> nodes) in triples to prevent memory leak.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=133">Issue#0000133</a>.
|
|
</p>
|
|
|
|
|
|
|
|
<h3>Query API Changes</h3>
|
|
|
|
<p>Added a new <code>rasqal_query_results_formatter</code> class to
|
|
format <code>librdf_query_results</code> into a syntax. Also added
|
|
a <code>rasqal_query_results_formats_enumerate()</code> function to
|
|
enumerate all the supported formats. The query results
|
|
method <code>rasqal_query_results_write()</code> was changed to use
|
|
this class internally.
|
|
</p>
|
|
|
|
<p>Added a new feature system to allow setting parameters on
|
|
the query parser/engine. Initially have one
|
|
feature <code>RASQAL_FEATURE_NO_NET</code> that prevents
|
|
network requests during a query execution.
|
|
Added functions:
|
|
<code>rasqal_features_enumerate</code>,
|
|
<code>rasqal_get_feature_count</code>,
|
|
<code>rasqal_feature_from_uri</code>,
|
|
<code>rasqal_feature_value_type</code>,
|
|
<code>rasqal_query_set_feature</code>,
|
|
<code>rasqal_query_set_feature_string</code>,
|
|
<code>rasqal_query_get_feature</code>,
|
|
<code>rasqal_query_get_feature_string</code>.
|
|
</p>
|
|
|
|
<p><code>roqet</code> gained a <code>-f</code>
|
|
/ <code>--feature</code> option to set query features.
|
|
</p>
|
|
|
|
|
|
<h2 id="rel0_9_12"><a name="rel0_9_12">Rasqal 0.9.12 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Added <a href="http://json.org/">JSON</a> as a query results
|
|
format based on the
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/json-sparql/">Serializing SPARQL Query Results in JSON</a>
|
|
draft.
|
|
</p>
|
|
|
|
<p>Added query writing to a <code>raptor_iostream</code> which allows
|
|
reading in one query language and writing in another. The only
|
|
useful consequence of this now is that it enables <code>roqet</code>
|
|
to become an RDQL to SPARQL translator.</p>
|
|
|
|
<p>Rasqal now requires <a href="http://librdf.org/raptor/">raptor</a>
|
|
1.4.9 or newer.
|
|
</p>
|
|
|
|
|
|
<h3>Configuration and Build Changes</h3>
|
|
|
|
<p>Now using subversion.</p>
|
|
|
|
|
|
<h3><code>roqet</code> utility Changes</h3>
|
|
|
|
<p>Altered the <code>-d</code> (<code>--dump-query</code>) option to
|
|
now take an argument of the query format to dump. The values it can
|
|
take are <code>debug</code>, <code>structure</code> or
|
|
<code>sparql</code>.</p>
|
|
|
|
<p>To convert a query from RDQL to SPARQL, use:</p>
|
|
<pre>
|
|
roqet -q -i rdql -d sparql -n query.rdql > query.sparql
|
|
</pre>
|
|
|
|
<p>Added <code>-r json</code> for <a href="http://json.org/">JSON</a>
|
|
query results output based on the draft defined in the
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/json-sparql/">Serializing SPARQL Query Results in JSON</a> draft
|
|
</p>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Updated to match
|
|
<a href="http://www.w3.org/TR/2006/CR-rdf-sparql-query-20060406/">SPARQL Query Language for RDF, W3C Candidate Recommendation 6 April 2006</a>.
|
|
All DAWG syntax tests now pass.
|
|
The update includes near alignment with SPARQL grammar term names
|
|
except where the flex/bison approach diverged.</p>
|
|
|
|
<p>Updated SPARQL tests from DAWG CVS</p>
|
|
|
|
<p>Finally removed long deprecated <code>ASC[]</code> and
|
|
<code>DESC[]</code> syntax.</p>
|
|
|
|
|
|
<h3>RDQL Query Language Changes</h3>
|
|
|
|
<p>Handle empty regex <code>//</code>
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=71">Issue#0000071</a>
|
|
</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Some updates to handle latest changes to SPARQL grammar.</p>
|
|
|
|
<p>Added <code>RASQAL_EXPR_REGEX</code> 3-arg operation to match
|
|
the SPARQL <code>regex()</code> 2/3-arg function.</p>
|
|
|
|
<p>Many internal changes to move more of the query execution state
|
|
from inside <code>rasqal_query</code> to
|
|
inside <code>rasqal_query_results</code> and related structures.
|
|
This is not yet complete but when done, you will be able to execute
|
|
the same query more than once at the same time.
|
|
</p>
|
|
|
|
|
|
<h3>Query API Changes</h3>
|
|
|
|
<p>Added <code>rasqal_query_write</code> to write a query
|
|
structure into a syntax onto a raptor_iostream. Implements
|
|
writing SPARQL format with format URI NULL,
|
|
<a href="http://www.w3.org/TR/rdf-sparql-query/">http://www.w3.org/TR/rdf-sparql-query/</a>
|
|
or
|
|
<a href="http://www.w3.org/TR/2006/CR-rdf-sparql-query-20060406/">http://www.w3.org/TR/2006/CR-rdf-sparql-query-20060406/</a>
|
|
</p>
|
|
|
|
<p>Added a <a href="http://json.org/">JSON</a>
|
|
SPARQL query results format with format URI identifier
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/json-sparql/">http://www.w3.org/2001/sw/DataAccess/json-sparql/</a>
|
|
based on the draft defined in
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/json-sparql/">http://www.w3.org/2001/sw/DataAccess/json-sparql/</a>
|
|
Implemented document with version
|
|
<code>alt-ser-sparql.rst,v 1.3 2006/02/16 16:03:08 k Exp</code>.
|
|
</p>
|
|
|
|
<p><code>rasqal_query_get_all_variable_sequence</code> was corrected to match the
|
|
definition - return all variables, not just the bound (<code>SELECT</code>ed) ones.
|
|
Fixes <a href="http://bugs.librdf.org/mantis/view.php?id=79">Issue#00000079</a>.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_query_get_anonymous_variable_sequence</code> to return
|
|
only anonymous variables after change above.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_graph_pattern_get_index</code> to get the
|
|
absolute index of a graph pattern in a graph.
|
|
</p>
|
|
|
|
|
|
<h3>IOstream class Changes</h3>
|
|
|
|
<p>Added
|
|
<code>rasqal_query_iostream_write_escaped_counted_string</code> and
|
|
<code>rasqal_query_escape_counted_string</code>
|
|
to format an escaped string suitable for using inside a query.
|
|
</p>
|
|
|
|
|
|
<h3>Documentation Changes</h3>
|
|
|
|
<p>Updated <code>roqet.1</code> for --exec option and new usages.</p>
|
|
|
|
|
|
<h2 id="rel0_9_11"><a name="rel0_9_11">Rasqal 0.9.11 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Duplicated <code>SELECT</code> variables are now detected, give a
|
|
warning and are removed.
|
|
</p>
|
|
|
|
<p>Rasqal now requires <a href="http://librdf.org/raptor/">raptor</a>
|
|
1.4.8 or newer to get the <em>guess</em> parser that uses URI/name
|
|
and mime type returned from protocol request (if available) to choose
|
|
the correct parser.
|
|
</p>
|
|
|
|
<p>Added an internal <code>rasqal_map</code> key : value map for use
|
|
with result duplicate detection and ordering.
|
|
</p>
|
|
|
|
<p>A major source code regoranisation moved all library source code
|
|
to the <code>src/</code> dir, roqet to <code>utils/</code> and other
|
|
documentation to <code>docs/</code>. This should only affect
|
|
packagers, not any functionality.</p>
|
|
|
|
<p>Many more function documentation were added to the sources for use
|
|
by gtk-doc.</p>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Updated to the
|
|
<a href="http://www.w3.org/TR/2005/WD-rdf-sparql-query-20051123/">SPARQL Query Language for RDF W3C Working Draft 23 November 2005</a>:</p>
|
|
<ul>
|
|
<li>Added <code>isIRI</code> keywords.</li>
|
|
<li>Updated the name definitions to allow initial _ in variable names.</li>
|
|
<li>Changed the decimal and double literal syntax.</li>
|
|
<li>Allow negative numeric literals.</li>
|
|
<li>Change the AND and OR logic when an error is present.</li>
|
|
</ul>
|
|
|
|
<p>Added a post 2005-11-23 SPARQL WD syntax change: added
|
|
<code>langMatches</code> operator and initial query engine support.
|
|
</p>
|
|
|
|
<p>Invalid <code>\u</code><em>HHHH</em> and
|
|
<code>\U</code><em>HHHHHHHH</em> hex escapes and floating point
|
|
number formats are detected and warned.</p>
|
|
|
|
<p>Updates to the query engine make <code>DISTINCT</code>
|
|
and <code>ORDER BY</code> now work, including with <code>LIMIT</code>.
|
|
</p>
|
|
|
|
<p>The lexer now counts line numbers correctly over multi-line
|
|
comments.</p>
|
|
|
|
<p>Updated changes to the valid characters allowed in SPARQL names
|
|
for variable, prefix and QNames.</p>
|
|
|
|
|
|
<h3>RDQL Query Language Changes</h3>
|
|
|
|
<p>The lexer now counts line numbers correctly over multi-line
|
|
comments.</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>When query result sorting is used with limit
|
|
(SPARQL <code>LIMIT</code>) and offset, they now work correctly,
|
|
performing the limit and offset after ordering the result. This
|
|
matches the SPARQL query result semantics.
|
|
</p>
|
|
|
|
<p>The query engine now implements distinct results
|
|
(SPARQL <code>DISTINCT</code>) including with ordering
|
|
(SPARQL <code>ORDER BY</code>).
|
|
</p>
|
|
|
|
<p>More cases with optional graph patterns (SPARQL
|
|
<code>OPTIONAL</code>s) are now executed correctly.
|
|
Note: this does <em>not</em> mean all cases work, there are known
|
|
problems with executing optional clauses.</p>
|
|
|
|
<p>Added types for <code>xsd:float</code> (C float)
|
|
and <code>xsd:double</code> (C double); <code>xsd:decimal</code>
|
|
(handled as a string) and <code>xsd:datetime</code> (as a string).
|
|
</p>
|
|
|
|
<p>Fixed (a compare b) between integers and doubles to be the right sign.
|
|
</p>
|
|
|
|
<p>Do not promote literals early on in comparisons to strings "perl
|
|
style" but do the best type-based comparsion as late as possible.
|
|
</p>
|
|
|
|
|
|
<h3>Query API Changes</h3>
|
|
|
|
<p>Added <code>rasqal_new_double_literal</code>.</p>
|
|
|
|
<p>Added <code>rasqal_graph_pattern_visit</code> and type for visitor
|
|
function <code>rasqal_graph_pattern_visit_fn</code>.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_new_expression_from_expression</code>.</p>
|
|
|
|
<p>Added <code>rasqal_expression_visit</code> and type for visitor
|
|
function <code>rasqal_expression_visit_fn</code>.
|
|
</p>
|
|
|
|
<p>Deprecated function <code>rasqal_new_floating_literal</code> replaced by
|
|
new <code>rasqal_new_double_literal</code>.
|
|
</p>
|
|
|
|
<p>Deprecated function <code>rasqal_expression_foreach</code>,
|
|
replaced by new <code>rasqal_expression_visit</code>.
|
|
</p>
|
|
|
|
<p>Function <code>rasqal_expression_evaluate</code> gains a flag
|
|
argument of new enum <code>rasqal_compare_flags</code>.</p>
|
|
|
|
<p>Added enum <code>rasqal_compare_flags</code> flags for
|
|
<code>rasqal_expression_evaluate</code> or
|
|
<code>rasqal_literal_compare</code>. Type
|
|
<code>RASQAL_COMPARE_XQUERY</code> can be used with
|
|
to ask for use of XQuery comparison and type promotions.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_literal</code> types:
|
|
<code>RASQAL_LITERAL_DECIMAL</code>,
|
|
<code>RASQAL_LITERAL_DATETIME</code>,
|
|
<code>RASQAL_LITERAL_DOUBLE</code> (replacing deprecated
|
|
<code>RASQAL_LITERAL_FLOATING</code>) and
|
|
<code>RASQAL_LITERAL_FLOAT</code>. Reordered the
|
|
<code>rasqal_literal</code> types in the enum.
|
|
</p>
|
|
|
|
<p>The enum types in <code>rasqal_literal_type</code> were reordered
|
|
to make them match sparql type promotion.</p>
|
|
|
|
|
|
<h3><code>roqet</code> utility program changes</h3>
|
|
|
|
<p><code>roqet</code> gains -e/--exec option to execute a query
|
|
string directly rather than via a file or URI containing the query.
|
|
</p>
|
|
|
|
<p>Now writes out XML results format in format with version URI
|
|
<code>http://www.w3.org/2005/06/sparqlResults</code> and short name
|
|
"xml". The previous version is available with short name "xml-v2".
|
|
The latest version now writes <code>ordered</code>
|
|
and <code>distinct</code> boolean-valued attributes on
|
|
the <code>results</code> element.
|
|
</p>
|
|
|
|
|
|
<h3>Configuration Changes</h3>
|
|
|
|
<p>The autogen.sh script for building from CVS was revamped to be
|
|
more modular.</p>
|
|
|
|
<p><code>configure</code> now takes an <code>--enable-gtk-doc</code>
|
|
option to enable building of the documentation using the
|
|
<code>gtk-doc</code> utility. It is by default enabled only if the
|
|
utility is available.
|
|
</p>
|
|
|
|
|
|
<h3>Documentation Changes</h3>
|
|
|
|
<p>The GNOME <code>gtk-doc</code> program is now used to
|
|
automatically extract documentation from source comments into
|
|
reference documentation. This is then merged with templates and
|
|
additional documentation to provide a reference manual for rasqal
|
|
as XML document which is turned into HTML along with GNOME devhelp
|
|
support.</p>
|
|
|
|
<p>This new documentation intended to replace the librasqal manual
|
|
page/web page as easier to read document with scope for better
|
|
expanding with more detail of rasqal including examples and tutorial
|
|
information.
|
|
The <a href="http://librdf.org/rasqal/librasqal.html">librasqal</a>
|
|
manual page will continue to contain the summary information for the
|
|
present.
|
|
</p>
|
|
|
|
|
|
<h2 id="rel0_9_10"><a name="rel0_9_10">Rasqal 0.9.10 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>The query engine now supports ordering query results, in SPARQL
|
|
this is the <code>ORDER BY</code> clause.</p>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>The SPARQL parser now passes (accepts) all the 70+
|
|
<em>SyntaxFull</em> tests in the RDF Data Access Working Group (DAWG)
|
|
test suite for SPARQL. This mostly means accepting optional
|
|
punctuation in some places.
|
|
</p>
|
|
|
|
<p>Sorting results with <code>ORDER BY</code> now partially works
|
|
however comparison is not done with the SPARQL literal comparison
|
|
rules (after XQuery) but using the existing RDQL-style "string-y"
|
|
comparisons.
|
|
</p>
|
|
|
|
<p>Allow <code><></code> as a URI.</p>
|
|
|
|
<p>The SPARQL parser now accepts some changes made by the DAWG after
|
|
the last published working draft:
|
|
<a href="http://www.w3.org/TR/2005/WD-rdf-sparql-query-20050419/">SPARQL Query Language for RDF</a>,
|
|
W3C Working Draft, 19 April 2005. This includes:</p>
|
|
|
|
<ul>
|
|
<li>In <code>ORDER BY</code>
|
|
<code>ASC(</code>expression<code>)</code> replaces <code>ASC[...]</code>,
|
|
<code>DESC(</code>expression<code>)</code> replaces <code>DESC[...]</code>,
|
|
and it also accepts <code>ORDER BY (</code>expression<code>)</code>.
|
|
<code>ORDER BY </code>func()<code></code> is accepted although at
|
|
present no extension function support is available that could use it.
|
|
</li>
|
|
|
|
<li><code>[]</code> can be used in the triple predicate position
|
|
as an anonymous existential variable</li>
|
|
|
|
<li>Enforce that ASK queries cannot use <code>ORDER BY</code>,
|
|
<code>LIMIT</code> or <code>OFFSET</code></li>
|
|
|
|
</ul>
|
|
|
|
<p>Omitting <code>WHERE</code> gives a warning. Don't do that!</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>The query engine now allows sorting of results (<code>ORDER BY</code>
|
|
in SPARQL). It performs comparisons using the existing RDQL style
|
|
and does not yet support the SPARQL literal comparison rules. Sorting
|
|
can be done by a sequence of expressions, ascending or descending.
|
|
If the final result is equality, the object pointers are used.</p>
|
|
|
|
<p>Note: removal of duplicates is not supported yet.</p>
|
|
|
|
<p>Some test code for datatypes support was added, not enabled by
|
|
default and not yet useful.</p>
|
|
|
|
|
|
<h3>Query API Changes</h3>
|
|
|
|
<p>Removed functions deprecated in 0.9.9.</p>
|
|
|
|
<p>Added <code>rasqal_graph_pattern_operator</code> enumeration with
|
|
values for the main SPARQL graph patterns, graph pattern class method
|
|
<code>rasqal_graph_pattern_get_operator</code> and graph pattern
|
|
utility function <code>rasqal_graph_pattern_operator_as_string</code></p>
|
|
|
|
<p>Modified the type of the final argument of
|
|
<code>rasqal_new_graph_pattern_from_sequence</code> and
|
|
<code>rasqal_graph_pattern_add_triples</code> from an integer to a
|
|
<code>rasqal_graph_pattern_operator</code> enumeration.</p>
|
|
|
|
<p>Deprecated function <code>rasqal_graph_pattern_get_flags</code>
|
|
now always returning 0 replaced by the graph pattern operator
|
|
functions listed above .</p>
|
|
|
|
|
|
<h3><code>roqet</code> utility program changes</h3>
|
|
|
|
<p>Removed deprecated flags -f and -o</p>
|
|
|
|
|
|
<h2 id="rel0_9_9"><a name="rel0_9_9">Rasqal 0.9.9 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>SPARQL is now the default query language</p>
|
|
|
|
<p>Added a signing memory debugging system to aid checking when
|
|
rasqal-allocated memory is freed in another library or vice-versa
|
|
enabled by <code>--with-memory-signing</code> configure option
|
|
(defaults to on in maintainer mode).</p>
|
|
|
|
<p>Fixed a few internal malloc/frees to use RASQAL_MALLOC / RASQAL_FREE
|
|
so that the above signed memory system worked.</p>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Grammar updated to follow the
|
|
<a href="http://www.w3.org/TR/2005/WD-rdf-sparql-query-20050419/">SPARQL Query Language for RDF</a>,
|
|
W3C Working Draft, 19 April 2005. This changes many parts of the syntax:
|
|
</p>
|
|
<ul>
|
|
<li>Turtle/N3 style for triples with abbreviations</li>
|
|
<li><code>{</code> ... <code>}</code> around triple patterns</li>
|
|
<li><code>OPTIONAL</code> instead of <code>[]</code></li>
|
|
<li><code>GRAPH</code> replaces <code>SOURCE</code></li>
|
|
<li><code>FROM NAMED</code> replaces <code>LOAD</code></li>
|
|
<li><code>FILTER</code> replaces <code>AND</code></li>
|
|
<li><code>REGEX</code> replaces <code>?var =~ /match/flags</code>
|
|
and <code>!~</code></li>
|
|
<li>Added <code>LIMIT</code>, <code>OFFSET</code> and
|
|
<code>ORDER BY</code> with <code>ASC[]</code> and <code>DESC[]</code></li>
|
|
<li>Changed function syntax to remove <code>&</code></li>
|
|
<li>Removed old operator tokens: <code>ne</code>, <code>eq</code>, <code>==</code></li>
|
|
</ul>
|
|
|
|
<p>(Note: the query engine does not support sorting amongst other
|
|
recently added SPARQL features)</p>
|
|
|
|
<p>SPARQL keywords are now case independent rather than just upper
|
|
or lowercase.</p>
|
|
|
|
<p>Added """long literals""" after N3 (and soon, Turtle)
|
|
and '''long literals''' for SPARQL only.
|
|
</p>
|
|
|
|
<p>Added many SPARQL tests from DAWG most not yet approved by the
|
|
working group. Not all pass either because not implemented or
|
|
known bugs.</p>
|
|
|
|
<p>Added the revised
|
|
<em>SPARQL Query Results XML Format</em> (the latest version not yet published)
|
|
support to <code>rasqal_query_results_write</code> when called with
|
|
format URI <code>http://www.w3.org/2001/sw/DataAccess/rf1/result2</code>.
|
|
</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Uses the query results limit and offset information to skip
|
|
initial results (offset) and provide a maximum number of results (limit).
|
|
</p>
|
|
|
|
<p>Moved some engine-specific operations from RDQL and SPARQL parser.
|
|
</p>
|
|
|
|
<p>Added internal <code>rasqal_formula</code> class for the Turtle
|
|
part of the SPARQL parser
|
|
</p>
|
|
|
|
<p><strong>Deprecated</strong> the <code>rasqal_triples_source</code>
|
|
factory method <code>new_triples_match</code>. It is replaced by a
|
|
new method <code>init_triples_match</code> and will be removed from
|
|
the next release.</p>
|
|
|
|
|
|
|
|
<h3>Query API Changes</h3>
|
|
|
|
<p>Added bnode identifier generation functions:
|
|
<code>rasqal_query_set_default_generate_bnodeid_parameters</code>,
|
|
<code>rasqal_query_set_generate_bnodeid_handler</code> based on the
|
|
raptor API for generating blank node identifiers in the Turtle/N3
|
|
triple style.
|
|
</p>
|
|
|
|
<p>Added <code>order_conditions_sequence</code> to the query
|
|
structure to store query ordering conditions and added access methods
|
|
<code>rasqal_query_get_order_conditions_sequence</code> and
|
|
<code>rasqal_query_get_order_condition</code> to read the resulting
|
|
expressions.
|
|
</p>
|
|
|
|
<p>Added expressions for SPARQL ordering conditions:
|
|
<code>RASQAL_EXPR_ORDER_COND_ASC</code>,
|
|
<code>RASQAL_EXPR_ORDER_COND_DESC</code> and
|
|
<code>RASQAL_EXPR_ORDER_COND_NONE</code>.
|
|
</p>
|
|
|
|
|
|
<p>Added types for variables in two version - normal and anonymous
|
|
with an new enum <code>rasqal_variable_type</code> and
|
|
<code>rasqal_new_variable_typed</code> to allow creating them.
|
|
</p>
|
|
|
|
<p>Completed the distinct/limit and offset get/set methods by adding:
|
|
<code>rasqal_query_set_distinct</code>,
|
|
<code>rasqal_query_set_limit</code>,
|
|
<code>rasqal_query_get_offset</code> and
|
|
<code>rasqal_query_set_offset</code>
|
|
</p>
|
|
|
|
<p>Deprecated the <code>rasqal_triple</code> flags field - the value
|
|
<code>RASQAL_TRIPLE_FLAGS_EXACT</code> was only used in internals of
|
|
the execution engine. The value
|
|
<code>RASQAL_TRIPLE_FLAGS_OPTIONAL</code> was never used. Optionals
|
|
are now noted on graph patterns. Deprecated
|
|
<code>rasqal_triple_set_flags</code> and
|
|
<code>rasqal_triple_get_flags</code>.
|
|
</p>
|
|
|
|
<p>Added enum <code>rasqal_query_verb</code> for the main query verbs:
|
|
<code>RASQAL_QUERY_VERB_SELECT</code>
|
|
<code>RASQAL_QUERY_VERB_CONSTRUCT</code>
|
|
<code>RASQAL_QUERY_VERB_DESCRIBE</code> and
|
|
<code>RASQAL_QUERY_VERB_ASK</code>.
|
|
Added method <code>rasqal_query_get_verb</code> to access the verb.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_query_get_query_graph_pattern</code> to get the
|
|
top graph pattern.</p>
|
|
|
|
<p>Added <code>rasqal_query_get_wildcard</code> to get the query verb
|
|
wildcard flag such as with SPARQL <code>SELECT *</code>
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_query_get_construct_triples_sequence</code> and
|
|
<code>rasqal_query_get_construct_triple</code> to get the triples
|
|
made from a SPARQL <code>CONSTRUCT</code> query.</p>
|
|
|
|
|
|
<h3><code>roqet</code> utility program changes</h3>
|
|
|
|
<p>Updated roqet to include better query structure walking with
|
|
<code>-w</code> / <code>--walk</code> including listing query verb,
|
|
distinct, limit, offset flags, construct triples and easier to read
|
|
groupings of graph patterns and triples.</p>
|
|
|
|
<p>Deprecated roqet arguments <code>-f</code> / <code>--format</code>
|
|
and <code>-o</code> / <code>--output</code> in place of
|
|
<code>-r</code> / <code>--results</code> as both choose the query
|
|
results format.
|
|
</p>
|
|
|
|
<p>SPARQL is now the default query language for roqet.</p>
|
|
|
|
|
|
|
|
<h2 id="rel0_9_8"><a name="rel0_9_8">Rasqal 0.9.8 Changes</a></h2>
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Grammar updated to follow the
|
|
<a href="http://www.w3.org/TR/2005/WD-rdf-sparql-query-20050217/">SPARQL Query Language for RDF</a>,
|
|
W3C Working Draft, 17 February 2005.
|
|
</p>
|
|
|
|
<p>Added support for casting in constraint expresions for datatyped literals
|
|
with the syntax <em>qname</em><code>(</code><em>literal</em><code>)</code>
|
|
such as <code>xsd:decimal("10")</code>.
|
|
</p>
|
|
|
|
<p>Added named graphs parsing with <code>LOAD</code> and note that
|
|
<code>UNION</code> cannot be handled yet, <code>SOURCE</code> and
|
|
<code>[</code>...<code>]</code> syntax for optionals are deprecated.
|
|
</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Engine now operates over a hierarchy of
|
|
<code>rasqal_graph_pattern</code> objects, where at the root the
|
|
query has a single <em>query graph</em> rather than a sequence of
|
|
graph patterns. The query graph contains the former sequence of
|
|
graph patterns.</p>
|
|
|
|
<p>Constraints can be applied to any graph pattern, not just at the
|
|
top level of a query.</p>
|
|
|
|
<p>Added casting expressions type <code>RASQAL_EXPR_CAST</code>
|
|
and constructor <code>rasqal_new_cast_expression</code>.</p>
|
|
|
|
<p>Fixed setting of a triple origin (SPARQL <code>GRAPH</code>) which
|
|
was not working in 0.9.7</p>
|
|
|
|
<p><code>xsd:boolean</code> RDF literals are now promoted into
|
|
internal <code>RASQAL_LITERAL_BOOLEAN</code> typed
|
|
<code>rasqal_literal</code> like for XSD integer and double.
|
|
</p>
|
|
|
|
<p>The query engine uses the named graph information when evaluating
|
|
queries, passing it to the <code>rasqal_triples_match</code> factory
|
|
methods either implemented with raptor or redland as a
|
|
<code>rasqal_triples_source_factory</code> and returning them
|
|
as results of variable bindings.
|
|
</p>
|
|
|
|
|
|
|
|
<h3>Query API Changes</h3>
|
|
|
|
<p>Added no-arg constructor
|
|
<code>rasqal_new_graph_pattern</code>
|
|
</p>
|
|
|
|
<p>Added method
|
|
<code>rasqal_graph_pattern_add_triples</code>
|
|
to add triples to an existing graph pattern.
|
|
</p>
|
|
|
|
<p>Added methods
|
|
<code>rasqal_graph_pattern_add_constraint</code>,
|
|
<code>rasqal_graph_pattern_get_constraint_sequence</code> and
|
|
<code>rasqal_graph_pattern_get_constraint</code>
|
|
to add constraints to a graph pattern.
|
|
</p>
|
|
|
|
<p>Added method
|
|
<code>rasqal_graph_pattern_add_sub_graph_pattern</code>
|
|
to add a sub-graph pattern to a graph pattern.
|
|
</p>
|
|
|
|
<p>Added a <em>Data Graph</em> class with constructor
|
|
<code>rasqal_new_data_graph</code>, destructor
|
|
<code>rasqal_free_data_graph</code> and debug method
|
|
<code>rasqal_data_graph_print</code>.
|
|
</p>
|
|
|
|
<p>Added query methods for data graphs:
|
|
<code>rasqal_query_add_data_graph</code>,
|
|
<code>rasqal_query_get_data_graph_sequence</code>,
|
|
<code>rasqal_query_get_data_graph</code>.
|
|
</p>
|
|
|
|
<p>Deprecated query methods
|
|
<code>rasqal_query_add_constraint</code>,
|
|
<code>rasqal_query_get_constraint_sequence</code>
|
|
<code>rasqal_query_get_constraint</code>,
|
|
<code>rasqal_query_add_source</code>,
|
|
<code>rasqal_query_get_source_sequence</code> and
|
|
<code>rasqal_query_get_source</code>. These will be removed in the
|
|
next release.</p>
|
|
|
|
<p>Removed functions deprecated in previous version:
|
|
<code>rasqal_query_get_variable_sequence</code>
|
|
and <code>rasqal_query_add_triple</code>.
|
|
</p>
|
|
|
|
|
|
<h2 id="rel0_9_7"><a name="rel0_9_7">Rasqal 0.9.7 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Fix a resource clean up when query results are either not read at
|
|
all or not fully exhausted. This caused a problem in Redland when it
|
|
held on to MySQL database handles despite a query having ended.</p>
|
|
|
|
<p>Added option <code>-n/--dryrun</code> to <code>roqet</code> to stop after
|
|
preparing the query. Added option <code>-w/--walk-query</code> to
|
|
walk and print the query using the graph API.</p>
|
|
|
|
<p>New build configuration and portability fixes for win32 (John Barstow)</p>
|
|
|
|
<p>Portability fixes for win32 - define <code>RASQAL_INLINE</code>
|
|
and use it as for raptor. (Dave Viner)</p>
|
|
|
|
<p>Make rasqal tests work when building against raptor in a sibling
|
|
source tree.</p>
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Added a graph pattern API with <code>rasqal_graph_pattern</code>
|
|
typedef and <code>rasqal_pattern_flags</code> enum with value
|
|
<code>RASQAL_PATTERN_FLAGS_OPTIONAL</code> to allow complete
|
|
walking of the query structure.</p>
|
|
|
|
<p>Two new methods to the query class were added to support this:
|
|
<code>rasqal_query_get_graph_pattern_sequence</code> to get the
|
|
raptor_sequence of graph patterns in a query and
|
|
<code>rasqal_query_get_graph_pattern</code> to get individual an
|
|
graph pattern by index.</p>
|
|
|
|
<p>The new graph pattern methods added are:</p>
|
|
<ul>
|
|
<li><code>rasqal_graph_pattern_get_triple</code> to get a
|
|
<code>raptor_triple</code> inside a graph pattern.</li>
|
|
<li><code>rasqal_graph_pattern_get_sub_graph_pattern_sequence</code> to
|
|
get the raptor_sequence of sub-graph patterns.</li>
|
|
<li><code>rasqal_graph_pattern_get_sub_graph_pattern</code> to get
|
|
a sub-graph pattern inside a graph pattern by index.</li>
|
|
<li><code>rasqal_graph_pattern_get_flags</code> to get a graph
|
|
pattern's flags.</li>
|
|
<li><code>rasqal_graph_pattern_print</code> to print a graph
|
|
pattern in a debug form.</li>
|
|
</ul>
|
|
|
|
<p>Deprecated <code>rasqal_query_add_triple</code> as it doesn't
|
|
construct the graph patterns and is of little use as it does not
|
|
build the correct query structures.</p>
|
|
|
|
<p>Added query API methods to get the bound and all variables
|
|
in a query: <code>rasqal_query_get_bound_variable_sequence</code>
|
|
and <code>rasqal_query_get_all_variable_sequence</code> respectively.
|
|
Deprecated <code>rasqal_query_get_variable_sequence</code> as
|
|
too ambiguous.</p>
|
|
|
|
<p>With the aid of gcc <code>-Wswitch-enum</code>, found and fixed
|
|
cases where switch on enumerated values were missing cases. The
|
|
remaining cases return failure or an error message rather than
|
|
abort(). This fixed a crash when comparing for equality a variable
|
|
?x with a blank node value and an interger.</p>
|
|
|
|
<p>Deleted <code>RASQAL_EXPR_PATTERN</code> as it was never used.</p>
|
|
|
|
<p>Added <code>rasqal_query_get_distinct</code> to get a
|
|
query-specified distinct results flag.</p>
|
|
|
|
<p>Added <code>rasqal_query_get_limit</code> to get a query-specified
|
|
limit on the number of results.</p>
|
|
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Updated some of the SPARQL syntax to match the changes in the
|
|
<a href="http://www.w3.org/TR/2005/WD-rdf-sparql-query-20050217/">SPARQL Query Language for RDF</a>
|
|
W3C Working Draft of 17 February 2005. Added <code>GRAPH</code>
|
|
replacing <code>SOURCE</code> and <code>WITH</code> replacing
|
|
<code>FROM</code>. Added warnings about using the older forms
|
|
and about using <code>[</code>...<code>]</code> instead of
|
|
<code>OPTIONAL</code>.
|
|
</p>
|
|
|
|
<p>Added recording of <code>DISTINCT</code> and <code>LIMIT</code>
|
|
in the query structures but not yet used by the query engine.</p>
|
|
|
|
|
|
|
|
<h3>RDQL Query Language Changes</h3>
|
|
|
|
<p>None.</p>
|
|
|
|
|
|
|
|
<h2 id="rel0_9_6"><a name="rel0_9_6">Rasqal 0.9.6 Changes</a></h2>
|
|
|
|
<h3>General Changes</h3>
|
|
|
|
<p>Fix a bug in writing a query result to XML when blank nodes are
|
|
used. Now also correctly uses the base URI when pass in to the
|
|
writing method.</p>
|
|
|
|
<p>Added support for three types of query result - bindings (the only
|
|
one in previous versions), an RDF graph and a boolean. Added
|
|
<code>rasqal_query_results</code> methods to test the type of the
|
|
result: <code>rasqal_query_results_is_bindings</code>,
|
|
<code>rasqal_query_results_is_boolean</code> and
|
|
<code>rasqal_query_results_is_graph</code>.</p>
|
|
|
|
<p>Added
|
|
<code>rasqal_query_results_get_triple</code>
|
|
to get current triple as a <code>raptor_statement</code>
|
|
and <code>rasqal_query_results_next_triple</code> to move to the next triple.
|
|
</p>
|
|
|
|
<p>Added
|
|
<code>rasqal_query_results_get_boolean</code>
|
|
to get a boolean query result value.
|
|
</p>
|
|
|
|
<p>Added <code>rasqal_triple</code> copy constructor
|
|
<code>rasqal_new_triple_from_triple</code>.
|
|
</p>
|
|
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Constructs an RDF graph result as a sequence of triples. This
|
|
enables the SPARQL <code>CONSTRUCT</code> form to work.
|
|
</p>
|
|
|
|
<p>Can return a boolean result indicating that there were variable
|
|
binding results, but not returning them. This enables the SPARQL
|
|
<code>ASK</code> form to work.
|
|
</p>
|
|
|
|
<p>Added a new function expression - rasqal_op enum value
|
|
<code>RASQAL_EXPR_FUNCTION</code>, added new <code>name</code> and
|
|
<code>args</code> fields to the <code>rasqal_expression</code>
|
|
structure and added <code>rasqal_new_function_expression</code> to
|
|
construct this expression.
|
|
</p>
|
|
|
|
<p>Added new 1-argument expression <code>RASQAL_EXPR_STR</code>
|
|
returning a string version of the expression.</p>
|
|
|
|
<p>Added new 1-argument expressions operating on RDF literals:
|
|
<code>RASQAL_EXPR_LANG</code> returning the language string of an RDF literal,
|
|
<code>RASQAL_EXPR_DATATYPE</code> returning the datatype URI of an RDF literal.
|
|
</p>
|
|
|
|
<p>Added new 1-argument testing expressions returning booleans:
|
|
<code>RASQAL_EXPR_BOUND</code> true if the variable argument is bound to a value,
|
|
<code>RASQAL_EXPR_ISURI</code> true if the argument is a URI,
|
|
<code>RASQAL_EXPR_ISBLANK</code> true if the argument is a blank node and
|
|
<code>RASQAL_EXPR_ISLITERAL</code> true if the argument is an RDF literal.
|
|
</p>
|
|
|
|
<p>Fixed a problem in optional results returning extra results
|
|
with no new bindings.
|
|
</p>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>The SPARQL Parser now allows UTF-8 and \u, \U in prefixes and
|
|
QNames.
|
|
</p>
|
|
|
|
<p>Now supports <code>CONSTRUCT</code> and <code>ASK</code>
|
|
queries using the updated query engine features.</p>
|
|
|
|
<p><code>OPTIONAL</code> can now be used wherever <code>[</code> ...
|
|
<code>]</code> could be used (parser bug fix).</p>
|
|
|
|
<p>Now supports the SPARQL built-in functions
|
|
<code>STR()</code> returning a string version of the expression,
|
|
<code>LANG()</code> returning the language string of an RDF literal,
|
|
<code>DATATYPE()</code> returning the datatype URI of an RDF literal,
|
|
<code>BOUND()</code> testing if a variable is bound,
|
|
<code>ISURI()</code> testing if an expression is a URI,
|
|
<code>ISBLANK()</code> testing if an expression is a blank node and
|
|
<code>ISLITERAL()</code> testing if an expression is an RDF literal.
|
|
</p>
|
|
|
|
<p>Now supports SPARQL <code>BASE</code> directive for setting the
|
|
base URI of a query. This is <em>experimental</em> and may not be in
|
|
the next version or may not be in the final SPARQL language.</p>
|
|
|
|
<p>The parser now expands QNames correctly when used in literals like
|
|
<code>"blah"^^xsd:string</code>.
|
|
</p>
|
|
|
|
|
|
<h3>RDQL Query Language Changes</h3>
|
|
|
|
<p>The RDQL Parser now allows UTF-8 and \u, \U in prefixes and
|
|
QNames. This makes RDQL testsuite tests S-03, S-04 and S-05 work.
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="rel0_9_5"><a name="rel0_9_5">Rasqal 0.9.5 Changes</a></h2>
|
|
|
|
<p>A release with major changes internal to the query engine to
|
|
operate over graph patterns instead of sequences of triple patterns
|
|
and to add execution of optional graph patterns. Additionally the
|
|
query results can now be written in a recognised XML format.</p>
|
|
|
|
<p>This version of Rasqal requires
|
|
<a href="http://librdf.org/raptor/">Raptor</a> 1.4.4.</p>
|
|
|
|
|
|
<h3>Core Changes</h3>
|
|
|
|
<p>Added a <code>rasqal_graph_pattern</code> class for handling
|
|
matching a graph pattern (set of triple patterns) in an
|
|
<code>rasqal_query</code>. RDQL only has one of these wheras SPARQL
|
|
may have many, and they may be nested (this may change, as SPARQL is
|
|
under development).</p>
|
|
|
|
<p>Added <code>rasqal_query_results_write</code> method to write
|
|
variable binding query results to a <code>raptor_iostream</code> in
|
|
the XML format defined by
|
|
<a href="http://www.w3.org/TR/2004/WD-rdf-sparql-XMLres-20041221/">SPARQL Variable Binding Results XML Format</a>, W3C Working Draft, 21 December 2004.
|
|
</p>
|
|
|
|
|
|
|
|
<h3>Query Engine Changes</h3>
|
|
|
|
<p>Updated the query engine to operate over graph patterns rather
|
|
than a single sequence of triple patterns. The graph patterns may be
|
|
optional, which is used to implement SPARQL optionals. Nested graph
|
|
patterns are constructed but cannot yet be executed.
|
|
</p>
|
|
|
|
<p>Added a unary minus expression type.</p>
|
|
|
|
<p>Improved the type promotion for expression evaluation. Try to
|
|
evaluate strings as doubles or integers if the operation contains one
|
|
double or integer respectively.</p>
|
|
|
|
<p>Fixed a memory leak with string matches/non-matches.</p>
|
|
|
|
|
|
<h3>SPARQL Query Language Changes</h3>
|
|
|
|
<p>Optional graph patterns <code>OPTIONAL</code> and
|
|
<code>[</code> ... <code>]</code> now work.</p>
|
|
|
|
<p>Added the <code>{</code> ... <code>}</code> group syntax and
|
|
removed the <code>(</code> ... <code>)</code> form.</p>
|
|
|
|
<p><code>$</code> was added as an allowed variable prefixes.</p>
|
|
|
|
<p>A warning was added to show <code>SOURCE *</code> is ignored.</p>
|
|
|
|
<p>Added the <code>UNION</code> keyword, unsupported.</p>
|
|
|
|
<p>Rasqal now passes the
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/">DAWG</a>
|
|
SPARQL
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/tests/">test cases</a>:
|
|
Optional triples (dawg-opt-query-001, dawg-opt-query-002,
|
|
dawg-opt-query-003, dawg-opt-query-004)
|
|
and examples from query WD (sparql-query-example-2.1a,
|
|
sparql-query-example-2.2a, sparql-query-example-2.3a,
|
|
sparql-query-example-2.4a, sparql-query-example-3)
|
|
</p>
|
|
|
|
<p>Allow UTF-8 qname prefixes and check name against XML name
|
|
constraints.</p>
|
|
|
|
<p>Recover lexer state from errors in regexes.</p>
|
|
|
|
<p>Terminate the lexer on a syntax error, rather than produce
|
|
multiple errors.</p>
|
|
|
|
|
|
<h3>RDQL Query Language Changes</h3>
|
|
|
|
<p>The lexer now handles UTF-8 qname prefixes, enabling RDQL
|
|
testsuite test S-02 to pass.</p>
|
|
|
|
<p>Allow UTF-8 qname prefixes and check name against XML name
|
|
constraints.</p>
|
|
|
|
<p>Recover lexer state from errors in regexes.</p>
|
|
|
|
<p>Terminate the lexer on a syntax error, rather than produce
|
|
multiple errors.</p>
|
|
|
|
|
|
|
|
<h2 id="rel0_9_4"><a name="rel0_9_4">Rasqal 0.9.4 Changes</a></h2>
|
|
|
|
<p>Pass on raptor parser errors to rasqal's error routines and
|
|
upwards.</p>
|
|
|
|
<p>Clean up several memory allocations when a query fails to prepare
|
|
or execute fully.</p>
|
|
|
|
<p>Fixed lexer jams when a query contained an illegal
|
|
variable name after a '?'.</p>
|
|
|
|
<p>Fixed lexer crashes when a query ended in a regex pattern like
|
|
<code>/abc/</code>.</p>
|
|
|
|
<p>Tidied up the testing framework so 'make distcheck' works.</p>
|
|
|
|
|
|
<h2 id="rel0_9_3"><a name="rel0_9_3">Rasqal 0.9.3 Changes</a></h2>
|
|
|
|
<p>Rasqal's License was changed from LGPL 2.1/MPL 1.1 to
|
|
LGPL 2.1/Apache 2</p>
|
|
|
|
<p>Added support for the
|
|
<a href="http://www.w3.org/TR/2004/WD-rdf-sparql-query-20041012/">
|
|
SPARQL Query Language for RDF</a>,
|
|
W3C Working Draft, 12 October 2004
|
|
from the W3C RDF Data Access Working Group (DAWG).
|
|
The support is at the basic syntax level - token lexer and grammar parser
|
|
which passes the first simple tests from the proposed
|
|
DAWG testcases. No additional query engine support has been added for SPARQL
|
|
features that are not supported by RDQL. The
|
|
<a href="http://librdf.org/rasqal/TODO.html#sparql">Rasqal to do list</a>
|
|
contains full details of the implementation state.
|
|
</p>
|
|
|
|
<p>Queries can now be prepared and then executed multiple times.</p>
|
|
|
|
<p>Added configure <code>--enable-query-languages</code> option with
|
|
<code>rdql</code> and <code>sparql</code> as the choices.</p>
|
|
|
|
<p>Thanks to Chris Pointon for several patches to make Rasqal easier
|
|
to build under Win32. Applied with some modifications. Renamed the
|
|
RDQL and SPARQL syntax tokens ERROR to ERROR_TOKEN to help.</p>
|
|
|
|
<p>Added experimental support for querying multiple sources; the same
|
|
query is executed over each source in turn. Also added some support
|
|
for returning the source URI which is not yet enabled as this feature
|
|
is in flux in the DAWG work. This may change or be removed in future
|
|
versions.</p>
|
|
|
|
<p><code>roqet</code> can specify a data source URI on the command
|
|
line with <code>-s</code> / <code>--source</code>) <em>URI</em> for
|
|
queries executing against an implicit model.</p>
|
|
|
|
<p>Added the
|
|
<a href="http://www.w3.org/2001/sw/DataAccess/tests/">DAWG SPARQL test cases</a>
|
|
driven from the manifest.n3 format. Created tests from the examples
|
|
in the working draft.</p>
|
|
|
|
<p>Added an experimental XML result format for bindings, based on
|
|
DAWG work. Enabled in <code>roqet</code> with <code>-o xml</code>.
|
|
This is very likely to change or replaced in future versions.</p>
|
|
|
|
<p>Added <code>roqet</code> argument <code>-d</code> /
|
|
<code>--dump-query</code> to dump the processed query, rather than
|
|
do it by default (0.9.2 and earlier).</p>
|
|
|
|
<p><code>roqet</code> can now read queries from URIs, using
|
|
the <code>raptor_www</code> class to do the retrieval.</p>
|
|
|
|
<p>Fixed the <code>configure</code> checks for a posix regex
|
|
function regcomp to correctly discover it is present.</p>
|
|
|
|
|
|
<h3>Internal changes</h3>
|
|
|
|
<p>Added support for declaring prefixes for XML-style QNames both
|
|
before and after their use.</p>
|
|
|
|
<p>The struct <code>rasqal_prefix</code> gained a
|
|
<code>declared</code> field.</p>
|
|
|
|
<p>The struct <code>rasqal_triple</code> gained an origin field; not
|
|
used at present but intended to support work on tracking triple
|
|
provenance such as provided by Redland Contexts.</p>
|
|
|
|
<p>Added methods <code>rasqal_triple_set_origin</code> and
|
|
<code>rasqal_triple_get_origin</code> to support the above.</p>
|
|
|
|
<p>struct <code>rasqal_triple_meta</code> now takes a 4-array of
|
|
bindings, the fourth being the origin.</p>
|
|
|
|
<p>Exported function <code>rasqal_set_triples_source_factory</code>
|
|
publically as originally intended.
|
|
</p>
|
|
|
|
|
|
<h2 id="rel0_9_2"><a name="rel0_9_2">Rasqal 0.9.2 Changes</a></h2>
|
|
|
|
<p>This release made minor portability fixes for building with
|
|
C++ and Win32 (untested).</p>
|
|
|
|
<p>Several functions changed their parameters or return values from
|
|
char* to unsigned char* or const unsigned char* to reflect the
|
|
actual use.</p>
|
|
|
|
<p>Changed to return a <code>const unsigned char*</code>:<br />
|
|
<code>rasqal_literal_as_string</code>
|
|
</p>
|
|
|
|
<p>Changed to take <code>const unsigned char*</code> (or add
|
|
<code>const</code>):<br />
|
|
<code>rasqal_new_floating_literal</code><br />
|
|
<code>rasqal_new_pattern_literal</code><br />
|
|
<code>rasqal_new_prefix</code><br />
|
|
<code>rasqal_new_simple_literal</code><br />
|
|
<code>rasqal_new_string_literal</code><br />
|
|
<code>rasqal_new_variable</code><br />
|
|
<code>rasqal_query_has_variable</code><br />
|
|
<code>rasqal_query_results_get_binding_name</code><br />
|
|
<code>rasqal_query_results_get_binding_value_by_name</code><br />
|
|
<code>rasqal_query_results_get_bindings</code><br />
|
|
<code>rasqal_query_set_variable</code><br />
|
|
</p>
|
|
|
|
|
|
<h2 id="rel0_9_1"><a name="rel0_9_1">Rasqal 0.9.1 Changes</a></h2>
|
|
|
|
<p>This release changed the way that results were returned. A new
|
|
<code>rasqal_query_results</code> class was created. This allows for
|
|
a clean separation of the two concepts allowing multiple form of the
|
|
results to be retrieved as methods of the query_results class, rather
|
|
than the query class. The only form of results currently available
|
|
is variable bindings, but RDF graphs will be returned in future,
|
|
as a set of triples in a serialised form.</p>
|
|
|
|
<p>The execution method <code>rasqal_query_execute</code> was changed
|
|
to return a new object of that class rather than an <code>int</code>
|
|
success or failure.</p>
|
|
|
|
<p>The following methods of the <code>rasqal_query</code> class
|
|
were renamed and moved to the new <code>rasqal_query_results</code>
|
|
class:</p>
|
|
|
|
<table>
|
|
<tr>
|
|
<th>0.9.0 name</th> <th>0.9.1+ name</th>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_get_result_count</code></td> <td><code>rasqal_query_results_get_count</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_next_result</code></td> <td><code>rasqal_query_results_next</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_results_finished</code></td> <td><code>rasqal_query_results_finished</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_get_result_bindings</code></td> <td><code>rasqal_query_results_get_bindings</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_get_result_binding_value</code></td> <td><code>rasqal_query_results_get_binding_value</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_get_result_binding_name</code></td> <td><code>rasqal_query_results_get_binding_name</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_get_result_binding_by_name</code></td> <td><code>rasqal_query_results_get_binding_value_by_name</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>rasqal_query_get_bindings_count</code></td> <td><code>rasqal_query_results_get_bindings_count</code></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>A new <code>rasqal_free_query_results</code> destructor was created
|
|
to delete the query results. (There is no public constructor).</p>
|
|
|
|
<p>Other minor bugs were fixed such as multiple constraints now being
|
|
ANDed and not ORed, and adding defensive code for when queries fail
|
|
and results methods are invoked.</p>
|
|
|
|
|
|
<h2 id="rel0_9_0"><a name="rel0_9_0">Rasqal 0.9.0 Changes</a></h2>
|
|
|
|
<p>
|
|
It is all new.
|
|
</p>
|
|
|
|
|
|
|
|
<hr />
|
|
|
|
<p>Copyright (C) 2004-2008 <a href="http://www.dajobe.org/">Dave Beckett</a><br />Copyright (C) 2003-2005 <a href="http://www.bristol.ac.uk/">University of Bristol</a></p>
|
|
|
|
</body>
|
|
</html>
|