2

我使用 AllegroGraph 和 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))
4

1 回答 1

9

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

于 2013-04-18T20:55:29.013 回答