Ruby RDF 2.0 Beta1
Pre-release
Pre-release
Ruby RDF 2.0
We are preparing for the 2.0 release of RDF.rb and related gems. This announces the general availability of RDF.rb 2.0.0.beta1 along with other gems collected in the linkeddata meta-gem. Note that this release introduces breaking changes from the 1.* version; in most cases, these are highlighted using deprecation messages if using 1.99.
New Features
- Readers and Writers now using
RDF::Util::Loggerfor managing error, warning, information, and debug messages, which allow them to be managed more flexibly and consistently. - Substantially revised
RDF::Transaction, which now serves as a scope for ACID transactions. Transactions are now read-only by default; for read/write transactions, useTransaction.new(mutable: true)orRepository#transaction(mutable: true). Transactions can be applied to anRDF::Transactable(in the core:RepositoryorGraph). - Introduced
RDF::Changesetas a set of deletes & inserts which can be applied to aMutable. The defaultRDF::Transactionfor customRepositoryimplementations uses aChangeset, which is applied to theRepository. - Introduced
RDF::Datasetas a read-only super-class ofRepository, which can be provided by usingRepository#snapshot, among other methods. - The in-memory
Repositoryimplementation now uses [Hamster::Hash][] to implement a fully functional interface for updating repositories, saving a number of explicitdupoperations in queries and allowing fully isolated snapshots and serializable transactions at minimal cost. As a side-effect, there is no guarantee that insert order of statements in aGraphorRepositorywill be maintained.
Deprecated Interfaces in 1.99
These changes result in a DEPRECATION warning in 1.99, and errors in 2.*:
- Minimum Ruby version no MRI 2.0 or equivalent 2.3 or greater preferred.
- Numerous vocabularies have been moved to the rdf-vocab gem, for example
RDF::Vocab::FOAFinstead ofRDF::FOAF. - Many interfaces would take a
:contextoption, this has been replaced with:graph_nameto more properly correspond to RDF 1.1 concepts. This also includes#contextand#context=,#has_context?, and#each_contextmethods in various modules and classes. Vocabulary.label_foris replaced withVocabulary::Term#label*Vocabulary.comment_foris replaced withVocabulary::Term#comment#write_graphand#write_statementsare replaced withRDF::Writable#insertWriter#format_valueis deprecated in favor ofWriter#format_termNTriples::Readerno longer supports Surrogate Pairs.- Many interfaces now use [keyword arguments][https://robots.thoughtbot.com/ruby-2-keyword-arguments] instead of positional arguments.
Deprecated interfaces in 2.0
List#initializenow uses keyword arguments instead of positional arguments. This is a breaking change which cannot support backwards compatibility, but shouldn't affect most normal use.Graph#initializenow uses keyword arguments instead of positional arguments. Positional arguments are accepted with a deprecation message until 2.0.0 is released.Transactionis completely changed, and existing use from 1.x is unlikely to work without modification in 2.x. Users of the 1.xTransactionwho are not interested in ACID transactions should look atRDF::Changeset, which is more similar to the old interface.
Ruby gems will not automatically load beta gems via gem update. To get these gems you must explicitly include them using gem install --pre linkeddata.