[ https://issues.apache.org/jira/browse/JENA-766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dimitris Kontokostas updated JENA-766: -------------------------------------- Summary: Aggregate query returns (possibly) wrong results (was: Aggregate reports possible wrong results) > 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)