Re: SPARQL client executes against local repository

Gregg Kellogg
gregg@greggkellogg.net

On Jun 20, 2013, at 3:01 AM, Peter Vandenabeele <peter@vandenabeele.com> wrote:

> On Thu, Jun 20, 2013 at 11:21 AM, Gregg Kellogg <gregg@greggkellogg.net> wrote:
> On Jun 20, 2013, at 1:59 AM, Peter Vandenabeele <peter@vandenabeele.com> wrote:
> 
>> On Thu, Jun 20, 2013 at 1:31 AM, Gregg Kellogg <gregg@greggkellogg.net> wrote:
>> Just released SPARQL::Client version 1.0.4, which now works against an RDF::Repository (actually any RDF::Queryable) in addition to remote endpoints. This allows the DSL to be used along with the SPARQL gem to access a local Repository, and runs in pure Ruby. For example:
>> 
>>     require 'rdf/turtle'
>>     require 'sparql/client'
>>     repository = RDF::Repository.load("https://raw.github.com/ruby-rdf/sparql-client/master/etc/doap.ttl", :format => :ttl)
>> 
>>     sparql = SPARQL::Client.new(repository)
>>     query = sparql.select.where([:s, :p, :o]).offset(10).limit(10)
>> 
>> Gregg Kellogg
>> gregg@greggkellogg.net
>> 
>> 
>> Hi Gregg,
>> 
>> I tried your script (in the context of an rvm gemset that was
>> populated with this Gemfile):
>> 
>>   $ cat Gemfile
>>   source 'https://rubygems.org'
>> 
>>   gem 'rdf'
>>   gem 'rdf-turtle'
>>   gem 'sparql'
>>   gem 'sparql-client'
>> 
>> I add the resulting Gemfile.lock below for detailed versions.
>> 
>> It works, but I seem to miss the part to execute the actual query
>> or ask the results from it? I must be missing something trivial ...
>> 
>> The thrown execption is:
>> 
>>   NoMethodError: undefined method `execute' for SPARQL:Module 
> 
> This was based on an example from the README, other examples illustrate this:
> 
> query.each_solution do |solution|
>   puts solution
> end
> 
> 
> Thanks for the fast reply and the link to the README of sparql-client.
> 
> I was able to get the example to work with an explicit require of 'sparql':
> 
>   require 'rdf/turtle'
>   require 'sparql/client'
>   require 'sparql' ## <== This require is also needed 
>   repository = RDF::Repository.load("https://raw.github.com/ruby-rdf/sparql-client/master/etc/doap.ttl", :format => :ttl)
>   sparql = SPARQL::Client.new(repository)
>   query = sparql.select.where([:s, :p, :o]).offset(10).limit(2)
>   query.execute
> 
> Output from irb below as reference.

This should be fixed now, I've updated the gem to version 1.0.4.1. Note that this won't work in Ruby versions < 1.9.

Gregg

> Thanks again,
> 
> peter_v
> 
> +++++++++++++++++
> 
> irb output:
> 
> $ irb
> 2.0.0p195 :001 >   require 'rdf/turtle'
>  => true 
> 2.0.0p195 :002 >   require 'sparql/client'
>  => true 
> 2.0.0p195 :003 >   require 'sparql' ## <== This require is also needed
>  => true 
> 2.0.0p195 :004 >   repository = RDF::Repository.load("https://raw.github.com/ruby-rdf/sparql-client/master/etc/doap.ttl", :format => :ttl)
>  => #<RDF::Repository:0x3fd06a248504()> 
> 2.0.0p195 :005 >    sparql = SPARQL::Client.new(repository)
>  => #<SPARQL::Client:0x3fd06954a30c(#<RDF::Repository:0x007fa0d4490a08>)> 
> 2.0.0p195 :006 >    query = sparql.select.where([:s, :p, :o]).offset(10).limit(2)
>  => #<SPARQL::Client::Query:0x3fd0695a8128(SELECT * WHERE { ?s ?p ?o . } OFFSET 10 LIMIT 2)> 
> 2.0.0p195 :007 >    query.execute
> Could not load gem 'equivalent-xml'; XMLLiteral comparison performed using REXML
>  => [#<RDF::Query::Solution:0x3fd06b044c20({:s=>#<RDF::URI:0x3fd0694e9020(http://rubygems.org/gems/rdf)>, :p=>#<RDF::URI:0x3fd06a103a7c(http://usefulinc.com/ns/doap#implements)>, :o=>#<RDF::URI:0x3fd06a1028ac(http://www.w3.org/TR/sparql11-query/)>})>, #<RDF::Query::Solution:0x3fd06b044b58({:s=>#<RDF::URI:0x3fd0694e9020(http://rubygems.org/gems/rdf)>, :p=>#<RDF::URI:0x3fd06a103a7c(http://usefulinc.com/ns/doap#implements)>, :o=>#<RDF::URI:0x3fd06a106380(http://www.w3.org/TR/sparql11-update/)>})>] 
> 

Received on Thursday, 20 June 2013 18:17:30 UTC