sparql-client 3.0.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3a059f24774ca03ca4acab2ad37de9edcfbfcc8844ea0da0d7fe3d4b2a90849
4
- data.tar.gz: 8aa709b83cab4ee290d3513ebb6fd90370d40587b58e8b06351b3df0f32973bb
3
+ metadata.gz: 25fd44467b4b7014096fea7c336164c863b3da501ee747466ed486bdfab2f93d
4
+ data.tar.gz: f44d3e424e8c3fb13b0a323403212134c34e8fa7fb7ebaba562ded69a9d02fd7
5
5
  SHA512:
6
- metadata.gz: a7abad9a9c21cf0b8d88f9e1bf7ee98cc97ba8fa9a40c9eb06d29293202d16cb10aef0dc9edabe626709230e13511cae7a28af7bc0d48c5ece65ed7030c86022
7
- data.tar.gz: fe927a99648a455a10494b839d994edae99b755512c69862e1a77418af0aad62d59132e663915ebea6f3f34c0fa6b057f7eab281fbb401bef8be30afecc63c2a
6
+ metadata.gz: 404e7f204b5bda734f531b29133705dcdf236a4bc7f348f32f6034595e43cd7e78814cb2d8cf66c696a9fd548496fd50b245b5bf2e705a551ef6e5012321c7d6
7
+ data.tar.gz: 4764b49167f0bd23e16455d9e1cf9ede6193db3dcd96eb17fd9ed4245557906dd5195424dbe88f098c8381e580ffc433f577e558b5472cb4f8f2a1756de3f911
data/README.md CHANGED
@@ -30,11 +30,20 @@ This is a [Ruby][] implementation of a [SPARQL][] client for [RDF.rb][].
30
30
  require 'sparql/client'
31
31
  sparql = SPARQL::Client.new("http://dbpedia.org/sparql")
32
32
  ```
33
+
34
+ ### Querying a remote SPARQL endpoint with a custom User-Agent
35
+ By default, SPARQL::Client adds a `User-Agent` field to requests, but applications may choose to provide their own, using the `headers` option:
36
+
37
+ ```ruby
38
+ require 'sparql/client'
39
+ sparql = SPARQL::Client.new("http://dbpedia.org/sparql", headers: {'User-Agent' => 'MyBotName'})
40
+ ```
41
+
33
42
  ### Querying a remote SPARQL endpoint with a specified default graph
34
43
 
35
44
  ```ruby
36
45
  require 'sparql/client'
37
- sparql = SPARQL::Client.new("http://dbpedia.org/sparql", { :graph => "http://dbpedia.org" })
46
+ sparql = SPARQL::Client.new("http://dbpedia.org/sparql", { graph: "http://dbpedia.org" })
38
47
  ```
39
48
 
40
49
 
@@ -114,11 +123,11 @@ sparql.delete_data(data)
114
123
 
115
124
  ## Dependencies
116
125
 
117
- * [Ruby](http://ruby-lang.org/) (>= 2.2.2)
118
- * [RDF.rb](http://rubygems.org/gems/rdf) (~> 3.0)
119
- * [Net::HTTP::Persistent](http://rubygems.org/gems/net-http-persistent) (>= 1.4)
120
- * Soft dependency on [SPARQL](http://rubygems.org/gems/sparql) (~> 3.0)
121
- * Soft dependency on [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.7)
126
+ * [Ruby](http://ruby-lang.org/) (>= 2.4)
127
+ * [RDF.rb](http://rubygems.org/gems/rdf) (~> 3.1)
128
+ * [Net::HTTP::Persistent](http://rubygems.org/gems/net-http-persistent) (~> 3.1)
129
+ * Soft dependency on [SPARQL](http://rubygems.org/gems/sparql) (~> 3.1)
130
+ * Soft dependency on [Nokogiri](http://rubygems.org/gems/nokogiri) (>= 1.10)
122
131
 
123
132
  ## Installation
124
133
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.1
1
+ 3.1.0
@@ -86,8 +86,13 @@ module SPARQL
86
86
  # @option options [Symbol] :method (DEFAULT_METHOD)
87
87
  # @option options [Number] :protocol (DEFAULT_PROTOCOL)
88
88
  # @option options [Hash] :headers
89
+ # HTTP Request headers
90
+ #
91
+ # Defaults `Accept` header based on available reader content types if triples are expected and to SPARQL result types otherwise, to allow for content negotiation based on available readers.
92
+ #
93
+ # Defaults `User-Agent` header, unless one is specified.
89
94
  # @option options [Hash] :read_timeout
90
- def initialize(url, options = {}, &block)
95
+ def initialize(url, **options, &block)
91
96
  case url
92
97
  when RDF::Queryable
93
98
  @url, @options = url, options.dup
@@ -95,6 +100,9 @@ module SPARQL
95
100
  @url, @options = RDF::URI.new(url.to_s), options.dup
96
101
  @headers = @options.delete(:headers) || {}
97
102
  @http = http_klass(@url.scheme)
103
+
104
+ # Close the http connection when object is deallocated
105
+ ObjectSpace.define_finalizer(self, proc {@http.shutdown if @http.respond_to?(:shutdown)})
98
106
  end
99
107
 
100
108
  if block_given?
@@ -105,13 +113,23 @@ module SPARQL
105
113
  end
106
114
  end
107
115
 
116
+ ##
117
+ # Closes a client instance by finishing the connection.
118
+ # The client is unavailable for any further data operations; an IOError is raised if such an attempt is made. I/O streams are automatically closed when they are claimed by the garbage collector.
119
+ # @return [void] `self`
120
+ def close
121
+ @http.shutdown if @http
122
+ @http = nil
123
+ self
124
+ end
125
+
108
126
  ##
109
127
  # Executes a boolean `ASK` query.
110
128
  #
111
129
  # @param (see Query.ask)
112
130
  # @return [Query]
113
- def ask(*args)
114
- call_query_method(:ask, *args)
131
+ def ask(*args, **options)
132
+ call_query_method(:ask, *args, **options)
115
133
  end
116
134
 
117
135
  ##
@@ -119,8 +137,8 @@ module SPARQL
119
137
  #
120
138
  # @param (see Query.select)
121
139
  # @return [Query]
122
- def select(*args)
123
- call_query_method(:select, *args)
140
+ def select(*args, **options)
141
+ call_query_method(:select, *args, **options)
124
142
  end
125
143
 
126
144
  ##
@@ -128,8 +146,8 @@ module SPARQL
128
146
  #
129
147
  # @param (see Query.describe)
130
148
  # @return [Query]
131
- def describe(*args)
132
- call_query_method(:describe, *args)
149
+ def describe(*args, **options)
150
+ call_query_method(:describe, *args, **options)
133
151
  end
134
152
 
135
153
  ##
@@ -137,8 +155,8 @@ module SPARQL
137
155
  #
138
156
  # @param (see Query.construct)
139
157
  # @return [Query]
140
- def construct(*args)
141
- call_query_method(:construct, *args)
158
+ def construct(*args, **options)
159
+ call_query_method(:construct, *args, **options)
142
160
  end
143
161
 
144
162
  ##
@@ -161,15 +179,15 @@ module SPARQL
161
179
  # client.insert_data(data)
162
180
  #
163
181
  # @example Inserting data into a named graph
164
- # client.insert_data(data, :graph => "http://example.org/")
182
+ # client.insert_data(data, graph: "http://example.org/")
165
183
  #
166
184
  # @param [RDF::Enumerable] data
167
185
  # @param [Hash{Symbol => Object}] options
168
186
  # @option options [RDF::URI, String] :graph
169
187
  # @return [void] `self`
170
188
  # @see http://www.w3.org/TR/sparql11-update/#insertData
171
- def insert_data(data, options = {})
172
- self.update(Update::InsertData.new(data, options))
189
+ def insert_data(data, **options)
190
+ self.update(Update::InsertData.new(data, **options))
173
191
  end
174
192
 
175
193
  ##
@@ -182,15 +200,15 @@ module SPARQL
182
200
  # client.delete_data(data)
183
201
  #
184
202
  # @example Deleting data from a named graph
185
- # client.delete_data(data, :graph => "http://example.org/")
203
+ # client.delete_data(data, graph: "http://example.org/")
186
204
  #
187
205
  # @param [RDF::Enumerable] data
188
206
  # @param [Hash{Symbol => Object}] options
189
207
  # @option options [RDF::URI, String] :graph
190
208
  # @return [void] `self`
191
209
  # @see http://www.w3.org/TR/sparql11-update/#deleteData
192
- def delete_data(data, options = {})
193
- self.update(Update::DeleteData.new(data, options))
210
+ def delete_data(data, **options)
211
+ self.update(Update::DeleteData.new(data, **options))
194
212
  end
195
213
 
196
214
  ##
@@ -205,8 +223,8 @@ module SPARQL
205
223
  # @option options [RDF::URI, String] :graph
206
224
  # @return [void] `self`
207
225
  # @see http://www.w3.org/TR/sparql11-update/#deleteInsert
208
- def delete_insert(delete_graph, insert_graph = nil, where_graph = nil, options = {})
209
- self.update(Update::DeleteInsert.new(delete_graph, insert_graph, where_graph, options))
226
+ def delete_insert(delete_graph, insert_graph = nil, where_graph = nil, **options)
227
+ self.update(Update::DeleteInsert.new(delete_graph, insert_graph, where_graph, **options))
210
228
  end
211
229
 
212
230
  ##
@@ -222,8 +240,8 @@ module SPARQL
222
240
  # @option options [Boolean] :silent
223
241
  # @return [void] `self`
224
242
  # @see http://www.w3.org/TR/sparql11-update/#clear
225
- def clear_graph(graph_uri, options = {})
226
- self.clear(:graph, graph_uri, options)
243
+ def clear_graph(graph_uri, **options)
244
+ self.clear(:graph, graph_uri, **options)
227
245
  end
228
246
 
229
247
  ##
@@ -249,7 +267,7 @@ module SPARQL
249
267
  # @option options [Boolean] :silent
250
268
  # @return [void] `self`
251
269
  #
252
- # @overload clear(what, *arguments, options = {})
270
+ # @overload clear(what, *arguments, **options)
253
271
  # @param [Symbol, #to_sym] what
254
272
  # @param [Array] arguments splat of other arguments to {Update::Clear}.
255
273
  # @param [Hash{Symbol => Object}] options
@@ -263,9 +281,9 @@ module SPARQL
263
281
 
264
282
  ##
265
283
  # @private
266
- def call_query_method(meth, *args)
284
+ def call_query_method(meth, *args, **options)
267
285
  client = self
268
- result = Query.send(meth, *args)
286
+ result = Query.send(meth, *args, **options)
269
287
  (class << result; self; end).send(:define_method, :execute) do
270
288
  client.query(self)
271
289
  end
@@ -288,21 +306,22 @@ module SPARQL
288
306
  # @option options [String] :content_type
289
307
  # @option options [Hash] :headers
290
308
  # @return [Array<RDF::Query::Solution>]
309
+ # @raise [IOError] if connection is closed
291
310
  # @see http://www.w3.org/TR/sparql11-protocol/#query-operation
292
- def query(query, options = {})
311
+ def query(query, **options)
293
312
  @op = :query
294
313
  @alt_endpoint = options[:endpoint]
295
314
  case @url
296
315
  when RDF::Queryable
297
316
  require 'sparql' unless defined?(::SPARQL::Grammar)
298
317
  begin
299
- SPARQL.execute(query, @url, options)
318
+ SPARQL.execute(query, @url, **options)
300
319
  rescue SPARQL::MalformedQuery
301
320
  $stderr.puts "error running #{query}: #{$!}"
302
321
  raise
303
322
  end
304
323
  else
305
- parse_response(response(query, options), options)
324
+ parse_response(response(query, **options), **options)
306
325
  end
307
326
  end
308
327
 
@@ -315,16 +334,17 @@ module SPARQL
315
334
  # @option options [String] :content_type
316
335
  # @option options [Hash] :headers
317
336
  # @return [void] `self`
337
+ # @raise [IOError] if connection is closed
318
338
  # @see http://www.w3.org/TR/sparql11-protocol/#update-operation
319
- def update(query, options = {})
339
+ def update(query, **options)
320
340
  @op = :update
321
341
  @alt_endpoint = options[:endpoint]
322
342
  case @url
323
343
  when RDF::Queryable
324
344
  require 'sparql' unless defined?(::SPARQL::Grammar)
325
- SPARQL.execute(query, @url, options.merge(update: true))
345
+ SPARQL.execute(query, @url, update: true, **options)
326
346
  else
327
- response(query, options)
347
+ response(query, **options)
328
348
  end
329
349
  self
330
350
  end
@@ -338,8 +358,9 @@ module SPARQL
338
358
  # @option options [String] :content_type
339
359
  # @option options [Hash] :headers
340
360
  # @return [String]
341
- def response(query, options = {})
342
- headers = options[:headers] || {}
361
+ # @raise [IOError] if connection is closed
362
+ def response(query, **options)
363
+ headers = options[:headers] || @headers
343
364
  headers['Accept'] = options[:content_type] if options[:content_type]
344
365
  request(query, headers) do |response|
345
366
  case response
@@ -359,7 +380,7 @@ module SPARQL
359
380
  # @param [Net::HTTPSuccess] response
360
381
  # @param [Hash{Symbol => Object}] options
361
382
  # @return [Object]
362
- def parse_response(response, options = {})
383
+ def parse_response(response, **options)
363
384
  case options[:content_type] || response.content_type
364
385
  when NilClass
365
386
  response.body
@@ -374,7 +395,7 @@ module SPARQL
374
395
  when RESULT_TSV
375
396
  self.class.parse_tsv_bindings(response.body, nodes)
376
397
  else
377
- parse_rdf_serialization(response, options)
398
+ parse_rdf_serialization(response, **options)
378
399
  end
379
400
  end
380
401
 
@@ -411,9 +432,9 @@ module SPARQL
411
432
  when :uri
412
433
  RDF::URI.new(value['value'])
413
434
  when :literal
414
- RDF::Literal.new(value['value'], :datatype => value['datatype'], :language => value['xml:lang'])
435
+ RDF::Literal.new(value['value'], datatype: value['datatype'], language: value['xml:lang'])
415
436
  when :'typed-literal'
416
- RDF::Literal.new(value['value'], :datatype => value['datatype'])
437
+ RDF::Literal.new(value['value'], datatype: value['datatype'])
417
438
  else nil
418
439
  end
419
440
  end
@@ -529,7 +550,7 @@ module SPARQL
529
550
  when :literal
530
551
  lang = value.respond_to?(:attr) ? value.attr('xml:lang') : value.attributes['xml:lang']
531
552
  datatype = value.respond_to?(:attr) ? value.attr('datatype') : value.attributes['datatype']
532
- RDF::Literal.new(value.text, :language => lang, :datatype => datatype)
553
+ RDF::Literal.new(value.text, language: lang, datatype: datatype)
533
554
  else nil
534
555
  end
535
556
  end
@@ -538,8 +559,8 @@ module SPARQL
538
559
  # @param [Net::HTTPSuccess] response
539
560
  # @param [Hash{Symbol => Object}] options
540
561
  # @return [RDF::Enumerable]
541
- def parse_rdf_serialization(response, options = {})
542
- options = {:content_type => response.content_type} unless options[:content_type]
562
+ def parse_rdf_serialization(response, **options)
563
+ options = {content_type: response.content_type} unless options[:content_type]
543
564
  if reader = RDF::Reader.for(options)
544
565
  reader.new(response.body)
545
566
  else
@@ -615,7 +636,7 @@ module SPARQL
615
636
  RDF::Statement.from(pattern).to_triple.each_with_index.map do |v, i|
616
637
  if i == 1
617
638
  SPARQL::Client.serialize_predicate(v)
618
- else
639
+ else
619
640
  SPARQL::Client.serialize_value(v, use_vars)
620
641
  end
621
642
  end
@@ -658,11 +679,7 @@ module SPARQL
658
679
  value = ENV['https_proxy']
659
680
  proxy_url = URI.parse(value) unless value.nil? || value.empty?
660
681
  end
661
- klass = if Net::HTTP::Persistent::VERSION >= '3.0'
662
- Net::HTTP::Persistent.new(name: self.class.to_s, proxy: proxy_url)
663
- else
664
- Net::HTTP::Persistent.new(self.class.to_s, proxy_url)
665
- end
682
+ klass = Net::HTTP::Persistent.new(name: self.class.to_s, proxy: proxy_url)
666
683
  klass.keep_alive = @options[:keep_alive] || 120
667
684
  klass.read_timeout = @options[:read_timeout] || 60
668
685
  klass
@@ -673,9 +690,15 @@ module SPARQL
673
690
  #
674
691
  # @param [String, #to_s] query
675
692
  # @param [Hash{String => String}] headers
693
+ # HTTP Request headers
694
+ #
695
+ # Defaults `Accept` header based on available reader content types if triples are expected and to SPARQL result types otherwise, to allow for content negotiation based on available readers.
696
+ #
697
+ # Defaults `User-Agent` header, unless one is specified.
676
698
  # @yield [response]
677
699
  # @yieldparam [Net::HTTPResponse] response
678
700
  # @return [Net::HTTPResponse]
701
+ # @raise [IOError] if connection is closed
679
702
  # @see http://www.w3.org/TR/sparql11-protocol/#query-operation
680
703
  def request(query, headers = {}, &block)
681
704
  # Make sure an appropriate Accept header is present
@@ -686,6 +709,7 @@ module SPARQL
686
709
  else
687
710
  RESULT_ALL
688
711
  end
712
+ headers['User-Agent'] ||= "Ruby SPARQL::Client/#{SPARQL::Client::VERSION}"
689
713
 
690
714
  request = send("make_#{request_method(query)}_request", query, headers)
691
715
 
@@ -693,6 +717,7 @@ module SPARQL
693
717
 
694
718
  pre_http_hook(request) if respond_to?(:pre_http_hook)
695
719
 
720
+ raise IOError, "Client has been closed" unless @http
696
721
  response = @http.request(::URI.parse(url.to_s), request)
697
722
 
698
723
  post_http_hook(response) if respond_to?(:post_http_hook)
@@ -725,7 +750,7 @@ module SPARQL
725
750
  # @see http://www.w3.org/TR/sparql11-protocol/#query-via-get
726
751
  def make_get_request(query, headers = {})
727
752
  url = self.url.dup
728
- url.query_values = (url.query_values || {}).merge(:query => query.to_s)
753
+ url.query_values = (url.query_values || {}).merge(query: query.to_s)
729
754
  set_url_default_graph url unless @options[:graph].nil?
730
755
  request = Net::HTTP::Get.new(url.request_uri, self.headers.merge(headers))
731
756
  request
@@ -26,8 +26,8 @@ class SPARQL::Client
26
26
  # @param [Hash{Symbol => Object}] options (see {#initialize})
27
27
  # @return [Query]
28
28
  # @see http://www.w3.org/TR/sparql11-query/#ask
29
- def self.ask(options = {})
30
- self.new(:ask, options)
29
+ def self.ask(**options)
30
+ self.new(:ask, **options)
31
31
  end
32
32
 
33
33
  ##
@@ -45,14 +45,13 @@ class SPARQL::Client
45
45
  # @param [Array<Symbol>] variables
46
46
  # @return [Query]
47
47
  #
48
- # @overload self.select(*variables, options)
48
+ # @overload self.select(*variables, **options)
49
49
  # @param [Array<Symbol>] variables
50
50
  # @param [Hash{Symbol => Object}] options (see {#initialize})
51
51
  # @return [Query]
52
52
  # @see http://www.w3.org/TR/sparql11-query/#select
53
- def self.select(*variables)
54
- options = variables.last.is_a?(Hash) ? variables.pop : {}
55
- self.new(:select, options).select(*variables)
53
+ def self.select(*variables, **options)
54
+ self.new(:select, **options).select(*variables)
56
55
  end
57
56
 
58
57
  ##
@@ -64,14 +63,13 @@ class SPARQL::Client
64
63
  # @param [Array<Symbol, RDF::URI>] variables
65
64
  # @return [Query]
66
65
  #
67
- # @overload self.describe(*variables, options)
66
+ # @overload self.describe(*variables, **options)
68
67
  # @param [Array<Symbol, RDF::URI>] variables
69
68
  # @param [Hash{Symbol => Object}] options (see {#initialize})
70
69
  # @return [Query]
71
70
  # @see http://www.w3.org/TR/sparql11-query/#describe
72
- def self.describe(*variables)
73
- options = variables.last.is_a?(Hash) ? variables.pop : {}
74
- self.new(:describe, options).describe(*variables)
71
+ def self.describe(*variables, **options)
72
+ self.new(:describe, **options).describe(*variables)
75
73
  end
76
74
 
77
75
  ##
@@ -83,19 +81,18 @@ class SPARQL::Client
83
81
  # @param [Array<RDF::Query::Pattern, Array>] patterns
84
82
  # @return [Query]
85
83
  #
86
- # @overload self.construct(*variables, options)
84
+ # @overload self.construct(*variables, **options)
87
85
  # @param [Array<RDF::Query::Pattern, Array>] patterns
88
86
  # @param [Hash{Symbol => Object}] options (see {#initialize})
89
87
  # @return [Query]
90
88
  # @see http://www.w3.org/TR/sparql11-query/#construct
91
- def self.construct(*patterns)
92
- options = patterns.last.is_a?(Hash) ? patterns.pop : {}
93
- self.new(:construct, options).construct(*patterns) # FIXME
89
+ def self.construct(*patterns, **options)
90
+ self.new(:construct, **options).construct(*patterns) # FIXME
94
91
  end
95
92
 
96
93
  ##
97
94
  # @param [Symbol, #to_s] form
98
- # @overload self.construct(*variables, options)
95
+ # @overload self.construct(*variables, **options)
99
96
  # @param [Symbol, #to_s] form
100
97
  # @param [Hash{Symbol => Object}] options (see {Client#initialize})
101
98
  # @option options [Hash{Symbol => Symbol}] :count
@@ -104,10 +101,10 @@ class SPARQL::Client
104
101
  #
105
102
  # @yield [query]
106
103
  # @yieldparam [Query]
107
- def initialize(form = :ask, options = {}, &block)
104
+ def initialize(form = :ask, **options, &block)
108
105
  @subqueries = []
109
106
  @form = form.respond_to?(:to_sym) ? form.to_sym : form.to_s.to_sym
110
- super([], options, &block)
107
+ super([], **options, &block)
111
108
  end
112
109
 
113
110
  ##
@@ -131,11 +128,15 @@ class SPARQL::Client
131
128
  # @example SELECT COUNT(?uri as ?c) WHERE {?uri a owl:Class}
132
129
  # query.select(count: {uri: :c}).where([:uri, RDF.type, RDF::OWL.Class])
133
130
  #
134
- # @param [Array<Symbol>] variables
131
+ # @param [Array<Symbol>, Hash{Symbol => RDF::Query::Variable}] variables
135
132
  # @return [Query]
136
133
  # @see http://www.w3.org/TR/sparql11-query/#select
137
134
  def select(*variables)
138
- @values = variables.map { |var| [var, RDF::Query::Variable.new(var)] }
135
+ @values = if variables.length == 1 && variables.first.is_a?(Hash)
136
+ variables.to_a
137
+ else
138
+ variables.map { |var| [var, RDF::Query::Variable.new(var)] }
139
+ end
139
140
  self
140
141
  end
141
142
 
@@ -240,7 +241,7 @@ class SPARQL::Client
240
241
  # query.select.where([:s, :p, :o]).order_by(:o, :p)
241
242
  #
242
243
  # @example SELECT * WHERE { ?s ?p ?o . } ORDER BY ASC(?o) DESC(?p)
243
- # query.select.where([:s, :p, :o]).order_by(:o => :asc, :p => :desc)
244
+ # query.select.where([:s, :p, :o]).order_by(o: :asc, p: :desc)
244
245
  #
245
246
  # @param [Array<Symbol, String>] variables
246
247
  # @return [Query]
@@ -727,7 +728,7 @@ class SPARQL::Client
727
728
  buffer << 'ORDER BY'
728
729
  options[:order_by].map { |elem|
729
730
  case elem
730
- # .order_by({ :var1 => :asc, :var2 => :desc})
731
+ # .order_by({ var1: :asc, var2: :desc})
731
732
  when Hash
732
733
  elem.each { |key, val|
733
734
  # check provided values
@@ -14,9 +14,9 @@ class SPARQL::Client
14
14
  def initialize(uri: nil, **options, &block)
15
15
  raise ArgumentError, "uri is a required parameter" unless uri
16
16
  @options = options.merge(uri: uri)
17
- @update_client = SPARQL::Client.new(options.delete(:update_endpoint), options) if options[:update_endpoint]
18
- @client = SPARQL::Client.new(uri, options)
19
- super(@options, &block)
17
+ @update_client = SPARQL::Client.new(options.delete(:update_endpoint), **options) if options[:update_endpoint]
18
+ @client = SPARQL::Client.new(uri, **options)
19
+ super(**@options, &block)
20
20
  end
21
21
 
22
22
  ##
@@ -115,7 +115,7 @@ class SPARQL::Client
115
115
  # @see RDF::Repository#each_subject?
116
116
  def each_subject(&block)
117
117
  if block_given?
118
- client.select(:s, :distinct => true).where([:s, :p, :o]).each_solution { |solution| block.call(solution[:s]) }
118
+ client.select(:s, distinct: true).where([:s, :p, :o]).each_solution { |solution| block.call(solution[:s]) }
119
119
  end
120
120
  enum_subject
121
121
  end
@@ -129,7 +129,7 @@ class SPARQL::Client
129
129
  # @see RDF::Repository#each_predicate?
130
130
  def each_predicate(&block)
131
131
  if block_given?
132
- client.select(:p, :distinct => true).where([:s, :p, :o]).each_solution { |solution| block.call(solution[:p]) }
132
+ client.select(:p, distinct: true).where([:s, :p, :o]).each_solution { |solution| block.call(solution[:p]) }
133
133
  end
134
134
  enum_predicate
135
135
  end
@@ -143,7 +143,7 @@ class SPARQL::Client
143
143
  # @see RDF::Repository#each_object?
144
144
  def each_object(&block)
145
145
  if block_given?
146
- client.select(:o, :distinct => true).where([:s, :p, :o]).each_solution { |solution| block.call(solution[:o]) }
146
+ client.select(:o, distinct: true).where([:s, :p, :o]).each_solution { |solution| block.call(solution[:o]) }
147
147
  end
148
148
  enum_object
149
149
  end
@@ -262,10 +262,10 @@ class SPARQL::Client
262
262
  # @return [void] ignored
263
263
  # @see RDF::Queryable#query
264
264
  # @see RDF::Query#execute
265
- def query_execute(query, options = {}, &block)
265
+ def query_execute(query, **options, &block)
266
266
  return nil unless block_given?
267
- q = SPARQL::Client::Query.select(query.variables).where(*query.patterns)
268
- client.query(q, options).each do |solution|
267
+ q = SPARQL::Client::Query.select(query.variables, **{}).where(*query.patterns)
268
+ client.query(q, **options).each do |solution|
269
269
  yield solution
270
270
  end
271
271
  end
@@ -275,7 +275,7 @@ class SPARQL::Client
275
275
  #
276
276
  # @example
277
277
  # repository.query([nil, RDF::DOAP.developer, nil])
278
- # repository.query(:predicate => RDF::DOAP.developer)
278
+ # repository.query({predicate: RDF::DOAP.developer})
279
279
  #
280
280
  # @todo This should use basic SPARQL query mechanism.
281
281
  #
@@ -284,7 +284,7 @@ class SPARQL::Client
284
284
  # @yield [statement]
285
285
  # @yieldparam [Statement]
286
286
  # @return [Enumerable<Statement>]
287
- def query_pattern(pattern, options = {}, &block)
287
+ def query_pattern(pattern, **options, &block)
288
288
  pattern = pattern.dup
289
289
  pattern.subject ||= RDF::Query::Variable.new
290
290
  pattern.predicate ||= RDF::Query::Variable.new
@@ -12,12 +12,12 @@ class SPARQL::Client
12
12
  # insert_data(data)
13
13
  #
14
14
  # @example INSERT DATA \{ GRAPH <http://example.org/> \{\}\}
15
- # insert_data(RDF::Graph.new, :graph => 'http://example.org/')
15
+ # insert_data(RDF::Graph.new, graph: 'http://example.org/')
16
16
  # insert_data(RDF::Graph.new).graph('http://example.org/')
17
17
  #
18
18
  # @param (see InsertData#initialize)
19
- def self.insert_data(*arguments)
20
- InsertData.new(*arguments)
19
+ def self.insert_data(*arguments, **options)
20
+ InsertData.new(*arguments, **options)
21
21
  end
22
22
 
23
23
  ##
@@ -30,12 +30,12 @@ class SPARQL::Client
30
30
  # delete_data(data)
31
31
  #
32
32
  # @example DELETE DATA \{ GRAPH <http://example.org/> \{\}\}
33
- # delete_data(RDF::Graph.new, :graph => 'http://example.org/')
33
+ # delete_data(RDF::Graph.new, graph: 'http://example.org/')
34
34
  # delete_data(RDF::Graph.new).graph('http://example.org/')
35
35
  #
36
36
  # @param (see DeleteData#initialize)
37
- def self.delete_data(*arguments)
38
- DeleteData.new(*arguments)
37
+ def self.delete_data(*arguments, **options)
38
+ DeleteData.new(*arguments, **options)
39
39
  end
40
40
 
41
41
  ##
@@ -53,8 +53,8 @@ class SPARQL::Client
53
53
  # load(RDF::URI(http://example.org/data.rdf), into: RDF::URI(http://example.org/data.rdf))
54
54
  #
55
55
  # @param (see Load#initialize)
56
- def self.load(*arguments)
57
- Load.new(*arguments)
56
+ def self.load(*arguments, **options)
57
+ Load.new(*arguments, **options)
58
58
  end
59
59
 
60
60
  ##
@@ -81,8 +81,8 @@ class SPARQL::Client
81
81
  # clear(:all, silent: true)
82
82
  #
83
83
  # @param (see Clear#initialize)
84
- def self.clear(*arguments)
85
- Clear.new(*arguments)
84
+ def self.clear(*arguments, **options)
85
+ Clear.new(*arguments, **options)
86
86
  end
87
87
 
88
88
  ##
@@ -96,8 +96,8 @@ class SPARQL::Client
96
96
  # create(RDF::URI(http://example.org/data.rdf), silent: true)
97
97
  #
98
98
  # @param (see Create#initialize)
99
- def self.create(*arguments)
100
- Create.new(*arguments)
99
+ def self.create(*arguments, **options)
100
+ Create.new(*arguments, **options)
101
101
  end
102
102
 
103
103
  ##
@@ -124,15 +124,15 @@ class SPARQL::Client
124
124
  # drop(:all, silent: true)
125
125
  #
126
126
  # @param (see Drop#initialize)
127
- def self.drop(*arguments)
128
- Drop.new(*arguments)
127
+ def self.drop(*arguments, **options)
128
+ Drop.new(*arguments, **options)
129
129
  end
130
130
 
131
131
  class Operation
132
132
  attr_reader :options
133
133
 
134
- def initialize(*arguments)
135
- @options = arguments.last.is_a?(Hash) ? arguments.pop.dup : {}
134
+ def initialize(*arguments, **options)
135
+ @options = options.dup
136
136
  unless arguments.empty?
137
137
  send(arguments.shift, *arguments)
138
138
  end
@@ -171,9 +171,9 @@ class SPARQL::Client
171
171
  #
172
172
  # @param [Array<RDF::Statement>, RDF::Enumerable] data
173
173
  # @param [Hash{Symbol => Object}] options
174
- def initialize(data, options = {})
174
+ def initialize(data, **options)
175
175
  @data = data
176
- super(options)
176
+ super(**options)
177
177
  end
178
178
 
179
179
  ##
@@ -221,9 +221,9 @@ class SPARQL::Client
221
221
  #
222
222
  # @param [Array<RDF::Statement>, RDF::Enumerable] data
223
223
  # @param [Hash{Symbol => Object}] options
224
- def initialize(data, options = {})
224
+ def initialize(data, **options)
225
225
  @data = data
226
- super(options)
226
+ super(**options)
227
227
  end
228
228
 
229
229
  ##
@@ -253,11 +253,11 @@ class SPARQL::Client
253
253
  attr_reader :delete_graph
254
254
  attr_reader :where_graph
255
255
 
256
- def initialize(_delete_graph, _insert_graph = nil, _where_graph = nil, options = {})
256
+ def initialize(_delete_graph, _insert_graph = nil, _where_graph = nil, **options)
257
257
  @delete_graph = _delete_graph
258
258
  @insert_graph = _insert_graph
259
259
  @where_graph = _where_graph
260
- super(options)
260
+ super(**options)
261
261
  end
262
262
 
263
263
  ##
@@ -324,11 +324,10 @@ class SPARQL::Client
324
324
  # @param [Hash{Symbol => Object}] options
325
325
  # @option [RDF::URI] :into
326
326
  # @option [Boolean] :silent
327
- def initialize(from, options = {})
328
- options = options.dup
327
+ def initialize(from, into: nil,**options)
329
328
  @from = RDF::URI(from)
330
- @into = RDF::URI(options.delete(:into)) if options[:into]
331
- super(options)
329
+ @into = RDF::URI(into) if into
330
+ super(**options)
332
331
  end
333
332
 
334
333
  ##
@@ -420,9 +419,9 @@ class SPARQL::Client
420
419
  attr_reader :uri
421
420
 
422
421
  # @param [Hash{Symbol => Object}] options
423
- def initialize(uri, options = {})
422
+ def initialize(uri, **options)
424
423
  @uri = RDF::URI(uri)
425
- super(options)
424
+ super(**options)
426
425
  end
427
426
 
428
427
  def to_s
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: 3.0.1
4
+ version: 3.1.0
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: 2018-12-03 00:00:00.000000000 Z
13
+ date: 2019-12-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rdf
@@ -18,118 +18,112 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '3.0'
21
+ version: '3.1'
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
- version: '3.0'
28
+ version: '3.1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: net-http-persistent
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: '2.9'
36
- - - "<"
33
+ - - "~>"
37
34
  - !ruby/object:Gem::Version
38
- version: '4'
35
+ version: '3.1'
39
36
  type: :runtime
40
37
  prerelease: false
41
38
  version_requirements: !ruby/object:Gem::Requirement
42
39
  requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: '2.9'
46
- - - "<"
40
+ - - "~>"
47
41
  - !ruby/object:Gem::Version
48
- version: '4'
42
+ version: '3.1'
49
43
  - !ruby/object:Gem::Dependency
50
44
  name: rdf-spec
51
45
  requirement: !ruby/object:Gem::Requirement
52
46
  requirements:
53
47
  - - "~>"
54
48
  - !ruby/object:Gem::Version
55
- version: '3.0'
49
+ version: '3.1'
56
50
  type: :development
57
51
  prerelease: false
58
52
  version_requirements: !ruby/object:Gem::Requirement
59
53
  requirements:
60
54
  - - "~>"
61
55
  - !ruby/object:Gem::Version
62
- version: '3.0'
56
+ version: '3.1'
63
57
  - !ruby/object:Gem::Dependency
64
58
  name: sparql
65
59
  requirement: !ruby/object:Gem::Requirement
66
60
  requirements:
67
61
  - - "~>"
68
62
  - !ruby/object:Gem::Version
69
- version: '3.0'
63
+ version: '3.1'
70
64
  type: :development
71
65
  prerelease: false
72
66
  version_requirements: !ruby/object:Gem::Requirement
73
67
  requirements:
74
68
  - - "~>"
75
69
  - !ruby/object:Gem::Version
76
- version: '3.0'
70
+ version: '3.1'
77
71
  - !ruby/object:Gem::Dependency
78
72
  name: rspec
79
73
  requirement: !ruby/object:Gem::Requirement
80
74
  requirements:
81
75
  - - "~>"
82
76
  - !ruby/object:Gem::Version
83
- version: '3.7'
77
+ version: '3.9'
84
78
  type: :development
85
79
  prerelease: false
86
80
  version_requirements: !ruby/object:Gem::Requirement
87
81
  requirements:
88
82
  - - "~>"
89
83
  - !ruby/object:Gem::Version
90
- version: '3.7'
84
+ version: '3.9'
91
85
  - !ruby/object:Gem::Dependency
92
86
  name: rspec-its
93
87
  requirement: !ruby/object:Gem::Requirement
94
88
  requirements:
95
89
  - - "~>"
96
90
  - !ruby/object:Gem::Version
97
- version: '1.2'
91
+ version: '1.3'
98
92
  type: :development
99
93
  prerelease: false
100
94
  version_requirements: !ruby/object:Gem::Requirement
101
95
  requirements:
102
96
  - - "~>"
103
97
  - !ruby/object:Gem::Version
104
- version: '1.2'
98
+ version: '1.3'
105
99
  - !ruby/object:Gem::Dependency
106
100
  name: webmock
107
101
  requirement: !ruby/object:Gem::Requirement
108
102
  requirements:
109
103
  - - "~>"
110
104
  - !ruby/object:Gem::Version
111
- version: '3.1'
105
+ version: '3.7'
112
106
  type: :development
113
107
  prerelease: false
114
108
  version_requirements: !ruby/object:Gem::Requirement
115
109
  requirements:
116
110
  - - "~>"
117
111
  - !ruby/object:Gem::Version
118
- version: '3.1'
112
+ version: '3.7'
119
113
  - !ruby/object:Gem::Dependency
120
114
  name: yard
121
115
  requirement: !ruby/object:Gem::Requirement
122
116
  requirements:
123
117
  - - "~>"
124
118
  - !ruby/object:Gem::Version
125
- version: 0.9.12
119
+ version: 0.9.20
126
120
  type: :development
127
121
  prerelease: false
128
122
  version_requirements: !ruby/object:Gem::Requirement
129
123
  requirements:
130
124
  - - "~>"
131
125
  - !ruby/object:Gem::Version
132
- version: 0.9.12
126
+ version: 0.9.20
133
127
  description: |-
134
128
  Executes SPARQL queries and updates against a remote SPARQL 1.0 or 1.1 endpoint,
135
129
  or against a local repository. Generates SPARQL queries using a simple DSL.
@@ -162,15 +156,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
156
  requirements:
163
157
  - - ">="
164
158
  - !ruby/object:Gem::Version
165
- version: 2.2.2
159
+ version: '2.4'
166
160
  required_rubygems_version: !ruby/object:Gem::Requirement
167
161
  requirements:
168
162
  - - ">="
169
163
  - !ruby/object:Gem::Version
170
164
  version: '0'
171
165
  requirements: []
172
- rubyforge_project:
173
- rubygems_version: 2.7.6
166
+ rubygems_version: 3.0.6
174
167
  signing_key:
175
168
  specification_version: 4
176
169
  summary: SPARQL client for RDF.rb.