Class SailFederationEvalStrategy
java.lang.Object
org.eclipse.rdf4j.query.algebra.evaluation.impl.DefaultEvaluationStrategy
org.eclipse.rdf4j.query.algebra.evaluation.impl.StrictEvaluationStrategy
org.eclipse.rdf4j.federated.evaluation.FederationEvalStrategy
org.eclipse.rdf4j.federated.evaluation.SailFederationEvalStrategy
- All Implemented Interfaces:
EvaluationStrategy
,FederatedServiceResolver
,FederatedServiceResolverClient
Implementation of a federation evaluation strategy which provides some special optimizations for Native (local) RDF4J
repositories. The most important optimization is to use prepared Queries that are already created in the internal
representation used by RDF4J. This is necessary to avoid String parsing overhead.
Joins are executed using
ControlledWorkerJoin
- Author:
- Andreas Schwarte
-
Field Summary
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.FederationEvalStrategy
cache, executor, federationContext
Fields inherited from class org.eclipse.rdf4j.query.algebra.evaluation.impl.DefaultEvaluationStrategy
dataset, serviceResolver, tripleSource
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionevaluateBoundJoinStatementPattern
(StatementTupleExpr stmt, List<BindingSet> bindings) Evaluate a bound join at the relevant endpoint, i.e.evaluateExclusiveGroup
(ExclusiveGroup group, BindingSet bindings) evaluateGroupedCheck
(CheckStatementPattern stmt, List<BindingSet> bindings) Perform a grouped check at the relevant endpoints, i.e.executeJoin
(ControlledWorkerScheduler<BindingSet> joinScheduler, CloseableIteration<BindingSet> leftIter, TupleExpr rightArg, Set<String> joinVars, BindingSet bindings, QueryInfo queryInfo) Execute the join in a separate thread using some join executor.Methods inherited from class org.eclipse.rdf4j.federated.evaluation.FederationEvalStrategy
evaluate, evaluate, evaluate, evaluate, evaluate, evaluateArbitrayLengthPath, evaluateAtStatementSources, evaluateAtStatementSources, evaluateAtStatementSources, evaluateExclusiveTupleExpr, evaluateLeftJoin, evaluateNaryUnion, evaluateNJoin, evaluateService, evaluateService, evaluateSingleSourceQuery, evaluateZeroLengthPath, getMembersFromContext, getStatements, optimize, optimizeExclusiveExpressions, optimizeJoinOrder, performSourceSelection, performSourceSelection, precompile, precompile, prepare, prepare, prepare, prepare, prepare, prepareExclusiveTupleExpr, prepareLeftJoin, prepareNaryUnion, prepareNJoin, propagateServices
Methods inherited from class org.eclipse.rdf4j.query.algebra.evaluation.impl.DefaultEvaluationStrategy
evaluate, evaluate, evaluate, getCollectionFactory, getFederatedServiceResolver, getLimit, getQueryEvaluationMode, getService, getVarValue, isReducedOrDistinct, isTrue, isTrue, precompile, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, prepare, setCollectionFactory, setFederatedServiceResolver, setOptimizerPipeline, setQueryEvaluationMode, setTrackResultSize, setTrackTime, supplyBinaryValueEvaluation, supplyUnaryValueEvaluation
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.eclipse.rdf4j.query.algebra.evaluation.EvaluationStrategy
isTrackResultSize
-
Constructor Details
-
SailFederationEvalStrategy
-
-
Method Details
-
evaluateBoundJoinStatementPattern
public CloseableIteration<BindingSet> evaluateBoundJoinStatementPattern(StatementTupleExpr stmt, List<BindingSet> bindings) throws QueryEvaluationException Description copied from class:FederationEvalStrategy
Evaluate a bound join at the relevant endpoint, i.e. i.e. for a group of bindings retrieve results for the bound statement from the relevant endpoints- Specified by:
evaluateBoundJoinStatementPattern
in classFederationEvalStrategy
- Parameters:
stmt
-bindings
-- Returns:
- the result iteration
- Throws:
QueryEvaluationException
-
evaluateGroupedCheck
public CloseableIteration<BindingSet> evaluateGroupedCheck(CheckStatementPattern stmt, List<BindingSet> bindings) throws QueryEvaluationException Description copied from class:FederationEvalStrategy
Perform a grouped check at the relevant endpoints, i.e. for a group of bindings keep only those for which at least one endpoint provides a result to the bound statement.- Specified by:
evaluateGroupedCheck
in classFederationEvalStrategy
- Parameters:
stmt
-bindings
-- Returns:
- the result iteration
- Throws:
QueryEvaluationException
-
executeJoin
public CloseableIteration<BindingSet> executeJoin(ControlledWorkerScheduler<BindingSet> joinScheduler, CloseableIteration<BindingSet> leftIter, TupleExpr rightArg, Set<String> joinVars, BindingSet bindings, QueryInfo queryInfo) throws QueryEvaluationException Description copied from class:FederationEvalStrategy
Execute the join in a separate thread using some join executor. Join executors are for instance: -SynchronousJoin
-SynchronousBoundJoin
-ControlledWorkerJoin
-ControlledWorkerBoundJoin
For endpoint federation use controlled worker bound join, for local federation use controlled worker join. The other operators are there for completeness. UseFederationEvalStrategy.executor
to execute the join (it is a runnable).- Specified by:
executeJoin
in classFederationEvalStrategy
- Parameters:
joinScheduler
-leftIter
-rightArg
-joinVars
-bindings
-- Returns:
- the result
- Throws:
QueryEvaluationException
-
evaluateExclusiveGroup
public CloseableIteration<BindingSet> evaluateExclusiveGroup(ExclusiveGroup group, BindingSet bindings) throws RepositoryException, MalformedQueryException, QueryEvaluationException - Specified by:
evaluateExclusiveGroup
in classFederationEvalStrategy
- Throws:
RepositoryException
MalformedQueryException
QueryEvaluationException
-