JTP API Documentation

jtp
Interface Reasoner

All Known Subinterfaces:
Dispatcher, RelationBasedBCReasoner, RelationBasedFCReasoner, RelationBasedReasoner
All Known Implementing Classes:
AbstractRelationBasedBCReasoner, AbstractRelationBasedFCReasoner, jtp.disp.AbstractRelationBasedReasoner, AbstractRuleCreator, AncestorCycleCutReasoner, AskingQueryProcessor, BackwardChainingStorage, BreadthFirstForwardReasoner, ClassifierTellingReasoner, ClauseOrientationKB, DefaultTranslationReasoner, DemodulatingProxy, DemodulationReasoner, EnumeratingReasoner, ForwardChainingDemodulationProxy, FrameTranslators.SubclassOfTranslator, FrameTranslators.TemplateFacetValueTranslator, FrameTranslators.TemplateSlotValueTranslator, HoldsReasoner, IntersectionTypeReasoner, IterativeDeepening, LinearReductionReasoner, LinkAsserter, ModelEliminationReasoner, ModusPonensReasoner, NewRuleConsequences, ProofTransformingReasonerProxy, RelationBasedDispatcher, RuleClauseAndTriggerInstaller, RuleInstantiator, SequentialDispatcher, SlotValueAskingReasoner, SlotValueTellingReasoner, TimePointKnowledgeStore.AskingReasoner, TimePointKnowledgeStore.TellingReasoner, TranslatingProxyReasoner, VCListenerCreator

public interface Reasoner

The basic interface for a reasoner.

This is the principal functional component of the architecture. A backward-chaining reasoner is an object that can accept goals and find proofs for the answers it returns. Correspondingly, the reasoner interface includes two methods. Both methods take a single argument - the goal.

There are no formal limitations on what can be a goal for a backward-chaining reasoner, as long as it understands it. In current JTP implementation, goals typically correspond to first-order logic sentences expressed in the form of data structures defined in jtp.fol package; most often literals.


Method Summary
 boolean acceptable(Object goal)
          decides if the goal is suitable for being processed by this reasoner.
 ReasoningStepIterator process(Object goal)
          This method attempts to find proof for the goal.
 

Method Detail

process

public ReasoningStepIterator process(Object goal)
                              throws ReasoningException
This method attempts to find proof for the goal. It returns an enumeration of reasoning steps that correspond to alternative proofs for the goal. Consequently, the items of the enumeration can actually belong to different models of the goal sentence, and have incompatible variable assignments.

Example. A reasoner that performs unification of the goal with facts in a knowledge base can return the following enumeration for the goal (parent joe ?x):

  1. A reasoning step proving (parent joe fred) with variable assignment ?x=fred,
  2. A reasoning step proving (parent joe mary) with variable assignment ?x=mary.

Parameters:
goal - the goal: either a query or an assertion
Returns:
the iterator of reasoning steps - proofs for the query, or consequences of the assertion.
ReasoningException

acceptable

public boolean acceptable(Object goal)
decides if the goal is suitable for being processed by this reasoner. This method should be fast; if there are doubts as to whether a goal is acceptable, and it looks like determining it might take some time, the method should return true and let the process method figure it out.

Example. Many reasoners only process literals with certain predicates and arity. These reasoners will use those criteria to determine acceptability, for example a reasoner dealing with equality could accept goals that are:

  1. Literals,
  2. have = as their relation predicate,
  3. have exactly two arguments.

Returns:
true if the goal is suitable for this reasoner, false otherwise.

JTP API Documentation