tdbloader2的加载错误:IRI中的非法字符

时间:2016-04-05 14:57:08

标签: encoding jena apache-jena tdb

我正在尝试复制DBpedia进行实验。

我从以下网址下载最新的DBpedia数据集:http://downloads.dbpedia.org/2015-10/core/ 并存储一个目录dbp_201510/

我尝试使用tdbloader2加载数据集。

tdbloader2 --loc tdb dbp_201510/*

但是,我收到以下错误。

ERROR [line: 2, col: 145] Illegal character in IRI (codepoint 0x60, '`'): <http://www4.wiwiss.fu-berlin.de/gutendata/resource/people/[`]...>
org.apache.jena.riot.RiotException: [line: 2, col: 145] Illegal character in IRI (codepoint 0x60, '`'): <http://www4.wiwiss.fu-berlin.de/gutendata/resource/people/[`]...> at org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:136)
at org.apache.jena.riot.lang.LangEngine.raiseException(LangEngine.java:165)
at org.apache.jena.riot.lang.LangEngine.nextToken(LangEngine.java:108)
at org.apache.jena.riot.lang.LangNTriples.parseOne(LangNTriples.java:71)
at org.apache.jena.riot.lang.LangNTriples.runParser(LangNTriples.java:58)
at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTLang.read(RDFParserRegistry.java:176)
at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:861)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:667)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:637)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:626)
at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:617)
at org.apache.jena.tdb.store.bulkloader2.CmdNodeTableBuilder.exec(CmdNodeTableBuilder.java:165)
at jena.cmd.CmdMain.mainMethod(CmdMain.java:93)
at jena.cmd.CmdMain.mainRun(CmdMain.java:58)
at jena.cmd.CmdMain.mainRun(CmdMain.java:45)
at org.apache.jena.tdb.store.bulkloader2.CmdNodeTableBuilder.main(CmdNodeTableBuilder.java:85)

另外,我收到了很多警告,如下所示。

WARN  [line: 92881, col: 1 ] Bad IRI: <http://dbpedia.org/resource/Ranma_½> Code: 56/COMPATIBILITY_CHARACTER in PATH: TODO
WARN  [line: 92882, col: 1 ] Bad IRI: <http://dbpedia.org/resource/Ranma_½> Code: 47/NOT_NFKC in PATH: The IRI is not in Unicode Normal Form KC.

我使用Apache Jena 3.0.1。

我正在寻找避免此错误的方法。 此外,有没有一个很好的方法加载没有警告。

我为之前版本的DBpedia(http://downloads.dbpedia.org/2015-04/core/)做了同样的事情,并且成功完成了加载,没有任何警告和错误。

1 个答案:

答案 0 :(得分:1)

加载前数据应合法。 0x60,'`'在URI中不合法。也许你想用%60替换它(它是一个不同的URI)。

在许多大型数据集中,数据并不完美。在加载之前使用“riot --validate”进行检查是值得的。

警告只是警告,而不是错误,并指出UTF-8不是标准首选形式,可能会导致以后出现匹配问题。看起来½可以用UTF-8中的不同方式编写。

(我确信DBpedia团队会很感激一些反馈。)