Skip to content

Releases: ruby-rdf/rdf

Release 3.1.3.

16 Jun 21:35

Choose a tag to compare

add RDF::Vocabulary.register and make appropriate changes.

This is necessary, as simply defining a vocabulary is no longer sufficient to have it register a prefix for the vocabulary.

Release 3.1.2

30 May 21:48

Choose a tag to compare

Important new features include provisional support for RDF* and updates to query optimization.

  • Cleanup etc/doap and references for developers.
  • RDF::Vocabulary
    • Update Vocabulary writer to output vocabulary classes that better document the vocabulary and reduce Yardoc errors.
    • Don't try to document vocabulary terms which aren't valid as Ruby attribute names.
    • Optimize Vocabulary.expand_pname to use Vocabulary.vocab_map, to look up terms by their standard prefix.
      • Vocabulary.vocap_map uses re-wored RDF::VOCABS, and is overrided by rdf-vocab, if it is included.
      • Also added Vocabulary.from_sym, which will return the vocabulary associated with the class_name symbol (e.g., RDF::Vocabulary.from_sym(:OWL) => RDF::OWL.
      • Adds RDF::Vocabulary.limit_vocabs which is used to limit the vocabularies returned by RDF::Vocabulary.each and can substantially reduce load time when the rdf-vocabs gem is used.
  • Core Model
    • Make RDF::Statement an RDF::Resource, which allows a statement to appear as either the subject or object of another statement.
    • Update N-Triples and N-Quads readers and writers to accept and emit such statements; for the reader this requires using the rdfstar option, with value of either :PR or :SA.
    • An RDF::Enumerable may express support for by responding with true to #supports?(:rdfstar). The memory-based RDF::Repository supports RDF*.
    • Add Statement#embedded? to discriminate statements including statements.
    • Check for support for rdfstar before inserting embedded statements.
  • RDF::Query
    • Support query patterns with recursive sub-patterns for subject or object.
      • Variables include those from sub-patterns.
      • Added Pattern#eql? which does recursive checks on sub-patterns.
      • Solution binding also binds to sub-patterns.
      • In Repository#query_pattern, consider recursive patterns for subject or object to match against recursive statements for subject or object.
      • Merging solutions also adds solutions found by binding recursive patterns to statements.
        ( This supports the SPARQL BIND(<<?a ?b ?c>> AS ?t) pattern).
    • Order Query::Solutions#variable_names based on Query::Solutions#project.
    • Binding to a variable now requires a solution (term is deprecated). This makes binding consistent with other uses.
    • In Solution#merge! don't merge a pattern over a statement. (BIND embedded triple use case).
    • Add :optimize option to Query.execute.
    • Remember graph_name when dupping a Query.
    • Invert costs in Pattern, as it ends up that favoring objects before subjects is much more expensive.

Release 3.1.1

08 Jan 21:54

Choose a tag to compare

Updates RDF::Changeset to not depend on RDF::Mutable or RDF::Writable (from @doriantaylor).

  • Creates RDF::Util::Coercions module with #coerce_statements method, used within RDF::Changeset and RDF::Mutable to iterate over things that can be statements.
  • Allows RDf::Changeset deletes to use a query pattern.

Release 3.1.0

16 Dec 20:57

Choose a tag to compare

  • Removes support for Ruby < 2.4.
  • Update calling sequences for options and keyword arguments (Ruby 2.7 compatibility)
    • Calls to Queryable#query and similar, along with RDF::Query where the first argument is of the form of a hash will typically need to explicitly enclose those members within {}, so they're not confused with keyword arguments.
    • Fixes to URI stuff, due to confusion between arguments and options.
    • Fix arguments for Reader.for and Writer.for.
    • Fix URI.intern arguments.
  • Add RDF namespace entries for string direction.
  • Adds URI.encode and URI.decode as these are deprecated in Ruby core.

Release 3.0.13

31 Oct 21:48

Choose a tag to compare

  • Improve documentation for validate CLI command.
  • Add default User-Agent header, and improve documentation on header defaults.
  • Issue deprecation notice on versions of Ruby < 2.4.
  • Update language tag validation to what BCP47 requires, not RDF, which is too liberal.
  • Fix URI#join for path-rootless, which goes away when merged with a relative path.
  • A Time should be typed as XMLSchema#dateTime
    Ruby does not have a class which represents a time without date. A Tod::TimeOfDay provided by the tod gem would justify XMLSchema#time, but the default Time class always includes a Date.

Release 3.0.12

31 Oct 21:26

Choose a tag to compare

  • Make documentation link explicit in gemspec.
  • Change most external URLs to HTTPS.

Release 3.0.11

31 Oct 21:25

Choose a tag to compare

  • Don't define vocabulary method for 'term', in addition to 'proeprty' and 'hash'.

Release 3.0.10

12 Feb 00:50

Choose a tag to compare

  • N-Triples/N-Quads:

    • Single quote (') was missing from N-Triples/Quads escaped characters.
    • Change N-Triples literal output encoding to limit the number of ECHAR escapes used based on Canonical form of N-Triples:
      • Within STRING_LITERAL_QUOTE, only the characters U+0022, U+005C, U+000A, U+000D are encoded using ECHAR. ECHAR **must not** be used for characters that are allowed directly in STRING_LITERAL_QUOTE`.
    • Fix bug in NTriples::Reader.unescape where it was overeager; now uses a string scanner to iterate through the string buffer.
  • Query:

    • Make query validation optional. (Notation-3 patterns will appear to be invalid).
    • Better support for non-distinguished variables.
    • Calculate pattern cost based on position of variables.
    • Add Solutions#dup.
    • Add existential modifier to variables. Note that this is not preserved from queries, which record the binding using the variable name, without other qualities.
    • Have solution iterators also return enumerators.
    • Guard against nil bindings in solutions.
    • Add Solutions#merge based on JOIN semantics.
  • Miscellaneous:

    • Update Repository to remember statement options along with object, and not simply the object itself. This allows inferred statements to be added to the repo, and come back as having been inferred.
    • Implement URI marshaling methods to avoid issue with serializing mutex.
    • Dup components of a URI to avoid freeze issues.
    • Support milliseconds in dateTime and time datatyped literals.

Release 3.0.9

12 Feb 00:44

Choose a tag to compare

  • Add :parameters to RemoteDocument processing all Content-Type parameters.
  • Add Writer.accept? to allow writer to examine media-type and parameters before accepting.
  • Add 2.6 to rvm build matrix.

Release 3.0.6

05 Nov 17:36

Choose a tag to compare

  • Create a mutex instance variable in URI and synchronize when freezing.
  • Guard against nil content_type when checking formats.