【发布时间】:2015-03-12 13:24:13
【问题描述】:
我使用 OpenRdf 和 Sparql 从 DBPedia 收集数据,但在针对 DBPedia Sparql 端点运行的以下查询中遇到一些错误:
CONSTRUCT{
?battle ?relation ?data .
}
WHERE{
?battle rdf:type yago:Battle100953559 ;
?relation ?data .
FILTER(?relation != owl:sameAs)
}
LIMIT 1
OFFSET 18177
我修改了 LIMIT 和 OFFSET 来指出引发问题的具体结果。
回复是这个:
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix ns1: <http://en.wikipedia.org/wiki/> .
<http://dbpedia.org/resource/Mongol%E2%80%93Jin_Dynasty_War> foaf:isPrimaryTopicOf ns1:Mongol–Jin_Dynasty_War .
问题是 ns1:Mongol–Jin_Dynasty_War 实体包含减号,因此在使用 OpenRdf 的 Java 应用程序中运行此查询时出现以下异常:
org.openrdf.query.QueryEvaluationException: org.openrdf.rio.RDFParseException: Expected '.', found '-' [line 3]
有什么办法可以规避这个问题吗?
谢谢!
【问题讨论】:
-
这不是减号,而是破折号 (
U+2013) 在该位置是非法字符,因此这似乎是 DBPedia Turtle 编写器中的错误。您最好的选择可能是要求以不同格式(例如 NTriples)输出。我不熟悉 OpenRDF API,所以我不确定您有哪些选择。 -
@Alex 感谢您的提示,我能够将输出设置为 NTriples,这完全解决了问题。
标签: java rdf sparql dbpedia sesame