Class FilterOptimizer

java.lang.Object
org.eclipse.rdf4j.query.algebra.evaluation.impl.FilterOptimizer
All Implemented Interfaces:
QueryOptimizer

public class FilterOptimizer extends Object implements QueryOptimizer
Optimizes a query model by pushing Filters as far down in the model tree as possible. To make the first optimization succeed more often it splits filters which contains And conditions. SELECT * WHERE { ?s ?p ?o . ?s ?p ?o2 . FILTER(?o > '2'^^xsd:int && ?o2 < '4'^^xsd:int) } May be more efficient when decomposed into SELECT * WHERE { ?s ?p ?o . FILTER(?o > '2'^^xsd:int) ?s ?p ?o2 . FILTER(?o2 < '4'^^xsd:int) } Then it optimizes a query model by merging adjacent Filters. e.g. SELECT * WHERE { ?s ?p ?o . FILTER(?o > 2) . FILTER(?o < 4) . } may be merged into SELECT * WHERE { ?s ?p ?o . FILTER(?o > 2 && ?o < 4) . } This optimization allows for sharing evaluation costs in the future and removes an iterator. This is done as a second step to not break the first optimization. In the case that the splitting was done but did not help it is now undone.
Author:
Arjohn Kampman, Jerven Bolleman