You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Paolo Castagna <ca...@googlemail.com> on 2011/03/31 19:25:38 UTC
Error parsing a SPARQL query: "Non-group key variable in SELECT:
?n in expression ?n"
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
Re: Error parsing a SPARQL query: "Non-group key variable in SELECT:
?n in expression ?n"
Posted by Anuj Kumar <an...@gmail.com>.
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 <
castagna.lists@googlemail.com> 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
>