Package org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred

## Class RelationEvaluation

- java.lang.Object
- - org.eclipse.viatra.query.runtime.matchers.psystem.BasePConstraint
  - - org.eclipse.viatra.query.runtime.matchers.psystem.EnumerablePConstraint
    - - org.eclipse.viatra.query.runtime.matchers.psystem.basicdeferred.RelationEvaluation

- All Implemented Interfaces:
    `IMultiQueryReference`, `PConstraint`, `PTraceable`

      public class RelationEvaluation
      extends EnumerablePConstraint
      implements IMultiQueryReference

  A constraint which prescribes the evaluation of custom Java logic that takes an arbitrary number of input relations and produces one output relation. Contrast this to `ExpressionEvaluation`, which produces a single output value given an input tuple. The assumption is that the relation evaluation logic is not incremental, that is, it can only perform from-scratch computation of the output relation given the complete input relations. To this end, the relation evaluator always receives the complete input relations with all their contents as input. However, the evaluator engine makes sure that the output of the relation evaluation is at least "seemingly" incremental. This means that the underlying computation network computes the delta on the output compared to the previous output and only propagates the delta further.
  Since:
    2.8

- - ### Field Summary

    - ### Fields inherited from class org.eclipse.viatra.query.runtime.matchers.psystem.EnumerablePConstraint

      `variablesTuple`

    - ### Fields inherited from class org.eclipse.viatra.query.runtime.matchers.psystem.BasePConstraint

      `pBody`

    - ### Fields inherited from interface org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint

      `COMPARE_BY_MONOTONOUS_ID`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `RelationEvaluation​(PBody body, Tuple variablesTuple, java.util.List<PQuery> inputQueries, IRelationEvaluator evaluator)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `IRelationEvaluator` | `getEvaluator()` |
    `java.util.List<PQuery>` | `getReferredQueries()` |

    - ### Methods inherited from class org.eclipse.viatra.query.runtime.matchers.psystem.EnumerablePConstraint

      `doReplaceVariable, getDeducedVariables, getVariableInTuple, getVariablesTuple, toStringRest, toStringRestRest`

    - ### Methods inherited from class org.eclipse.viatra.query.runtime.matchers.psystem.BasePConstraint

      `checkSanity, delete, getAffectedVariables, getBody, getFunctionalDependencies, getMonotonousID, getPSystem, replaceVariable, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### RelationEvaluation

          public RelationEvaluation​(PBody body,
                                    Tuple variablesTuple,
                                    java.util.List<PQuery> inputQueries,
                                    IRelationEvaluator evaluator)

  - ### Method Detail

    - #### getEvaluator

          public IRelationEvaluator getEvaluator()

    - #### getReferredQueries

          public java.util.List<PQuery> getReferredQueries()

      Specified by:
        `getReferredQueries` in interface `IMultiQueryReference`