Package org.eclipse.rdf4j.query.algebra.evaluation

## Interface EvaluationStrategy

- All Superinterfaces:
    `FederatedServiceResolver`
  All Known Implementing Classes:
    `EvaluationStrategyImpl`, `ExtendedEvaluationStrategy`, `FederationEvalStrategy`, `LimitedSizeEvaluationStrategy`, `SailFederationEvalStrategy`, `SimpleEvaluationStrategy`, `SparqlFederationEvalStrategy`, `StrictEvaluationStrategy`, `TupleFunctionEvaluationStrategy`

      public interface EvaluationStrategy
      extends FederatedServiceResolver

  Evaluates `TupleExpr`s and `ValueExpr`s.
  Author:
    Arjohn Kampman, James Leigh

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `CloseableIteration<BindingSet,​QueryEvaluationException>` | `evaluate​(Service expr, String serviceUri, CloseableIteration<BindingSet,​QueryEvaluationException> bindings)` | Evaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.
    `CloseableIteration<BindingSet,​QueryEvaluationException>` | `evaluate​(TupleExpr expr, BindingSet bindings)` | Evaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.
    `Value` | `evaluate​(ValueExpr expr, BindingSet bindings)` | Gets the value of this expression.
    `FederatedService` | `getService​(String serviceUrl)` | Retrieve the `FederatedService` registered for serviceUrl.
    `boolean` | `isTrue​(QueryValueEvaluationStep expr, BindingSet bindings)` |
    `boolean` | `isTrue​(ValueExpr expr, BindingSet bindings)` | Evaluates the boolean expression on the supplied TripleSource object.
    `default <T> Queue<T>` | `makeQueue()` |
    `default <T> Set<T>` | `makeSet()` |
    `TupleExpr` | `optimize​(TupleExpr expr, EvaluationStatistics evaluationStatistics, BindingSet bindings)` | Execute the `QueryOptimizerPipeline` on the given `TupleExpr` to optimize its execution plan.
    `default QueryEvaluationStep` | `precompile​(TupleExpr expr)` | Prepare a QueryEvaluationStep that tries to do as much work once per query avoiding repeated calls to the same code as much as possible.
    `default QueryEvaluationStep` | `precompile​(TupleExpr expr, QueryEvaluationContext context)` |
    `default QueryValueEvaluationStep` | `precompile​(ValueExpr arg, QueryEvaluationContext context)` |
    `void` | `setOptimizerPipeline​(QueryOptimizerPipeline pipeline)` | Set the `QueryOptimizerPipeline` to use for optimizing any incoming queries.
    `default void` | `setTrackResultSize​(boolean trackResultSize)` | Enable or disable results size tracking for the query plan.
    `default void` | `setTrackTime​(boolean trackTime)` | Enable or disable time tracking for the query plan.

- - ### Method Detail

    - #### getService

          FederatedService getService​(String serviceUrl)
                               throws QueryEvaluationException

      Retrieve the `FederatedService` registered for serviceUrl. If there is no service registered for serviceUrl, a new `SPARQLFederatedService` is created and registered.
      Specified by:
        `getService` in interface `FederatedServiceResolver`
      Parameters:
        `serviceUrl` - URL of the service.
      Returns:
        the `FederatedService` registered for the serviceUrl.
      Throws:
        `QueryEvaluationException`
      See Also:
        `FederatedServiceResolver.getService(java.lang.String)`

    - #### setOptimizerPipeline

          void setOptimizerPipeline​(QueryOptimizerPipeline pipeline)

      Set the `QueryOptimizerPipeline` to use for optimizing any incoming queries.
      Parameters:
        `pipeline` - the `QueryOptimizerPipeline`.
      Since:
        3.0
      See Also:
        `optimize(TupleExpr, EvaluationStatistics, BindingSet)`

    - #### optimize

          TupleExpr optimize​(TupleExpr expr,
                             EvaluationStatistics evaluationStatistics,
                             BindingSet bindings)

      Execute the `QueryOptimizerPipeline` on the given `TupleExpr` to optimize its execution plan.
      Parameters:
        `expr` - the `TupleExpr` to optimize.
        `evaluationStatistics` - the `EvaluationStatistics` of the data source, to be used for query planning.
        `bindings` - a-priori bindings supplied for the query, which can potentially be inlined.
      Returns:
        the optimized `TupleExpr`.
      Since:
        3.0
      See Also:
        `setOptimizerPipeline(QueryOptimizerPipeline)`

    - #### evaluate

          CloseableIteration<BindingSet,​QueryEvaluationException> evaluate​(Service expr,
                                                                                 String serviceUri,
                                                                                 CloseableIteration<BindingSet,​QueryEvaluationException> bindings)
                                                                          throws QueryEvaluationException

      Evaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.
      Parameters:
        `expr` - The Service Expression to evaluate
        `serviceUri` - TODO
        `bindings` - The variables bindings iterator to use for evaluating the expression, if applicable.
      Returns:
        A closeable iterator over all of variable binding sets that match the tuple expression.
      Throws:
        `QueryEvaluationException`

    - #### evaluate

          CloseableIteration<BindingSet,​QueryEvaluationException> evaluate​(TupleExpr expr,
                                                                                 BindingSet bindings)
                                                                          throws QueryEvaluationException

      Evaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.
      Parameters:
        `expr` - The Tuple Expression to evaluate
        `bindings` - The variables bindings to use for evaluating the expression, if applicable.
      Returns:
        A closeable iterator over the variable binding sets that match the tuple expression.
      Throws:
        `QueryEvaluationException`

    - #### precompile

          default QueryEvaluationStep precompile​(TupleExpr expr)

      Prepare a QueryEvaluationStep that tries to do as much work once per query avoiding repeated calls to the same code as much as possible. This depends on java invoke dynamic for performance.
      Parameters:
        `expr` - that is to be evaluated later
      Returns:
        a QueryEvaluationStep that may avoid doing repeating the same work over and over.

    - #### precompile

          default QueryEvaluationStep precompile​(TupleExpr expr,
                                                 QueryEvaluationContext context)

    - #### evaluate

          Value evaluate​(ValueExpr expr,
                         BindingSet bindings)
                  throws ValueExprEvaluationException,
                         QueryEvaluationException

      Gets the value of this expression.
      Parameters:
        `expr` -
        `bindings` - The variables bindings to use for evaluating the expression, if applicable.
      Returns:
        The Value that this expression evaluates to, or null if the expression could not be evaluated.
      Throws:
        `ValueExprEvaluationException`
        `QueryEvaluationException`

    - #### isTrue

          boolean isTrue​(ValueExpr expr,
                         BindingSet bindings)
                  throws ValueExprEvaluationException,
                         QueryEvaluationException

      Evaluates the boolean expression on the supplied TripleSource object.
      Parameters:
        `expr` -
        `bindings` - The variables bindings to use for evaluating the expression, if applicable.
      Returns:
        The result of the evaluation.
      Throws:
        `ValueExprEvaluationException` - If the value expression could not be evaluated, for example when comparing two incompatible operands. When thrown, the result of the boolean expression is neither true nor false , but unknown.
        `QueryEvaluationException`

    - #### isTrue

          boolean isTrue​(QueryValueEvaluationStep expr,
                         BindingSet bindings)
                  throws ValueExprEvaluationException,
                         QueryEvaluationException

      Throws:
        `ValueExprEvaluationException`
        `QueryEvaluationException`

    - #### setTrackResultSize

          @Experimental
          default void setTrackResultSize​(boolean trackResultSize)

      Enable or disable results size tracking for the query plan. Useful to determine which parts of a query plan generated the most data.
      Parameters:
        `trackResultSize` - true to enable tracking.

    - #### setTrackTime

          @Experimental
          default void setTrackTime​(boolean trackTime)

      Enable or disable time tracking for the query plan. Useful to determine which parts of a query plan take the most time to evaluate.
      Parameters:
        `trackTime` - true to enable tracking.

    - #### precompile

          default QueryValueEvaluationStep precompile​(ValueExpr arg,
                                                      QueryEvaluationContext context)

    - #### makeSet

          default <T> Set<T> makeSet()

    - #### makeQueue

          default <T> Queue<T> makeQueue()