所以我尝试了很多不同的东西,并一直在寻找解决方案,但没有运气......
我的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')
}
当$ term等于名称中带有重音符号的东西时,它会被搞砸,并且没有给出结果。我尝试了很多不同的东西,但似乎无法让它们中的任何一个起作用。希望得到一些帮助。
由于
修改
我正在使用PHP和curl。这是我根据自己的需要下载和修改的内容......这里是与dbpedia通信的部分。
$searchUrl = 'http://dbpedia.org/sparql?'
.'query='.urlencode($query)
.'&format='.$format;
$ query在上面发布,使用的格式是json。
修改2
这是我正在使用的源代码。 https://gist.github.com/380379或许查看完整的代码可以让您更好地了解错误。
我将包含重音的姓氏的数据库字段更改为“utf8_unicode_ci”,但我仍然卡住了,找不到任何有用的解决方案。
答案 0 :(得分:2)
2您的查询问题:
prefix:"something"
形式的QName无效。如果您需要在那里连接某些内容,那么您不应该使用引号\u0000
形式的转义来解决这个问题,其中0000
是转义字符的UTF-8代码的十六进制表示。这应该在QName 修改强>
删除了Point 1,因为已经看到完整的源代码,它只是PHP的连接语法,而不是dud 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')
}";
实际上,我不希望这会有任何不同,但总是值得一试。
如果错误仍然存在,您可以发布一些查询不起作用的示例术语
答案 1 :(得分:2)
尝试记录编码查询,对于Île-de-France(区域),各种口音应该像这样编码:
select distinct ?p ?o where {
<http://dbpedia.org/resource/%C3%8Ele-de-France_(region)> ?p ?o
}
因此'Î'字符以UTF-8编码,如%C3%8E,转换表可在以下位置检索:http://www.utf8-chartable.de/
我不是PHP开发人员,但应该有一个UTF-8编码库可以帮助你。