Package org.eclipse.rdf4j.query.algebra.evaluation.impl

## 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 `Filter`s 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 `Filter`s. 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

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `FilterOptimizer.DeMergeFilterFinder` |
    `protected static class` | `FilterOptimizer.FilterFinder` |
    `protected static class` | `FilterOptimizer.FilterRelocator` |
    `protected static class` | `FilterOptimizer.MergeFilterFinder` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FilterOptimizer()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `optimize​(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings)` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### FilterOptimizer

          public FilterOptimizer()

  - ### Method Detail

    - #### optimize

          public void optimize​(TupleExpr tupleExpr,
                               Dataset dataset,
                               BindingSet bindings)

      Specified by:
        `optimize` in interface `QueryOptimizer`