SPARQL Client for RDF.rb
This is a Ruby implementation of a SPARQL client for RDF.rb.
Features
- Executes queries against any SPARQL 1.0/1.1-compatible endpoint over HTTP,
or against an
RDF::Queryable
instance, using theSPARQL
gem. - Provides a query builder DSL for
ASK
,SELECT
,DESCRIBE
andCONSTRUCT
queries. - Includes preliminary support for some SPARQL 1.1 Update operations.
- Supports tuple result sets in both XML, JSON, CSV and TSV formats, with JSON being the preferred default for content-negotiation purposes.
- Supports graph results in any RDF serialization format understood by RDF.rb.
- Returns results using the RDF.rb object model.
- Supports accessing endpoints as read/write
RDF::Repository
instances {SPARQL::Client::Repository}.
Examples
Querying a remote SPARQL endpoint
require 'sparql/client'
sparql = SPARQL::Client.new("http://dbpedia.org/sparql")
RDF::Repository
instance
Querying a require 'rdf/trig'
repository = RDF::Repository.load("http://example/dataset.trig")
sparql = SPARQL::Client.new(repository)
Executing a boolean query and outputting the result
# ASK WHERE { ?s ?p ?o }
result = sparql.ask.whether([:s, :p, :o]).true?
puts result.inspect #=> true or false
Executing a tuple query and iterating over the returned solutions
# SELECT * WHERE { ?s ?p ?o } OFFSET 100 LIMIT 10
query = sparql.select.where([:s, :p, :o]).offset(100).limit(10)
query.each_solution do |solution|
puts solution.inspect
end
Executing a graph query and iterating over the returned statements
# CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o } LIMIT 10
query = sparql.construct([:s, :p, :o]).where([:s, :p, :o]).limit(10)
query.each_statement do |statement|
puts statement.inspect
end
Executing an arbitrary textual SPARQL query string
result = sparql.query("ASK WHERE { ?s ?p ?o }")
puts result.inspect #=> true or false
Inserting data into a graph
# INSERT DATA { <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> "J. Random Hacker" .}
data = RDF::Graph.new do |graph|
graph << [RDF::URI('http://example.org/jhacker'), RDF::Vocab::FOAF.name, "J. Random Hacker"]
end
insert_data(data)
Deleting data from a graph
# DELETE DATA { <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> "J. Random Hacker" .}
data = RDF::Graph.new do |graph|
graph << [RDF::URI('http://example.org/jhacker'), RDF::Vocab::FOAF.name, "J. Random Hacker"]
end
delete_data(data)
Documentation
- {SPARQL::Client}
- {SPARQL::Client::Query}
- {SPARQL::Client::Repository}
- {SPARQL::Client::Update}
Dependencies
- Ruby (>= 2.2.2)
- RDF.rb (>= 2.0)
- Net::HTTP::Persistent (>= 1.4)
- Soft dependency on SPARQL (>= 2.0)
- Soft dependency on Nokogiri (>= 1.6)
Installation
The recommended installation method is via RubyGems.
To install the latest official release of the SPARQL::Client
gem, do:
% [sudo] gem install sparql-client
Download
To get a local working copy of the development repository, do:
% git clone git://github.com/ruby-rdf/sparql-client.git
Alternatively, download the latest development version as a tarball as follows:
% wget http://github.com/ruby-rdf/sparql-client/tarball/master
Mailing List
Authors
- Arto Bendiken - http://ar.to/
- Ben Lavender - http://bhuga.net/
- Gregg Kellogg - http://greggkellogg.net/
Contributors
- Christoph Badura - http://github.com/bad
- James Hetherington - http://twitter.com/jamespjh
- Gabriel Horner - http://tagaholic.me/
- Nicholas Humfrey - http://www.aelius.com/njh/
- Fumihiro Kato - http://fumi.me/
- David Nielsen - http://github.com/drankard
- Thamaraiselvan Poomalai - http://softonaut.blogspot.com/
- Michael Sokol - http://sokolmichael.com/
- Yves Raimond - http://moustaki.org/
- Thomas Feron - http://github.com/thoferon
- Nick Gottlieb - http://www.nicholasgottlieb.com
Contributing
This repository uses Git Flow to mange development and release activity. All submissions must be on a feature branch based on the develop branch to ease staging and integration.
- Do your best to adhere to the existing coding conventions and idioms.
- Don't use hard tabs, and don't leave trailing whitespace on any line.
- Do document every method you add using YARD annotations. Read the tutorial or just look at the existing code for examples.
- Don't touch the
.gemspec
,VERSION
orAUTHORS
files. If you need to change them, do so on your private branch only. - Do feel free to add yourself to the
CREDITS
file and the corresponding list in the theREADME
. Alphabetical order applies. - Do note that in order for us to merge any non-trivial changes (as a rule of thumb, additions larger than about 15 lines of code), we need an explicit public domain dedication on record from you.
Resources
- http://ruby-rdf.github.com/sparql-client/
- http://github.com/ruby-rdf/sparql-client
- http://rubygems.org/gems/sparql-client
- http://raa.ruby-lang.org/project/sparql-client/
- http://www.ohloh.net/p/rdf
License
This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying {file:UNLICENSE} file.