Class StatementPatternQueryEvaluationStep
- java.lang.Object
-
- org.eclipse.rdf4j.query.algebra.evaluation.impl.evaluationsteps.StatementPatternQueryEvaluationStep
-
- All Implemented Interfaces:
QueryEvaluationStep
public class StatementPatternQueryEvaluationStep extends java.lang.Object implements QueryEvaluationStep
Evaluate the StatementPattern - taking care of graph/datasets - avoiding redoing work every call of evaluate if possible.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
StatementPatternQueryEvaluationStep.ConvertStatementToBindingSetIterator
Converts statements into the required bindingsets.private static class
StatementPatternQueryEvaluationStep.JoinStatementWithBindingSetIterator
-
Nested classes/interfaces inherited from interface org.eclipse.rdf4j.query.algebra.evaluation.QueryEvaluationStep
QueryEvaluationStep.DelayedEvaluationIteration
-
-
Field Summary
Fields Modifier and Type Field Description static Resource[]
ALL_CONTEXT
private QueryEvaluationContext
context
private java.util.function.Function<Value,Resource[]>
contextSup
private java.util.function.BiConsumer<MutableBindingSet,Statement>
converter
static Resource[]
DEFAULT_CONTEXT
private boolean
emptyGraph
private java.util.function.Function<BindingSet,Value>
getContextVar
private java.util.function.Function<BindingSet,Value>
getObjectVar
private java.util.function.Function<BindingSet,Value>
getPredicateVar
private java.util.function.Function<BindingSet,Value>
getSubjectVar
private static java.util.function.Function<Value,Resource[]>
RETURN_NULL_VALUE_RESOURCE_ARRAY
private StatementPattern
statementPattern
private TripleSource
tripleSource
private java.util.function.Predicate<BindingSet>
unboundTest
-
Fields inherited from interface org.eclipse.rdf4j.query.algebra.evaluation.QueryEvaluationStep
EMPTY, EMPTY_ITERATION
-
-
Constructor Summary
Constructors Constructor Description StatementPatternQueryEvaluationStep(StatementPattern statementPattern, QueryEvaluationContext context, TripleSource tripleSource)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.util.function.Predicate<Statement>
andThen(java.util.function.Predicate<Statement> pred, java.util.function.Predicate<Statement> and)
private static Resource[]
contextsGivenContextVal(Value contextValue)
CloseableIteration<BindingSet,QueryEvaluationException>
evaluate(BindingSet bindings)
protected static java.util.function.Function<Value,Resource[]>
extractContextsFromDatasets(Var contextVar, boolean emptyGraph, java.util.Set<IRI> graphs)
private static Resource[]
fillContextsFromDatasSetGraphs(java.util.Set<IRI> graphs)
protected static java.util.function.Predicate<Statement>
filterContextOrEqualVariables(StatementPattern statementPattern, Value subjValue, Value predValue, Value objValue, Resource[] contexts)
Generate a predicate that tests for Named contexts are matched by retrieving all statements from the store and filtering out the statements that do not have a context.private static java.util.function.Predicate<Statement>
filterSameVariable(StatementPattern statementPattern, Value subjValue, Value predValue, Value objValue, java.util.function.Predicate<Statement> filter)
Build one predicate that filters the statements for ?s ?p ?s cases.private StatementPatternQueryEvaluationStep.ConvertStatementToBindingSetIterator
getIteration()
private StatementPatternQueryEvaluationStep.JoinStatementWithBindingSetIterator
getIteration(BindingSet bindings)
private static java.util.function.Predicate<BindingSet>
getUnboundTest(QueryEvaluationContext context, Var s, Var p, Var o, Var c)
private CloseableIteration<? extends Statement,QueryEvaluationException>
handleFilter(Resource[] contexts, Resource subject, IRI predicate, Value object, CloseableIteration<? extends Statement,QueryEvaluationException> iteration)
private static java.util.function.BiConsumer<MutableBindingSet,Statement>
makeConverter(QueryEvaluationContext context, Var s, Var p, Var o, Var c)
We need to test every binding with hasBinding etc.private static java.util.function.Function<BindingSet,Value>
makeGetVarValue(Var var, QueryEvaluationContext context)
private static java.util.function.Predicate<Statement>
predicateVariableHasEquals(boolean predEqObjVar, boolean predEqConVar)
private static java.util.function.Predicate<Statement>
subjectVariableHasEquals(boolean subEqPredVar, boolean subEqObjVar, boolean subEqConVar)
-
-
-
Field Detail
-
DEFAULT_CONTEXT
public static final Resource[] DEFAULT_CONTEXT
-
ALL_CONTEXT
public static final Resource[] ALL_CONTEXT
-
RETURN_NULL_VALUE_RESOURCE_ARRAY
private static final java.util.function.Function<Value,Resource[]> RETURN_NULL_VALUE_RESOURCE_ARRAY
-
statementPattern
private final StatementPattern statementPattern
-
tripleSource
private final TripleSource tripleSource
-
emptyGraph
private final boolean emptyGraph
-
converter
private final java.util.function.BiConsumer<MutableBindingSet,Statement> converter
-
context
private final QueryEvaluationContext context
-
unboundTest
private final java.util.function.Predicate<BindingSet> unboundTest
-
getContextVar
private final java.util.function.Function<BindingSet,Value> getContextVar
-
getSubjectVar
private final java.util.function.Function<BindingSet,Value> getSubjectVar
-
getPredicateVar
private final java.util.function.Function<BindingSet,Value> getPredicateVar
-
getObjectVar
private final java.util.function.Function<BindingSet,Value> getObjectVar
-
-
Constructor Detail
-
StatementPatternQueryEvaluationStep
public StatementPatternQueryEvaluationStep(StatementPattern statementPattern, QueryEvaluationContext context, TripleSource tripleSource)
-
-
Method Detail
-
getUnboundTest
private static java.util.function.Predicate<BindingSet> getUnboundTest(QueryEvaluationContext context, Var s, Var p, Var o, Var c)
-
makeGetVarValue
private static java.util.function.Function<BindingSet,Value> makeGetVarValue(Var var, QueryEvaluationContext context)
-
evaluate
public CloseableIteration<BindingSet,QueryEvaluationException> evaluate(BindingSet bindings)
- Specified by:
evaluate
in interfaceQueryEvaluationStep
-
getIteration
private StatementPatternQueryEvaluationStep.JoinStatementWithBindingSetIterator getIteration(BindingSet bindings)
-
getIteration
private StatementPatternQueryEvaluationStep.ConvertStatementToBindingSetIterator getIteration()
-
handleFilter
private CloseableIteration<? extends Statement,QueryEvaluationException> handleFilter(Resource[] contexts, Resource subject, IRI predicate, Value object, CloseableIteration<? extends Statement,QueryEvaluationException> iteration)
-
filterContextOrEqualVariables
protected static java.util.function.Predicate<Statement> filterContextOrEqualVariables(StatementPattern statementPattern, Value subjValue, Value predValue, Value objValue, Resource[] contexts)
Generate a predicate that tests for Named contexts are matched by retrieving all statements from the store and filtering out the statements that do not have a context. Or the same variable might have been used multiple times in this StatementPattern, verify value equality in those cases.
-
filterSameVariable
private static java.util.function.Predicate<Statement> filterSameVariable(StatementPattern statementPattern, Value subjValue, Value predValue, Value objValue, java.util.function.Predicate<Statement> filter)
Build one predicate that filters the statements for ?s ?p ?s cases. But only generates code that is actually needed else returns null.
-
predicateVariableHasEquals
private static java.util.function.Predicate<Statement> predicateVariableHasEquals(boolean predEqObjVar, boolean predEqConVar)
-
subjectVariableHasEquals
private static java.util.function.Predicate<Statement> subjectVariableHasEquals(boolean subEqPredVar, boolean subEqObjVar, boolean subEqConVar)
-
extractContextsFromDatasets
protected static java.util.function.Function<Value,Resource[]> extractContextsFromDatasets(Var contextVar, boolean emptyGraph, java.util.Set<IRI> graphs)
- Returns:
- the contexts that are valid for this statement pattern or null
-
fillContextsFromDatasSetGraphs
private static Resource[] fillContextsFromDatasSetGraphs(java.util.Set<IRI> graphs)
-
makeConverter
private static java.util.function.BiConsumer<MutableBindingSet,Statement> makeConverter(QueryEvaluationContext context, Var s, Var p, Var o, Var c)
We need to test every binding with hasBinding etc. as these are not guaranteed to be equivalent between calls of evaluate(bs). Each conversion kind is special cased in with a specific method.- Returns:
- a converter from statement into MutableBindingSet
-
-