You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Md Mizanur Rahoman <mi...@nii.ac.jp> on 2014/05/12 06:49:21 UTC

Fwd: Group By Query in Jena Java

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 <mi...@nii.ac.jp>
Date: Wed, May 7, 2014 at 7:35 PM
Subject: Group By Query in Jena Java
To: users@jena.apache.org


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

Re: Group By Query in Jena Java

Posted by "Md. Mizanur Rahoman" <md...@gmail.com>.
Dear All,

Thanks for your support.  Yes, I can now able to work with Aggregate
Functions.

-
Regards



On Mon, May 12, 2014 at 9:59 PM, Hugh Williams <hw...@openlinksw.com>wrote:

> Andy,
>
> On 12 May 2014, at 13:19, Andy Seaborne <an...@apache.org> 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 <rv...@dotnetrdf.org> 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" <mi...@nii.ac.jp> 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 <mi...@nii.ac.jp>
> >>>> Date: Wed, May 7, 2014 at 7:35 PM
> >>>> Subject: Group By Query in Jena Java
> >>>> To: users@jena.apache.org
> >>>>
> >>>>
> >>>> 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
> >>>
> >>>
> >>>
> >>>
> >>
> >
>
>


-- 

*Md Mizanur Rahoman*
PhD Candidate
The Graduate University for Advanced Studies
National Institute of Informatics
2-1-2 Hitotsubashi, Chiyoda-ku,
Tokyo 101-8430, Japan.
Cell # +81-80-4802-5848
Email: mizan@nii.ac.jp
Web: https://sites.google.com/site/mdmizanurrahoman/
Linked In: http://www.linkedin.com/pub/md-mizanur-rahoman/20/7b8/45a

Re: Group By Query in Jena Java

Posted by Hugh Williams <hw...@openlinksw.com>.
Andy,

On 12 May 2014, at 13:19, Andy Seaborne <an...@apache.org> 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 <rv...@dotnetrdf.org> 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" <mi...@nii.ac.jp> 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 <mi...@nii.ac.jp>
>>>> Date: Wed, May 7, 2014 at 7:35 PM
>>>> Subject: Group By Query in Jena Java
>>>> To: users@jena.apache.org
>>>> 
>>>> 
>>>> 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
>>> 
>>> 
>>> 
>>> 
>> 
> 


Re: Group By Query in Jena Java

Posted by Andy Seaborne <an...@apache.org>.
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.

> 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?

	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 <rv...@dotnetrdf.org> 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" <mi...@nii.ac.jp> 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 <mi...@nii.ac.jp>
>>> Date: Wed, May 7, 2014 at 7:35 PM
>>> Subject: Group By Query in Jena Java
>>> To: users@jena.apache.org
>>>
>>>
>>> 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
>>
>>
>>
>>
>


Re: Group By Query in Jena Java

Posted by Hugh Williams <hw...@openlinksw.com>.
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

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 ?

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

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 <rv...@dotnetrdf.org> 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" <mi...@nii.ac.jp> 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 <mi...@nii.ac.jp>
>> Date: Wed, May 7, 2014 at 7:35 PM
>> Subject: Group By Query in Jena Java
>> To: users@jena.apache.org
>> 
>> 
>> 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
> 
> 
> 
> 


Re: Group By Query in Jena Java

Posted by Rob Vesse <rv...@dotnetrdf.org>.
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" <mi...@nii.ac.jp> 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 <mi...@nii.ac.jp>
>Date: Wed, May 7, 2014 at 7:35 PM
>Subject: Group By Query in Jena Java
>To: users@jena.apache.org
>
>
>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