sparql中结果的升序是使用字符串形式的非负整数

sparql中结果的升序是使用字符串形式的非负整数,sparql,rdf,triplestore,graphdb,Sparql,Rdf,Triplestore,Graphdb,我的triple store(GraphDB)中有2000多个资源,我想根据它们的IRI按升序排序,而IRI看起来像: http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#1 http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2 http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#3 ... http://TABLE/240b9f63-66b9-47f

我的triple store(GraphDB)中有2000多个资源,我想根据它们的IRI按升序排序,而IRI看起来像:

http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#1
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#3
...
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2345
在我的图中,所有上述IRI都通过“DE6:complex_Data_Type_has_Member”连接到一个资源。为了获得上述所有IRIs,我执行以下操作:

PREFIX DE6: <http://DE6/DINEN61360#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT ?IRIs_to_Sort WHERE{
         ?Array a DE6:Data_Element;
         DE6:complex_Data_Type_has_Member ?IRIs_to_Sort .


} ORDER BY ?IRIs_to_Sort 
相反,我希望有如下情况:

http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#1
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#3
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#4
...
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2099

这里我遗漏了什么?

虹膜被视为
ORDER BY
的词汇值,这意味着片段ID中的数字被视为文本,而不是单独考虑

一个完整的
ORDER BY
,我认为对你有用,无论你的结果集包括一个或多个IRIs,每个IRIs都有一个或多个frag ID,但只有当所有frag ID都是数字时,它才有效--


如果你的frag ID是数字和字母数字的混合体,事情会变得相当复杂。

顺序是字典式的,因为没有其他方法来比较IRIs。一种解决方法是使用
#
之后的内容,如果所有虹膜都遵循相同的方案,则将其转换为某个数字,并按
的顺序使用。e、 g.
orderby(xsd:long(strafter(str(?IRIs_to_Sort),“#”)
解决了这个问题,谢谢!
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#1
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#3
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#4
...
http://TABLE/240b9f63-66b9-47f1-9e02-bfd03794bbd9#2099
ORDER BY ( xsd:string ( STRBEFORE ( STR ( ?IRIs_to_Sort ), "#" ) ) )
         ( xsd:long ( STRAFTER ( STR ( ?IRIs_to_Sort ), "#" ) ) )