Class TransformFilterImplicitJoin
- java.lang.Object
-
- org.apache.jena.sparql.algebra.TransformCopy
-
- org.apache.jena.sparql.algebra.optimize.TransformFilterImplicitJoin
-
- All Implemented Interfaces:
Transform
public class TransformFilterImplicitJoin extends TransformCopy
Optimizer for transforming implicit joins. These covers queries like the following:
SELECT * WHERE { ?s a ?type1 . ?t a ?type2 . FILTER(?s = ?t) }Clearly this is a trivial example but doing this optimization can have big performance gains since it can completely eliminate cross products that we would otherwise be required to evaluate. The optimization where applicable results in a query of the following form:
SELECT * WHERE { ?s a ?type1 . ?s a ?type1 . BIND(?s AS ?t) }The optimizer does not cover the implicit left join case, for that see
TransformImplicitLeftJoinApplicability
This optimization aims to eliminate implicit joins of the form
?x = ?yorSAMETERM(?x, ?y), the latter can almost always be safely eliminated while the former may only be eliminated in the case where we can guarantee that at least one of the variables is a non-literal e.g. it occurs in the subject/predicate position. In the case where this is not true the optimization may not be made since we cannot assume that we can map value equality to term equality by making the optimization.Known Limitations/To Do
- Application to implicit joins may block the sequence transform which means the potential benefits of the optimization are negated
-
-
Field Summary
-
Fields inherited from class org.apache.jena.sparql.algebra.TransformCopy
COPY_ALWAYS, COPY_ONLY_ON_CHANGE
-
-
Constructor Summary
Constructors Constructor Description TransformFilterImplicitJoin()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Optransform(OpFilter opFilter, Op subOp)-
Methods inherited from class org.apache.jena.sparql.algebra.TransformCopy
transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform
-
-