lib/activerdf_redland/redland.rb in activerdf_redland-1.0 vs lib/activerdf_redland/redland.rb in activerdf_redland-1.1

- old
+ new

@@ -1,20 +1,17 @@ -# Adapter to Redland database -# uses SPARQL for querying -# # Author:: Eyal Oren # Copyright:: (c) 2005-2006 Eyal Oren # License:: LGPL require 'active_rdf' require 'federation/connection_pool' require 'queryengine/query2sparql' require 'rdf/redland' -# TODO: add json results for eric hanson - +# Adapter to Redland database +# uses SPARQL for querying class RedlandAdapter < ActiveRdfAdapter - $log.info "loading Redland adapter" + $activerdflog.info "loading Redland adapter" ConnectionPool.register_adapter(:redland,self) # instantiate connection to Redland database def initialize(params = {}) @@ -26,11 +23,11 @@ else # fall back to in-memory redland type = 'memory'; path = ''; file = '.' end - $log.info "RedlandAdapter: initializing with type: #{type} file: #{file} path: #{path}" + $activerdflog.info "RedlandAdapter: initializing with type: #{type} file: #{file} path: #{path}" @store = Redland::HashStore.new(type, file, path, false) @model = Redland::Model.new @store @reads = true @@ -38,42 +35,39 @@ end # load a file from the given location with the given syntax into the model. # use Redland syntax strings, e.g. "ntriples" or "rdfxml", defaults to "ntriples" def load(location, syntax="ntriples") - $log.debug "Redland: loading file with syntax: #{syntax} and location: #{location}" + $activerdflog.debug "Redland: loading file with syntax: #{syntax} and location: #{location}" if $activerdflog.level == Logger::DEBUG parser = Redland::Parser.new(syntax, "", nil) parser.parse_into_model(@model, "file:#{location}") end # yields query results (as many as requested in select clauses) executed on data source def query(query) qs = Query2SPARQL.translate(query) - $log.debug "RedlandAdapter: after translating to SPARQL, query is: #{qs}" + $activerdflog.debug "RedlandAdapter: executing SPARQL query #{qs}" if $activerdflog.level == Logger::DEBUG - time = Time.now clauses = query.select_clauses.size redland_query = Redland::Query.new(qs, 'sparql') query_results = @model.query_execute(redland_query) - $log.debug "RedlandAdapter: query response from Redland took: #{Time.now - time}s" - $log.debug "RedlandAdapter: query response has size: #{query_results.size}" + $activerdflog.debug "RedlandAdapter: found #{query_results.size} query results" if $activerdflog.level == Logger::DEBUG # verify if the query has failed if query_results.nil? - $log.debug "RedlandAdapter: query has failed with nil result" + $activerdflog.debug "RedlandAdapter: query has failed with nil result" if $activerdflog.level == Logger::DEBUG return false end if not query_results.is_bindings? - $log.debug "RedlandAdapter: query has failed without bindings" + $activerdflog.debug "RedlandAdapter: query has failed without bindings" if $activerdflog.level == Logger::DEBUG return false end # convert the result to array #TODO: if block is given we should not parse all results into array first results = query_result_to_array(query_results) - $log.debug "RedlandAdapter: result of query is #{results.join(', ')}" if block_given? results.each do |clauses| yield(*clauses) end @@ -113,27 +107,27 @@ query_results.to_string() end # add triple to datamodel def add(s, p, o) - $log.debug "adding triple #{s} #{p} #{o}" + $activerdflog.debug "adding triple #{s} #{p} #{o}" if $activerdflog.level == Logger::DEBUG # verify input if s.nil? || p.nil? || o.nil? - $log.debug "cannot add triple with empty subject, exiting" + $activerdflog.debug "cannot add triple with empty subject, exiting" if $activerdflog.level == Logger::DEBUG return false end unless s.respond_to?(:uri) && p.respond_to?(:uri) - $log.debug "cannot add triple where s/p are not resources, exiting" + $activerdflog.debug "cannot add triple where s/p are not resources, exiting" if $activerdflog.level == Logger::DEBUG return false end begin @model.add(wrap(s), wrap(p), wrap(o)) save if ConnectionPool.auto_flush? rescue Redland::RedlandError => e - $log.warn "RedlandAdapter: adding triple failed in Redland library: #{e}" + $activerdflog.warn "RedlandAdapter: adding triple failed in Redland library: #{e}" return false end end # deletes triple(s,p,o) from datastore