Thanks Andy for your quick reply. I tested Jena 2.10.1 and the problem still exists. Could you please run the attached java code to see if it is a defect? Thanks, John
________________________________ From: Andy Seaborne <[email protected]> To: [email protected] Sent: Tuesday, April 23, 2013 10:46:25 AM Subject: Re: problem in rewriting query by AlgebraGenerator On 23/04/13 03:10, John Liu wrote: > Hello, > I found a problem when rewriting a query by AlgebraGenerator, the > generated query becomes syntax incorrect query. Can you please advise if > this is a defect? Thanks. > The version of JENA I tested is 2.7.1 There have been various improvements and fixes in this area which you'll find in Jena 2.10.0 and in the active development system 2.10.1-SNAPSHOT (from the Apache snapshot maven repository) Andy > The code I rewrite the query is: > Query query = QueryFactory./create/(queryString); > AlgebraGenerator ag = > *new*AlgebraGenerator(); > Op op = ag.compile(query); > Query query2 = OpAsQuery./asQuery/(op); > The original query is: > PREFIX dcterms: <http://purl.org/dc/terms/> > PREFIX dbpedia: <http://dbpedia.org/resource/> > SELECT ?num_of_holidays ?celebrate_Chinese_New_Year WHERE { > {SELECT ?country_cat (COUNT(?holiday) as ?num_of_holidays) > WHERE {?country_cat <http://www.w3.org/2004/02/skos/core#broader> > <http://dbpedia.org/resource/Category:Public_holidays_by_country>. > ?holiday dcterms:subject ?country_cat > }GROUP by ?country_cat > } > { > SELECT ?country_cat (COUNT(?holiday) as ?celebrate_Chinese_New_Year) > WHERE { > ?country_cat <http://www.w3.org/2004/02/skos/core#broader> > <http://dbpedia.org/resource/Category:Public_holidays_by_country>. > ?holiday dcterms:subject ?country_cat > FILTER(?holiday="http://dbpedia.org/resource/Lunar_New_Year's_Day") > }GROUP by ?country_cat > } > } > The generated query is: > SELECT ?country_cat ?celebrate_Chinese_New_Year > WHERE > { { ?country_cat <http://www.w3.org/2004/02/skos/core#broader> > <http://dbpedia.org/resource/Category:Public_holidays_by_country> . > ?holiday <http://purl.org/dc/terms/subject> ?country_cat > BIND(count(?holiday) AS ?num_of_holidays) > } > { ?country_cat <http://www.w3.org/2004/02/skos/core#broader> > <http://dbpedia.org/resource/Category:Public_holidays_by_country> . > ?holiday <http://purl.org/dc/terms/subject> ?country_cat > FILTER ( ?holiday = "http://dbpedia.org/resource/Lunar_New_Year's_Day" ) > BIND(count(?holiday) AS ?celebrate_Chinese_New_Year) > } > } > GROUP BY ?country_cat > The generated query has a syntax error: "Line 5, column 12: Aggregate > expression not legal at this point". > Attached is a hava program to demonstrate the problem, > >
