1

我正在尝试将来自 DBPedia 资源的 URI“ http://dbpedia.org/resource/Brazil ”添加到 Sesame 2.7.1。但是 Sesame 2.7.1 停止并出现以下错误:

'1000000000000' 不是数据类型http://www.w3.org/2001/XMLSchema#int的有效值

更多资源也会出现同样的错误,我不知道如何解决。在我的 Java 代码中(并基于我的其他问题的答案),我尝试了:

RepositoryConnection con = repository.getConnection();

con.getParserConfig().addNonFatalError( BasicParserSettings.VERIFY_DATATYPE_VALUES );
con.getParserConfig().addNonFatalError( BasicParserSettings.FAIL_ON_UNKNOWN_DATATYPES );

con.add(uri.toURL(), null, RDFFormat.RDFXML);
con.close();

但是芝麻仍然坚持错误。

Sesame 2.6.9 没有这个问题(它接受了相同的资源而没有问题)。

有什么理由发生这种情况吗?有没有办法解决它?还是我应该回到 Sesame 2.6.9.?

谢谢!

4

2 回答 2

3

发生这种情况的原因是在 Sesame 2.7 中,数据类型验证变得更加严格。事实证明,不幸的是,DBPedia 包含大量数据类型无效的数据。

最好的解决办法是推动 DBPedia 维护人员清理他们的数据,但当然,说起来容易做起来难 :) 同时,您当然可以自己编辑 dbpedia 文件来修复这些问题,正如 Sesame 报告的那样他们。

我假设您正在使用 HTTPRepository(或 SPARQLRepository)尝试将文件加载到 Sesame 服务器上运行的存储库中。在这种情况下,将解析器配置为忽略错误(使用addNonFatalError)没有任何影响,因为您使用它配置的解析器是客户端解析器,而不是用于实际解析数据的解析器(从 URL 上传文件时)通过 HTTPConnection,数据由服务器上的解析器解析,而不是客户端的解析器)。

在 Sesame 2.7.1 中,不幸的是没有简单的方法解决这个问题:Sesame 服务器中使用的解析器配置是固定的。不过,我们正在研究一种机制,以便为即将到来的 2.7.2 版本配置此功能。

于 2013-05-28T02:47:23.810 回答
0

尝试

con.getParserConfig()
                .setNonFatalErrors(
                        new HashSet<RioSetting<?>>(
                                Arrays.asList(BasicParserSettings.FAIL_ON_UNKNOWN_DATATYPES)));
于 2013-05-25T19:25:19.420 回答