Class TransformFilterInequality
- java.lang.Object
-
- org.apache.jena.sparql.algebra.TransformCopy
-
- org.apache.jena.sparql.algebra.optimize.TransformFilterInequality
-
- All Implemented Interfaces:
Transform
public class TransformFilterInequality extends TransformCopy
A transform that aims to optimize queries where there is an inequality constraint on a variable in an attempt to speed up evaluation e.gPREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT * WHERE { ?s rdf:type <http://type> ; ?p ?o . FILTER(?p != rdf:type) }Would transform to the following:PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> SELECT * WHERE { ?s rdf:type <http://type> ; ?p ?o . MINUS { VALUES ?p { rdf:type } } }Status
Performance testing has shown that often this gives minimal performance benefit so this optimization is not enabled by default. It may be explicitly enabled by setting the
ARQ.optFilterInequalitysymbol in yourContextor the ARQ global context (ARQ.getContext()totrueApplicability
This optimizer is conservative in that it only makes the optimization where the inequality constraint is against a non-literal as otherwise substituting the value changes the query semantics because it switches from value equality to the more restrictive term equality. The optimization is safe for non-literals because for those value and term equality are equivalent (in fact value equality is defined to be term equality).
There are also various nested algebra structures that can make the optimization unsafe and so it does not take place if any of those situations is detected.
-
-
Field Summary
-
Fields inherited from class org.apache.jena.sparql.algebra.TransformCopy
COPY_ALWAYS, COPY_ONLY_ON_CHANGE
-
-
Constructor Summary
Constructors Constructor Description TransformFilterInequality()Creates a new transform
-
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
-
-