RDF.rb 0.2.0 released

We have today released version 0.2.0 of RDF.rb:

  <http://rdf.rubyforge.org/>
  <http://rubygems.org/gems/rdf>

This is a semi-major release that includes many improvements and bug fixes,
and it is recommended for all users. Upgrading via RubyGems is as simple as:

  $ [sudo] gem install rdf

However, note that this release also includes some important API changes
that may or may not necessitate updates to existing RDF.rb plugins, so if
you rely on particular RDF.rb plugins you may wish to wait a day or two
for new releases of the gems in question before upgrading.

(We try and keep the API fully backwards compatible for all point releases,
with any incompatible API changes introduced only in semi-major releases
such as this one. That wasn't always the case with the 0.1.x branch which
experienced rapid API evolution, but will be more so from 0.2.x onwards.)

Notable changes in 0.2.0:

* Improvements and bug fixes to the bundled N-Triples parser and serializer,
  in particular fixes to correctly handle the escaping of Unicode characters
  (kudos to Ross Singer).

* Improvements and bug fixes in the semantics and handling of named graphs
  (kudos to John Fieber).

* The possibility for using symbols as short-hand for blank node identifiers
  when constructing statements or querying with triple patterns.

* The ability to insert graphs and enumerables into serializers or
  repositories with a single #<< operation instead of having to add all
  contained statements one-by-one.

* Significant all-around performance improvements (kudos in particular to
  Ross Singer and John Fieber for pinpointing some of the areas that we've
  improved in this release).

* The introduction of Ruby 1.8.7+ idioms while still retaining compatibility
  all the way back to Ruby 1.8.1+ with the help of the Backports gem:

  <http://github.com/bendiken/rdf/commit/cfeff6b0f9fad30867f31fa0b221bb4215116205>

* Additional built-in vocabulary classes helpful for FOAF+SSL and geospatial
  use cases (kudos to Hellekin O. Wolf).

New vocabulary classes added in 0.2.0:

* RDF::CERT (W3 Authentication Certificate)
* RDF::RSA  (W3 RSA Keys)
* RDF::GEO  (WGS84 Geo Positioning)

New classes added in 0.2.0:

* RDF::Util::Cache::ObjectSpaceCache
* RDF::Util::Cache::WeakRefCache

New modules added in 0.2.0:

* RDF::Countable
* RDF::Util::Aliasing::LateBound

New class and instance methods added in 0.2.0:

* RDF::Repository#options
* RDF::URI.intern, #urn?, #url?
* RDF::Node.intern, #to_sym
* RDF::Countable#empty?, #count
* RDF::Enumerable#dump, #each_graph, #enum_graph, #to_set
* RDF::Queryable#query_pattern
* RDF::Writable#<<, #insert
* RDF::NTriples::Writer.escape

Some important API changes affecting storage adapter plugins compatible
with RDF::Repository and/or the RDF::Queryable & RDF::Enumerable interfaces:

* Factored out the RDF::Enumerable#count and #empty? methods into an
  RDF::Countable mixin that can be mixed into enumerators:

  <http://github.com/bendiken/rdf/commit/93c001ec8e10091799fb96bec4424fb191e2bfbc>

* Refactored the RDF::Queryable#query API for better extensibility and
  performance, with it also now returning an enumerator instead of an array:

  <http://github.com/bendiken/rdf/commit/cb177954b60f81faff3d0335e5d776e0a396938e>
  <http://github.com/bendiken/rdf/commit/b4562277b70ab6c1e6acfc7ff262fd4e315dbf62>

* Changed all RDF::Enumerable methods to return countable enumerators
  instead of arrays, facilitating the use of large RDF datasets:

  <http://github.com/bendiken/rdf/commit/ad63f0971299b3bd61797c1f8e1ea42668c16a93>
  <http://github.com/bendiken/rdf/commit/6b6fe9a594e0818e6b44b43d0422ceb746592d77>
  <http://github.com/bendiken/rdf/commit/b980aa1d1a5a377dc6a5e372ecccf9cb1770a4d4>

* Factored out the append-only bits of RDF::Mutable into RDF::Writable:

  <http://github.com/bendiken/rdf/commit/053bec3a4491ef3cd81263df8542b6db5939d103>

Some important API changes affecting parser/serializer plugins compatible
with RDF::Format, RDF::Reader and RDF::Writer:

* Implemented a new RDF::URI.intern class method. Starting from RDF.rb
  0.2.0, all RDF::Reader implementations should prefer using RDF::URI.intern
  over RDF::URI.new when unserializing and constructing predicate URIs:

  <http://github.com/bendiken/rdf/commit/8323cee10706798a2000018cf694add516c5041e>
  <http://github.com/bendiken/rdf/commit/a1804a424dd6d92f81e071f8782210d90a7406e7>
  <http://github.com/bendiken/rdf/commit/16ddeeb62e1ff3cd637f044bd758f8f34d1c9c26>

* Mixed in RDF::Writable into the RDF::Writer base class and RDF::Readable
  into the RDF::Reader base class, simplifying serializer implementation:

  <http://github.com/bendiken/rdf/commit/31381e49c5444478198e3cae931eff711a29127e>
  <http://github.com/bendiken/rdf/commit/1c6be95aa673ea9e1b76149d4523e03737c43b4b>
  <http://github.com/bendiken/rdf/commit/cee8c30ad4047b5c50a69913d4ea4cb3c8eb5dd3>

* Extended RDF::Format content type handling to support optional aliases:

  <http://github.com/bendiken/rdf/commit/cecbb7a02fba860beb1a3ade2319686711c9a9f9>

Other important API changes to note:

* Changed the RDF::Value and RDF::Resource base classes into module mixins:

  <http://github.com/bendiken/rdf/commit/a49fc72460e3b9292339353609442e269121ffc0>

* Changed all instance method aliases in RDF.rb's mixins (e.g. RDF::Enumerable,
  RDF::Queryable, etc) to be late-bound rather than early-bound, meaning
  that plugins no longer need to redefine or override them:

  <http://github.com/bendiken/rdf/commit/90e6b52fe492dd8c4b885ef0bacb5a119c2d848e>
  <http://github.com/bendiken/rdf/commit/0708253edb2d213599bbfd38f34d43b847f5aa0f>

* Refactored RDF::Graph to be based on RDF::Queryable and RDF::Mutable:

  <http://github.com/bendiken/rdf/commit/11e1aff6c19730cccd3881264c7a2b934528a5b8>

The full Git commit history since 0.1.10 can be viewed at:

  <http://github.com/bendiken/rdf/compare/0.1.10...0.2.0>

The Git source code repository is hosted on GitHub:

  <http://github.com/bendiken/rdf>

You can obtain a local working copy of the source code as follows:

  $ git clone git://github.com/bendiken/rdf.git

-- 
Arto Bendiken | @bendiken

Received on Thursday, 17 June 2010 20:16:44 UTC