class RoadForest::SourceRigor::Investigation

Attributes

context_roles[RW]
queryable[RW]
results[RW]
source_rigor[RW]

Public Class Methods

new() click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 7
def initialize
  @results = []
end

Public Instance Methods

context_metadata(context) click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 69
def context_metadata(context)
  query = RDF::Query.new do |query|
    query.pattern [context, :property, :value]
  end
  query.execute(queryable.unnamed_graph).select(:property, :value)
end
credence_policies() click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 23
def credence_policies
  source_rigor.credence_policies
end
empty_for_context(context) click to toggle source

XXX Do we need the nil result if context_metadata is empty?

# File lib/roadforest/source-rigor/investigation.rb, line 83
def empty_for_context(context)
  if context_metadata(context).empty? #We've never checked
    nil
  else
    empty_result
  end
end
found_results?() click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 15
def found_results?
  !@results.nil?
end
http_client() click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 11
def http_client
  queryable.http_client
end
insert_graph(context, graph) click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 31
def insert_graph(context, graph)
  queryable.insert_graph(context, graph)
end
investigators() click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 19
def investigators
  source_rigor.investigators
end
make_request(method, url, graph=nil) click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 27
def make_request(method, url, graph=nil)
  source_rigor.graph_transfer.make_request(method, url, graph)
end
result() { |results| ... } click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 35
def result
  investigators.each do |investigator|
    self.results = []
    yield(results)

    contexts = result_contexts

    catch :not_credible do
      credence_policies.each do |policy|
        contexts = policy.credible(contexts, self)
        if contexts.empty?
          throw :not_credible
        end
      end
      return results_for_context(contexts.first)
    end

    self.results = nil
    investigator.pursue(self)

    if found_results?
      return results
    end
  end
  raise NoCredibleResults
end
result_contexts() click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 62
def result_contexts
  (results.map(&:context) +
   context_roles.values.find_all do |context|
    not context_metadata(context).empty?
   end).uniq
end
results_for_context(context) click to toggle source
# File lib/roadforest/source-rigor/investigation.rb, line 76
def results_for_context(context)
  results.find_all do |item|
    item.context == context
  end
end