RDF::Trine - An RDF Framework for Perl.
RDF::Trine provides an RDF framework with an emphasis on extensibility, API
stability, and the presence of a test suite. The package consists of several
components:
* RDF::Trine::Model - RDF model providing access to a triple store.
* RDF::Trine::Parser - Native RDF parsers (currently for Turtle only).
* RDF::Trine::Store::DBI - A triple store for MySQL and SQLite, based on the
Redland schema.
* RDF::Trine::Iterator - Iterator classes for variable bindings and RDF
statements, used by RDF::Trine::Store, RDF::Trine::Model, and RDF::Query.
* RDF::Trine::Namespace - A convenience class for easily constructing RDF
node objects from URI namespaces.
REQUIREMENTS
To install RDF::Trine you'll need the following perl modules installed:
* DBI
* DBD::SQLite
* Digest::MD5
* Error
* JSON
* LWP::UserAgent
* List::MoreUtils
* List::Util
* Scalar::Util
* Unicode::Escape
* URI
* XML::CommonNS
* XML::Namespace
* XML::Twig
The following additional modules are optional:
* DBD::Mysql
* Test::More
* Test::JSON
* Test::Exception
INSTALLATION
To install, run:
perl Makefile.PL
make
make test
make install
VERSION HISTORY
Version 0.108 (2008-07-14)
* Added NTriples serializer module.
* Added POD to RDF::Trine::Promise.
* Added XML::Parser to list of required modules.
* Added a peek method to ::Iterator to support execution deferment like in ::Algebra::Service.
* Added RDF::Trine::Promise for general computation deferment.
* Added print_xml method to RDF::Trine::Iterator classes.
* Added support for Postgres storage.
* Added XML::LibXML::SAX as a prerequisite (because XML::SAX::PurePerl can't handle some RDF/XML that uses unicode).
* Replaced RDF::Core-based RDF/XML parser with a new XML::SAX based parser.
* Removed now unused redland-based RDF/XML test data.
* Removed unused redland fallback code from RDF::Query::Model::RDFTrine.
* Removed redland-based RDF/XML parser tests.
* Updated Turtle grammar to accept uppercase language tags.
* Fixed COLLECTION support in RDF/XML parser.
* Fixed RDF/XML parser for nodeID, sequence, reification, and base URI handling.
* Fixed POD in NTriples serializer.
* Fixed RDF/XML parser to handle nodeID, arbitrary xml attributes, parseType="Literal" serialization, and base URI handling.
* Normlized expected NTriples data in W3C RDF/XML test files.
* Added unicode escaping to Literal and Resource sse serialization.
* Added W3C RDF/XML data and test script.
* Fixes to deferring XML serialization for SPARQL bindings.
* Fixed bug in delaying XML serialization for identity hints header computation.
* Fixed extra data following xml query results.
* Fixed strict refs bug in print_xml in iterator classes.
* Updated tests that started failing after the previous commit (affecting SQL-compilation).
* Allow equality test and disjunction filters in patterns that can be compiled to SQL.
* Fix bug in SQL compilation when restricting left-joins to specific node types (based on functions like isIRI).
* Added support to the DBI store for filters for equality tests.
* Mysql store schema now adds indexes.
* Improved use of temporary RDF::Trine stores in RDF::Query tests.
* DBI temporary stores now use an in-memory SQLite database.
* Fixed bug in RDF::Trine::Store::DBI::mysql (calling _mysql_hash() without qualifying it in the superclass).
* Fixed variable ordering bug in UNION to SQL handling by forcing a sorted projection order.
* Added support to compile normalized UNION (can only be the top-level node or a child of another UNION) patterns to SQL.
* Made SQL more standards compliant.
* RDF::Trine::Store::DBI now auto-upgrades to mysql and postgres classes.
* Fixed unicode escaping by replacing Unicode::Escape calls to hand-rolled code in RDF::Trine::Node.
* RDF/XML parser now accept more than one top-level resource.
* RDF/XML parser now accepts URI objects as base uri (not just RDF::Trine::Node::Resource objects).
* Added tabular as_string serialization of ::Iterator::Bindings objects.
* Added Text::Table as a prerequisite.
* Fixed RDF/XML parser handling of strings (versus file handles).
* Fixed Turtle parser to properly keep '+' on integer literals.
* Fixed bindings_count so it doesn't pull a result from the stream (basing the count on binding_names).
* Fixed bindings xml serialization whitespace formatting.
* Cleaned up ::Iterator::Bindings::as_string serialization code.
* Replaced use of splice() with shift() in ::Iterator::SAXHandler::pull_result.
Version 0.107 (2008-04-25)
* Added Digest::SHA1 as a requirement for RDF::Trine.
* Fixed base URI use in Turtle parser.
* Fixed SQLite DSN in example scripts.
* Fixed XML whitespace error in iterator-thaw.t
Version 0.106 (2008-04-19)
* Added a mysql-specific RDF::Trine::Store class (now uses INSERT IGNORE for efficiency).
* SQL compiler now doesn't select statement contexts unless called via get_statements (not get_pattern).
* RDF::Trine::Iterator::Graph::as_bindings now can be called with no arguments (uses default names).
* Moved the nested hash join from ::Iterator to ::Iterator::Bindings.
* Added new tests to improve coverage of node and iterator classes.
* Added tests for binding iterator cartesian product join.
* Pipelined the code for nested loop joins on binding iterators.
* Added SPARQL XML Results test for identity hints in element.
* Fixed bug in ::Model::StatementFilter to call join_steams in ::Iterator::Bindings.
* Fixed bug in ::Iterator::Graph::as_bindings where not all arguments are ::Node::Variable objects.
* Updated SPARQL XML Results namespace for boolean iterators.
* Replaced XML::Twig code with new XML::SAX parser (allowing streaming parsing).
* Moved as_sparql methods from RDF::Trine:: to RDF::Query:: classes.
* RDF::Trine::Iterator::smap now allows overriding default construct_args (e.g. binding names).
* Fixed RDF::Trine::Model::StatementFilter::get_pattern to project away unused variables (fixing a bug that caused joining to always fail).
* Updated example turtle parser to accept URLs as command line arguments.
* Turtle parser now removes dashes from the UUIDs used for blank node IDs.
* Added support to incrementally thaw an Iterator from an IO::Socket.
* Added RDF::Trine::Iterator::SAXHandler::rate method.
* Added Time::HiRes as prerequisite to META.yml and Makefile.PL.
* Updated all RDF::Trine modules to use consistent VERSION number for 0.106 release.
* Added examples directory (and an example script) to the RDF-Trine package.
* Removed Bloom::Filtere from the list of prerequisites (functionality has moved to RDF::Query).
Version 0.105 (2008-03-19)
* Removed use of File::Slurp in parser tests.
Version 0.104 (2008-03-14)
* Updated SPARQL XML Results namespace declaration in RDF::Trine::Iterator serialization methods.
* Added extra_result_data methods to add data to the XML Results header tag.
* RDF::Trine::Node::Resource now serializes to QName when passed valid namespace data.
* Fixed xml results serialization for style.
Version 0.103 (2008-03-10)
* Updated to recognize (renamed) RDF::Query::Expression class.
Version 0.102 (2008-03-07)
* Added length() method to Materialized bindings iterator class.
* Removed bloom filter construction from bindings iterator (RDF::Query code now does this itself).
* Fixed escaping of backslashes in Literal node serialization.
Version 0.101 (2008-03-04)
* Added an RDF/XML parser based on RDF::Core::Parser.
* Added Bloom filter support for Materialized bindings iterators.
* Fixed IRI workaround using the URI module.
* Turtle parser now uses Data::UUID for unique names.
* Fixed turtle parser bug for Verb testing.
* Added RDF::Trine::Statement::Quad::from_redland method.
* DBI store now constrains variable node types based on position in a statement.
* Added support for BOUND(), ISLITERAL(), ISURI() and ISIRI() functions in DBI store.
Version 0.100 (2008-02-18)
* Initial public release.
COPYRIGHT
Copyright (C) 2008 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.
AUTHOR
Gregory Williams