README.md in sparql-3.1.8 vs README.md in sparql-3.2.0
- old
+ new
@@ -21,12 +21,11 @@
* SPARQL Update
* [Rack][] and [Sinatra][] middleware to perform [HTTP content negotiation][conneg] for result formats
* Compatible with any [Rack][] or [Sinatra][] application and any Rack-based framework.
* Helper method for describing [SPARQL Service Description][SSD]
* Implementation Report: {file:etc/earl.html EARL}
-* Compatible with Ruby >= 2.2.2.
-* Compatible with older Ruby versions with the help of the [Backports][] gem.
+* Compatible with Ruby >= 2.6.
* Supports Unicode query strings both on all versions of Ruby.
* Provisional support for [SPARQL-star][].
## Description
@@ -246,51 +245,60 @@
require 'sparql'
### Querying a repository with a SPARQL query
queryable = RDF::Repository.load("etc/doap.ttl")
- sse = SPARQL.parse("SELECT * WHERE { ?s ?p ?o }")
- queryable.query(sse) do |result|
+ query = SPARQL.parse("SELECT * WHERE { ?s ?p ?o }")
+ queryable.query(query) do |result|
result.inspect
end
### Executing a SPARQL query against a repository
queryable = RDF::Repository.load("etc/doap.ttl")
- sse = SPARQL.parse("SELECT * WHERE { ?s ?p ?o }")
- sse.execute(queryable) do |result|
+ query = SPARQL.parse("SELECT * WHERE { ?s ?p ?o }")
+ query.execute(queryable) do |result|
result.inspect
end
### Updating a repository
queryable = RDF::Repository.load("etc/doap.ttl")
- sse = SPARQL.parse(%(
+ update = SPARQL.parse(%(
PREFIX doap: <http://usefulinc.com/ns/doap#>
INSERT DATA { <https://rubygems> doap:implements <http://www.w3.org/TR/sparql11-update/>}
), update: true)
- sse.execute(queryable)
+ update.execute(queryable)
### Rendering solutions as JSON, XML, CSV, TSV or HTML
queryable = RDF::Repository.load("etc/doap.ttl")
solutions = SPARQL.execute("SELECT * WHERE { ?s ?p ?o }", queryable)
solutions.to_json #to_xml #to_csv #to_tsv #to_html
### Parsing a SPARQL query string to SSE
- sse = SPARQL.parse("SELECT * WHERE { ?s ?p ?o }")
- sse.to_sxp #=> (bgp (triple ?s ?p ?o))
+ query = SPARQL.parse("SELECT * WHERE { ?s ?p ?o }")
+ query.to_sxp #=> (bgp (triple ?s ?p ?o))
+### Parsing a SSE to SPARQL query or update string to SPARQL
+
+ query = SPARQL::Algebra.parse(%{(bgp (triple ?s ?p ?o))})
+ sparql = query.to_sparql #=> "SELECT * WHERE { ?s ?p ?o }"
+
### Command line processing
sparql execute --dataset etc/doap.ttl etc/from_default.rq
sparql execute -e "SELECT * FROM <etc/doap.ttl> WHERE { ?s ?p ?o }"
# Generate SPARQL Algebra Expression (SSE) format
sparql parse etc/input.rq
sparql parse -e "SELECT * WHERE { ?s ?p ?o }"
+ # Generate SPARQL Query from SSE
+ sparql parse --sse etc/input.sse --format sparql
+ sparql parse --sse --format sparql -e "(dataset (<http://usefulinc.com/ns/doap>) (bgp (triple ?s ?p ?o))))"
+
# Run query using SSE input
sparql execute --dataset etc/doap.ttl --sse etc/input.sse
sparql execute --sse -e "(dataset (<etc/doap.ttl>) (bgp (triple ?s ?p ?o))))"
# Run a local SPARQL server using a dataset
@@ -366,23 +374,23 @@
* {Rack::SPARQL}
* {Rack::SPARQL::ContentNegotiation}
## Dependencies
-* [Ruby](https://ruby-lang.org/) (>= 2.2.2)
-* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.0)
-* [SPARQL::Client](https://rubygems.org/gems/sparql-client) (~> 3.0)
-* [SXP](https://rubygems.org/gems/sxp) (~> 1.0)
-* [Builder](https://rubygems.org/gems/builder) (>= 3.0.0)
-* [JSON](https://rubygems.org/gems/json) (>= 1.8.2)
-* Soft dependency on [Linked Data][] (>= 3.0)
-* Soft dependency on [Nokogiri](https://rubygems.org/gems/nokogiri) (>= 1.7)
+* [Ruby](https://ruby-lang.org/) (>= 2.6)
+* [RDF.rb](https://rubygems.org/gems/rdf) (~> 3.2)
+* [SPARQL::Client](https://rubygems.org/gems/sparql-client) (~> 3.1)
+* [SXP](https://rubygems.org/gems/sxp) (~> 1.2)
+* [Builder](https://rubygems.org/gems/builder) (~> 3.2)
+* [JSON](https://rubygems.org/gems/json) (~> 2.6)
+* Soft dependency on [Linked Data][] (>= 3.1)
+* Soft dependency on [Nokogiri](https://rubygems.org/gems/nokogiri) (~> 1.12)
Falls back to REXML for XML parsing Builder for XML serializing. Nokogiri is much more efficient
-* Soft dependency on [Equivalent XML](https://rubygems.org/gems/equivalent-xml) (>= 0.3.0)
+* Soft dependency on [Equivalent XML](https://rubygems.org/gems/equivalent-xml) (>= 0.6)
Equivalent XML performs more efficient comparisons of XML Literals when Nokogiri is included
-* Soft dependency on [Rack][] (>= 2.0)
-* Soft dependency on [Sinatra][] (>= 2.0)
+* Soft dependency on [Rack][] (~> 2.2)
+* Soft dependency on [Sinatra][] (~> 2.1)
## Installation
The recommended installation method is via [RubyGems](https://rubygems.org/).
To install the latest official release of the `SPARQL` gem, do:
@@ -448,10 +456,9 @@
[grammar]: https://www.w3.org/TR/sparql11-query/#grammar
[RDF 1.1]: https://www.w3.org/TR/rdf11-concepts
[RDF.rb]: https://rubydoc.info/github/ruby-rdf/rdf
[RDF-star]: https://w3c.github.io/rdf-star/rdf-star-cg-spec.html
[SPARQL-star]: https://w3c.github.io/rdf-star/rdf-star-cg-spec.html#sparql-query-language
-[Backports]: https://rubygems.org/gems/backports
[Linked Data]: https://rubygems.org/gems/linkeddata
[SPARQL doc]: https://rubydoc.info/github/ruby-rdf/sparql/frames
[SPARQL XML]: https://www.w3.org/TR/rdf-sparql-XMLres/
[SPARQL JSON]: https://www.w3.org/TR/rdf-sparql-json-res/
[SPARQL EBNF]: https://www.w3.org/TR/sparql11-query/#sparqlGrammar