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