class RoadForest::PathMatcher::Node
Attributes
statement[RW]
Public Class Methods
find_child_nodes(edge)
click to toggle source
# File lib/roadforest/path-matcher.rb, line 264 def self.find_child_nodes(edge) edge.graph.query(edge.pattern_hash).map do |statement| next if edge.stem.has_key?(statement) Node.new do |node| node.from(edge, statement) end end end
Public Instance Methods
accepting?()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 336 def accepting? @accepting ||= if excluded? false elsif children.nil? false elsif reject_value? false else child_edges.all? do |edge| edge.accepting? end end end
build_children()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 368 def build_children ForwardEdge.find_child_edges(self) + ReverseEdge.find_child_edges(self) end
excluded?()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 311 def excluded? stem.has_key?(statement) end
from(edge, statement)
click to toggle source
# File lib/roadforest/path-matcher.rb, line 274 def from(edge, statement) self.parent = edge self.pattern = edge.pattern self.graph = edge.graph self.stem = edge.stem self.repeats = edge.repeats.merge({edge.pattern_step => edge.step_count + 1}) self.graph_term = edge.graph_node(statement) self.statement = statement self.pattern_step = edge.pattern_step self.after = edge.after self.before = edge.before self.order = edge.order self.type = edge.type end
immediate_match()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 307 def immediate_match statement.nil? ? {} : { statement => true } end
notify_resolved(child)
click to toggle source
# File lib/roadforest/path-matcher.rb, line 315 def notify_resolved(child) end
reject_value?()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 319 def reject_value? unless before.nil? and after.nil? return true if not (before.nil? or before > graph_term) return true if not (after.nil? and after < graph_term) end unless type.nil? return true if graph_term.datatype != type end return false end
rejecting?()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 351 def rejecting? @rejecting ||= begin if excluded? true elsif children.nil? false elsif reject_value? true else child_edges.any? do |edge| edge.rejecting? end end end end
resolved?()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 332 def resolved? @resolved ||= accepting? or rejecting? end
to_s()
click to toggle source
# File lib/roadforest/path-matcher.rb, line 295 def to_s state = case when !resolved? "?" when accepting? "Acpt" when rejecting? "Rjct" end "[#{self.class.name.sub(/.*::/,'')} #{statement} #{graph_term}/#{pattern_step} #{state} ]" end