DBpedia和SPARQL:带重音符号的查询不起作用

Dav*_*vid 5 sparql dbpedia

所以我尝试了很多不同的东西,并一直在寻找解决方案,但没有运气......

我的SPARQL查询是

    PREFIX dbp: <http://dbpedia.org/resource/>
    PREFIX dbpedia2: <http://dbpedia.org/property/>


   SELECT ?currentclub
   WHERE {
      dbp:".$term." dbpedia2:currentclub ?currentclub . 
      FILTER langMatches(lang(?currentclub), 'en')
   }
Run Code Online (Sandbox Code Playgroud)

当$ term等于名称中带有重音符号的东西时,它会被搞砸,并且没有给出结果.我尝试了很多不同的东西,但似乎无法让它们中的任何一个起作用.希望得到一些帮助.

谢谢

编辑

我正在使用PHP和curl.这是我根据自己的需要下载和修改的内容......这里是与dbpedia通信的部分.

$searchUrl = 'http://dbpedia.org/sparql?'
      .'query='.urlencode($query)
      .'&format='.$format;
Run Code Online (Sandbox Code Playgroud)

$ query在上面发布,使用的格式是json.

编辑2

这是我正在使用的源代码.https://gist.github.com/380379可能会查看完整的代码,可以让您更好地了解错误.

我将包含重音的姓氏的数据库字段更改为'utf8_unicode_ci',但我仍然卡住了,无法找到任何有效的解决方案.

Rob*_*obV 2

2 您的查询存在问题:

  1. prefix:"something"您不能拥有无效形式的 QName 。如果您需要在其中连接某些内容,那么您不应该使用引号
  2. 您确定您的查询(尤其是重音符号)采用 UTF-8 格式吗?
    如果是的话它应该可以工作。如果没有,那么您可以通过使用以下形式的转义来解决此问题\u0000,其中0000是转义字符的 UTF-8 代码的十六进制表示形式。这在 QName 中应该是允许的

编辑

删除了第 1 点,因为已经看到完整的源代码,很明显这只是 PHP 连接语法,而不是无用的 SPARQL 语法

看过完整的源代码后,代码失败的原因并不明显。我唯一可以提出的其他建议是尝试更改代码以发送该术语的 URI 引用而不是 QName:

 $query =
   "PREFIX dbp: <http://dbpedia.org/resource/>
PREFIX dbp2: <http://dbpedia.org/ontology/>
SELECT ?abstract
WHERE {
<http://dbpedia.org/resource/".$term."> dbp2:abstract ?abstract .
FILTER langMatches(lang(?abstract), 'en')
}";
Run Code Online (Sandbox Code Playgroud)

实际上,我不认为这会产生任何影响,但总是值得一试。

如果错误仍然存​​在,您可以发布一些查询不起作用的示例术语吗