Class AbstractSingleResultPredicate

java.lang.Object
org.projog.core.predicate.AbstractSingleResultPredicate
All Implemented Interfaces:
KnowledgeBaseConsumer, PredicateFactory
Direct Known Subclasses:
AddArithmeticOperator, AddExpressionFactory, AddPredicateFactory, AddUserDefinedArithmeticOperator, AlterSpyPoint, AppendListOfLists, Arg, Assert, AtomicListConcat, Close, Compare, Consult, ConsultList, ConvertTime, CopyTerm, CurrentInput, CurrentOutput, Debugging, Delete, Dif, Distinct, Dynamic, EnsureLoaded, Equal, Erase, ExtremumList, Flag, Flatten, Functor, GetChar, GetCode, GetTime, In, InsertRecord, IsAtom, IsAtomic, IsCompound, IsFloat, IsInteger, IsList, IsNonVar, IsNumber, IsVar, KeySort, Listing, NewLine, NoDebug, NoTrace, NotStrictEquality, NotUnifiable, NumberVars, NumericConstraintPredicate, NumericEquality, NumericGreaterThan, NumericGreaterThanOrEqual, NumericInequality, NumericLessThan, NumericLessThanOrEqual, Op, Open, PairsElements, PutChar, RandomPermutation, Read, See, Seen, SetInput, SetOutput, Sort, SortAsSet, StrictEquality, Subset, SubtractFromList, SumList, Tab, Tabling, Tell, TermGreaterThan, TermGreaterThanOrEqual, TermLessThan, TermLessThanOrEqual, TermSplit, Throw, Told, Trace, UnifyWithOccursCheck, Univ, Write, WriteCanonical, Writef

public abstract class AbstractSingleResultPredicate extends Object implements PredicateFactory, KnowledgeBaseConsumer
Superclass of "plug-in" predicates that are not re-evaluated as part of backtracking.

Provides a skeletal implementation of PredicateFactory and Predicate. No attempt to find multiple solutions will be made as part of backtracking as isRetryable() always returns false.

  • Constructor Details

    • AbstractSingleResultPredicate

      public AbstractSingleResultPredicate()
  • Method Details

    • getPredicate

      public final Predicate getPredicate(Term term)
      Description copied from interface: PredicateFactory
      Returns a Predicate to be used in the evaluation of a goal.
      Specified by:
      getPredicate in interface PredicateFactory
      Parameters:
      term - the term containing the arguments to use in the evaluation of the goal
      Returns:
      Predicate to be used in the evaluation of the goal
      See Also:
    • evaluate

      protected boolean evaluate()
    • evaluate

      protected boolean evaluate(Term arg)
    • evaluate

      protected boolean evaluate(Term arg1, Term arg2)
    • evaluate

      protected boolean evaluate(Term arg1, Term arg2, Term arg3)
    • evaluate

      protected boolean evaluate(Term arg1, Term arg2, Term arg3, Term arg4)
    • isRetryable

      public final boolean isRetryable()
      Description copied from interface: PredicateFactory
      Should instances of this implementation be re-evaluated when backtracking?

      Some goals (e.g. X is 1) are only meant to be evaluated once (the statement is either true or false) while others (e.g. repeat(3)) are meant to be evaluated multiple times. For instances of Predicate that are designed to possibly have Predicate.evaluate() called on them multiple times for the same individual query this method should return true. For instances of Predicate that are designed to only be evaluated once per individual query this method should return false.

      Specified by:
      isRetryable in interface PredicateFactory
      Returns:
      true if an attempt should be made to re-evaluate instances of implementing classes when backtracking, false otherwise
    • setKnowledgeBase

      public final void setKnowledgeBase(KnowledgeBase knowledgeBase)
      Description copied from interface: KnowledgeBaseConsumer
      Provides a reference to a KnowledgeBase.
      Specified by:
      setKnowledgeBase in interface KnowledgeBaseConsumer
    • init

      protected void init()
      This method is called by setKnowledgeBase(KnowledgeBase).

      Can be overridden by subclasses to perform initialisation before any calls to getPredicate(Term) are made. As setKnowledgeBase(KnowledgeBase) will have already been called before this method is invoked, overridden versions will be able to access the KnowledgeBase using getKnowledgeBase().

    • getKnowledgeBase

      protected final KnowledgeBase getKnowledgeBase()
    • getPredicates

      protected final Predicates getPredicates()
    • getArithmeticOperators

      protected final ArithmeticOperators getArithmeticOperators()
    • getProjogListeners

      protected final ProjogListeners getProjogListeners()
    • getOperands

      protected final Operands getOperands()
    • getTermFormatter

      protected final TermFormatter getTermFormatter()
    • getSpyPoints

      protected final SpyPoints getSpyPoints()
    • getFileHandles

      protected final FileHandles getFileHandles()