Package org.eclipse.rdf4j.sail.federation.optimizers

## Class QueryMultiJoinOptimizer.JoinVisitor

- java.lang.Object
- - org.eclipse.rdf4j.query.algebra.helpers.AbstractQueryModelVisitor<RuntimeException>
  - - org.eclipse.rdf4j.sail.federation.optimizers.QueryMultiJoinOptimizer.JoinVisitor

- All Implemented Interfaces:
    `QueryModelVisitor<RuntimeException>`
  Enclosing class:
    QueryMultiJoinOptimizer

      protected class QueryMultiJoinOptimizer.JoinVisitor
      extends AbstractQueryModelVisitor<RuntimeException>

- - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `JoinVisitor()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected List<Var>` | `getConstantVars​(Iterable<Var> vars)` |
    `protected int` | `getForeignVarFreq​(List<Var> ownUnboundVars, Map<Var,​Integer> varFreqMap)` |
    `protected <L extends List<TupleExpr>> L` | `getJoinArgs​(TupleExpr tupleExpr, L joinArgs)` |
    `protected List<Var>` | `getStatementPatternVars​(TupleExpr tupleExpr)` |
    `protected double` | `getTupleExprCost​(TupleExpr tupleExpr, Map<TupleExpr,​Double> cardinalityMap, Map<TupleExpr,​List<Var>> varsMap, Map<Var,​Integer> varFreqMap, Set<String> boundVars)` |
    `protected List<Var>` | `getUnboundVars​(Iterable<Var> vars)` |
    `protected <M extends Map<Var,​Integer>> M` | `getVarFreqMap​(List<Var> varList, M varFreqMap)` |
    `void` | `meet​(Join node)` |
    `void` | `meet​(LeftJoin leftJoin)` |
    `void` | `meetJoin​(TupleExpr node)` |
    `void` | `meetOther​(QueryModelNode node)` |
    `protected TupleExpr` | `selectNextTupleExpr​(List<TupleExpr> expressions, Map<TupleExpr,​Double> cardinalityMap, Map<TupleExpr,​List<Var>> varsMap, Map<Var,​Integer> varFreqMap, Set<String> boundVars)` | Selects from a list of tuple expressions the next tuple expression that should be evaluated.

    - ### Methods inherited from class org.eclipse.rdf4j.query.algebra.helpers.AbstractQueryModelVisitor

      `meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meetBinaryTupleOperator, meetBinaryValueOperator, meetCompareSubQueryValueOperator, meetNAryValueOperator, meetNode, meetSubQueryValueOperator, meetUnaryTupleOperator, meetUnaryValueOperator, meetUpdateExpr`

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

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

- - ### Constructor Detail

    - #### JoinVisitor

          protected JoinVisitor()

  - ### Method Detail

    - #### meet

          public void meet​(LeftJoin leftJoin)

      Specified by:
        `meet` in interface `QueryModelVisitor<RuntimeException>`
      Overrides:
        `meet` in class `AbstractQueryModelVisitor<RuntimeException>`

    - #### meetOther

          public void meetOther​(QueryModelNode node)
                         throws RuntimeException

      Specified by:
        `meetOther` in interface `QueryModelVisitor<RuntimeException>`
      Overrides:
        `meetOther` in class `AbstractQueryModelVisitor<RuntimeException>`
      Throws:
        `RuntimeException`

    - #### meet

          public void meet​(Join node)
                    throws RuntimeException

      Specified by:
        `meet` in interface `QueryModelVisitor<RuntimeException>`
      Overrides:
        `meet` in class `AbstractQueryModelVisitor<RuntimeException>`
      Throws:
        `RuntimeException`

    - #### meetJoin

          public void meetJoin​(TupleExpr node)

    - #### getJoinArgs

          protected <L extends List<TupleExpr>> L getJoinArgs​(TupleExpr tupleExpr,
                                                              L joinArgs)

    - #### getStatementPatternVars

          protected List<Var> getStatementPatternVars​(TupleExpr tupleExpr)

    - #### getVarFreqMap

          protected <M extends Map<Var,​Integer>> M getVarFreqMap​(List<Var> varList,
                                                                       M varFreqMap)

    - #### selectNextTupleExpr

          protected TupleExpr selectNextTupleExpr​(List<TupleExpr> expressions,
                                                  Map<TupleExpr,​Double> cardinalityMap,
                                                  Map<TupleExpr,​List<Var>> varsMap,
                                                  Map<Var,​Integer> varFreqMap,
                                                  Set<String> boundVars)

      Selects from a list of tuple expressions the next tuple expression that should be evaluated. This method selects the tuple expression with highest number of bound variables, preferring variables that have been bound in other tuple expressions over variables with a fixed value.

    - #### getTupleExprCost

          protected double getTupleExprCost​(TupleExpr tupleExpr,
                                            Map<TupleExpr,​Double> cardinalityMap,
                                            Map<TupleExpr,​List<Var>> varsMap,
                                            Map<Var,​Integer> varFreqMap,
                                            Set<String> boundVars)

    - #### getConstantVars

          protected List<Var> getConstantVars​(Iterable<Var> vars)

    - #### getUnboundVars

          protected List<Var> getUnboundVars​(Iterable<Var> vars)

    - #### getForeignVarFreq

          protected int getForeignVarFreq​(List<Var> ownUnboundVars,
                                          Map<Var,​Integer> varFreqMap)