module RDF::DataObjects::Adapters::Defaults
Default SQL statements and methods for RDF::DataObjects::Repository::Adapters.
Public Instance Methods
count_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 10 def count_sql 'select count(*) from quads' end
delete_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 18 def delete_sql 'DELETE FROM `quads` where (subject = ? AND predicate = ? AND object = ? AND context = ?)' end
each_graph_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 38 def each_graph_sql 'select distinct context from quads' end
each_object_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 34 def each_object_sql 'select distinct object from quads' end
each_predicate_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 30 def each_predicate_sql 'select distinct predicate from quads' end
each_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 22 def each_sql 'select * from quads' end
each_subject_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 26 def each_subject_sql 'select distinct subject from quads' end
insert_sql()
click to toggle source
# File lib/rdf/do/adapters/defaults.rb, line 14 def insert_sql 'REPLACE INTO `quads` (subject, predicate, object, context) VALUES (?, ?, ?, ?)' end
query(repository, hash = {})
click to toggle source
Perform a query on an RDF::DataObjects::Repository
based on a hash of components.
This is meant to be called by RDF::DataObjects::Repository
.
Supports symbols and `RDF::Query::Variable` values as a wild-card for a non-nil value.
Supports `false` for a specifically nil value representing the default context.
@example
adapter.query(repository, predicate: predicate)
@return [DataObjects::Result]
# File lib/rdf/do/adapters/defaults.rb, line 54 def query(repository, hash = {}) return repository.result(each_sql) if hash.empty? conditions = [] params = [] [:subject, :predicate, :object, :graph_name].each do |resource| do_resource = resource == :graph_name ? :context : resource unless hash[resource].nil? case hash[resource] when Symbol, RDF::Query::Variable conditions << "#{do_resource} != 'nil'" next when false conditions << "#{do_resource} = 'nil'" next else conditions << "#{do_resource} = ?" end params << repository.serialize(hash[resource]) end end where = conditions.empty? ? "" : "WHERE " where << conditions.join(' AND ') #puts "query: #{where.inspect}, #{params.inspect}" repository.result('select * from quads ' + where, *params) end