Andy, On 12 May 2014, at 13:19, Andy Seaborne <[email protected]> wrote:
> On 12/05/14 12:54, Hugh Williams wrote: >> Hi Rob, >> >> What is not SPARQL 1.1 about the query being run ie >> >> select distinct ?T1 ?T2 count(*) from <http://dbpedia.org> >> where >> { >> ?s1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T1. >> ?s2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T2. >> ?s1 <http://dbpedia.org/property/spouse> ?s2. >> ?s2 <http://dbpedia.org/property/birthPlace> ?obj. >> FILTER(REGEX(?T1, "http://dbpedia.org/ontology/")). >> FILTER(REGEX(?T2, "http://dbpedia.org/ontology/")). >> } >> group by ?T1 ?T2 >> >> The only potential problem I see is the "count(*)" which maybe have to be >> changed to be "(count(*) as ?count)" as in the specs if this is not deemed >> to be SPARQL 1.1 ie > > It is not legal SPARQL 1.1. > >> select distinct ?T1 ?T2 (count(*) as ?count) from <http://dbpedia.org> >> where >> { >> ?s1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T1. >> ?s2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T2. >> ?s1 <http://dbpedia.org/property/spouse> ?s2. >> ?s2 <http://dbpedia.org/property/birthPlace> ?obj. >> FILTER(REGEX(?T1, "http://dbpedia.org/ontology/")). >> FILTER(REGEX(?T2, "http://dbpedia.org/ontology/")). >> } >> group by ?T1 ?T2 >> >> Which seems to work against other endpoints ... >> >> Would be nice if the Jena SPARQL validator at >> http://www.sparql.org/validator.html worked to check ? >> > > What "would be nice"? > > It correctly shows it to be an error unless you enable extensions. [Hugh] The validator was giving a "service unavailable" error, earlier but is working now ... > >> I note in the code Jena snippet below the call "QueryFactory.create(query, >> Syntax.syntaxSPARQL_11);" , which seems to be forcing the invocation of the >> Jena Parser, but if the "Syntax.syntaxSPARQL_11" param is removed then it >> should bypass the Jena parser and pass Query on to Virtuoso as is , as >> detailed at: >> >> >> http://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtJenaProvider#Bypass%20Jena/ARQ%20parser > > is 'query' the same in both code snippets? [Hugh] Should be the same ... Regards Hugh > > Andy > >> >> Best Regards >> Hugh Williams >> Professional Services >> OpenLink Software, Inc. // http://www.openlinksw.com/ >> Weblog -- http://www.openlinksw.com/blogs/ >> LinkedIn -- http://www.linkedin.com/company/openlink-software/ >> Twitter -- http://twitter.com/OpenLink >> Google+ -- http://plus.google.com/100570109519069333827/ >> Facebook -- http://www.facebook.com/OpenLinkSoftware >> Universal Data Access, Integration, and Management Technology Providers >> >> On 12 May 2014, at 09:17, Rob Vesse <[email protected]> wrote: >> >>> Yes, though the Virtuoso specific syntax shown there is not legal SPARQL >>> >>> See Aggregates (http://www.w3.org/TR/sparql11-query/#aggregates) in the >>> SPARQL 1.1 specification which Jena fully supports >>> >>> Rob >>> >>> On 12/05/2014 05:49, "Md Mizanur Rahoman" <[email protected]> wrote: >>> >>>> Dear Experts, >>>> >>>> My question is: >>>> >>>> Is there any Jena implementation that can execute Aggregate function like >>>> count, sum etc? Iterative counting of all elements could an option, >>>> however, I want to know about direct implement of below method. >>>> >>>> such as, the below method >>>> >>>> ------------------------------ >>>> ------------------------------------------------------------------------ >>>> public void queryExecutor(VirtGraph dataset) { >>>> >>>> String query = >>>> "select distinct ?T1 ?T2 count(*) "+ >>>> "from <http://dbpedia.org> "+ >>>> "where "+ >>>> "{ "+ >>>> "?s1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T1. "+ >>>> "?s2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T2. "+ >>>> "?s1 <http://dbpedia.org/property/spouse> ?s2. "+ >>>> "?s2 <http://dbpedia.org/property/birthPlace> ?obj. "+ >>>> "FILTER(REGEX(?T1, \"http://dbpedia.org/ontology/\")). "+ >>>> "FILTER(REGEX(?T2, \"http://dbpedia.org/ontology/\")). "+ >>>> "}"+ >>>> "group by ?T1 ?T2 "; >>>> >>>> >>>> System.out.println(query); >>>> >>>> Query sparql1 = QueryFactory.create(query, >>>> Syntax.syntaxSPARQL_11); >>>> try { >>>> VirtuosoQueryExecution vqe1 = >>>> VirtuosoQueryExecutionFactory.create(sparql1, dataset); >>>> ResultSet results1 = vqe1.execSelect(); >>>> >>>> } >>>> catch (Exception e) { >>>> System.out.println("Error in query execution: " + >>>> e.toString()); >>>> e.printStackTrace(); >>>> } >>>> >>>> } >>>> -------------------------------------------------------------------------- >>>> --------------------------------- >>>> >>>> >>>> - >>>> Regards >>>> Mizan >>>> NII, Japan >>>> >>>> >>>> >>>> ---------- Forwarded message ---------- >>>> From: Md Mizanur Rahoman <[email protected]> >>>> Date: Wed, May 7, 2014 at 7:35 PM >>>> Subject: Group By Query in Jena Java >>>> To: [email protected] >>>> >>>> >>>> Dear Expert, >>>> >>>> I want to execute a group by query in Jena. I am using Jena V2.6.4. But it >>>> is giving exception >>>> -------------------------------------------------------------------------- >>>> --------------------------- >>>> >>>> Exception in thread "main" com.hp.hpl.jena.query.QueryParseException: >>>> Encountered " "count" "count "" at line 1, column 26. >>>> >>>> -------------------------------------------------------------------------- >>>> ---------------------------- >>>> And here is my method, >>>> >>>> -------------------------------------------------------------------------- >>>> ---------------------------- >>>> public void queryExecutor(VirtGraph dataset) { >>>> >>>> String query = >>>> "select distinct ?T1 ?T2 count(*) "+ >>>> "from <http://dbpedia.org> "+ >>>> "where "+ >>>> "{ "+ >>>> "?s1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T1. "+ >>>> "?s2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?T2. "+ >>>> "?s1 <http://dbpedia.org/property/spouse> ?s2. "+ >>>> "?s2 <http://dbpedia.org/property/birthPlace> ?obj. "+ >>>> "FILTER(REGEX(?T1, \"http://dbpedia.org/ontology/\")). "+ >>>> "FILTER(REGEX(?T2, \"http://dbpedia.org/ontology/\")). "+ >>>> "}"+ >>>> "group by ?T1 ?T2 "; >>>> >>>> >>>> System.out.println(query); >>>> >>>> Query sparql1 = QueryFactory.create(query, >>>> Syntax.syntaxSPARQL_11); >>>> try { >>>> VirtuosoQueryExecution vqe1 = >>>> VirtuosoQueryExecutionFactory.create(sparql1, dataset); >>>> ResultSet results1 = vqe1.execSelect(); >>>> >>>> } >>>> catch (Exception e) { >>>> System.out.println("Error in query execution: " + >>>> e.toString()); >>>> e.printStackTrace(); >>>> } >>>> >>>> } >>>> -------------------------------------------------------------------------- >>>> --------------------------------- >>>> >>>> My question is: >>>> >>>> * Is there any Jena version that can execute Aggregate function like >>>> count, >>>> sum etc? >>>> >>>> - >>>> Regards >>>> Mizanur >>>> NII, Japan >>> >>> >>> >>> >> >
