我正在尝试使用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具有摘要和缩略图,也不会返回任何结果。
语法还可以,因为我可以从中得到结果:
SELECT * WHERE
{
<http://dbpedia.org/resource/Elvis_Presley> dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail .
filter(langMatches(lang(?abstract),"en"))
}
有人知道为什么吗?
我相信您不能将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")).
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句