[
https://issues.apache.org/jira/browse/JENA-1148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15169405#comment-15169405
]
Andy Seaborne commented on JENA-1148:
-------------------------------------
{{FILTER}} at the top level of the {{OPTIONAL}} behave a little differently.
The filter becomes the leftjoin condition and the scope of variables include
left and right sides of the {{OPTIONAL}}.
Before optimization:
{noformat}
(leftjoin
(bgp (triple ?s ?p ?o))
(bgp (triple ?s ?q ?v))
(= ?p <urn:x1>))
{noformat}
not
{noformat}
(leftjoin
(bgp (triple ?s ?p ?o))
(filter (= ?o <urn:x1>)
(extend ((?b true))
(table unit))))
{noformat}
which comes from:
{noformat}
SELECT * {
?s ?p ?o
OPTIONAL {{
FILTER(?o=<urn:x1>)
BIND(true AS ?b)
}}
}
{noformat}
So this is a bug. thank you very much for the report.
Test: run {{sparql --engine=ref}} to see different answers from {{sparql}}.
> TransformFilterEquality incorrectly eliminates some optionals
> -------------------------------------------------------------
>
> Key: JENA-1148
> URL: https://issues.apache.org/jira/browse/JENA-1148
> Project: Apache Jena
> Issue Type: Bug
> Components: ARQ
> Reporter: Eetu Mäkelä
> Labels: Optimization, sparql
>
> For a query of the form:
> {code}
> SELECT * {
> ?s ?p ?o
> OPTIONAL {
> FILTER(?o=<urn:x1>)
> BIND(true AS ?b)
> }
> }
> {code}
> ARQ optimization incorrectly eliminates the whole OPTIONAL when the variable
> filtered on does not appear elsewhere inside the OPTIONAL block . This is
> because of the special case check called on [line 120 of
> TransformFilterEquality.java|https://git-wip-us.apache.org/repos/asf?p=jena.git;a=blob;f=jena-arq/src/main/java/org/apache/jena/sparql/algebra/optimize/TransformFilterEquality.java;h=38ba84019ba3b446afd8106128c517913a7ef73e;hb=6908fb7b7a500a70edb314b4830a18ed02a6b0f8#l120],
> which sees that ?o is not used inside the block of the filter and thus (in
> this case incorrectly) deduces that it could never be <urn:x1>.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)