Class: RDF::N3::Algebra::Log::Conclusion
- Inherits:
-
ResourceOperator
- Object
- SPARQL::Algebra::Operator::Binary
- ResourceOperator
- RDF::N3::Algebra::Log::Conclusion
- Defined in:
- lib/rdf/n3/algebra/log/conclusion.rb
Overview
All possible conclusions which can be drawn from a formula.
The object of this function, a formula, is the set of conclusions which can be drawn from the subject formula, by successively applying any rules it contains to the data it contains. This is equivalent to cwm’s “–think” command line function. It does use built-ins, so it may for example indirectly invoke other documents, validate signatures, etc.
Constant Summary collapse
Instance Attribute Summary
Attributes included from Enumerable
Instance Method Summary collapse
-
#each(solutions:) {|statement| ... } ⇒ Object
Yields statements, and de-asserts ‘inferred` from the subject.
-
#input_operand ⇒ RDF::Term
Return subject operand.
-
#resolve(resource, position:) ⇒ RDF::N3::Algebra::Formula
Evaluates this operator by creating a new formula containing the triples generated by reasoning over the input formula using think.
-
#valid?(subject, object) ⇒ Boolean
To be valid, subject must be a formula, and object a formula or variable.
Methods inherited from ResourceOperator
Methods included from Builtin
#evaluate, #hash, #rank, #to_uri
Instance Method Details
#each(solutions:) {|statement| ... } ⇒ Object
Yields statements, and de-asserts ‘inferred` from the subject.
59 60 61 62 63 |
# File 'lib/rdf/n3/algebra/log/conclusion.rb', line 59 def each(solutions:, &block) super do |stmt| block.call(RDF::Statement.from(stmt.to_quad)) end end |
#input_operand ⇒ RDF::Term
Return subject operand.
48 49 50 |
# File 'lib/rdf/n3/algebra/log/conclusion.rb', line 48 def input_operand operands.first end |
#resolve(resource, position:) ⇒ RDF::N3::Algebra::Formula
Evaluates this operator by creating a new formula containing the triples generated by reasoning over the input formula using think.
The subject is evaluated into an isolated repository so that conclusions evaluated when evaluating the subject are not necessarily conclusions resulting from evaluating this operator.
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rdf/n3/algebra/log/conclusion.rb', line 18 def resolve(resource, position:) return resource unless position == :subject log_depth do reasoner = RDF::N3::Reasoner.new(resource, **@options) conclusions = RDF::N3::Repository.new reasoner.execute(think: true) {|stmt| conclusions << stmt} # The result is a formula containing the conclusions form = RDF::N3::Algebra::Formula.from_enumerable(conclusions, **@options).deep_dup log_info("#{NAME} resolved") {SXP::Generator.string form.to_sxp_bin} form end end |