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 +4 -4
- data/VERSION +1 -1
- data/lib/rdf/sesame/repository.rb +80 -36
- data/lib/rdf/sesame/version.rb +3 -3
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbe9c97f53c462f991525db0effc51a5b1293012
|
4
|
+
data.tar.gz: 935fadb4ab956da298a4e51c942498b31bc2f518
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2779d4893d1d44f9ef133b48d386271ab4791911900a56da78490c332a3a56c5e4275bcd266277c3690457bea1b9a4f69f84fc5803b58ada8dcdd30868d4ce67
|
7
|
+
data.tar.gz: e2abaff8e9f58fcf0418edc9035bb41cde8d3b1bc795271390938339a1d37ce80357417427585996a47545d8bb5467fc3a702567897088cb2883d8b592ba1404
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
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.
|
119
|
-
:pred => writer.
|
120
|
-
:obj => writer.
|
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.
|
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 :
|
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], :
|
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', *
|
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.
|
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
|
-
#
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
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] :
|
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, :
|
379
|
-
|
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.
|
395
|
-
query.merge!(:subj => writer.
|
396
|
-
query.merge!(:pred => writer.
|
397
|
-
query.merge!(:obj => writer.
|
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.
|
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
|
data/lib/rdf/sesame/version.rb
CHANGED
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:
|
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:
|
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: '
|
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: '
|
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: '
|
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: '
|
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: []
|