sparql-client 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README +17 -0
- data/VERSION +1 -1
- data/lib/sparql/client/query.rb +142 -5
- data/lib/sparql/client/repository.rb +4 -4
- data/lib/sparql/client/update.rb +189 -5
- data/lib/sparql/client.rb +4 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cbfcd66988f16d017ebcabef5ab454d3d06ca46
|
4
|
+
data.tar.gz: a11a2a6ec4df3ad78cf190250e5992d0ac9f4279
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa4d22153b5828a56da4d7b0bc648987be93ebdc31e3162f44a945f6536436715d2325090a27061997ab894f2e4c352d8620393736483981812a132c426858e5
|
7
|
+
data.tar.gz: a953798c28628c65350ca3ce3d6819e4986a6dda587fd4ce1a926c1c1dcaf88cd229762ec1c2956eb89aa32191b98dfdcacfe9b96da9ffb52f8adc4cfc2731bd
|
data/README
CHANGED
@@ -66,11 +66,28 @@ This is a [Ruby][] implementation of a [SPARQL][] client for [RDF.rb][].
|
|
66
66
|
|
67
67
|
puts result.inspect #=> true or false
|
68
68
|
|
69
|
+
### Inserting data into a graph
|
70
|
+
|
71
|
+
# INSERT DATA { <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> "J. Random Hacker" .}
|
72
|
+
data = RDF::Graph.new do |graph|
|
73
|
+
graph << [RDF::URI('http://example.org/jhacker'), RDF::FOAF.name, "J. Random Hacker"]
|
74
|
+
end
|
75
|
+
insert_data(data)
|
76
|
+
|
77
|
+
### Deleting data from a graph
|
78
|
+
|
79
|
+
# DELETE DATA { <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> "J. Random Hacker" .}
|
80
|
+
data = RDF::Graph.new do |graph|
|
81
|
+
graph << [RDF::URI('http://example.org/jhacker'), RDF::FOAF.name, "J. Random Hacker"]
|
82
|
+
end
|
83
|
+
delete_data(data)
|
84
|
+
|
69
85
|
##Documentation
|
70
86
|
|
71
87
|
* {SPARQL::Client}
|
72
88
|
* {SPARQL::Client::Query}
|
73
89
|
* {SPARQL::Client::Repository}
|
90
|
+
* {SPARQL::Client::Update}
|
74
91
|
|
75
92
|
##Dependencies
|
76
93
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.6
|
data/lib/sparql/client/query.rb
CHANGED
@@ -7,7 +7,9 @@ module SPARQL; class Client
|
|
7
7
|
#
|
8
8
|
class Query < RDF::Query
|
9
9
|
##
|
10
|
-
#
|
10
|
+
# The form of the query.
|
11
|
+
#
|
12
|
+
# @return [:select, :ask, :construct, :describe]
|
11
13
|
# @see http://www.w3.org/TR/sparql11-query/#QueryForms
|
12
14
|
attr_reader :form
|
13
15
|
|
@@ -16,13 +18,18 @@ module SPARQL; class Client
|
|
16
18
|
attr_reader :options
|
17
19
|
|
18
20
|
##
|
21
|
+
# Values returned from previous query.
|
22
|
+
#
|
19
23
|
# @return [Array<[key, RDF::Value]>]
|
20
24
|
attr_reader :values
|
21
25
|
|
22
26
|
##
|
23
27
|
# Creates a boolean `ASK` query.
|
24
28
|
#
|
25
|
-
# @
|
29
|
+
# @example ASK WHERE { ?s ?p ?o . }
|
30
|
+
# Query.ask.where([:s, :p, :o])
|
31
|
+
#
|
32
|
+
# @param [Hash{Symbol => Object}] options (see {#initialize})
|
26
33
|
# @return [Query]
|
27
34
|
# @see http://www.w3.org/TR/sparql11-query/#ask
|
28
35
|
def self.ask(options = {})
|
@@ -32,11 +39,15 @@ module SPARQL; class Client
|
|
32
39
|
##
|
33
40
|
# Creates a tuple `SELECT` query.
|
34
41
|
#
|
42
|
+
# @example SELECT * WHERE { ?s ?p ?o . }
|
43
|
+
# Query.select.where([:s, :p, :o])
|
44
|
+
#
|
35
45
|
# @param [Array<Symbol>] variables
|
36
46
|
# @return [Query]
|
37
47
|
#
|
38
48
|
# @overload self.select(*variables, options)
|
39
49
|
# @param [Array<Symbol>] variables
|
50
|
+
# @param [Hash{Symbol => Object}] options (see {#initialize})
|
40
51
|
# @return [Query]
|
41
52
|
# @see http://www.w3.org/TR/sparql11-query/#select
|
42
53
|
def self.select(*variables)
|
@@ -47,11 +58,15 @@ module SPARQL; class Client
|
|
47
58
|
##
|
48
59
|
# Creates a `DESCRIBE` query.
|
49
60
|
#
|
61
|
+
# @example DESCRIBE * WHERE { ?s ?p ?o . }
|
62
|
+
# Query.describe.where([:s, :p, :o])
|
63
|
+
#
|
50
64
|
# @param [Array<Symbol, RDF::URI>] variables
|
51
65
|
# @return [Query]
|
52
66
|
#
|
53
67
|
# @overload self.describe(*variables, options)
|
54
68
|
# @param [Array<Symbol, RDF::URI>] variables
|
69
|
+
# @param [Hash{Symbol => Object}] options (see {#initialize})
|
55
70
|
# @return [Query]
|
56
71
|
# @see http://www.w3.org/TR/sparql11-query/#describe
|
57
72
|
def self.describe(*variables)
|
@@ -62,12 +77,15 @@ module SPARQL; class Client
|
|
62
77
|
##
|
63
78
|
# Creates a graph `CONSTRUCT` query.
|
64
79
|
#
|
80
|
+
# @example CONSTRUCT { ?s ?p ?o . } WHERE { ?s ?p ?o . }
|
81
|
+
# Query.construct([:s, :p, :o]).where([:s, :p, :o])
|
82
|
+
#
|
65
83
|
# @param [Array<RDF::Query::Pattern, Array>] patterns
|
66
84
|
# @return [Query]
|
67
85
|
#
|
68
86
|
# @overload self.construct(*variables, options)
|
69
87
|
# @param [Array<RDF::Query::Pattern, Array>] patterns
|
70
|
-
# @param [Hash{Symbol => Object}]
|
88
|
+
# @param [Hash{Symbol => Object}] options (see {#initialize})
|
71
89
|
# @return [Query]
|
72
90
|
# @see http://www.w3.org/TR/sparql11-query/#construct
|
73
91
|
def self.construct(*patterns)
|
@@ -79,7 +97,7 @@ module SPARQL; class Client
|
|
79
97
|
# @param [Symbol, #to_s] form
|
80
98
|
# @overload self.construct(*variables, options)
|
81
99
|
# @param [Symbol, #to_s] form
|
82
|
-
# @param [Hash{Symbol => Object}] options
|
100
|
+
# @param [Hash{Symbol => Object}] options (see {Client#initialize})
|
83
101
|
# @yield [query]
|
84
102
|
# @yieldparam [Query]
|
85
103
|
def initialize(form = :ask, options = {}, &block)
|
@@ -89,6 +107,9 @@ module SPARQL; class Client
|
|
89
107
|
end
|
90
108
|
|
91
109
|
##
|
110
|
+
# @example ASK WHERE { ?s ?p ?o . }
|
111
|
+
# query.ask.where([:s, :p, :o])
|
112
|
+
#
|
92
113
|
# @return [Query]
|
93
114
|
# @see http://www.w3.org/TR/sparql11-query/#ask
|
94
115
|
def ask
|
@@ -97,6 +118,9 @@ module SPARQL; class Client
|
|
97
118
|
end
|
98
119
|
|
99
120
|
##
|
121
|
+
# @example SELECT * WHERE { ?s ?p ?o . }
|
122
|
+
# query.select.where([:s, :p, :o])
|
123
|
+
#
|
100
124
|
# @param [Array<Symbol>] variables
|
101
125
|
# @return [Query]
|
102
126
|
# @see http://www.w3.org/TR/sparql11-query/#select
|
@@ -106,6 +130,9 @@ module SPARQL; class Client
|
|
106
130
|
end
|
107
131
|
|
108
132
|
##
|
133
|
+
# @example DESCRIBE * WHERE { ?s ?p ?o . }
|
134
|
+
# query.describe.where([:s, :p, :o])
|
135
|
+
#
|
109
136
|
# @param [Array<Symbol>] variables
|
110
137
|
# @return [Query]
|
111
138
|
# @see http://www.w3.org/TR/sparql11-query/#describe
|
@@ -117,6 +144,9 @@ module SPARQL; class Client
|
|
117
144
|
end
|
118
145
|
|
119
146
|
##
|
147
|
+
# @example CONSTRUCT { ?s ?p ?o . } WHERE { ?s ?p ?o . }
|
148
|
+
# query.construct([:s, :p, :o]).where([:s, :p, :o])
|
149
|
+
#
|
120
150
|
# @param [Array<RDF::Query::Pattern, Array>] patterns
|
121
151
|
# @return [Query]
|
122
152
|
# @see http://www.w3.org/TR/sparql11-query/#construct
|
@@ -125,6 +155,10 @@ module SPARQL; class Client
|
|
125
155
|
self
|
126
156
|
end
|
127
157
|
|
158
|
+
##
|
159
|
+
# @example SELECT * FROM <a> WHERE \{ ?s ?p ?o . \}
|
160
|
+
# query.select.from(RDF::URI.new(a)).where([:s, :p, :o])
|
161
|
+
#
|
128
162
|
# @param [RDF::URI] uri
|
129
163
|
# @return [Query]
|
130
164
|
# @see http://www.w3.org/TR/sparql11-query/#specifyingDataset
|
@@ -134,6 +168,10 @@ module SPARQL; class Client
|
|
134
168
|
end
|
135
169
|
|
136
170
|
##
|
171
|
+
# @example SELECT * WHERE { ?s ?p ?o . }
|
172
|
+
# query.select.where([:s, :p, :o])
|
173
|
+
# query.select.whether([:s, :p, :o])
|
174
|
+
#
|
137
175
|
# @param [Array<RDF::Query::Pattern, Array>] patterns_queries
|
138
176
|
# splat of zero or more patterns followed by zero or more queries.
|
139
177
|
# @return [Query]
|
@@ -148,6 +186,16 @@ module SPARQL; class Client
|
|
148
186
|
alias_method :whether, :where
|
149
187
|
|
150
188
|
##
|
189
|
+
# @example SELECT * WHERE { ?s ?p ?o . } ORDER BY ?o
|
190
|
+
# query.select.where([:s, :p, :o]).order(:o)
|
191
|
+
# query.select.where([:s, :p, :o]).order_by(:o)
|
192
|
+
#
|
193
|
+
# @example SELECT * WHERE { ?s ?p ?o . } ORDER BY ?o ?p
|
194
|
+
# query.select.where([:s, :p, :o]).order_by(:o, :p)
|
195
|
+
#
|
196
|
+
# @example SELECT * WHERE { ?s ?p ?o . } ORDER BY ASC(?o) DESC(?p)
|
197
|
+
# query.select.where([:s, :p, :o]).order_by(:o => :asc, :p => :desc)
|
198
|
+
#
|
151
199
|
# @param [Array<Symbol, String>] variables
|
152
200
|
# @return [Query]
|
153
201
|
# @see http://www.w3.org/TR/sparql11-query/#modOrderBy
|
@@ -159,6 +207,35 @@ module SPARQL; class Client
|
|
159
207
|
alias_method :order_by, :order
|
160
208
|
|
161
209
|
##
|
210
|
+
# @example SELECT * WHERE { ?s ?p ?o . } ORDER BY ASC(?o)
|
211
|
+
# query.select.where([:s, :p, :o]).order.asc(:o)
|
212
|
+
# query.select.where([:s, :p, :o]).asc(:o)
|
213
|
+
#
|
214
|
+
# @param [Array<Symbol, String>] variables
|
215
|
+
# @return [Query]
|
216
|
+
# @see http://www.w3.org/TR/sparql11-query/#modOrderBy
|
217
|
+
def asc(var)
|
218
|
+
(options[:order_by] ||= []) << {var => :asc}
|
219
|
+
self
|
220
|
+
end
|
221
|
+
|
222
|
+
##
|
223
|
+
# @example SELECT * WHERE { ?s ?p ?o . } ORDER BY DESC(?o)
|
224
|
+
# query.select.where([:s, :p, :o]).order.desc(:o)
|
225
|
+
# query.select.where([:s, :p, :o]).desc(:o)
|
226
|
+
#
|
227
|
+
# @param [Array<Symbol, String>] variables
|
228
|
+
# @return [Query]
|
229
|
+
# @see http://www.w3.org/TR/sparql11-query/#modOrderBy
|
230
|
+
def desc(var)
|
231
|
+
(options[:order_by] ||= []) << {var => :desc}
|
232
|
+
self
|
233
|
+
end
|
234
|
+
|
235
|
+
##
|
236
|
+
# @example SELECT ?s WHERE { ?s ?p ?o . } GROUP BY ?s
|
237
|
+
# query.select(:s).where([:s, :p, :o]).group_by(:s)
|
238
|
+
#
|
162
239
|
# @param [Array<Symbol, String>] variables
|
163
240
|
# @return [Query]
|
164
241
|
# @see http://www.w3.org/TR/sparql11-query/#groupby
|
@@ -170,6 +247,9 @@ module SPARQL; class Client
|
|
170
247
|
alias_method :group_by, :group
|
171
248
|
|
172
249
|
##
|
250
|
+
# @example SELECT DISTINCT ?s WHERE { ?s ?p ?o . }
|
251
|
+
# query.select(:s).distinct.where([:s, :p, :o])
|
252
|
+
#
|
173
253
|
# @return [Query]
|
174
254
|
# @see http://www.w3.org/TR/sparql11-query/#modDuplicates
|
175
255
|
def distinct(state = true)
|
@@ -178,6 +258,9 @@ module SPARQL; class Client
|
|
178
258
|
end
|
179
259
|
|
180
260
|
##
|
261
|
+
# @example SELECT REDUCED ?s WHERE { ?s ?p ?o . }
|
262
|
+
# query.select(:s).reduced.where([:s, :p, :o])
|
263
|
+
#
|
181
264
|
# @return [Query]
|
182
265
|
# @see http://www.w3.org/TR/sparql11-query/#modDuplicates
|
183
266
|
def reduced(state = true)
|
@@ -186,6 +269,8 @@ module SPARQL; class Client
|
|
186
269
|
end
|
187
270
|
|
188
271
|
##
|
272
|
+
# @example SELECT * WHERE { GRAPH ?g { ?s ?p ?o . } }
|
273
|
+
# query.select.graph(:g).where([:s, :p, :o])
|
189
274
|
# @param [RDF::Value] graph_uri_or_var
|
190
275
|
# @return [Query]
|
191
276
|
# @see http://www.w3.org/TR/sparql11-query/#queryDataset
|
@@ -200,6 +285,9 @@ module SPARQL; class Client
|
|
200
285
|
end
|
201
286
|
|
202
287
|
##
|
288
|
+
# @example SELECT * WHERE { ?s ?p ?o . } OFFSET 100
|
289
|
+
# query.select.where([:s, :p, :o]).offset(100)
|
290
|
+
#
|
203
291
|
# @param [Integer, #to_i] start
|
204
292
|
# @return [Query]
|
205
293
|
# @see http://www.w3.org/TR/sparql11-query/#modOffset
|
@@ -208,6 +296,9 @@ module SPARQL; class Client
|
|
208
296
|
end
|
209
297
|
|
210
298
|
##
|
299
|
+
# @example SELECT * WHERE { ?s ?p ?o . } LIMIT 10
|
300
|
+
# query.select.where([:s, :p, :o]).limit(10)
|
301
|
+
#
|
211
302
|
# @param [Integer, #to_i] length
|
212
303
|
# @return [Query]
|
213
304
|
# @see http://www.w3.org/TR/sparql11-query/#modResultLimit
|
@@ -216,6 +307,9 @@ module SPARQL; class Client
|
|
216
307
|
end
|
217
308
|
|
218
309
|
##
|
310
|
+
# @example SELECT * WHERE { ?s ?p ?o . } OFFSET 100 LIMIT 10
|
311
|
+
# query.select.where([:s, :p, :o]).slice(100, 10)
|
312
|
+
#
|
219
313
|
# @param [Integer, #to_i] start
|
220
314
|
# @param [Integer, #to_i] length
|
221
315
|
# @return [Query]
|
@@ -226,6 +320,12 @@ module SPARQL; class Client
|
|
226
320
|
end
|
227
321
|
|
228
322
|
##
|
323
|
+
# @example PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT * WHERE \{ ?s ?p ?o . \}
|
324
|
+
# query.select.
|
325
|
+
# prefix(dc: RDF::URI("http://purl.org/dc/elements/1.1/")).
|
326
|
+
# prefix(foaf: RDF::URI("http://xmlns.com/foaf/0.1/")).
|
327
|
+
# where([:s, :p, :o])
|
328
|
+
#
|
229
329
|
# @return [Query]
|
230
330
|
# @see http://www.w3.org/TR/sparql11-query/#prefNames
|
231
331
|
def prefix(string)
|
@@ -234,6 +334,10 @@ module SPARQL; class Client
|
|
234
334
|
end
|
235
335
|
|
236
336
|
##
|
337
|
+
# @example SELECT * WHERE \{ ?s ?p ?o . OPTIONAL \{ ?s a ?o . ?s \<http://purl.org/dc/terms/abstract\> ?o . \} \}
|
338
|
+
# query.select.where([:s, :p, :o]).
|
339
|
+
# optional([:s, RDF.type, :o], [:s, RDF::DC.abstract, :o])
|
340
|
+
#
|
237
341
|
# @return [Query]
|
238
342
|
# @see http://www.w3.org/TR/sparql11-query/#optionals
|
239
343
|
def optional(*patterns)
|
@@ -382,7 +486,40 @@ module SPARQL; class Client
|
|
382
486
|
|
383
487
|
if options[:order_by]
|
384
488
|
buffer << 'ORDER BY'
|
385
|
-
|
489
|
+
options[:order_by].map { |elem|
|
490
|
+
case elem
|
491
|
+
# .order_by({ :var1 => :asc, :var2 => :desc})
|
492
|
+
when Hash
|
493
|
+
elem.each { |key, val|
|
494
|
+
# check provided values
|
495
|
+
if !key.is_a?(Symbol)
|
496
|
+
raise ArgumentError, 'keys of hash argument must be a Symbol'
|
497
|
+
elsif !val.is_a?(Symbol) || (val != :asc && val != :desc)
|
498
|
+
raise ArgumentError, 'values of hash argument must either be `:asc` or `:desc`'
|
499
|
+
end
|
500
|
+
buffer << "#{val == :asc ? 'ASC' : 'DESC'}(?#{key})"
|
501
|
+
}
|
502
|
+
# .order_by([:var1, :asc], [:var2, :desc])
|
503
|
+
when Array
|
504
|
+
# check provided values
|
505
|
+
if elem.length != 2
|
506
|
+
raise ArgumentError, 'array argument must specify two elements'
|
507
|
+
elsif !elem[0].is_a?(Symbol)
|
508
|
+
raise ArgumentError, '1st element of array argument must contain a Symbol'
|
509
|
+
elsif !elem[1].is_a?(Symbol) || (elem[1] != :asc && elem[1] != :desc)
|
510
|
+
raise ArgumentError, '2nd element of array argument must either be `:asc` or `:desc`'
|
511
|
+
end
|
512
|
+
buffer << "#{elem[1] == :asc ? 'ASC' : 'DESC'}(?#{elem[0]})"
|
513
|
+
# .order_by(:var1, :var2)
|
514
|
+
when Symbol
|
515
|
+
buffer << "?#{elem}"
|
516
|
+
# .order_by('ASC(?var1) DESC(?var2)')
|
517
|
+
when String
|
518
|
+
buffer << elem
|
519
|
+
else
|
520
|
+
raise ArgumentError, 'argument provided to `order()` must either be an Array, Symbol or String'
|
521
|
+
end
|
522
|
+
}
|
386
523
|
end
|
387
524
|
|
388
525
|
buffer << "OFFSET #{options[:offset]}" if options[:offset]
|
@@ -2,7 +2,7 @@ module SPARQL; class Client
|
|
2
2
|
##
|
3
3
|
# A read-only repository view of a SPARQL endpoint.
|
4
4
|
#
|
5
|
-
# @see RDF::Repository
|
5
|
+
# @see `RDF::Repository`
|
6
6
|
class Repository < RDF::Repository
|
7
7
|
# @return [SPARQL::Client]
|
8
8
|
attr_reader :client
|
@@ -18,7 +18,7 @@ module SPARQL; class Client
|
|
18
18
|
|
19
19
|
##
|
20
20
|
# Returns the client for the update_endpoint if specified, otherwise the
|
21
|
-
# {client}.
|
21
|
+
# {#client}.
|
22
22
|
#
|
23
23
|
# @return [SPARQL::Client]
|
24
24
|
def update_client
|
@@ -186,7 +186,7 @@ module SPARQL; class Client
|
|
186
186
|
|
187
187
|
##
|
188
188
|
# Deletes RDF statements from `self`.
|
189
|
-
# If any statement contains
|
189
|
+
# If any statement contains an `RDF::Query::Variable`, it is
|
190
190
|
# considered to be a pattern, and used to query
|
191
191
|
# self to find matching statements to delete.
|
192
192
|
#
|
@@ -231,7 +231,7 @@ module SPARQL; class Client
|
|
231
231
|
# repository.query([nil, RDF::DOAP.developer, nil])
|
232
232
|
# repository.query(:predicate => RDF::DOAP.developer)
|
233
233
|
#
|
234
|
-
# @
|
234
|
+
# @todo This should use basic SPARQL query mechanism.
|
235
235
|
#
|
236
236
|
# @param [Pattern] pattern
|
237
237
|
# @see RDF::Queryable#query_pattern
|
data/lib/sparql/client/update.rb
CHANGED
@@ -2,26 +2,128 @@ class SPARQL::Client
|
|
2
2
|
##
|
3
3
|
# SPARQL 1.1 Update operation builders.
|
4
4
|
module Update
|
5
|
+
##
|
6
|
+
# Insert statements into the graph
|
7
|
+
#
|
8
|
+
# @example INSERT DATA \{ <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> \"J. Random Hacker\" .\}
|
9
|
+
# data = RDF::Graph.new do |graph|
|
10
|
+
# graph << [RDF::URI('http://example.org/jhacker'), RDF::FOAF.name, "J. Random Hacker"]
|
11
|
+
# end
|
12
|
+
# insert_data(data)
|
13
|
+
#
|
14
|
+
# @example INSERT DATA \{ GRAPH <http://example.org/> \{\}\}
|
15
|
+
# insert_data(RDF::Graph.new, :graph => 'http://example.org/')
|
16
|
+
# insert_data(RDF::Graph.new).graph('http://example.org/')
|
17
|
+
#
|
18
|
+
# @param (see InsertData#initialize)
|
5
19
|
def self.insert_data(*arguments)
|
6
20
|
InsertData.new(*arguments)
|
7
21
|
end
|
8
22
|
|
23
|
+
##
|
24
|
+
# Delete statements from the graph
|
25
|
+
#
|
26
|
+
# @example DELETE DATA \{ <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> \"J. Random Hacker\" .\}
|
27
|
+
# data = RDF::Graph.new do |graph|
|
28
|
+
# graph << [RDF::URI('http://example.org/jhacker'), RDF::FOAF.name, "J. Random Hacker"]
|
29
|
+
# end
|
30
|
+
# delete_data(data)
|
31
|
+
#
|
32
|
+
# @example DELETE DATA \{ GRAPH <http://example.org/> \{\}\}
|
33
|
+
# delete_data(RDF::Graph.new, :graph => 'http://example.org/')
|
34
|
+
# delete_data(RDF::Graph.new).graph('http://example.org/')
|
35
|
+
#
|
36
|
+
# @param (see DeleteData#initialize)
|
9
37
|
def self.delete_data(*arguments)
|
10
38
|
DeleteData.new(*arguments)
|
11
39
|
end
|
12
40
|
|
41
|
+
##
|
42
|
+
# Load statements into the graph
|
43
|
+
#
|
44
|
+
# @example LOAD <http://example.org/data.rdf>
|
45
|
+
# load(RDF::URI(http://example.org/data.rdf))
|
46
|
+
#
|
47
|
+
# @example LOAD SILENT <http://example.org/data.rdf>
|
48
|
+
# load(RDF::URI(http://example.org/data.rdf)).silent
|
49
|
+
# load(RDF::URI(http://example.org/data.rdf), silent: true)
|
50
|
+
#
|
51
|
+
# @example LOAD <http://example.org/data.rdf> INTO <http://example.org/data.rdf>
|
52
|
+
# load(RDF::URI(http://example.org/data.rdf)).into(RDF::URI(http://example.org/data.rdf))
|
53
|
+
# load(RDF::URI(http://example.org/data.rdf), into: RDF::URI(http://example.org/data.rdf))
|
54
|
+
#
|
55
|
+
# @param (see Load#initialize)
|
13
56
|
def self.load(*arguments)
|
14
57
|
Load.new(*arguments)
|
15
58
|
end
|
16
59
|
|
60
|
+
##
|
61
|
+
# Load statements into the graph
|
62
|
+
#
|
63
|
+
# @example CLEAR GRAPH <http://example.org/data.rdf>
|
64
|
+
# clear.graph(RDF::URI(http://example.org/data.rdf))
|
65
|
+
# clear(:graph, RDF::URI(http://example.org/data.rdf))
|
66
|
+
#
|
67
|
+
# @example CLEAR DEFAULT
|
68
|
+
# clear.default
|
69
|
+
# clear(:default)
|
70
|
+
#
|
71
|
+
# @example CLEAR NAMED
|
72
|
+
# clear.named
|
73
|
+
# clear(:named)
|
74
|
+
#
|
75
|
+
# @example CLEAR ALL
|
76
|
+
# clear.all
|
77
|
+
# clear(:all)
|
78
|
+
#
|
79
|
+
# @example CLEAR SILENT ALL
|
80
|
+
# clear.all.silent
|
81
|
+
# clear(:all, silent: true)
|
82
|
+
#
|
83
|
+
# @param (see Clear#initialize)
|
17
84
|
def self.clear(*arguments)
|
18
85
|
Clear.new(*arguments)
|
19
86
|
end
|
20
87
|
|
88
|
+
##
|
89
|
+
# Create a graph
|
90
|
+
#
|
91
|
+
# @example CREATE GRAPH <http://example.org/data.rdf>
|
92
|
+
# create(RDF::URI(http://example.org/data.rdf))
|
93
|
+
#
|
94
|
+
# @example CREATE SILENT GRAPH <http://example.org/data.rdf>
|
95
|
+
# create(RDF::URI(http://example.org/data.rdf)).silent
|
96
|
+
# create(RDF::URI(http://example.org/data.rdf), silent: true)
|
97
|
+
#
|
98
|
+
# @param (see Create#initialize)
|
21
99
|
def self.create(*arguments)
|
22
100
|
Create.new(*arguments)
|
23
101
|
end
|
24
102
|
|
103
|
+
##
|
104
|
+
# Drop a graph
|
105
|
+
#
|
106
|
+
# @example DROP GRAPH <http://example.org/data.rdf>
|
107
|
+
# drop.graph(RDF::URI(http://example.org/data.rdf))
|
108
|
+
# drop(:graph, RDF::URI(http://example.org/data.rdf))
|
109
|
+
#
|
110
|
+
# @example DROP DEFAULT
|
111
|
+
# drop.default
|
112
|
+
# drop(:default)
|
113
|
+
#
|
114
|
+
# @example DROP NAMED
|
115
|
+
# drop.named
|
116
|
+
# drop(:named)
|
117
|
+
#
|
118
|
+
# @example DROP ALL
|
119
|
+
# drop.all
|
120
|
+
# drop(:all)
|
121
|
+
#
|
122
|
+
# @example DROP ALL SILENT
|
123
|
+
# drop.all.silent
|
124
|
+
# drop(:all, silent: true)
|
125
|
+
#
|
126
|
+
# @param (see Drop#initialize)
|
25
127
|
def self.drop(*arguments)
|
26
128
|
Drop.new(*arguments)
|
27
129
|
end
|
@@ -39,11 +141,13 @@ class SPARQL::Client
|
|
39
141
|
##
|
40
142
|
# Generic Update always returns statements
|
41
143
|
#
|
42
|
-
# @return
|
144
|
+
# @return [true]
|
43
145
|
def expects_statements?
|
44
146
|
true
|
45
147
|
end
|
46
148
|
|
149
|
+
##
|
150
|
+
# Set `silent` option
|
47
151
|
def silent
|
48
152
|
self.options[:silent] = true
|
49
153
|
self
|
@@ -53,13 +157,30 @@ class SPARQL::Client
|
|
53
157
|
##
|
54
158
|
# @see http://www.w3.org/TR/sparql11-update/#insertData
|
55
159
|
class InsertData < Operation
|
160
|
+
# @return [RDF::Enumerable]
|
56
161
|
attr_reader :data
|
57
162
|
|
163
|
+
##
|
164
|
+
# Insert statements into the graph
|
165
|
+
#
|
166
|
+
# @example INSERT DATA \{ <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> \"J. Random Hacker\" .\}
|
167
|
+
# data = RDF::Graph.new do |graph|
|
168
|
+
# graph << [RDF::URI('http://example.org/jhacker'), RDF::FOAF.name, "J. Random Hacker"]
|
169
|
+
# end
|
170
|
+
# insert_data(data)
|
171
|
+
#
|
172
|
+
# @param [Array<RDF::Statement>, RDF::Enumerable] data
|
173
|
+
# @param [Hash{Symbol => Object}] options
|
58
174
|
def initialize(data, options = {})
|
59
175
|
@data = data
|
60
176
|
super(options)
|
61
177
|
end
|
62
178
|
|
179
|
+
##
|
180
|
+
# Cause data to be inserted into the graph specified by `uri`
|
181
|
+
#
|
182
|
+
# @param [RDF::URI] uri
|
183
|
+
# @return [self]
|
63
184
|
def graph(uri)
|
64
185
|
self.options[:graph] = uri
|
65
186
|
self
|
@@ -68,7 +189,7 @@ class SPARQL::Client
|
|
68
189
|
##
|
69
190
|
# InsertData always returns result set
|
70
191
|
#
|
71
|
-
# @return
|
192
|
+
# @return [true]
|
72
193
|
def expects_statements?
|
73
194
|
false
|
74
195
|
end
|
@@ -86,13 +207,30 @@ class SPARQL::Client
|
|
86
207
|
##
|
87
208
|
# @see http://www.w3.org/TR/sparql11-update/#deleteData
|
88
209
|
class DeleteData < Operation
|
210
|
+
# @return [RDF::Enumerable]
|
89
211
|
attr_reader :data
|
90
212
|
|
213
|
+
##
|
214
|
+
# Delete statements from the graph
|
215
|
+
#
|
216
|
+
# @example DELETE DATA \{ <http://example.org/jhacker> <http://xmlns.com/foaf/0.1/name> \"J. Random Hacker\" .\}
|
217
|
+
# data = RDF::Graph.new do |graph|
|
218
|
+
# graph << [RDF::URI('http://example.org/jhacker'), RDF::FOAF.name, "J. Random Hacker"]
|
219
|
+
# end
|
220
|
+
# delete_data(data)
|
221
|
+
#
|
222
|
+
# @param [Array<RDF::Statement>, RDF::Enumerable] data
|
223
|
+
# @param [Hash{Symbol => Object}] options
|
91
224
|
def initialize(data, options = {})
|
92
225
|
@data = data
|
93
226
|
super(options)
|
94
227
|
end
|
95
228
|
|
229
|
+
##
|
230
|
+
# Cause data to be deleted from the graph specified by `uri`
|
231
|
+
#
|
232
|
+
# @param [RDF::URI] uri
|
233
|
+
# @return [self]
|
96
234
|
def graph(uri)
|
97
235
|
self.options[:graph] = uri
|
98
236
|
self
|
@@ -122,6 +260,11 @@ class SPARQL::Client
|
|
122
260
|
super(options)
|
123
261
|
end
|
124
262
|
|
263
|
+
##
|
264
|
+
# Cause data to be deleted and inserted from the graph specified by `uri`
|
265
|
+
#
|
266
|
+
# @param [RDF::URI] uri
|
267
|
+
# @return [self]
|
125
268
|
def graph(uri)
|
126
269
|
self.options[:graph] = uri
|
127
270
|
self
|
@@ -163,6 +306,24 @@ class SPARQL::Client
|
|
163
306
|
attr_reader :from
|
164
307
|
attr_reader :into
|
165
308
|
|
309
|
+
|
310
|
+
##
|
311
|
+
# Load statements into the graph
|
312
|
+
#
|
313
|
+
# @example LOAD <http://example.org/data.rdf>
|
314
|
+
# load(RDF::URI(http://example.org/data.rdf))
|
315
|
+
#
|
316
|
+
# @example LOAD SILENT<http://example.org/data.rdf>
|
317
|
+
# load(RDF::URI(http://example.org/data.rdf)).silent
|
318
|
+
# load(RDF::URI(http://example.org/data.rdf), silent: true)
|
319
|
+
#
|
320
|
+
# @example LOAD <http://example.org/data.rdf> INTO <http://example.org/data.rdf>
|
321
|
+
# load(RDF::URI(http://example.org/data.rdf)).into(RDF::URI(http://example.org/data.rdf))
|
322
|
+
# load(RDF::URI(http://example.org/data.rdf), into: RDF::URI(http://example.org/data.rdf))
|
323
|
+
# @param [RDF::URI] from
|
324
|
+
# @param [Hash{Symbol => Object}] options
|
325
|
+
# @option [RDF::URI] :into
|
326
|
+
# @option [Boolean] :silent
|
166
327
|
def initialize(from, options = {})
|
167
328
|
options = options.dup
|
168
329
|
@from = RDF::URI(from)
|
@@ -170,8 +331,13 @@ class SPARQL::Client
|
|
170
331
|
super(options)
|
171
332
|
end
|
172
333
|
|
173
|
-
|
174
|
-
|
334
|
+
##
|
335
|
+
# Cause data to be loaded into graph specified by `uri`
|
336
|
+
#
|
337
|
+
# @param [RDF::URI] uri
|
338
|
+
# @return [self]
|
339
|
+
def into(uri)
|
340
|
+
@into = RDF::URI(uri)
|
175
341
|
self
|
176
342
|
end
|
177
343
|
|
@@ -189,21 +355,38 @@ class SPARQL::Client
|
|
189
355
|
class Clear < Operation
|
190
356
|
attr_reader :uri
|
191
357
|
|
358
|
+
##
|
359
|
+
# Cause data to be cleared from graph specified by `uri`
|
360
|
+
#
|
361
|
+
# @param [RDF::URI] uri
|
362
|
+
# @return [self]
|
192
363
|
def graph(uri)
|
193
364
|
@what, @uri = :graph, uri
|
194
365
|
self
|
195
366
|
end
|
196
367
|
|
368
|
+
##
|
369
|
+
# Cause data to be cleared from the default graph
|
370
|
+
#
|
371
|
+
# @return [self]
|
197
372
|
def default
|
198
373
|
@what = :default
|
199
374
|
self
|
200
375
|
end
|
201
376
|
|
377
|
+
##
|
378
|
+
# Cause data to be cleared from named graphs
|
379
|
+
#
|
380
|
+
# @return [self]
|
202
381
|
def named
|
203
382
|
@what = :named
|
204
383
|
self
|
205
384
|
end
|
206
385
|
|
386
|
+
##
|
387
|
+
# Cause data to be cleared from all graphs
|
388
|
+
#
|
389
|
+
# @return [self]
|
207
390
|
def all
|
208
391
|
@what = :all
|
209
392
|
self
|
@@ -212,7 +395,7 @@ class SPARQL::Client
|
|
212
395
|
##
|
213
396
|
# Clear always returns statements
|
214
397
|
#
|
215
|
-
# @return
|
398
|
+
# @return [false]
|
216
399
|
def expects_statements?
|
217
400
|
false
|
218
401
|
end
|
@@ -236,6 +419,7 @@ class SPARQL::Client
|
|
236
419
|
class Create < Operation
|
237
420
|
attr_reader :uri
|
238
421
|
|
422
|
+
# @param [Hash{Symbol => Object}] options
|
239
423
|
def initialize(uri, options = {})
|
240
424
|
@uri = RDF::URI(uri)
|
241
425
|
super(options)
|
data/lib/sparql/client.rb
CHANGED
@@ -108,6 +108,7 @@ module SPARQL
|
|
108
108
|
##
|
109
109
|
# Executes a boolean `ASK` query.
|
110
110
|
#
|
111
|
+
# @param (see Query.ask)
|
111
112
|
# @return [Query]
|
112
113
|
def ask(*args)
|
113
114
|
call_query_method(:ask, *args)
|
@@ -116,7 +117,7 @@ module SPARQL
|
|
116
117
|
##
|
117
118
|
# Executes a tuple `SELECT` query.
|
118
119
|
#
|
119
|
-
# @param
|
120
|
+
# @param (see Query.select)
|
120
121
|
# @return [Query]
|
121
122
|
def select(*args)
|
122
123
|
call_query_method(:select, *args)
|
@@ -125,7 +126,7 @@ module SPARQL
|
|
125
126
|
##
|
126
127
|
# Executes a `DESCRIBE` query.
|
127
128
|
#
|
128
|
-
# @param
|
129
|
+
# @param (see Query.describe)
|
129
130
|
# @return [Query]
|
130
131
|
def describe(*args)
|
131
132
|
call_query_method(:describe, *args)
|
@@ -134,7 +135,7 @@ module SPARQL
|
|
134
135
|
##
|
135
136
|
# Executes a graph `CONSTRUCT` query.
|
136
137
|
#
|
137
|
-
# @param
|
138
|
+
# @param (see Query.construct)
|
138
139
|
# @return [Query]
|
139
140
|
def construct(*args)
|
140
141
|
call_query_method(:construct, *args)
|
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.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-08-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rdf
|
@@ -80,14 +80,14 @@ dependencies:
|
|
80
80
|
requirements:
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
83
|
+
version: 3.0.0
|
84
84
|
type: :development
|
85
85
|
prerelease: false
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - "~>"
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 3.0.0
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rspec-its
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
170
170
|
version: '0'
|
171
171
|
requirements: []
|
172
172
|
rubyforge_project: sparql-client
|
173
|
-
rubygems_version: 2.4.
|
173
|
+
rubygems_version: 2.4.7
|
174
174
|
signing_key:
|
175
175
|
specification_version: 4
|
176
176
|
summary: SPARQL client for RDF.rb.
|