[
https://issues.apache.org/jira/browse/JENA-766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dimitris Kontokostas closed JENA-766.
-------------------------------------
Resolution: Invalid
> Aggregate query returns (possibly) wrong results
> ------------------------------------------------
>
> Key: JENA-766
> URL: https://issues.apache.org/jira/browse/JENA-766
> Project: Apache Jena
> Issue Type: Bug
> Components: Jena
> Affects Versions: Jena 2.11.2
> Environment: Ubuntu 14.04
> Reporter: Dimitris Kontokostas
> Priority: Minor
>
> I have the following query
> {code:title=SPARQL-Query}
> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> SELECT (COUNT (DISTINCT ?resource) as ?total) WHERE {
> ?resource rdf:type/rdfs:subClassOf*
> <http://example.com/ns#CardExact3Class>.
> ?resource <http://example.com/ns#cardExact3> ?c.
> } GROUP BY ?resource
> HAVING ( ( count(?c) != 3 ) && ( count(?c) != 0 ) )
> {code}
> run against the following data
> {code:title=TTL-Data}
> @prefix ex: <http://example.com/ns#> .
> ex:error3a a ex:CardExact3Class ; # 1 error
> ex:cardExact3 ex:abc1 ;
> ex:cardExact3 ex:abc2 .
> ex:error3b a ex:CardExact3Class ; # 1 error
> ex:cardExact3 ex:abc1 ;
> ex:cardExact3 ex:abc2 ;
> ex:cardExact3 ex:abc3 ;
> ex:cardExact3 ex:abc4 .
> {code}
> The query should return 2 as result but instead returns 1.
> If I change the query type to SELECT DISTINCT ?resource I get 2 results so I
> think this should be a Jena issue (but maybe I miss something again)
> Here's some sample Java code to reproduce
> {code:title=Java code to reproduce}
> Model model = ModelFactory.createDefaultModel();
> String Query =
> "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" +
> "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> \n" +
> "SELECT (COUNT (DISTINCT ?resource) as ?total) WHERE {\n" +
> "\t?resource rdf:type/rdfs:subClassOf*
> <http://example.com/ns#CardExact3Class>.\n" +
> "\t?resource <http://example.com/ns#cardExact3> ?c.\n" +
> "} GROUP BY ?resource\n" +
> "HAVING ( ( count(?c) != 3 ) && ( count(?c) != 0 ) )\n" +
> "\n" +
> " ";
> String data =
> "@prefix ex: <http://example.com/ns#> .\n\n" +
> "ex:error3a a ex:CardExact3Class ; # 1 error\n" +
> "\tex:cardExact3 ex:abc1 ;\n" +
> "\tex:cardExact3 ex:abc2 ;\n" +
> "\t.\n" +
> "ex:error3b a ex:CardExact3Class ; # 1 error\n" +
> " \tex:cardExact3 ex:abc1 ;\n" +
> " \tex:cardExact3 ex:abc2 ;\n" +
> " \tex:cardExact3 ex:abc3 ;\n" +
> " \tex:cardExact3 ex:abc4 ;\n" +
> " \t.\n";
> model.read(new ByteArrayInputStream( data.getBytes() ), null, "TTL");
> QueryExecution qe =
> com.hp.hpl.jena.query.QueryExecutionFactory.create(Query, model);
> ResultSet results = qe.execSelect();
> if (results.hasNext()) {
> QuerySolution qs = results.next();
> int total = qs.get("total").asLiteral().getInt();
> // Total should be 2 while it is 1
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)