Module: RDF::Repository::Implementation
- Defined in:
- lib/rdf/repository.rb
Overview
A default Repository implementation supporting atomic writes and serializable transactions.
Defined Under Namespace
Classes: SerializedTransaction
Constant Summary
collapse
- DEFAULT_GRAPH =
false
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.extend_object(obj) ⇒ Object
250
251
252
253
254
255
256
257
|
# File 'lib/rdf/repository.rb', line 250
def self.extend_object(obj)
obj.instance_variable_set(:@data, obj.options.delete(:data) ||
Hamster::Hash.new)
obj.instance_variable_set(:@tx_class,
obj.options.delete(:transaction_class) ||
SerializedTransaction)
super
end
|
Instance Method Details
#apply_changeset(changeset) ⇒ Object
341
342
343
344
345
346
347
348
349
350
351
352
353
|
# File 'lib/rdf/repository.rb', line 341
def apply_changeset(changeset)
data = @data
changeset.deletes.each do |del|
if del.constant?
data = delete_from(data, del)
else
query_pattern(del) { |stmt| data = delete_from(data, stmt) }
end
end
changeset.inserts.each { |ins| data = insert_to(data, ins) }
@data = data
end
|
#count ⇒ Object
277
278
279
280
281
282
283
284
285
|
# File 'lib/rdf/repository.rb', line 277
def count
count = 0
@data.each do |_, ss|
ss.each do |_, ps|
ps.each { |_, os| count += os.size }
end
end
count
end
|
#each_graph(&block) ⇒ Object
304
305
306
307
308
309
310
311
|
# File 'lib/rdf/repository.rb', line 304
def each_graph(&block)
if block_given?
@data.each_key do |gn|
yield RDF::Graph.new(graph_name: (gn == DEFAULT_GRAPH ? nil : gn), data: self)
end
end
enum_graph
end
|
#each_statement(&block) ⇒ Object
Also known as:
each
323
324
325
326
327
328
329
330
331
332
333
334
335
336
|
# File 'lib/rdf/repository.rb', line 323
def each_statement(&block)
if block_given?
@data.each do |g, ss|
ss.each do |s, ps|
ps.each do |p, os|
os.each do |o, object_options|
yield RDF::Statement.new(s, p, o, object_options.merge(graph_name: g.equal?(DEFAULT_GRAPH) ? nil : g))
end
end
end
end
end
enum_statement
end
|
#graph_names(options = nil, &block) ⇒ Object
297
298
299
|
# File 'lib/rdf/repository.rb', line 297
def graph_names(options = nil, &block)
@data.keys.reject { |g| g == DEFAULT_GRAPH }.to_a
end
|
#has_graph?(graph) ⇒ Boolean
290
291
292
|
# File 'lib/rdf/repository.rb', line 290
def has_graph?(graph)
@data.has_key?(graph)
end
|
#has_statement?(statement) ⇒ Boolean
316
317
318
|
# File 'lib/rdf/repository.rb', line 316
def has_statement?(statement)
has_statement_in?(@data, statement)
end
|
#isolation_level ⇒ Object
357
358
359
|
# File 'lib/rdf/repository.rb', line 357
def isolation_level
:serializable
end
|
A readable & queryable snapshot of the repository for isolated reads.
368
369
370
|
# File 'lib/rdf/repository.rb', line 368
def snapshot
self.class.new(data: @data).freeze
end
|
#supports?(feature) ⇒ Boolean
262
263
264
265
266
267
268
269
270
271
272
|
# File 'lib/rdf/repository.rb', line 262
def supports?(feature)
case feature.to_sym
when :graph_name then @options[:with_graph_name]
when :inference then false when :validity then @options.fetch(:with_validity, true)
when :literal_equality then true
when :atomic_write then true
when :snapshots then true
else false
end
end
|