RDF::Query

# RDF::Query - A SPARQL/RDQL implementation for RDF::Redland and RDF::Core

RDF::Query allows RDQL and SPARQL queries to be run against an RDF model, returning rows of matching results.

## Requirements

To install RDF::Query you'll need the following perl modules installed:

- Parse::RecDescent
- LWP::Simple
- RDF::Core or RDF::Redland

## Installing RDF::Query

To install, run:

perl Makefile.PL
make
make test
make install

## Version History

### Version 1.020 (2005-05-18)

- Added support for SPARQL OPTIONAL graph patterns.
- Calling bindings_count on a stream now returns 0 with no data.
- Added Stream methods:
  - is_bindings
  - binding_name
  - binding_values
  - binding_names
- Added as_xml method to Stream class for XML Binding Results format.

### Version 1.016 (2005-05-08)

- Added initial support for SPARQL ASK, DESCRIBE and CONSTRUCT queries.
  - Added new test files for new query types.
- Added methods to bridge classes for creating statements and blank nodes.
- Added as_string method to bridge classes for getting string versions of nodes.
- Broke out triple fixup code into fixup_triple_bridge_variables().
- Updated FILTER test to use new Geo::Distance API.

### Version 1.015 (2005-05-03)

- Fixes to the arguments passed to FILTERs.
- Filter tests now show example of two custom filters:
  - Transitive subClassOf testing.
  - Logical comparison operators (range testing lat/lon values).
- Added literal_value, uri_value, and blank_identifier methods to bridges.
- Redland bridge now calls sources/arcs/targets when only one field is missing.
- Fixes to stream code. Iterators are now destroyed in a timely manner.
  - Complex queries no longer max out mysql connections under Redland.
- Cleaned up node sorting code.
  - Removed dependency on Sort::Naturally.
  - Added new node sorting function ncmp().
- check_constraints now calls ncmp() for logical comparisons.
- Added get_value method to make bridge calls and return a scalar value.
- Fixed node creation in Redland bridge.
- Moved DISTINCT handling code to occur before LIMITing.
- Added variables method to retrieve bound variable names.
- Added binding_count and get_all methods to streams.
- get_statments bridge methods now return RDF::Query::Stream objects.

### Version 1.014 (2005-04-26)

- Made FILTERs work in SPARQL.
- Added initial SPARQL support for custom function constraints.
- SPARQL variables may now begin with the '$' sigil.
- Added direction support for ORDER BY (ascending/descending).
- Added 'next', 'current', and 'end' to Stream API.

### Version 1.012 (2005-04-24)

- Stream objects now handle being constructed with an undef coderef.
- Streams are now objects usinig the Redland QueryResult API.
- RDF namespace is now always available in queries.
- row() now uses a stream when calling execute().
- Added ORDER BY support to RDQL parser.
- SPARQL constraints now properly use the 'FILTER' keyword.
- SPARQL constraints can now use '&&' as an operator.
- SPARQL namespace declaration is now optional.
- Updated tests.

### Version 1.010 (2005-04-21)

- `execute` now returns an iterator
- Added core support for DISTINCT, LIMIT, OFFSET
- Added initial core support for ORDER BY (only works on one column right now)
- Broke out the query parser into it's own RDQL class
- Added initial support for a SPARQL parser
  - Added support for blank nodes
  - Added lots of syntactic sugar (with blank nodes, multiple predicates and objects)
  - Added SPARQL support for DISTINCT and ORDER BY
- Moved model-specific code into RDF::Query::Model::*
- Moving over to redland's query API (pass in the model when query is executed)

## Copyright

Copyright © 2005 Gregory Williams. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

$Id: README.html,v 1.7 2005/05/18 23:18:34 greg Exp $