rdf-sesame 1.1.2 → 2.0.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
  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: []