Class FedXStatementPattern
java.lang.Object
org.eclipse.rdf4j.query.algebra.AbstractQueryModelNode
org.eclipse.rdf4j.query.algebra.StatementPattern
org.eclipse.rdf4j.federated.algebra.FedXStatementPattern
- All Implemented Interfaces:
Serializable, Cloneable, BoundJoinTupleExpr, FedXTupleExpr, FilterTuple, QueryRef, StatementTupleExpr, VariableExpr, QueryModelNode, TupleExpr, VariableScopeChange
- Direct Known Subclasses:
ExclusiveStatement, StatementSourcePattern
public abstract class FedXStatementPattern
extends StatementPattern
implements StatementTupleExpr, FilterTuple, BoundJoinTupleExpr
Base class providing all common functionality for FedX StatementPatterns
- Author:
- Andreas Schwarte
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class StatementPattern
StatementPattern.ScopeModifier and TypeClassDescriptionstatic enumIndicates the scope of the statement pattern. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected QueryBindingSetprotected FilterValueExprprotected final Stringprotected final QueryInfoprotected final List<StatementSource> protected long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddBoundFilter(String varName, Value value) register a filter that can be directly expressed as a binding, e.g.voidaddFilterExpr(FilterExpr expr) register a new filter expression.Returns bound filter bindings, that need to be added as additional bindings to the final resultintgetId()Retrieve the attached query information of the tuple expressionintlongbooleanbooleanhasFreeVarsFor(BindingSet bindings) returns true iff this statement has free variables in the presence of the specified binding setprotected voidvoidsetUpperLimit(long upperLimit) Set the upper limit for this statement expression (i.e. applied in the evaluation to individual subqueries of this expr)<X extends Exception>
voidvisit(QueryModelVisitor<X> visitor) Visits this node.<X extends Exception>
voidvisitChildren(QueryModelVisitor<X> visitor) Visits the children of this node.Methods inherited from class StatementPattern
clone, equals, getAssuredBindingNames, getBindingNames, getContextVar, getIndexName, getObjectVar, getOrder, getPredicateVar, getScope, getSignature, getStatementOrder, getSubjectVar, getSupportedOrders, getVarList, getVars, hashCode, replaceChildNode, setIndexName, setOrder, shouldCacheCardinalityModifier and TypeMethodDescriptionclone()Returns a (deep) clone of this query model node.booleanReturns true if this query model node and its children are recursively equal to o and its children.Gets the names of the bindings that are guaranteed to be present in the results produced by this tuple expression.Gets the names of the bindings that are, or can be, returned by this tuple expression when it is evaluated.Returns the context variable, if available.getOrder()getScope()Gets the context scope for the statement pattern.Default implementation ofQueryModelNode.getSignature()that prints the name of the node's class.getSupportedOrders(AvailableStatementOrder tripleSource) <L extends Collection<Var>>
LgetVars(L varCollection) Adds the variables of this statement pattern to the supplied collection.inthashCode()voidreplaceChildNode(QueryModelNode current, QueryModelNode replacement) Replaces one of the child nodes with a new node.voidsetIndexName(String indexName) voidprotected booleanMethods inherited from class AbstractQueryModelNode
getCardinality, getCostEstimate, getDoubleMetricActual, getDoubleMetricsActual, getHasNextCallCountActual, getHasNextTimeNanosActual, getHasNextTrueCountActual, getJoinLeftBindingsConsumedActual, getJoinRightBindingsConsumedActual, getJoinRightIteratorsCreatedActual, getLongMetricActual, getLongMetricsActual, getNextCallCountActual, getNextTimeNanosActual, getParentNode, getResultSizeActual, getResultSizeEstimate, getSourceRowsFilteredActual, getSourceRowsMatchedActual, getSourceRowsScannedActual, getStringMetricActual, getStringMetricsActual, getTotalTimeNanosActual, isCardinalitySet, isRuntimeTelemetryEnabled, isVariableScopeChange, nullEquals, replaceNodeInList, replaceWith, resetCardinality, setCardinality, setCostEstimate, setDoubleMetricActual, setHasNextCallCountActual, setHasNextTimeNanosActual, setHasNextTrueCountActual, setJoinLeftBindingsConsumedActual, setJoinRightBindingsConsumedActual, setJoinRightIteratorsCreatedActual, setLongMetricActual, setNextCallCountActual, setNextTimeNanosActual, setParentNode, setResultSizeActual, setResultSizeEstimate, setRuntimeTelemetryEnabled, setSourceRowsFilteredActual, setSourceRowsMatchedActual, setSourceRowsScannedActual, setStringMetricActual, setTotalTimeNanosActual, setVariableScopeChange, toStringModifier and TypeMethodDescriptiondoubledoubledoublegetDoubleMetricActual(String metricName) longlonglonglonglonglonglonggetLongMetricActual(String metricName) longlongGets the node's parent.longdoubleReturns the number of tuples that this QueryNode predicts will be outputted.longlonglonggetStringMetricActual(String metricName) longbooleanbooleanbooleanindicates if the node represents a variable scope change.protected booleannullEquals(Object o1, Object o2) protected <T extends QueryModelNode>
booleanreplaceNodeInList(List<T> list, QueryModelNode current, QueryModelNode replacement) voidreplaceWith(QueryModelNode replacement) Default implementation ofQueryModelNode.replaceWith(QueryModelNode)that throws anIllegalArgumentExceptionindicating that current is not a child node of this node.voidvoidsetCardinality(double cardinality) voidsetCostEstimate(double costEstimate) voidsetDoubleMetricActual(String metricName, double metricValue) voidsetHasNextCallCountActual(long hasNextCallCountActual) voidsetHasNextTimeNanosActual(long hasNextTimeNanosActual) voidsetHasNextTrueCountActual(long hasNextTrueCountActual) voidsetJoinLeftBindingsConsumedActual(long joinLeftBindingsConsumedActual) voidsetJoinRightBindingsConsumedActual(long joinRightBindingsConsumedActual) voidsetJoinRightIteratorsCreatedActual(long joinRightIteratorsCreatedActual) voidsetLongMetricActual(String metricName, long metricValue) voidsetNextCallCountActual(long nextCallCountActual) voidsetNextTimeNanosActual(long nextTimeNanosActual) voidsetParentNode(QueryModelNode parent) Sets the node's parent.voidsetResultSizeActual(long resultSizeActual) voidsetResultSizeEstimate(double resultSizeEstimate) voidsetRuntimeTelemetryEnabled(boolean runtimeTelemetryEnabled) voidsetSourceRowsFilteredActual(long sourceRowsFilteredActual) voidsetSourceRowsMatchedActual(long sourceRowsMatchedActual) voidsetSourceRowsScannedActual(long sourceRowsScannedActual) voidsetStringMetricActual(String metricName, String metricValue) voidsetTotalTimeNanosActual(long totalTimeNanosActual) voidsetVariableScopeChange(boolean isVariableScopeChange) Set the value ofVariableScopeChange.isVariableScopeChange()to true or false.toString()Returns an indented print of the node tree, starting from this node.Methods inherited from interface StatementTupleExpr
evaluateModifier and TypeMethodDescriptionevaluate(BindingSet bindings) Evaluate this expression using the provided bindings
-
Field Details
-
statementSources
-
id
-
queryInfo
-
freeVars
-
filterExpr
-
boundFilters
-
upperLimit
protected long upperLimit
-
-
Constructor Details
-
FedXStatementPattern
-
-
Method Details
-
visitChildren
Description copied from interface:QueryModelNodeVisits the children of this node. The node callsQueryModelNode.visit(QueryModelVisitor)on all of its child nodes.- Specified by:
visitChildrenin interfaceQueryModelNode- Overrides:
visitChildrenin classStatementPattern- Throws:
X
-
visit
Description copied from interface:QueryModelNodeVisits this node. The node reports itself to the visitor with the proper runtime type.- Specified by:
visitin interfaceQueryModelNode- Overrides:
visitin classStatementPattern- Throws:
X
-
initFreeVars
protected void initFreeVars() -
getFreeVarCount
public int getFreeVarCount()- Specified by:
getFreeVarCountin interfaceFedXTupleExpr- Returns:
- the number of free (i.e. unbound) variables in this expression
-
getFreeVars
- Specified by:
getFreeVarsin interfaceFilterTuple- Specified by:
getFreeVarsin interfaceVariableExpr- Returns:
- a list of free (i.e. unbound) variables in this expression
-
getQueryInfo
Description copied from interface:QueryRefRetrieve the attached query information of the tuple expression- Specified by:
getQueryInfoin interfaceQueryRef- Returns:
- the
QueryInfo
-
getId
- Specified by:
getIdin interfaceStatementTupleExpr- Returns:
- the id of this expr
-
hasFreeVarsFor
Description copied from interface:StatementTupleExprreturns true iff this statement has free variables in the presence of the specified binding set- Specified by:
hasFreeVarsForin interfaceStatementTupleExpr- Parameters:
bindings-- Returns:
- whether the statement has free vars
-
getStatementSources
- Specified by:
getStatementSourcesin interfaceStatementTupleExpr- Returns:
- a list of sources that are relevant for evaluation of this expression
-
getSourceCount
public int getSourceCount() -
getFilterExpr
- Specified by:
getFilterExprin interfaceFilterTuple- Returns:
- the currently registered filter expressions, usually of type
FilterExprorConjunctiveFilterExpr
-
getBoundFilters
Description copied from interface:FilterTupleReturns bound filter bindings, that need to be added as additional bindings to the final result- Specified by:
getBoundFiltersin interfaceFilterTuple- Returns:
- the bound filters, or
null
-
hasFilter
public boolean hasFilter()- Specified by:
hasFilterin interfaceFilterTuple- Returns:
- true if this expression has a filter to apply
-
addFilterExpr
Description copied from interface:FilterTupleregister a new filter expression. If the expr has already a filter registered, the new expression is added to aConjunctiveFilterExpr.- Specified by:
addFilterExprin interfaceFilterTuple- Parameters:
expr-
-
addBoundFilter
Description copied from interface:FilterTupleregister a filter that can be directly expressed as a binding, e.g. SELECT * WHERE { ?s p o . FILTER (?s = X) } is equivalent to SELECT * WHERE { X p o . }- Specified by:
addBoundFilterin interfaceFilterTuple- Parameters:
varName-value-
-
setUpperLimit
public void setUpperLimit(long upperLimit) Set the upper limit for this statement expression (i.e. applied in the evaluation to individual subqueries of this expr)- Parameters:
upperLimit- the upper limit, a negative number means unlimited
-
getUpperLimit
public long getUpperLimit()- Returns:
- the upper limit or a negative number (meaning no LIMIT)
-