2013-04-18 27 views
2

我使用AllegroGraph和Sparql查詢結果。我正在嘗試按字母順序進行排序,但Sparql給出了大寫更多的偏好。以下是類似於我的問題的類似數據和查詢。Sparql - 按字母排序問題

數據:

<http://mydomain.com/person1> <http://mydomain.com/name> "John"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> 
<http://mydomain.com/person1> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person> 

<http://mydomain.com/person2> <http://mydomain.com/name> "Abraham"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> 
<http://mydomain.com/person2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person>  

<http://mydomain.com/person3> <http://mydomain.com/name> "edward"^^<http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral> 
<http://mydomain.com/person3> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person> 

我想基於名稱字母順序排序 - 這樣的結果應該是亞伯拉罕,愛德華和約翰接着。但結果是亞伯拉罕,約翰和愛德華自愛德華開始以小案例開始。請讓我知道如何做到這一點。

查詢:

select ?person ?name where 
{ 
    ?person <http://mydomain.com/name> ?name. 
    ?person <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://mydomain.com/person>. 
    } order by asc(str(?name)) 

回答

6

SPARQL 1.1:order by asc(UCASE(str(?name)))

+0

感謝安迪,它的工作就像一個魅力:) –