rdf-sesame 1.1.2 → 2.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a88c42c531cc2ed3697a7abed35f8f60a4aee584
4
- data.tar.gz: bd05b706a08e5aeb539de43f5db7904c14dd3c00
3
+ metadata.gz: dbe9c97f53c462f991525db0effc51a5b1293012
4
+ data.tar.gz: 935fadb4ab956da298a4e51c942498b31bc2f518
5
5
  SHA512:
6
- metadata.gz: 79d2d1e1aa62f38b2d7e0ceff28d89e8e9752dc54b95af1ba5cae73ee85d62091f2fe5b7eb1fd957135f16e6496d0590808b46cd4e1743b19bcc457cb5dbd76d
7
- data.tar.gz: 91fddf50755fb1c58b86f5e72b30a5fd79877a9f7ab904702e6238038fa12fe81ce6d1ba3ce09657a3b2426ac4edc2ab631297e66d608ab83d66fb85b4c809e2
6
+ metadata.gz: 2779d4893d1d44f9ef133b48d386271ab4791911900a56da78490c332a3a56c5e4275bcd266277c3690457bea1b9a4f69f84fc5803b58ada8dcdd30868d4ce67
7
+ data.tar.gz: e2abaff8e9f58fcf0418edc9035bb41cde8d3b1bc795271390938339a1d37ce80357417427585996a47545d8bb5467fc3a702567897088cb2883d8b592ba1404
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 2.0.0
@@ -115,11 +115,11 @@ module RDF::Sesame
115
115
  when RDF::Statement
116
116
  writer = RDF::NTriples::Writer.new
117
117
  q = {
118
- :subj => writer.format_value(query.subject),
119
- :pred => writer.format_value(query.predicate),
120
- :obj => writer.format_value(query.object)
118
+ :subj => writer.format_term(query.subject),
119
+ :pred => writer.format_term(query.predicate),
120
+ :obj => writer.format_term(query.object)
121
121
  }
122
- q.merge!(:context => writer.format_value(query.context)) if query.has_context?
122
+ q.merge!(:context => writer.format_term(query.graph_name)) if query.has_graph?
123
123
  url.query_values = q
124
124
  when Hash
125
125
  url.query_values = query unless query.empty?
@@ -141,7 +141,7 @@ module RDF::Sesame
141
141
  # @see RDF::Repository#supports?
142
142
  def supports?(feature)
143
143
  case feature.to_sym
144
- when :context then true # statement contexts / named graphs
144
+ when :graph_name then true # statement contexts / named graphs
145
145
  else super
146
146
  end
147
147
  end
@@ -171,6 +171,23 @@ module RDF::Sesame
171
171
  end
172
172
  end
173
173
 
174
+ ##
175
+ # Returns all namespaces on this Sesame repository.
176
+ #
177
+ # @return [Hash{Symbol => RDF::URI}]
178
+ # @see #repository
179
+ # @see #each_repository
180
+ # @see http://www.openrdf.org/doc/sesame2/system/ch08.html#d0e204
181
+ def namespaces
182
+ require 'json' unless defined?(::JSON)
183
+
184
+ response = server.get(path(:namespaces), Server::ACCEPT_JSON)
185
+ json = ::JSON.parse(response.body)
186
+ json['results']['bindings'].each_with_object({}) do |binding, namespaces|
187
+ namespaces[binding['prefix']['value'].to_sym] = RDF::URI.new(binding['namespace']['value'])
188
+ end
189
+ end
190
+
174
191
  ##
175
192
  # @see RDF::Enumerable#has_triple?
176
193
  def has_triple?(triple)
@@ -180,7 +197,7 @@ module RDF::Sesame
180
197
  ##
181
198
  # @see RDF::Enumerable#has_quad?
182
199
  def has_quad?(quad)
183
- has_statement?(RDF::Statement.new(quad[0], quad[1], quad[2], :context => quad[3]))
200
+ has_statement?(RDF::Statement.new(quad[0], quad[1], quad[2], :graph_name => quad[3]))
184
201
  end
185
202
 
186
203
  ##
@@ -228,12 +245,12 @@ module RDF::Sesame
228
245
  # This is for performance. Otherwise only one query with TriG::Reader will be
229
246
  # necessary
230
247
 
231
- ['null', *enum_context].uniq.each do |context|
248
+ ['null', *graph_names].uniq.each do |context|
232
249
  query = {}
233
250
  query.merge!(:context => serialize_context(context)) if context
234
251
  response = server.get(path(:statements, query), 'Accept' => 'text/plain')
235
252
  RDF::NTriples::Reader.new(response.body).each_statement do |statement|
236
- statement.context = context
253
+ statement.graph_name = context
237
254
  yield statement
238
255
  end
239
256
  end
@@ -242,22 +259,15 @@ module RDF::Sesame
242
259
  alias_method :each, :each_statement
243
260
 
244
261
  ##
245
- # @see RDF::Enumerable#each_context
246
- def each_context
247
- return enum_context unless block_given?
248
-
249
- require 'json' unless defined?(::JSON)
250
- response = server.get(path(:contexts), Server::ACCEPT_JSON)
251
- json = ::JSON.parse(response.body)
252
- json['results']['bindings'].map { |binding| binding['contextID'] }.each do |context_id|
253
- context = case context_id['type'].to_s.to_sym
254
- when :bnode then RDF::Node.new(context_id['value'])
255
- when :uri then RDF::URI.new(context_id['value'])
256
- else
257
- nil
258
- end
259
- yield context if context
260
- end
262
+ # Returns all unique RDF graph names, other than the default graph.
263
+ #
264
+ # @param unique (true)
265
+ # @return [Array<RDF::Resource>]
266
+ # @see #each_graph
267
+ # @see #enum_graph
268
+ # @since 2.0
269
+ def graph_names(unique: true)
270
+ fetch_graph_names
261
271
  end
262
272
 
263
273
  # Run a raw SPARQL query.
@@ -371,13 +381,12 @@ module RDF::Sesame
371
381
  # @option options [String] :subject Match a specific subject
372
382
  # @option options [String] :predicate Match a specific predicate
373
383
  # @option options [String] :object Match a specific object
374
- # @option options [String] :context Match a specific graph name.
384
+ # @option options [String] :graph_name Match a specific graph name.
375
385
  # @return [void]
376
- def clear(options={})
386
+ def clear(options = {})
377
387
  parameters = {}
378
- { :subject => :subj, :predicate => :pred, :object => :obj, :context => :context }.each do |option_key, parameter_key|
379
- value = options[option_key]
380
- parameters.merge! parameter_key => RDF::NTriples.serialize(RDF::URI.new(value)) if value
388
+ { :subject => :subj, :predicate => :pred, :object => :obj, :graph_name => :context }.each do |option_key, parameter_key|
389
+ parameters.merge! parameter_key => RDF::NTriples.serialize(RDF::URI.new(options[option_key])) if options.has_key?(option_key)
381
390
  end
382
391
  response = server.delete(path(:statements, statements_options.merge(parameters)))
383
392
  response.code == "204"
@@ -388,20 +397,21 @@ module RDF::Sesame
388
397
  ##
389
398
  # @private
390
399
  # @see RDF::Queryable#query
391
- def query_pattern(pattern)
400
+ def query_pattern(pattern, options = {}, &block)
392
401
  writer = RDF::NTriples::Writer.new
393
402
  query = {}
394
- query.merge!(:context => writer.format_value(pattern.context)) if pattern.has_context?
395
- query.merge!(:subj => writer.format_value(pattern.subject)) unless pattern.subject.is_a?(RDF::Query::Variable) || pattern.subject.nil?
396
- query.merge!(:pred => writer.format_value(pattern.predicate)) unless pattern.predicate.is_a?(RDF::Query::Variable) || pattern.predicate.nil?
397
- query.merge!(:obj => writer.format_value(pattern.object)) unless pattern.object.is_a?(RDF::Query::Variable) || pattern.object.nil?
403
+ query.merge!(:context => writer.format_term(pattern.graph_name)) if pattern.has_graph?
404
+ query.merge!(:subj => writer.format_term(pattern.subject)) unless pattern.subject.is_a?(RDF::Query::Variable) || pattern.subject.nil?
405
+ query.merge!(:pred => writer.format_term(pattern.predicate)) unless pattern.predicate.is_a?(RDF::Query::Variable) || pattern.predicate.nil?
406
+ query.merge!(:obj => writer.format_term(pattern.object)) unless pattern.object.is_a?(RDF::Query::Variable) || pattern.object.nil?
398
407
  response = server.get(path(:statements, query), Server::ACCEPT_NTRIPLES)
399
408
  RDF::NTriples::Reader.new(response.body).each_statement do |statement|
400
- statement.context = pattern.context
401
- yield statement
409
+ statement.graph_name = pattern.graph_name
410
+ yield statement if block_given?
402
411
  end
403
412
  end
404
413
 
414
+
405
415
  #--------------------------------------------------------------------
406
416
  # @group RDF::Mutable methods
407
417
 
@@ -432,6 +442,16 @@ module RDF::Sesame
432
442
  response.code == "204"
433
443
  end
434
444
 
445
+ ##
446
+ # @private
447
+ # @see RDF::Mutable#delete
448
+ #
449
+ # Optimization to remove multiple statements in one query
450
+ def delete_statements(statements)
451
+ data = "DELETE DATA { #{statements_to_text_plain(statements)} }"
452
+ write_query data, 'sparql', {}
453
+ end
454
+
435
455
  private
436
456
 
437
457
  # Convert a list of statements to a text-plain-compatible text.
@@ -588,5 +608,29 @@ module RDF::Sesame
588
608
  options[:context] = @context if @context
589
609
  options
590
610
  end
611
+
612
+ # @private
613
+ #
614
+ # Fetch the graph names from SESAME API
615
+ def fetch_graph_names
616
+ require 'json' unless defined?(::JSON)
617
+
618
+ response = server.get(path(:contexts), Server::ACCEPT_JSON)
619
+ json = ::JSON.parse(response.body)
620
+
621
+ json['results']['bindings'].map do |binding|
622
+ binding['contextID']
623
+ end
624
+ .map do |context_id|
625
+ case context_id['type'].to_s.to_sym
626
+ when :bnode
627
+ RDF::Node.new(context_id['value'])
628
+ when :uri
629
+ RDF::URI.new(context_id['value'])
630
+ else
631
+ nil
632
+ end
633
+ end.compact
634
+ end
591
635
  end # class Repository
592
636
  end # module RDF::Sesame
@@ -1,8 +1,8 @@
1
1
  module RDF; module Sesame
2
2
  module VERSION
3
- MAJOR = 1
4
- MINOR = 1
5
- TINY = 2
3
+ MAJOR = 2
4
+ MINOR = 0
5
+ TINY = 0
6
6
  EXTRA = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, EXTRA].compact.join('.')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rdf-sesame
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arto Bendiken
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-03 00:00:00.000000000 Z
12
+ date: 2017-01-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdf
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.1'
20
+ version: '2.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.1'
27
+ version: '2.0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: addressable
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '1.1'
90
+ version: '2.0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '1.1'
97
+ version: '2.0'
98
98
  description: RDF.rb plugin providing a Sesame 2.0 storage adapter.
99
99
  email: public-rdf-ruby@w3.org
100
100
  executables: []