Class ExclusiveGroup
java.lang.Object
org.eclipse.rdf4j.query.algebra.AbstractQueryModelNode
org.eclipse.rdf4j.federated.algebra.ExclusiveGroup
- All Implemented Interfaces:
Serializable
,Cloneable
,ExclusiveTupleExpr
,FedXTupleExpr
,FilterTuple
,QueryRef
,StatementTupleExpr
,VariableExpr
,QueryModelNode
,TupleExpr
,VariableScopeChange
public class ExclusiveGroup
extends AbstractQueryModelNode
implements StatementTupleExpr, FilterTuple, ExclusiveTupleExpr
Represents a group of
ExclusiveTupleExpr
that can only produce results at a single endpoint, the
StatementSource
.- Author:
- Andreas Schwarte
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected QueryBindingSet
protected FilterValueExpr
protected final String
protected final List
<ExclusiveTupleExpr> protected Endpoint
protected final StatementSource
protected final QueryInfo
-
Constructor Summary
ConstructorDescriptionExclusiveGroup
(Collection<? extends ExclusiveTupleExpr> ownedNodes, StatementSource owner, QueryInfo queryInfo) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addBoundFilter
(String varName, Value value) register a filter that can be directly expressed as a binding, e.g.void
addFilterExpr
(FilterExpr expr) register a new filter expression.clone()
Returns a (deep) clone of this query model node.evaluate
(BindingSet bindings) Evaluate this expression using the provided bindingsGets 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 bound filter bindings, that need to be added as additional bindings to the final resultint
getId()
getOrder()
getOwner()
Retrieve the attached query information of the tuple expressiongetSupportedOrders
(AvailableStatementOrder tripleSource) boolean
boolean
hasFreeVarsFor
(BindingSet bindings) returns true iff this statement has free variables in the presence of the specified binding setprotected void
init()
Initialize free variablesvoid
replaceChildNode
(QueryModelNode current, QueryModelNode replacement) Replaces one of the child nodes with a new node.void
<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 org.eclipse.rdf4j.query.algebra.AbstractQueryModelNode
getCardinality, getCostEstimate, getParentNode, getResultSizeActual, getResultSizeEstimate, getSignature, getTotalTimeNanosActual, isCardinalitySet, isVariableScopeChange, nullEquals, replaceNodeInList, replaceWith, resetCardinality, setCardinality, setCostEstimate, setParentNode, setResultSizeActual, setResultSizeEstimate, setTotalTimeNanosActual, setVariableScopeChange, shouldCacheCardinality, toString
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.rdf4j.query.algebra.QueryModelNode
equals, getCostEstimate, getParentNode, getResultSizeActual, getResultSizeEstimate, getSignature, getTotalTimeNanosActual, replaceWith, setCostEstimate, setParentNode, setResultSizeActual, setResultSizeEstimate, setTotalTimeNanosActual, toString
-
Field Details
-
owned
-
owner
-
freeVars
-
id
-
queryInfo
-
filterExpr
-
boundFilters
-
ownedEndpoint
-
-
Constructor Details
-
ExclusiveGroup
public ExclusiveGroup(Collection<? extends ExclusiveTupleExpr> ownedNodes, StatementSource owner, QueryInfo queryInfo)
-
-
Method Details
-
init
protected void init()Initialize free variables -
visitChildren
Description copied from interface:QueryModelNode
Visits the children of this node. The node callsQueryModelNode.visit(QueryModelVisitor)
on all of its child nodes.- Specified by:
visitChildren
in interfaceQueryModelNode
- Throws:
X
-
replaceChildNode
Description copied from interface:QueryModelNode
Replaces one of the child nodes with a new node.- Specified by:
replaceChildNode
in interfaceQueryModelNode
- Parameters:
current
- The current child node.replacement
- The new child node.
-
visit
Description copied from interface:QueryModelNode
Visits this node. The node reports itself to the visitor with the proper runtime type.- Specified by:
visit
in interfaceQueryModelNode
- Throws:
X
-
getAssuredBindingNames
Description copied from interface:TupleExpr
Gets the names of the bindings that are guaranteed to be present in the results produced by this tuple expression.- Specified by:
getAssuredBindingNames
in interfaceTupleExpr
- Returns:
- A set of binding names.
-
getBindingNames
Description copied from interface:TupleExpr
Gets the names of the bindings that are, or can be, returned by this tuple expression when it is evaluated.- Specified by:
getBindingNames
in interfaceTupleExpr
- Returns:
- A set of binding names.
-
clone
Description copied from interface:QueryModelNode
Returns a (deep) clone of this query model node. This method recursively clones the entire node tree, starting from this nodes.- Specified by:
clone
in interfaceQueryModelNode
- Specified by:
clone
in interfaceTupleExpr
- Overrides:
clone
in classAbstractQueryModelNode
- Returns:
- A deep clone of this query model node.
-
getOwner
- Specified by:
getOwner
in interfaceExclusiveTupleExpr
- Returns:
- the owner for this expression
-
getOwnedEndpoint
-
getExclusiveExpressions
-
getFreeVarCount
public int getFreeVarCount()- Specified by:
getFreeVarCount
in interfaceFedXTupleExpr
- Returns:
- the number of free (i.e. unbound) variables in this expression
-
getFreeVars
- Specified by:
getFreeVars
in interfaceFilterTuple
- Specified by:
getFreeVars
in interfaceVariableExpr
- Returns:
- a list of free (i.e. unbound) variables in this expression
-
getId
- Specified by:
getId
in interfaceStatementTupleExpr
- Returns:
- the id of this expr
-
getStatementSources
- Specified by:
getStatementSources
in interfaceStatementTupleExpr
- Returns:
- a list of sources that are relevant for evaluation of this expression
-
hasFreeVarsFor
Description copied from interface:StatementTupleExpr
returns true iff this statement has free variables in the presence of the specified binding set- Specified by:
hasFreeVarsFor
in interfaceStatementTupleExpr
- Parameters:
bindings
-- Returns:
- whether the statement has free vars
-
evaluate
Description copied from interface:StatementTupleExpr
Evaluate this expression using the provided bindings- Specified by:
evaluate
in interfaceStatementTupleExpr
- Parameters:
bindings
-- Returns:
- the result iteration
- Throws:
QueryEvaluationException
-
addFilterExpr
Description copied from interface:FilterTuple
register a new filter expression. If the expr has already a filter registered, the new expression is added to aConjunctiveFilterExpr
.- Specified by:
addFilterExpr
in interfaceFilterTuple
- Parameters:
expr
-
-
getFilterExpr
- Specified by:
getFilterExpr
in interfaceFilterTuple
- Returns:
- the currently registered filter expressions, usually of type
FilterExpr
orConjunctiveFilterExpr
-
getBoundFilters
Description copied from interface:FilterTuple
Returns bound filter bindings, that need to be added as additional bindings to the final result- Specified by:
getBoundFilters
in interfaceFilterTuple
- Returns:
- the bound filters, or
null
-
hasFilter
public boolean hasFilter()- Specified by:
hasFilter
in interfaceFilterTuple
- Returns:
- true if this expression has a filter to apply
-
addBoundFilter
Description copied from interface:FilterTuple
register 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:
addBoundFilter
in interfaceFilterTuple
- Parameters:
varName
-value
-
-
getQueryInfo
Description copied from interface:QueryRef
Retrieve the attached query information of the tuple expression- Specified by:
getQueryInfo
in interfaceQueryRef
- Returns:
- the
QueryInfo
-
getSupportedOrders
- Specified by:
getSupportedOrders
in interfaceTupleExpr
-
setOrder
-
getOrder
-