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
,这将是一件好事