public class BSBMQ5Setup extends Object
The following predicates all join on #product
:
p3
and p5
) do not
directly join with any of the other predicates (they do not directly
share any variables). In general, a join without shared variables means
the cross product of the sources will be materialized and such joins
should be run last.
However, in this case there are two SPARQL FILTERs (
c1
and c2
) which (a) use those
variables (BSBMQ5Setup#origProperty1
and
BSBMQ5Setup#origProperty2
); and (b) can constrain the query. This
means that running the predicates without shared variables and applying
the constraints before the tail of the plan can in fact lead to a more
efficient join path.
Modifier and Type | Field and Description |
---|---|
BigdataLiteral |
_120 |
BigdataLiteral |
_170 |
FilterNode |
c0
FILTER (productInstance != ?product)
|
Set<FilterNode> |
C0
c0 attaches when any of [p0,p2,p4,p6] runs for the 1st time. |
FilterNode |
c1
FILTER (?simProperty1 < (?origProperty1 + 120) && ?simProperty1 >
(?origProperty1 - 120))
|
Set<FilterNode> |
C1
c1 attaches when 2nd of (p3,p4) runs (in any order). |
FilterNode |
c2
FILTER (?simProperty2 < (?origProperty2 + 170) && ?simProperty2 >
(?origProperty2 - 170))
|
Set<FilterNode> |
C2
c2 attaches when 2nd of (p5,p6) runs (in any order). |
FilterNode[] |
constraints
The constraints on the join graph.
|
Set<FilterNode> |
NA
no constraints.
|
StatementPatternNode |
p0
?product rdfs:label ?productLabel .
|
StatementPatternNode |
p1
productInstance bsbm:productFeature ?prodFeature .
|
StatementPatternNode |
p2
?product bsbm:productFeature ?prodFeature .
|
StatementPatternNode |
p3
productInstance bsbm:productPropertyNumeric1 ?origProperty1 .
|
StatementPatternNode |
p4
?product bsbm:productPropertyNumeric1 ?simProperty1 .
|
StatementPatternNode |
p5
productInstance bsbm:productPropertyNumeric2 ?origProperty2 .
|
StatementPatternNode |
p6
?product bsbm:productPropertyNumeric2 ?simProperty2 .
|
BigdataURI |
product53999 |
BigdataURI |
productFeature |
BigdataURI |
productPropertyNumeric1 |
BigdataURI |
productPropertyNumeric2 |
ProjectionNode |
projection |
QueryRoot |
queryRoot |
BigdataURI |
rdfsLabel |
Constructor and Description |
---|
BSBMQ5Setup(AbstractTripleStore store) |
public final BigdataURI rdfsLabel
public final BigdataURI productFeature
public final BigdataURI productPropertyNumeric1
public final BigdataURI productPropertyNumeric2
public final BigdataURI product53999
public final BigdataLiteral _120
public final BigdataLiteral _170
public final QueryRoot queryRoot
public final ProjectionNode projection
public final StatementPatternNode p0
public final StatementPatternNode p1
public final StatementPatternNode p2
public final StatementPatternNode p3
public final StatementPatternNode p4
public final StatementPatternNode p5
public final StatementPatternNode p6
public final FilterNode c0
public final FilterNode c1
Note: The AND in the compound filters is typically optimized out such
that each of these is represented as its own FilterNode
, but
I have combined them for the purposes of these unit tests.
public final FilterNode c2
Note: The AND in the compound filters is typically optimized out such
that each of these is represented as its own FilterNode
, but
I have combined them for the purposes of these unit tests.
public final FilterNode[] constraints
public final Set<FilterNode> NA
public final Set<FilterNode> C0
c0
attaches when any of [p0,p2,p4,p6] runs for the 1st time.public final Set<FilterNode> C1
c1
attaches when 2nd of (p3,p4) runs (in any order).public final Set<FilterNode> C2
c2
attaches when 2nd of (p5,p6) runs (in any order).public BSBMQ5Setup(AbstractTripleStore store)
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.