sparql扩展字符

时间:2015-02-22 11:33:58

标签: sparql dbpedia virtuoso

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

任何人都知道为什么?

1 个答案:

答案 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")).
}