Class StrictEvaluationStrategy
- java.lang.Object
-
- org.eclipse.rdf4j.query.algebra.evaluation.impl.StrictEvaluationStrategy
-
- All Implemented Interfaces:
EvaluationStrategy
,FederatedServiceResolver
,FederatedServiceResolverClient
,UUIDable
- Direct Known Subclasses:
EvaluationStrategyImpl
,FederationEvalStrategy
,FederationStrategy
,LimitedSizeEvaluationStrategy
,SimpleEvaluationStrategy
,TupleFunctionEvaluationStrategy
public class StrictEvaluationStrategy extends Object implements EvaluationStrategy, FederatedServiceResolverClient, UUIDable
Minimally-conforming SPARQL 1.1 Query Evaluation strategy, to evaluate oneTupleExpr
on the givenTripleSource
, optionally using the givenDataset
.- Author:
- Jeen Broekstra, James Leigh, Arjohn Kampman, David Huynh, Andreas Schwarte
- See Also:
ExtendedEvaluationStrategy
-
-
Field Summary
Fields Modifier and Type Field Description protected Dataset
dataset
protected FederatedServiceResolver
serviceResolver
protected TripleSource
tripleSource
-
Constructor Summary
Constructors Constructor Description StrictEvaluationStrategy(TripleSource tripleSource, FederatedServiceResolver serviceResolver)
StrictEvaluationStrategy(TripleSource tripleSource, Dataset dataset, FederatedServiceResolver serviceResolver)
StrictEvaluationStrategy(TripleSource tripleSource, Dataset dataset, FederatedServiceResolver serviceResolver, long iterationCacheSyncTreshold, EvaluationStatistics evaluationStatistics)
StrictEvaluationStrategy(TripleSource tripleSource, Dataset dataset, FederatedServiceResolver serviceResolver, long iterationCacheSyncTreshold, EvaluationStatistics evaluationStatistics, boolean trackResultSize)
-
Method Summary
-
-
-
Field Detail
-
tripleSource
protected final TripleSource tripleSource
-
dataset
protected final Dataset dataset
-
serviceResolver
protected FederatedServiceResolver serviceResolver
-
-
Constructor Detail
-
StrictEvaluationStrategy
public StrictEvaluationStrategy(TripleSource tripleSource, FederatedServiceResolver serviceResolver)
-
StrictEvaluationStrategy
public StrictEvaluationStrategy(TripleSource tripleSource, Dataset dataset, FederatedServiceResolver serviceResolver)
-
StrictEvaluationStrategy
public StrictEvaluationStrategy(TripleSource tripleSource, Dataset dataset, FederatedServiceResolver serviceResolver, long iterationCacheSyncTreshold, EvaluationStatistics evaluationStatistics)
-
StrictEvaluationStrategy
public StrictEvaluationStrategy(TripleSource tripleSource, Dataset dataset, FederatedServiceResolver serviceResolver, long iterationCacheSyncTreshold, EvaluationStatistics evaluationStatistics, boolean trackResultSize)
-
-
Method Detail
-
getUUID
public UUID getUUID()
Description copied from interface:UUIDable
Returns the UUID of this object.
-
setFederatedServiceResolver
public void setFederatedServiceResolver(FederatedServiceResolver resolver)
Description copied from interface:FederatedServiceResolverClient
Sets theFederatedServiceResolver
to use for this client.- Specified by:
setFederatedServiceResolver
in interfaceFederatedServiceResolverClient
- Parameters:
resolver
- The resolver to use.
-
getService
public FederatedService getService(String serviceUrl) throws QueryEvaluationException
Description copied from interface:EvaluationStrategy
Retrieve theFederatedService
registered for serviceUrl. If there is no service registered for serviceUrl, a newSPARQLFederatedService
is created and registered.- Specified by:
getService
in interfaceEvaluationStrategy
- Specified by:
getService
in interfaceFederatedServiceResolver
- Parameters:
serviceUrl
- URL of the service.- Returns:
- the
FederatedService
registered for the serviceUrl. - Throws:
QueryEvaluationException
- If there was an exception generated while retrieving the service.- See Also:
FederatedServiceResolver.getService(java.lang.String)
-
setOptimizerPipeline
public void setOptimizerPipeline(QueryOptimizerPipeline pipeline)
Description copied from interface:EvaluationStrategy
Set theQueryOptimizerPipeline
to use for optimizing any incoming queries.- Specified by:
setOptimizerPipeline
in interfaceEvaluationStrategy
- Parameters:
pipeline
- theQueryOptimizerPipeline
.- See Also:
EvaluationStrategy.optimize(TupleExpr, EvaluationStatistics, BindingSet)
-
optimize
public TupleExpr optimize(TupleExpr expr, EvaluationStatistics evaluationStatistics, BindingSet bindings)
Execute theQueryOptimizerPipeline
on the givenTupleExpr
to optimize its execution plan.- Specified by:
optimize
in interfaceEvaluationStrategy
- Parameters:
expr
- theTupleExpr
to optimize.evaluationStatistics
- this param is ignored!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
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(TupleExpr expr, BindingSet bindings) throws QueryEvaluationException
Description copied from interface:EvaluationStrategy
Evaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.- Specified by:
evaluate
in interfaceEvaluationStrategy
- 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
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(ArbitraryLengthPath alp, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(ZeroLengthPath zlp, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
getZeroLengthPathIterator
protected ZeroLengthPathIteration getZeroLengthPathIterator(BindingSet bindings, Var subjectVar, Var objVar, Var contextVar, Value subj, Value obj)
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Service service, String serviceUri, CloseableIteration<BindingSet,QueryEvaluationException> bindings) throws QueryEvaluationException
Description copied from interface:EvaluationStrategy
Evaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.- Specified by:
evaluate
in interfaceEvaluationStrategy
- Parameters:
service
- 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
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Service service, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(DescribeOperator operator, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(StatementPattern statementPattern, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
isUnbound
protected boolean isUnbound(Var var, BindingSet bindings)
-
getVarValue
protected Value getVarValue(Var var, BindingSet bindings)
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(UnaryTupleOperator expr, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(BindingSetAssignment bsa, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Projection projection, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(MultiProjection multiProjection, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Filter filter, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Slice slice, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Extension extension, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Distinct distinct, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Reduced reduced, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Group node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Order node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(BinaryTupleOperator expr, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Join join, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(LeftJoin leftJoin, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Union union, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Intersection intersection, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(Difference difference, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(SingletonSet singletonSet, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(EmptySet emptySet, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(ValueExpr expr, BindingSet bindings) throws QueryEvaluationException
Description copied from interface:EvaluationStrategy
Gets the value of this expression.- Specified by:
evaluate
in interfaceEvaluationStrategy
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:
QueryEvaluationException
-
evaluate
public Value evaluate(Var var, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(ValueConstant valueConstant, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(BNodeGenerator node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Bound node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Str node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Label node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Lang node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Datatype node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Namespace node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(LocalName node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(IsResource node, BindingSet bindings) throws QueryEvaluationException
Determines whether the operand (a variable) contains a Resource.- Returns:
- true if the operand contains a Resource, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(IsURI node, BindingSet bindings) throws QueryEvaluationException
Determines whether the operand (a variable) contains a URI.- Returns:
- true if the operand contains a URI, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(IsBNode node, BindingSet bindings) throws QueryEvaluationException
Determines whether the operand (a variable) contains a BNode.- Returns:
- true if the operand contains a BNode, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(IsLiteral node, BindingSet bindings) throws QueryEvaluationException
Determines whether the operand (a variable) contains a Literal.- Returns:
- true if the operand contains a Literal, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(IsNumeric node, BindingSet bindings) throws QueryEvaluationException
Determines whether the operand (a variable) contains a numeric datatyped literal, i.e. a literal with datatype xsd:float, xsd:double, xsd:decimal, or a derived datatype of xsd:decimal.- Returns:
- true if the operand contains a numeric datatyped literal, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public IRI evaluate(IRIFunction node, BindingSet bindings) throws QueryEvaluationException
Creates a URI from the operand value (a plain literal or a URI).- Parameters:
node
- represents an invocation of the SPARQL IRI functionbindings
- used to generate the value that the URI is based on- Returns:
- a URI generated from the given arguments
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Regex node, BindingSet bindings) throws QueryEvaluationException
Determines whether the two operands match according to theregex
operator.- Returns:
- true if the operands match according to the regex operator, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(LangMatches node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Like node, BindingSet bindings) throws QueryEvaluationException
Determines whether the two operands match according to thelike
operator. The operator is defined as a string comparison with the possible use of an asterisk (*) at the end and/or the start of the second operand to indicate substring matching.- Returns:
- true if the operands match according to the like operator, false otherwise.
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(FunctionCall node, BindingSet bindings) throws QueryEvaluationException
Evaluates a function.- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(And node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Or node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Not node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Now node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(SameTerm node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Coalesce node, BindingSet bindings) throws ValueExprEvaluationException
- Throws:
ValueExprEvaluationException
-
evaluate
public Value evaluate(Compare node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(MathExpr node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(If node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(In node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(ListMemberOperator node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(CompareAny node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(CompareAll node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public Value evaluate(Exists node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
isTrue
public boolean isTrue(ValueExpr expr, BindingSet bindings) throws QueryEvaluationException
Description copied from interface:EvaluationStrategy
Evaluates the boolean expression on the supplied TripleSource object.- Specified by:
isTrue
in interfaceEvaluationStrategy
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
-
isReducedOrDistinct
protected boolean isReducedOrDistinct(QueryModelNode node)
-
getLimit
protected long getLimit(QueryModelNode node)
Returns the limit of the current variable bindings before any further projection.
-
evaluate
public Value evaluate(ValueExprTripleRef node, BindingSet bindings) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(TripleRef ref, BindingSet bindings)
evaluates a TripleRef node returning bindingsets from the matched Triple nodes in the dataset (or explore standard reification)- Parameters:
ref
- to evaluatebindings
- with the solutions- Returns:
- iteration over the solutions
-
setTrackResultSize
public void setTrackResultSize(boolean trackResultSize)
Description copied from interface:EvaluationStrategy
Enable or disable results size tracking for the query plan. Useful to determine which parts of a query plan generated the most data.- Specified by:
setTrackResultSize
in interfaceEvaluationStrategy
- Parameters:
trackResultSize
- true to enable tracking.
-
setTrackTime
public void setTrackTime(boolean trackTime)
Description copied from interface:EvaluationStrategy
Enable or disable time tracking for the query plan. Useful to determine which parts of a query plan take the most time to evaluate.- Specified by:
setTrackTime
in interfaceEvaluationStrategy
- Parameters:
trackTime
- true to enable tracking.
-
-