module RDF::Mutable

Public Class Methods

add_entailment(method, proc) click to toggle source

Add an entailment method. The method accepts no arguments, and returns or yields an array of values associated with the particular entailment method @param [Symbol] method @param [Proc] proc

# File lib/rdf/reasoner/extensions.rb, line 194
def add_entailment(method, proc)
  @@entailments[method] = proc
end

Public Instance Methods

entail(*rules, &block) click to toggle source

Return a new mutable, composed of original and entailed statements

@param [Array<Symbol>] rules Registered entailment method(s) @return [RDF::Mutable] @see [RDF::Enumerable#entail]

# File lib/rdf/reasoner/extensions.rb, line 204
def entail(*rules, &block)
  self.dup.entail!(*rules)
end
entail!(*rules, &block) click to toggle source

Add entailed statements to the mutable

@param [Array<Symbol>] rules Registered entailment method(s) @return [RDF::Mutable] @see [RDF::Enumerable#entail]

# File lib/rdf/reasoner/extensions.rb, line 213
def entail!(*rules, &block)
  rules = %w(subClassOf subPropertyOf domain range).map(&:to_sym) if rules.empty?
  statements = []

  self.each do |statement|
    rules.each do |rule|
      statement.entail(rule) do |st|
        statements << st
      end
    end
  end
  self.insert(*statements)
  self
end