我正在尝试使用sparql查询dbpedia并遇到重音等扩展字符的问题。
例如Albrecht_Dürer的这个查询
select ?abstract ?thumbnail where {
dbpedia:Albrecht_D%C3%BCrer dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail .
filter(langMatches(lang(?abstract),"en"))}
我在这里读了一篇文章,建议使用\ u开关来实现unicode,但这不起作用,即dbpedia:Albrecht_D \ uC3BCrer
在每种情况下,当我在Virtuoso中尝试时,我从SPARQL编译器中收到错误。我做错了什么?
更新
我设法将URL放入如下:
SELECT * WHERE
{
<http://dbpedia.org/resource/Albrecht_Dürer> dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail .
filter(langMatches(lang(?abstract),"en"))
}
它现在“成功”但是没有返回任何结果,即使我看到Albrecht_Dürer在查看指定的页面时有一个abtract和缩略图。
语法正常,因为我得到了这样的结果:
SELECT * WHERE
{
<http://dbpedia.org/resource/Elvis_Presley> dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail .
filter(langMatches(lang(?abstract),"en"))
}
任何人都知道为什么?
答案 0 :(得分:1)
我相信你不能把unicode字符放在URI中。你可以做的是通过正则表达式过滤它们。以下是我提出的建议:
select distinct ?abstract ?thumbnail where
{?uri rdfs:label ?label.
?uri dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail .
FILTER (REGEX(STR(?label), "^Albrecht D\u00fcrer")) .
FILTER(langMatches(lang(?abstract),"en")).
}