Class: RoadForest::SourceRigor::ResourcePattern

Inherits:
RDF::Query::Pattern
  • Object
show all
Defined in:
lib/roadforest/source-rigor/resource-pattern.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#context_rolesObject

Returns the value of attribute context_roles.



35
36
37
# File 'lib/roadforest/source-rigor/resource-pattern.rb', line 35

def context_roles
  @context_roles
end

#source_rigorObject

Returns the value of attribute source_rigor.



35
36
37
# File 'lib/roadforest/source-rigor/resource-pattern.rb', line 35

def source_rigor
  @source_rigor
end

Class Method Details

.from(pattern, options) {|pattern| ... } ⇒ Object

Yields:

  • (pattern)


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/roadforest/source-rigor/resource-pattern.rb', line 8

def self.from(pattern, options)
  pattern = case pattern
            when self
              pattern
            when ::RDF::Query::Pattern
              options ||= {}
              self.new(pattern.subject, pattern.predicate, pattern.object, options.merge(:context => pattern.context))
            when Array, ::RDF::Statement
              options ||= {}
              self.new(pattern[0], pattern[1], pattern[2], options.merge(:context => pattern[3]))
            when Hash
              options ||= {}
              self.new(options.merge(pattern))
            else
              raise ArgumentError, "expected RoadForest::SourceRigor::ResourcePattern, RDF::Query::Pattern, RDF::Statement, Hash, or Array, but got #{pattern.inspect}"
            end

  unless options.nil?
    pattern.context_roles = options[:context_roles]
    pattern.source_rigor = options[:source_rigor]
  end

  yield pattern if block_given?

  pattern
end

Instance Method Details

#contextObject



57
58
59
# File 'lib/roadforest/source-rigor/resource-pattern.rb', line 57

def context
  @context ||= ::RDF::Query::Variable.new(:context)
end

#execute(queryable, bindings = nil, query_context_roles = nil, &block) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/roadforest/source-rigor/resource-pattern.rb', line 37

def execute(queryable, bindings = nil, query_context_roles = nil, &block)
  unless queryable.is_a? RoadForest::SourceRigor::GraphStore
    return super(queryable, bindings || {}, &block)
  end

  investigation = Investigation.new
  investigation.queryable = queryable
  investigation.context_roles = (query_context_roles || {}).merge(context_roles)
  investigation.source_rigor = source_rigor

  results = investigation.result do |results|
    super(queryable, bindings || {}) do |statement|
      results << statement
    end
  end

  results.each(&block) if block_given?
  results
end