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
>

Reply via email to