Releases: ruby-rdf/rdf
Releases · ruby-rdf/rdf
Ruby RDF 2.0 Beta1
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::Logger
for 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:Repository
orGraph
). - Introduced
RDF::Changeset
as a set of deletes & inserts which can be applied to aMutable
. The defaultRDF::Transaction
for customRepository
implementations uses aChangeset
, which is applied to theRepository
. - Introduced
RDF::Dataset
as a read-only super-class ofRepository
, which can be provided by usingRepository#snapshot
, among other methods. - The in-memory
Repository
implementation now uses [Hamster::Hash][] to implement a fully functional interface for updating repositories, saving a number of explicitdup
operations 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 aGraph
orRepository
will 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::FOAF
instead ofRDF::FOAF
. - Many interfaces would take a
:context
option, this has been replaced with:graph_name
to more properly correspond to RDF 1.1 concepts. This also includes#context
and#context=
,#has_context?
, and#each_context
methods in various modules and classes. Vocabulary.label_for
is replaced withVocabulary::Term#label
*Vocabulary.comment_for
is replaced withVocabulary::Term#comment
#write_graph
and#write_statements
are replaced withRDF::Writable#insert
Writer#format_value
is deprecated in favor ofWriter#format_term
NTriples::Reader
no 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#initialize
now 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#initialize
now uses keyword arguments instead of positional arguments. Positional arguments are accepted with a deprecation message until 2.0.0 is released.Transaction
is completely changed, and existing use from 1.x is unlikely to work without modification in 2.x. Users of the 1.xTransaction
who 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
.