Class LeftJoinQueryEvaluationStep
java.lang.Object
org.eclipse.rdf4j.query.algebra.evaluation.impl.evaluationsteps.LeftJoinQueryEvaluationStep
- All Implemented Interfaces:
 QueryEvaluationStep
- 
Nested Class Summary
Nested classes/interfaces inherited from interface QueryEvaluationStep
QueryEvaluationStep.DelayedEvaluationIteration - 
Field Summary
Fields inherited from interface QueryEvaluationStep
EMPTY, EMPTY_ITERATION - 
Constructor Summary
ConstructorsConstructorDescriptionLeftJoinQueryEvaluationStep(QueryEvaluationStep right, QueryValueEvaluationStep condition, QueryEvaluationStep left, LeftJoin leftJoin, Set<String> optionalVars)  - 
Method Summary
Modifier and TypeMethodDescriptionstatic QueryEvaluationStepdetermineRightEvaluationStep(LeftJoin join, QueryEvaluationStep prepareRightArg, QueryValueEvaluationStep joinCondition, Set<String> scopeBindingNames) This function determines the way the right-hand side is evaluated.evaluate(BindingSet bindings) static QueryEvaluationStepsupply(EvaluationStrategy strategy, LeftJoin leftJoin, QueryEvaluationContext context)  
- 
Constructor Details
- 
LeftJoinQueryEvaluationStep
public LeftJoinQueryEvaluationStep(QueryEvaluationStep right, QueryValueEvaluationStep condition, QueryEvaluationStep left, LeftJoin leftJoin, Set<String> optionalVars)  
 - 
 - 
Method Details
- 
supply
public static QueryEvaluationStep supply(EvaluationStrategy strategy, LeftJoin leftJoin, QueryEvaluationContext context)  - 
evaluate
- Specified by:
 evaluatein interfaceQueryEvaluationStep
 - 
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 = invalid input: '<'http://wiki.data.gouv.fr/wiki/Licence_Ouverte_/_Open_Licence>) } }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). 
 -