You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Holger Knublauch <ho...@knublauch.com> on 2013/01/21 07:18:19 UTC
Issue with initial bindings in ARQ 2.9.4
I recently updated our code base from Jena 2.7.2 to Jena 2.7.4 and had a
few test failures. I narrowed it down to the following scenario:
import junit.framework.Assert;
import org.junit.Test;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolutionMap;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.vocabulary.RDFS;
public class TestJenaASK {
@Test
public void testAskPrebound() {
Query query = QueryFactory.create("ASK WHERE { FILTER (?arg =
<" + RDFS.Literal + ">) }");
QueryExecution qexec = QueryExecutionFactory.create(query,
ModelFactory.createDefaultModel());
QuerySolutionMap binding = new QuerySolutionMap();
binding.add("arg", RDFS.Literal);
qexec.setInitialBinding(binding);
boolean result = qexec.execAsk();
Assert.assertTrue(result);
}
}
Looking at the generated Algebra, it looks like in the newer version the
FILTER clause doesn't get executed, even though it should because there
is a pre-bound variable from the initial bindings. Is this an
intentional change in the semantics or a regression issue?
BTW in our more complex scenarios we have some extra BIND statements
before the FILTER, but those don't make the FILTER run either.
Thanks,
Holger
Re: Issue with initial bindings in ARQ 2.9.4
Posted by Andy Seaborne <an...@apache.org>.
Recorded as
https://issues.apache.org/jira/browse/JENA-384
On 21/01/13 06:18, Holger Knublauch wrote:
> I recently updated our code base from Jena 2.7.2 to Jena 2.7.4 and had a
> few test failures. I narrowed it down to the following scenario:
>
> import junit.framework.Assert;
>
> import org.junit.Test;
>
> import com.hp.hpl.jena.query.Query;
> import com.hp.hpl.jena.query.QueryExecution;
> import com.hp.hpl.jena.query.QueryExecutionFactory;
> import com.hp.hpl.jena.query.QueryFactory;
> import com.hp.hpl.jena.query.QuerySolutionMap;
> import com.hp.hpl.jena.rdf.model.ModelFactory;
> import com.hp.hpl.jena.vocabulary.RDFS;
> s
> public class TestJenaASK {
>
> @Test
> public void testAskPrebound() {
> Query query = QueryFactory.create("ASK WHERE { FILTER (?arg =
> <" + RDFS.Literal + ">) }");
> QueryExecution qexec = QueryExecutionFactory.create(query,
> ModelFactory.createDefaultModel());
> QuerySolutionMap binding = new QuerySolutionMap();
> binding.add("arg", RDFS.Literal);
> qexec.setInitialBinding(binding);
> boolean result = qexec.execAsk();
> Assert.assertTrue(result);
> }
> }
>
> Looking at the generated Algebra, it looks like in the newer version the
> FILTER clause doesn't get executed, even though it should because there
> is a pre-bound variable from the initial bindings. Is this an
> intentional change in the semantics or a regression issue?
>
> BTW in our more complex scenarios we have some extra BIND statements
> before the FILTER, but those don't make the FILTER run either.
>
> Thanks,
> Holger
>