带有扩展字符的 sparql
sparql with extended characters
我正在尝试使用 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"))}
我在这里读到 post,建议对 unicode 使用 \u 开关,但这没有用,即 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"))
}
它现在 "succeeds" 但没有 return 任何结果,即使我在查看指定页面时可以看到 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")).
}
我正在尝试使用 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"))}
我在这里读到 post,建议对 unicode 使用 \u 开关,但这没有用,即 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"))
}
它现在 "succeeds" 但没有 return 任何结果,即使我在查看指定页面时可以看到 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")).
}