Interface EvaluationStrategy
-
- All Superinterfaces:
FederatedServiceResolver
- All Known Implementing Classes:
DefaultEvaluationStrategy
,EvaluationStrategyImpl
,ExtendedEvaluationStrategy
,FederationEvalStrategy
,LimitedSizeEvaluationStrategy
,SailFederationEvalStrategy
,SimpleEvaluationStrategy
,SparqlFederationEvalStrategy
,StrictEvaluationStrategy
,TupleFunctionEvaluationStrategy
public interface EvaluationStrategy extends FederatedServiceResolver
- 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.default Supplier<CollectionFactory>
getCollectionFactory()
QueryEvaluationMode
getQueryEvaluationMode()
FederatedService
getService(String serviceUrl)
Retrieve theFederatedService
registered for serviceUrl.default boolean
isTrackResultSize()
Enable or disable results size tracking for the query plan.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 theQueryOptimizerPipeline
on the givenTupleExpr
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)
default void
setCollectionFactory(Supplier<CollectionFactory> collectionFactory)
Set the collection factory that will create the collections to use during query evaluaton.void
setOptimizerPipeline(QueryOptimizerPipeline pipeline)
Set theQueryOptimizerPipeline
to use for optimizing any incoming queries.void
setQueryEvaluationMode(QueryEvaluationMode queryEvaluationMode)
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 theFederatedService
registered for serviceUrl. If there is no service registered for serviceUrl, a newSPARQLFederatedService
is created and registered.- Specified by:
getService
in interfaceFederatedServiceResolver
- 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 theQueryOptimizerPipeline
to use for optimizing any incoming queries.- Parameters:
pipeline
- theQueryOptimizerPipeline
.- Since:
- 3.0
- See Also:
optimize(TupleExpr, EvaluationStatistics, BindingSet)
-
optimize
TupleExpr optimize(TupleExpr expr, EvaluationStatistics evaluationStatistics, BindingSet bindings)
Execute theQueryOptimizerPipeline
on the givenTupleExpr
to optimize its execution plan.- Parameters:
expr
- theTupleExpr
to optimize.evaluationStatistics
- theEvaluationStatistics
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 evaluateserviceUri
- TODObindings
- 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 evaluatebindings
- 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
-
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.
-
isTrackResultSize
@Experimental default boolean isTrackResultSize()
Enable or disable results size tracking for the query plan.
-
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.
-
getQueryEvaluationMode
QueryEvaluationMode getQueryEvaluationMode()
-
setQueryEvaluationMode
void setQueryEvaluationMode(QueryEvaluationMode queryEvaluationMode)
-
precompile
default QueryValueEvaluationStep precompile(ValueExpr arg, QueryEvaluationContext context)
-
makeSet
default <T> Set<T> makeSet()
-
makeQueue
default <T> Queue<T> makeQueue()
-
setCollectionFactory
@Experimental default void setCollectionFactory(Supplier<CollectionFactory> collectionFactory)
Set the collection factory that will create the collections to use during query evaluaton.- Parameters:
a
- CollectionFactory that should be used during future query evaluations
-
getCollectionFactory
@Experimental default Supplier<CollectionFactory> getCollectionFactory()
-
-