[ 
https://issues.apache.org/jira/browse/JENA-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13995366#comment-13995366
 ] 

Andy Seaborne commented on JENA-692:
------------------------------------

Sounds safe.

If it's run after filter placement when the {{(?x=?y)}} is pushed to the 
innermost point anyway: that may then indicate the suitability of the 
optimization based on the immediately underlying pattern.  It will include, 
say, pushing down one arm of a UNION but not the other (leaves the filter 
nested and also over the whole pattern).  Wherever the filter comes to rest 
over a BGP/quads, the optimization can be applied.

If that works, it's more efficient - avoids repeatedly running the 
{{JoinClassifier}}.

> Filter implicit join optimization incorrect
> -------------------------------------------
>
>                 Key: JENA-692
>                 URL: https://issues.apache.org/jira/browse/JENA-692
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: ARQ
>    Affects Versions: Jena 2.11.0, Jena 2.11.1
>            Reporter: Andy Seaborne
>         Attachments: D.ttl, Q.rq
>
>
> (Starts at 2.11.0; 2.10.* is OK)
> The filter implicit join optimization misoptimizes the example - it pushes in 
> the equality but each arm is missing one of the variables.
> {noformat}
> PREFIX : <http://example.org/>
> SELECT *
> {
>   { ?a :p :o1 }
>   UNION
>   { ?b :p ?a }
>   FILTER ( ?a = ?b )
> }
> {noformat}
> The first arm of the UNION does include ?b and so {{( ?a = ?b )}} is false by 
> being an error with unbound {{?b}}
> Algebra translation:
> {noformat}
> (prefix ((: <http://example.org/>))
>   (filter (= ?a ?b)
>     (union
>       (bgp (triple ?a :p :o1))
>       (bgp (triple ?b :p ?a)))))
> {noformat}
> the optimization creates:
> {noformat}
> (prefix ((: <http://example.org/>))
>   (assign ((?a ?b))
>     (union
>       (bgp (triple ?b :p :o1))
>       (bgp (triple ?b :p ?b)))))
> {noformat}
> which has replaces the {{?a}} with {{?b}} in the first arm.
> {noformat}
> sparql --set arq:optImplicitJoin=false --file Q.rq --data D.ttl
> {noformat}
> yields the correct answers.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to