dbpedia';s按最后一个字符进行snorql sparql排序

dbpedia';s按最后一个字符进行snorql sparql排序,sparql,dbpedia,Sparql,Dbpedia,我想按最后一个字符对?Artis进行排序。我试着按订购, 但结果是按其第一个字符排序的 PREFIX onto: <http://dbpedia.org/ontology/> PREFIX xs: <http://www.w3.org/2001/XMLSchema#> SELECT * WHERE { ?Artis onto:birthDate ?Tanggal_Lahir . FILTER (?Tanggal_Lahir= "1990-01-05"^^xs:da

我想按最后一个字符对
?Artis
进行排序。我试着按订购, 但结果是按其第一个字符排序的

PREFIX onto: <http://dbpedia.org/ontology/>
PREFIX xs: <http://www.w3.org/2001/XMLSchema#>

SELECT * WHERE {
 ?Artis onto:birthDate ?Tanggal_Lahir . 
 FILTER (?Tanggal_Lahir= "1990-01-05"^^xs:date)
} ORDER BY DESC (?Artis) LIMIT 10
前缀到:
前缀xs:
选择*WHERE{
阿提斯:出生日期?唐加卢拉希尔。
过滤器(?Tanggal_Lahir=“1990-01-05”^^xs:date)
}按描述的顺序(?Artis)限制10

自SPARQL 1.1以来,您可以使用
BIND
将值绑定到变量。剩下的只是字符串破解,例如替换+正则表达式,如本例中所示:

replace(strafter(str(?Artis), str(dbr:))
将IRI转换为字符串
一些示例

然后

通过正则表达式拾取最后一个字符,
$1
表示正则表达式中的组

最后一个问题是

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT * WHERE {
 ?Artis dbo:birthDate ?Tanggal_Lahir . 
 FILTER (?Tanggal_Lahir = "1990-01-05"^^xsd:date)
 BIND(replace(strafter(str(?Artis), str(dbr:)), ".*(.)$", "$1") as ?lastChar)
} 
ORDER BY DESC (?lastChar) 
LIMIT 10
注意,这实际上也会选择一个字符,如
结果值,例如,对于资源,结果将是

+-----------------------------------------------------------+-------------+---+
| http://dbpedia.org/resource/Stephen_Stirling_(footballer) | 1990-01-05  | ) |
+-----------------------------------------------------------+-------------+---+
此外,这仅适用于以名称空间开头的DBpedia资源。对于任意数据集,省略
strafter
部分,只使用给定的正则表达式


作为旁注,如果您坚持使用常见的名称空间声明,例如,
dbo
而不是
on
xsd
而不是
xs
,这将是一件好事。因为SPARQL 1.1,您可以使用
BIND
将值绑定到变量。剩下的只是字符串破解,例如替换+正则表达式,如本例中所示:

replace(strafter(str(?Artis), str(dbr:))
将IRI转换为字符串
一些示例

然后

通过正则表达式拾取最后一个字符,
$1
表示正则表达式中的组

最后一个问题是

PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbr: <http://dbpedia.org/resource/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT * WHERE {
 ?Artis dbo:birthDate ?Tanggal_Lahir . 
 FILTER (?Tanggal_Lahir = "1990-01-05"^^xsd:date)
 BIND(replace(strafter(str(?Artis), str(dbr:)), ".*(.)$", "$1") as ?lastChar)
} 
ORDER BY DESC (?lastChar) 
LIMIT 10
注意,这实际上也会选择一个字符,如
结果值,例如,对于资源,结果将是

+-----------------------------------------------------------+-------------+---+
| http://dbpedia.org/resource/Stephen_Stirling_(footballer) | 1990-01-05  | ) |
+-----------------------------------------------------------+-------------+---+
此外,这仅适用于以名称空间开头的DBpedia资源。对于任意数据集,省略
strafter
部分,只使用给定的正则表达式

作为旁注,如果您坚持使用常见的名称空间声明,例如
dbo
而不是
on
xsd
而不是
xs
,这将是一件好事