#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
require 'sparql/client'
sparql = SPARQL::Client.new("http://dbpedia.org/sparql")
require 'rdf/trig'
repository = RDF::Repository.load("http://example/dataset.trig")
sparql = SPARQL::Client.new(repository)
# ASK WHERE { ?s ?p ?o }
result = sparql.ask.whether([:s, :p, :o]).true?
puts result.inspect #=> true or false
# 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
# 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
result = sparql.query("ASK WHERE { ?s ?p ?o }")
puts result.inspect #=> true or false
##Documentation
- {SPARQL::Client}
- {SPARQL::Client::Query}
- {SPARQL::Client::Repository}
##Dependencies
- Ruby (>= 1.9.3)
- RDF.rb (>= 1.1)
- Net::HTTP::Persistent (>= 1.4)
- Soft dependency on SPARQL (>= 1.1)
- Soft dependency on Nokogiri (>= 1.5)
##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://rubyforge.org/projects/sparql/
- 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.