mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-10-30 17:23:51 +01: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>
 |