Class GenericFOQueryEvaluator<QD extends QueryableData>

java.lang.Object
fr.inria.rules.integraal.query_evaluation.generic.GenericFOQueryEvaluator<QD>
Type Parameters:
QD - the queryable data type evaluated by this dispatcher
All Implemented Interfaces:
FOQueryEvaluator<FOFormula, QD>, QueryEvaluator<FOQuery<? extends FOFormula>, QD>

public class GenericFOQueryEvaluator<QD extends QueryableData> extends Object implements FOQueryEvaluator<FOFormula, QD>
Evaluates a FOQuery by dispatching it to the correct evaluator. This is used to abstract the query evaluation when the exact query type is not known such as during a compound query (conjunction or disjunction) sub-queries evaluation.
  • Constructor Details

    • GenericFOQueryEvaluator

      public GenericFOQueryEvaluator()
      Creates an evaluator without configured sub-evaluators.
  • Method Details

    • defaultInstance

      public static <QD extends QueryableData> GenericFOQueryEvaluator<QD> defaultInstance()
      The default instance is used to give a default behavior to the evaluator when one doesn't want to configure it.
      Type Parameters:
      QD - the queryable data type evaluated by the instance
      Returns:
      the default instance of the evaluator
    • defaultInstanceWithUnfoldCompilation

      public static <QD extends QueryableData> GenericFOQueryEvaluator<QD> defaultInstanceWithUnfoldCompilation(RuleCompilation compilation)
      Creates a default evaluator whose atomic evaluation unfolds a rule compilation.
      Type Parameters:
      QD - the queryable data type evaluated by the instance
      Parameters:
      compilation - a compilation of rules
      Returns:
      an instance of the evaluator using compilation with unfold evaluation strategy
    • defaultInstanceWithInfCompilation

      public static GenericFOQueryEvaluator<MaterializedData> defaultInstanceWithInfCompilation(RuleCompilation compilation)
      Creates a default evaluator whose atomic evaluation uses inf-homomorphism over a rule compilation.
      Parameters:
      compilation - a compilation of rules
      Returns:
      an instance of the evaluator using compilation with inf-homomorphism evaluation strategy
    • setAtomicEvaluator

      public GenericFOQueryEvaluator<QD> setAtomicEvaluator(FOQueryEvaluator<Atom,QD> evaluator)
      Sets the evaluator for atomic queries
      Parameters:
      evaluator - the atomic query evaluator to use for recursive calls
      Returns:
      this evaluator for successive calls
    • setConjunctionEvaluator

      public GenericFOQueryEvaluator<QD> setConjunctionEvaluator(FOQueryEvaluator<FOFormulaConjunction, QD> evaluator)
      Sets the evaluator for conjunction of queries
      Parameters:
      evaluator - the conjunction evaluator to use for recursive calls
      Returns:
      this evaluator for successive calls
    • setDisjunctionEvaluator

      public GenericFOQueryEvaluator<QD> setDisjunctionEvaluator(FOQueryEvaluator<FOFormulaDisjunction, QD> evaluator)
      Sets the evaluator for disjunction of queries
      Parameters:
      evaluator - the disjunction evaluator to use for recursive calls
      Returns:
      this evaluator for successive calls
    • setNegationEvaluator

      public GenericFOQueryEvaluator<QD> setNegationEvaluator(FOQueryEvaluator<FOFormulaNegation, QD> evaluator)
      Sets the evaluator for negation of queries
      Parameters:
      evaluator - the negation evaluator to use for recursive calls
      Returns:
      this evaluator for successive calls
    • evaluate

      public Stream<Substitution> evaluate(FOQuery<? extends FOFormula> query, QD queryableData, Collection<Variable> vars, Substitution preHomomorphism) throws EvaluationException
      //////////////////////////////////////////////
      Specified by:
      evaluate in interface FOQueryEvaluator<FOFormula, QD extends QueryableData>
      Specified by:
      evaluate in interface QueryEvaluator<FOQuery<? extends FOFormula>, QD extends QueryableData>
      Parameters:
      query - the query to evaluate
      queryableData - the data source against which the query is evaluated
      vars - variables constrained to constant answers
      preHomomorphism - a partial substitution to extend
      Returns:
      a stream of substitutions answering the query
      Throws:
      EvaluationException - if the evaluation cannot be completed
    • prepareQuery

      public PreparedFOQuery<? extends FOFormula, QD> prepareQuery(FOQuery<? extends FOFormula> query, QD queryableData, Collection<Variable> variablesThatMustBeMappedToGroundTerms)
      Description copied from interface: FOQueryEvaluator
      Creates a prepared first-order query bound to a data source and ground-term policy.
      Specified by:
      prepareQuery in interface FOQueryEvaluator<FOFormula, QD extends QueryableData>
      Specified by:
      prepareQuery in interface QueryEvaluator<FOQuery<? extends FOFormula>, QD extends QueryableData>
      Parameters:
      query - the query to prepare
      queryableData - the data source against which the query will run
      variablesThatMustBeMappedToGroundTerms - variables constrained to ground answers
      Returns:
      a prepared query wrapper