带有扩展字符的sparql

罗伯·塞奇威克

我正在尝试使用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"))
}

有人知道为什么吗?

阿耳emi弥斯

我相信您不能将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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章