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 oneTupleExpron 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 Datasetdatasetprotected FederatedServiceResolverserviceResolverprotected TripleSourcetripleSource
-
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:UUIDableReturns the UUID of this object.
-
setFederatedServiceResolver
public void setFederatedServiceResolver(FederatedServiceResolver resolver)
Description copied from interface:FederatedServiceResolverClientSets theFederatedServiceResolverto use for this client.- Specified by:
setFederatedServiceResolverin interfaceFederatedServiceResolverClient- Parameters:
resolver- The resolver to use.
-
getService
public FederatedService getService(String serviceUrl) throws QueryEvaluationException
Description copied from interface:EvaluationStrategyRetrieve theFederatedServiceregistered for serviceUrl. If there is no service registered for serviceUrl, a newSPARQLFederatedServiceis created and registered.- Specified by:
getServicein interfaceEvaluationStrategy- Specified by:
getServicein interfaceFederatedServiceResolver- Parameters:
serviceUrl- URL of the service.- Returns:
- the
FederatedServiceregistered 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:EvaluationStrategySet theQueryOptimizerPipelineto use for optimizing any incoming queries.- Specified by:
setOptimizerPipelinein interfaceEvaluationStrategy- Parameters:
pipeline- theQueryOptimizerPipeline.- See Also:
EvaluationStrategy.optimize(TupleExpr, EvaluationStatistics, BindingSet)
-
optimize
public TupleExpr optimize(TupleExpr expr, EvaluationStatistics evaluationStatistics, BindingSet bindings)
Execute theQueryOptimizerPipelineon the givenTupleExprto optimize its execution plan.- Specified by:
optimizein interfaceEvaluationStrategy- Parameters:
expr- theTupleExprto 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:EvaluationStrategyEvaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.- Specified by:
evaluatein 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:EvaluationStrategyEvaluates the tuple expression against the supplied triple source with the specified set of variable bindings as input.- Specified by:
evaluatein 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:EvaluationStrategyGets the value of this expression.- Specified by:
evaluatein interfaceEvaluationStrategybindings- 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 theregexoperator.- 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 thelikeoperator. 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:EvaluationStrategyEvaluates the boolean expression on the supplied TripleSource object.- Specified by:
isTruein interfaceEvaluationStrategybindings- 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:EvaluationStrategyEnable or disable results size tracking for the query plan. Useful to determine which parts of a query plan generated the most data.- Specified by:
setTrackResultSizein interfaceEvaluationStrategy- Parameters:
trackResultSize- true to enable tracking.
-
setTrackTime
public void setTrackTime(boolean trackTime)
Description copied from interface:EvaluationStrategyEnable 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:
setTrackTimein interfaceEvaluationStrategy- Parameters:
trackTime- true to enable tracking.
-
-