You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@jena.apache.org by "ASF subversion and git services (Jira)" <ji...@apache.org> on 2022/07/02 20:10:00 UTC
[jira] [Commented] (JENA-2335) Query -> Algebra -> Query not equivalent in case of a BIND not in the result vars
[ https://issues.apache.org/jira/browse/JENA-2335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17561784#comment-17561784 ]
ASF subversion and git services commented on JENA-2335:
-------------------------------------------------------
Commit 658a987f2ee9135e2e3ccad7af852d7337b1f863 in jena's branch refs/heads/main from Andy Seaborne
[ https://gitbox.apache.org/repos/asf?p=jena.git;h=658a987f2e ]
JENA-2335: Test for GH-1397 changes
> Query -> Algebra -> Query not equivalent in case of a BIND not in the result vars
> ---------------------------------------------------------------------------------
>
> Key: JENA-2335
> URL: https://issues.apache.org/jira/browse/JENA-2335
> Project: Apache Jena
> Issue Type: Bug
> Components: ARQ, Optimizer
> Affects Versions: Jena 4.5.0
> Reporter: Jan Martin Keil
> Priority: Major
>
> Converting a query into algebra and back results in a not equivalent query, if the query contains a BIND clause thous variable is not part of the result variables, but other variables depend on it. Minimal example:
> {code:java}
> import static org.junit.jupiter.api.Assertions.assertTrue;
> import org.apache.jena.query.QueryFactory;
> import org.apache.jena.sparql.algebra.AlgebraGenerator;
> import org.apache.jena.sparql.algebra.OpAsQuery;
> import org.junit.jupiter.api.Test;
> public class OpTest {
> @Test
> public void retainVariables() {
> String sparqlStrBeforOp = "SELECT ?a ?d WHERE { ?a <http://example.org/p> ?b . BIND(?b AS ?c) BIND(?c AS ?d) }";
> String sparqlStrAfterOp = OpAsQuery.asQuery(new AlgebraGenerator().compile(QueryFactory.create(sparqlStrBeforOp))).toString();
> System.out.println(sparqlStrAfterOp);
> assertTrue(sparqlStrAfterOp.contains("(?b AS ?c)"));
> }
> }
> {code}
> This results in the following query:
> {code:sql}
> SELECT ?a (?c AS ?d)
> WHERE
> { ?a <http://example.org/p> ?b }
> {code}
> Use case: I do the conversion back and forth to remove not needed result variables of a given query on algebra level, which is not possible on queries directly.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: jira-unsubscribe@jena.apache.org
For additional commands, e-mail: jira-help@jena.apache.org