public class JoinSetUtil extends Object
Modifier and Type  Class and Description 

static class 
JoinSetUtil.VertexJoinSet
A collection of vertices and the join variables they bind.

Modifier and Type  Field and Description 

int[][] 
canJoin
Diagonal matrix for the required joins.

int[] 
directJoinCount
The #of direct joins found for each vertex (summed across
canJoin matrix. 
Set<JoinSetUtil.VertexJoinSet> 
directJoinSets
The distinct sets of vertices which are composed solely of (the
transitive closure of) joins on directly shared variables.

Set<IVariable<?>> 
eventuallyBoundVars
The set of variables which are bound by the time the last required join
is done.

GraphPatternGroup<IGroupMemberNode> 
group
The group.

Set<FilterNode> 
joinFilters
The FILTERS that will be attached to the required joins for this group.

Set<IVariable<?>> 
knownBound
The variables known to be bound on entry to the group.

Set<FilterNode> 
postFilters
The FILTERS that can not be run until the end of the join group.

Set<FilterNode> 
preFilters
The FILTERS that can be run on entry to the group (and which should be
lifted into the parent).

int 
requiredJoinCount
The #of required joins in the group (the
requiredJoins length). 
IJoinNode[] 
requiredJoins
An array of the vertices for the required joins in the group.

Set<IVariable<?>>[] 
vars
The set of variables which are bound be each of the vertices for the
required joins.

Constructor and Description 

JoinSetUtil(StaticAnalysis sa,
Set<IVariable<?>> knownBound,
GraphPatternGroup<IGroupMemberNode> group) 
public final GraphPatternGroup<IGroupMemberNode> group
public final Set<IVariable<?>> knownBound
public final Set<IVariable<?>> eventuallyBoundVars
knownBound
variables plus any
variables for any required join.public final IJoinNode[] requiredJoins
public final int requiredJoinCount
requiredJoins
length).public final Set<FilterNode> preFilters
public final Set<FilterNode> joinFilters
public final Set<FilterNode> postFilters
public final Set<IVariable<?>>[] vars
public final int[][] canJoin
public final int[] directJoinCount
canJoin
matrix.public final Set<JoinSetUtil.VertexJoinSet> directJoinSets
p(x,y) X p(y,z) x p(z,t)Would form a direct join set each join will share a variable directly. Even though there are some vertices which do not share variables directly, they can be joined directly once other joins have been processed. For example
p(z,t)
can be joined once we have
p(y,z)
.
The number of such direct join sets varies with the query. If all vertices fit into one direct join set, then the query can be pipelined efficiently. If there is more than one such set then we need to look further to see if we can identify joins on indirectly shared variables (shared through a FILTER) which can be used to piece these join sets together. If not, there is an unconstrained cross product in the query.
public JoinSetUtil(StaticAnalysis sa, Set<IVariable<?>> knownBound, GraphPatternGroup<IGroupMemberNode> group)
sa
 knownBound
 Any variables known to be bound on entry to the group.group
 The group.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.