Class LeftJoinQueryEvaluationStep

    • Method Detail

      • determineRightEvaluationStep

        public static QueryEvaluationStep determineRightEvaluationStep​(LeftJoin join,
                                                                       QueryEvaluationStep prepareRightArg,
                                                                       QueryValueEvaluationStep joinCondition,
                                                                       Set<String> scopeBindingNames)
        This function determines the way the right-hand side is evaluated. There are 3 options:

        1. No join condition:
        The right-hand side should just be joined with the left-hand side. No filtering is applied.

        2. The join condition can be fully evaluated by the left-hand side:

         SELECT * WHERE {
                ?dist a dcat:Distribution .
          ?dist dc:license ?license .
        
          OPTIONAL {
                ?a dcat:distribution ?dist.
        
              FILTER(?license = )
                }
         }
         
        In this case, pre-filtering can be applied. The right-hand side does not have to evaluated when the join condition evaluates to false.

        3. The join condition needs right-hand side evaluation:

         SELECT * WHERE {
          ?dist a dcat:Distribution .
        
                OPTIONAL {
                        ?a dcat:distribution ?dist .
                        ?a dct:language $lang .
        
                        FILTER(?lang = eu-lang:ENG)
                }
         }
         
        In this case, the join condition can only be evaluated after the right-hand side is evaluated (post-filtering).