README.md in rdf-3.1.10 vs README.md in rdf-3.1.11
- old
+ new
@@ -8,10 +8,30 @@
[![Gem Version](https://badge.fury.io/rb/rdf.png)](https://badge.fury.io/rb/rdf)
[![Build Status](https://github.com/ruby-rdf/rdf/workflows/CI/badge.svg?branch=develop)](https://github.com/ruby-rdf/rdf/actions?query=workflow%3ACI)
[![Coverage Status](https://coveralls.io/repos/ruby-rdf/rdf/badge.svg?branch=develop)](https://coveralls.io/github/ruby-rdf/rdf?branch=develop)
[![Gitter chat](https://badges.gitter.im/ruby-rdf/rdf.png)](https://gitter.im/ruby-rdf/rdf)
+## Table of contents
+
+1. [Features](#features)
+2. [Differences between RDF 1.0 and RDF 1.1](#differences-between-rdf-1-0-and-rdf-1-1)
+3. [Tutorials](#tutorials)
+4. [Command Line](#command-line)
+5. [Examples](#examples)
+6. [Reader/Writer convenience methods](#reader/writer-convenience-methods)
+7. [RDF* (RDFStar)](#rdf*-(rdfstar))
+8. [Documentation](#documentation)
+9. [Dependencies](#dependencies)
+10. [Installation](#installation)
+11. [Download](#download)
+12. [Resources](#resources)
+13. [Mailing List](#mailing-list)
+14. [Authors](#authors)
+15. [Contributors](#contributors)
+16. [Contributing](#contributing)
+17. [License](#license)
+
## Features
* 100% pure Ruby with minimal dependencies and no bloat.
* Fully compatible with [RDF 1.1][] specifications.
* 100% free and unencumbered [public domain](https://unlicense.org/) software.
@@ -39,11 +59,11 @@
client-side caching of HTTP results using [Rack::Cache][] or other Rack
middleware.
See {RDF::Util::File} for configuring other mechanisms for retrieving resources.
-### Term caching and configuration.
+### Term caching and configuration
RDF.rb uses a weak-reference cache for storing internalized versions of URIs and Nodes. This is particularly useful for Nodes as two nodes are equivalent only if they're the same node.
By default, each cache can grow to an unlimited size, but this can be configured using {RDF.config}, for general limits, along with URI- or Node-specific limits.
@@ -74,11 +94,11 @@
* {RDF::Query#execute} now accepts a block and returns {RDF::Query::Solutions}. This allows `enumerable.query(query)` to behave like `query.execute(enumerable)` and either return an enumerable or yield each solution.
* {RDF::Queryable#query} now returns {RDF::Query::Solutions} instead of an Enumerator if it's argument is an {RDF::Query}.
* {RDF::Util::File.open\_file} now performs redirects and manages `base_uri` based on W3C recommendations:
* `base_uri` is set to the original URI if a status 303 is provided, otherwise any other redirect will set `base_uri` to the redirected location.
* `base_uri` is set to the content of the `Location` header if status is _success_.
-* Additionally, {RDF::Util::File.open\_file} sets the result encoding from `charset` if provided, defaulting to `UTF-8`. Other access methods include `last_modified` and `content_type`,
+* Additionally, {RDF::Util::File.open\_file} sets the result encoding from `charset` if provided, defaulting to `UTF-8`. Other access methods include `last_modified` and `content_type`,
* {RDF::StrictVocabulary} added with an easy way to keep vocabulary definitions up to date based on their OWL or RDFS definitions. Most vocabularies are now StrictVocabularies meaning that an attempt to resolve a particular term in that vocabulary will error if the term is not defined in the vocabulary.
* New vocabulary definitions have been added for [ICal](http://www.w3.org/2002/12/cal/icaltzd#), [Media Annotations (MA)](http://www.w3.org/ns/ma-ont#), [Facebook OpenGraph (OG)](http://ogp.me/ns#), [PROV](http://www.w3.org/ns/prov#), [SKOS-XL (SKOSXL)](http://www.w3.org/2008/05/skos-xl#), [Data Vocabulary (V)](http://rdf.data-vocabulary.org/), [VCard](http://www.w3.org/2006/vcard/ns#), [VOID](http://rdfs.org/ns/void#http://rdfs.org/ns/void#), [Powder-S (WDRS)](http://www.w3.org/2007/05/powder-s#), and [XHV](http://www.w3.org/1999/xhtml/vocab#).
Notably, {RDF::Queryable#query} and {RDF::Query#execute} are now completely symmetric; this allows an implementation of {RDF::Queryable} to optimize queries using implementation-specific logic, allowing for substantial performance improvements when executing BGP queries.
@@ -87,10 +107,11 @@
* [Getting data from the Semantic Web using Ruby and RDF.rb](https://semanticweb.org/wiki/Getting_data_from_the_Semantic_Web_%28Ruby%29)
* [Using RDF.rb and Spira to process RDF data from the British Ordnance Survey](https://stephenpope.co.uk/?p=85)
* [Getting started with RDF and SPARQL using 4store and RDF.rb](https://www.jenitennison.com/blog/node/152)
## Command Line
+
When installed, RDF.rb includes a `rdf` shell script which acts as a wrapper to perform a number of different
operations on RDF files using available readers and writers.
* `count`: Parse and RDF input and count the number of statements.
* `predicates`: Returns unique objects from parsed input.
@@ -110,42 +131,43 @@
### Writing RDF data using the [N-Triples][] format
require 'rdf/ntriples'
graph = RDF::Graph.new << [:hello, RDF::RDFS.label, "Hello, world!"]
graph.dump(:ntriples)
-
+
or
RDF::Writer.open("hello.nt") { |writer| writer << graph }
### Reading RDF data in the [N-Triples][] format
require 'rdf/ntriples'
graph = RDF::Graph.load("https://ruby-rdf.github.com/rdf/etc/doap.nt")
-
+
or
RDF::Reader.open("https://ruby-rdf.github.com/rdf/etc/doap.nt") do |reader|
reader.each_statement do |statement|
puts statement.inspect
end
end
### Reading RDF data in other formats
+
{RDF::Reader.open} and {RDF::Repository.load} use a number of mechanisms to determine the appropriate reader
to use when loading a file. The specific format to use can be forced using, e.g. `format: :ntriples`
option where the specific format symbol is determined by the available readers. Both also use
MimeType or file extension, where available.
require 'rdf/nquads'
-
+
graph = RDF::Graph.load("https://ruby-rdf.github.com/rdf/etc/doap.nq", format: :nquads)
A specific sub-type of Reader can also be invoked directly:
require 'rdf/nquads'
-
+
RDF::NQuads::Reader.open("https://ruby-rdf.github.com/rdf/etc/doap.nq") do |reader|
reader.each_statement do |statement|
puts statement.inspect
end
end
@@ -155,10 +177,11 @@
be detected from filename or other options, or that more than one format is identified,
{RDF::Format.for} will query each loaded format by invoking it's `detect` method, and the first successful
match will be used to read the input.
### Writing RDF data using other formats
+
{RDF::Writer.open}, {RDF::Enumerable#dump}, {RDF::Writer.dump} take similar options to {RDF::Reader.open} to determine the
appropriate writer to use.
require 'linkeddata'
@@ -174,10 +197,11 @@
repo = RDF::Repository.new << RDF::Statement.new(:hello, RDF::RDFS.label, "Hello, world!", graph_name: RDF::URI("http://example/graph_name"))
File.open("hello.nq", "w") {|f| f << repo.dump(:nquads)}
## Reader/Writer convenience methods
+
{RDF::Enumerable} implements `to_{format}` for each available instance of {RDF::Reader}.
For example, if `rdf/turtle` is loaded, this allows the following:
graph = RDF::Graph.new << [:hello, RDF::RDFS.label, "Hello, world!"]
graph.to_ttl
@@ -193,20 +217,20 @@
graph.from_ttl("[ a rdf:Resource]", prefixes: {rdf: RDF.to_uri})
### Querying RDF data using basic graph patterns (BGPs)
require 'rdf/ntriples'
-
+
graph = RDF::Graph.load("https://ruby-rdf.github.com/rdf/etc/doap.nt")
query = RDF::Query.new({
person: {
RDF.type => FOAF.Person,
FOAF.name => :name,
FOAF.mbox => :email,
}
}, **{})
-
+
query.execute(graph) do |solution|
puts "name=#{solution.name} email=#{solution.email}"
end
The same query may also be run from the graph:
@@ -449,11 +473,10 @@
of thumb, additions larger than about 15 lines of code), we need an
explicit [public domain dedication][PDD] on record from you,
which you will be asked to agree to on the first commit to a repo within the organization.
Note that the agreement applies to all repos in the [Ruby RDF](https://github.com/ruby-rdf/) organization.
-
## License
This is free and unencumbered public domain software. For more information,
see <https://unlicense.org/> or the accompanying {file:UNLICENSE} file.
@@ -490,6 +513,6 @@
[RDF*]: https://w3c.github.io/rdf-star/rdf-star-cg-spec.html
[LinkedData]: https://ruby-rdf.github.com/linkeddata
[JSON::LD]: https://ruby-rdf.github.com/json-ld
[RestClient]: https://rubygems.org/gems/rest-client
[RestClient Components]: https://rubygems.org/gems/rest-client-components
-[Rack::Cache]: https://rtomayko.github.io/rack-cache/
\ No newline at end of file
+[Rack::Cache]: https://rtomayko.github.io/rack-cache/