The responses to this question might have your answer: http://tech.groups.yahoo.com/group/jena-dev/message/46986 See Andy's response.
<http://tech.groups.yahoo.com/group/jena-dev/message/46986>Regards, Anuj On Thu, Mar 31, 2011 at 10:55 PM, Paolo Castagna < [email protected]> wrote: > Hi, > I have a SPARQL query (QUERY #1) which does this: > > prefix e: <http://example.com/schema#> > prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> > > select distinct (?r as ?e) (count(?s) as ?v) > where { > ?s rdf:type e:CS . > ?s e:r ?r . > ?r rdfs:label ?n > } > group by ?r > order by ?r > > It gets parsed find by ARQ and this is the algebra structure: > > 1 (base <http://example/base/> > 2 (prefix ((rdfs: <http://www.w3.org/2000/01/rdf-schema#>) > 3 (e: <http://example.com/schema#>) > 4 (rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) > 5 (distinct > 6 (project (?e ?v) > 7 (order (?r) > 8 (extend ((?e ?r) (?v ?.0)) > 9 (group (?r) ((?.0 (count ?s))) > 10 (bgp > 11 (triple ?s rdf:type e:CS) > 12 (triple ?s e:r ?r) > 13 (triple ?r rdfs:label ?n) > 14 )))))))) > > > Now, I add (?n as ?l) to the select distinct (QUERY #2): > > prefix e: <http://example.com/schema#> > prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> > > select distinct (?r as ?e) (?n as ?l) (count(?s) as ?v) > where { > ?s rdf:type e:CS . > ?s e:r ?r . > ?r rdfs:label ?n > } > group by ?r > order by ?r > > And I have this syntax error: > > "Non-group key variable in SELECT: ?n in expression ?n" > > So, I tried this (QUERY #3): > > prefix e: <http://example.com/schema#> > prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> > > select distinct (?r as ?e) (?n as ?l) (count(?s) as ?v) > where { > ?s rdf:type e:CS . > ?s e:r ?r . > ?r rdfs:label ?n > } > group by ?r ?n > order by ?r > > And, indeed it does solve the problem. Algebra structure is: > > 1 (base <http://example/base/> > 2 (prefix ((rdfs: <http://www.w3.org/2000/01/rdf-schema#>) > 3 (e: <http://example.com/schema#>) > 4 (rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>)) > 5 (distinct > 6 (project (?e ?l ?v) > 7 (order (?r) > 8 (extend ((?e ?r) (?l ?n) (?v ?.0)) > 9 (group (?r ?n) ((?.0 (count ?s))) > 10 (bgp > 11 (triple ?s rdf:type e:CS) > 12 (triple ?s e:r ?r) > 13 (triple ?r rdfs:label ?n) > 14 )))))))) > > > Is QUERY #2 invalid or it is showing a problem with ARQ's query parser? > > I am happy with QUERY #3, however, I would like to learn and understand. > > I did try to go thorough the current SPARQL 1.1 Query Language spec, > but I did not find a place which would help me to understand. > > Thank you, > Paolo >
