sparql-client 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/README +11 -1
- data/VERSION +1 -1
- data/lib/sparql/client.rb +54 -14
- data/lib/sparql/client/query.rb +3 -1
- metadata +20 -18
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
MGYxMDJjM2EwYTRiZjhmNTEzNjVjZTNhODNlZDM2N2QwYThmYjRhZmFkNTUy
|
10
|
-
YjJjZjQ2MjQ0NGQyYjM4MjgxYmM0NTI2ZmZlZGRlYWRjYTRiYzNkYjU1YmY4
|
11
|
-
NmQ3YTAxN2YxNDZlZmRjMTgwMDY0NmRmYjVjMjRlMjY4YTVlYzU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YTY4MjMyY2Q1MDQ1YzFlMDE5ZjJlOTViYjZjYmQ2N2FmMjM1ZDgzMjM0NmY5
|
14
|
-
MWVlZGE2OTZjZDE0ZWQ0NmU5ZWY4ZDA2MDc4YmViOGI4ZDA3YmIwNzA0YTYz
|
15
|
-
YTVjYTljMzRjYzA4ZTBjYzBlZmRjNmM1MTQ4NGIwMWM1ZGQwM2E=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2d31d814fef5e463320af4f8bd59b3975142abf0
|
4
|
+
data.tar.gz: 201eb51ea4db458cc6efe7ed1387f6c2ab17e1dc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e01c39d5d56685eda053d1440a20b5286fa524276fd28993d5982b9ee1c93a4f756042d7d7e1ede8549a529b6d5f455df198d9caa99ffd31393f78ae7808cc5f
|
7
|
+
data.tar.gz: 066041570ba8b15393f9d036cf042feaaa8146e31105a63abc8b5e9e7a302ff468b4429d248ceea209e6697d1f581f1a2daadd5422cfa1cb2dc25b9c71863195
|
data/README
CHANGED
@@ -9,7 +9,8 @@ This is a [Ruby][] implementation of a [SPARQL][] client for [RDF.rb][].
|
|
9
9
|
|
10
10
|
##Features
|
11
11
|
|
12
|
-
* Executes queries against any SPARQL 1.0-compatible endpoint over HTTP
|
12
|
+
* Executes queries against any SPARQL 1.0/1.1-compatible endpoint over HTTP,
|
13
|
+
or against an `RDF::Queryable` instance, using the `SPARQL` gem.
|
13
14
|
* Provides a query builder [DSL][] for `ASK`, `SELECT`, `DESCRIBE` and
|
14
15
|
`CONSTRUCT` queries.
|
15
16
|
* Includes preliminary support for some SPARQL 1.1 Update operations.
|
@@ -22,10 +23,18 @@ This is a [Ruby][] implementation of a [SPARQL][] client for [RDF.rb][].
|
|
22
23
|
|
23
24
|
##Examples
|
24
25
|
|
26
|
+
### Querying a remote SPARQL endpoint
|
25
27
|
require 'sparql/client'
|
26
28
|
|
27
29
|
sparql = SPARQL::Client.new("http://dbpedia.org/sparql")
|
28
30
|
|
31
|
+
### Querying a `RDF::Repository` instance
|
32
|
+
|
33
|
+
require 'rdf/trig'
|
34
|
+
repository = RDF::Repository.load("http://example/dataset.trig")
|
35
|
+
|
36
|
+
sparql = SPARQL::Client.new(repository)
|
37
|
+
|
29
38
|
### Executing a boolean query and outputting the result
|
30
39
|
|
31
40
|
# ASK WHERE { ?s ?p ?o }
|
@@ -69,6 +78,7 @@ This is a [Ruby][] implementation of a [SPARQL][] client for [RDF.rb][].
|
|
69
78
|
* [RDF.rb](http://rubygems.org/gems/rdf) (>= 1.0)
|
70
79
|
* [Net::HTTP::Persistent](http://rubygems.org/gems/net-http-persistent) (>= 1.4)
|
71
80
|
* [JSON](http://rubygems.org/gems/json_pure) (>= 1.4)
|
81
|
+
* Soft dependency on [SPARQL](http://rubygems.org/gems/sparql) (>= 1.0)
|
72
82
|
|
73
83
|
##Installation
|
74
84
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.4
|
data/lib/sparql/client.rb
CHANGED
@@ -9,6 +9,7 @@ module SPARQL
|
|
9
9
|
# @see http://www.w3.org/TR/sparql11-query/
|
10
10
|
# @see http://www.w3.org/TR/sparql11-protocol/
|
11
11
|
# @see http://www.w3.org/TR/sparql11-results-json/
|
12
|
+
# @see http://www.w3.org/TR/sparql11-results-csv-tsv/
|
12
13
|
class Client
|
13
14
|
autoload :Query, 'sparql/client/query'
|
14
15
|
autoload :Repository, 'sparql/client/repository'
|
@@ -21,19 +22,23 @@ module SPARQL
|
|
21
22
|
|
22
23
|
RESULT_JSON = 'application/sparql-results+json'.freeze
|
23
24
|
RESULT_XML = 'application/sparql-results+xml'.freeze
|
25
|
+
RESULT_CSV = 'text/csv'.freeze
|
26
|
+
RESULT_TSV = 'text/tab-separated-values'.freeze
|
24
27
|
RESULT_BOOL = 'text/boolean'.freeze # Sesame-specific
|
25
28
|
RESULT_BRTR = 'application/x-binary-rdf-results-table'.freeze # Sesame-specific
|
26
29
|
ACCEPT_JSON = {'Accept' => RESULT_JSON}.freeze
|
27
30
|
ACCEPT_XML = {'Accept' => RESULT_XML}.freeze
|
31
|
+
ACCEPT_CSV = {'Accept' => RESULT_CSV}.freeze
|
32
|
+
ACCEPT_TSV = {'Accept' => RESULT_TSV}.freeze
|
28
33
|
ACCEPT_BRTR = {'Accept' => RESULT_BRTR}.freeze
|
29
34
|
|
30
35
|
DEFAULT_PROTOCOL = 1.0
|
31
36
|
DEFAULT_METHOD = :post
|
32
37
|
|
33
38
|
##
|
34
|
-
# The SPARQL endpoint URL.
|
39
|
+
# The SPARQL endpoint URL, or an RDF::Queryable instance, to use the native SPARQL engine.
|
35
40
|
#
|
36
|
-
# @return [RDF::URI]
|
41
|
+
# @return [RDF::URI, RDF::Queryable]
|
37
42
|
attr_reader :url
|
38
43
|
|
39
44
|
##
|
@@ -49,17 +54,27 @@ module SPARQL
|
|
49
54
|
attr_reader :options
|
50
55
|
|
51
56
|
##
|
52
|
-
#
|
57
|
+
# Initialize a new sparql client, either using the URL of
|
58
|
+
# a SPARQL endpoint or an `RDF::Queryable` instance to use
|
59
|
+
# the native SPARQL gem.
|
60
|
+
#
|
61
|
+
# @param [String, RDF::Queryable, #to_s] url
|
62
|
+
# URL of endpoint, or queryable object.
|
53
63
|
# @param [Hash{Symbol => Object}] options
|
54
64
|
# @option options [Symbol] :method (DEFAULT_METHOD)
|
55
65
|
# @option options [Number] :protocol (DEFAULT_PROTOCOL)
|
56
66
|
# @option options [Hash] :headers
|
57
67
|
def initialize(url, options = {}, &block)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
68
|
+
case url
|
69
|
+
when RDF::Queryable
|
70
|
+
@url, @options = url, options.dup
|
71
|
+
else
|
72
|
+
@url, @options = RDF::URI.new(url.to_s), options.dup
|
73
|
+
@headers = {
|
74
|
+
'Accept' => [RESULT_JSON, RESULT_XML, "#{RESULT_TSV};p=0.8", "#{RESULT_CSV};p=0.2", RDF::Format.content_types.keys.map(&:to_s)].join(', ')
|
75
|
+
}.merge(@options.delete(:headers) || {})
|
76
|
+
@http = http_klass(@url.scheme)
|
77
|
+
end
|
63
78
|
|
64
79
|
if block_given?
|
65
80
|
case block.arity
|
@@ -190,10 +205,19 @@ module SPARQL
|
|
190
205
|
# @example `CLEAR ALL`
|
191
206
|
# client.clear(:all)
|
192
207
|
#
|
193
|
-
# @
|
194
|
-
#
|
195
|
-
#
|
196
|
-
#
|
208
|
+
# @overload clear(what, *arguments)
|
209
|
+
# @param [Symbol, #to_sym] what
|
210
|
+
# @param [Array] arguments splat of other arguments to {Update::Clear}.
|
211
|
+
# @option options [Boolean] :silent
|
212
|
+
# @return [void] `self`
|
213
|
+
#
|
214
|
+
# @overload clear(what, *arguments, options = {})
|
215
|
+
# @param [Symbol, #to_sym] what
|
216
|
+
# @param [Array] arguments splat of other arguments to {Update::Clear}.
|
217
|
+
# @param [Hash{Symbol => Object}] options
|
218
|
+
# @option options [Boolean] :silent
|
219
|
+
# @return [void] `self`
|
220
|
+
#
|
197
221
|
# @see http://www.w3.org/TR/sparql11-update/#clear
|
198
222
|
def clear(what, *arguments)
|
199
223
|
self.update(Update::Clear.new(what, *arguments))
|
@@ -229,7 +253,13 @@ module SPARQL
|
|
229
253
|
# @see http://www.w3.org/TR/sparql11-protocol/#query-operation
|
230
254
|
def query(query, options = {})
|
231
255
|
@op = :query
|
232
|
-
|
256
|
+
case @url
|
257
|
+
when RDF::Queryable
|
258
|
+
require 'sparql' unless defined?(:SPARQL)
|
259
|
+
SPARQL.execute(query, @url, options)
|
260
|
+
else
|
261
|
+
parse_response(response(query, options), options)
|
262
|
+
end
|
233
263
|
end
|
234
264
|
|
235
265
|
##
|
@@ -243,7 +273,13 @@ module SPARQL
|
|
243
273
|
# @see http://www.w3.org/TR/sparql11-protocol/#update-operation
|
244
274
|
def update(query, options = {})
|
245
275
|
@op = :update
|
246
|
-
|
276
|
+
case @url
|
277
|
+
when RDF::Queryable
|
278
|
+
require 'sparql' unless defined?(:SPARQL)
|
279
|
+
SPARQL.execute(query, @url, options)
|
280
|
+
else
|
281
|
+
parse_response(response(query, options), options)
|
282
|
+
end
|
247
283
|
self
|
248
284
|
end
|
249
285
|
|
@@ -285,6 +321,10 @@ module SPARQL
|
|
285
321
|
self.class.parse_json_bindings(response.body, nodes)
|
286
322
|
when RESULT_XML
|
287
323
|
self.class.parse_xml_bindings(response.body, nodes)
|
324
|
+
when RESULT_CSV
|
325
|
+
self.class.parse_csv_bindings(response.body, nodes)
|
326
|
+
when RESULT_TSV
|
327
|
+
self.class.parse_tsv_bindings(response.body, nodes)
|
288
328
|
else
|
289
329
|
parse_rdf_serialization(response, options)
|
290
330
|
end
|
data/lib/sparql/client/query.rb
CHANGED
@@ -134,7 +134,8 @@ module SPARQL; class Client
|
|
134
134
|
end
|
135
135
|
|
136
136
|
##
|
137
|
-
# @param [Array<RDF::Query::Pattern, Array>]
|
137
|
+
# @param [Array<RDF::Query::Pattern, Array>] patterns_queries
|
138
|
+
# splat of zero or more patterns followed by zero or more queries.
|
138
139
|
# @return [Query]
|
139
140
|
# @see http://www.w3.org/TR/sparql11-query/#GraphPattern
|
140
141
|
def where(*patterns_queries)
|
@@ -263,6 +264,7 @@ module SPARQL; class Client
|
|
263
264
|
def true?
|
264
265
|
case result
|
265
266
|
when TrueClass, FalseClass then result
|
267
|
+
when RDF::Literal::Boolean then result.true?
|
266
268
|
when Enumerable then !result.empty?
|
267
269
|
else false
|
268
270
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sparql-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
@@ -10,93 +10,95 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-06-
|
13
|
+
date: 2013-06-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rdf
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '1.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - '>='
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '1.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: net-http-persistent
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '1.4'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '1.4'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: json_pure
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - '>='
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '1.4'
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - '>='
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '1.4'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: rdf-spec
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
|
-
- -
|
61
|
+
- - '>='
|
62
62
|
- !ruby/object:Gem::Version
|
63
63
|
version: '1.0'
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
|
-
- -
|
68
|
+
- - '>='
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '1.0'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rspec
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '2.12'
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - '>='
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: '2.12'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: yard
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- -
|
89
|
+
- - '>='
|
90
90
|
- !ruby/object:Gem::Version
|
91
91
|
version: '0.8'
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - '>='
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0.8'
|
99
|
-
description:
|
99
|
+
description: |-
|
100
|
+
Executes SPARQL queries and updates against a remote SPARQL 1.0 or 1.1 endpoint,
|
101
|
+
or against a local repository. Generates SPARQL queries using a simple DSL.
|
100
102
|
email: public-rdf-ruby@w3.org
|
101
103
|
executables: []
|
102
104
|
extensions: []
|
@@ -122,16 +124,16 @@ require_paths:
|
|
122
124
|
- lib
|
123
125
|
required_ruby_version: !ruby/object:Gem::Requirement
|
124
126
|
requirements:
|
125
|
-
- -
|
127
|
+
- - '>='
|
126
128
|
- !ruby/object:Gem::Version
|
127
129
|
version: 1.8.1
|
128
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
131
|
requirements:
|
130
|
-
- -
|
132
|
+
- - '>='
|
131
133
|
- !ruby/object:Gem::Version
|
132
134
|
version: '0'
|
133
135
|
requirements: []
|
134
|
-
rubyforge_project: sparql
|
136
|
+
rubyforge_project: sparql-client
|
135
137
|
rubygems_version: 2.0.3
|
136
138
|
signing_key:
|
137
139
|
specification_version: 4
|