1

我正在尝试将一组来自 DBpedia 的 RDF 文件上传到我的 Sesame 存储库中。问题是:对于几乎每个 RDF 文件,Sesame 都会给出以下错误:

'whatever_file_is': 'some_value' was not recognised, and could not be verified, with datatype http://dbpedia.org/datatype/rod [line 30121, column 123]

经过一番研究,我发现 DBpedia 没有在 DBpedia Ontology 中发布数据类型,如下所述(摘自http://mappings.dbpedia.org/index.php/Datatype:Rod):

请注意:数据类型(尚未)从 DBpedia Mappings Wiki 复制到 DBpedia ontology。它们在 OntologyDatatypes.scala 中被硬编码,并被添加到 wiki 以供参考。在 wiki 中添加数据类型不会更改本体,并且会导致使用此类数据类型的属性出现错误消息

因此,如果我是正确的,Sesame 在尝试验证这些数据类型时会失败。但我需要上传 RDF 文件。

当我使用 Java 时,我尝试了以下代码让 Sesame 忽略验证:

RepositoryConnection con = repository.getConnection();

Set<RioSetting<?>> set = new HashSet<>();
set.add( BasicParserSettings.VERIFY_DATATYPE_VALUES );
con.getParserConfig().setNonFatalErrors(set);

但错误继续出现。我还尝试了以下代码:

RepositoryConnection con = repository.getConnection();
con.getParserConfig().addNonFatalError( BasicParserSettings.VERIFY_DATATYPE_VALUES );

但奇怪的是,最后一个给出了java.lang.UnsupportedOperationException

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractCollection.add(AbstractCollection.java:252)
    at org.openrdf.rio.ParserConfig.addNonFatalError(ParserConfig.java:134)
    at control.RepositoryControl.loadIntoRepository(RepositoryControl.java:177)

有人知道我应该怎么做才能将 DBpedia 中的 RDF 文件上传到 Sesame 中吗?

谢谢!

4

1 回答 1

3

尝试升级到 Sesame 2.7.1。它刚刚发布,内置了对 DBPedia 数据类型的支持

或者如果你被困在 2.7.0 上,你应该可以这样做:

con.getParserConfig().setNonFatalErrors(new HashSet<RioSetting<?>
        (Arrays.asList(BasicParserSettings.VERIFY_DATATYPE_VALUES,
        BasicParserSettings.FAIL_ON_UNKNOWN_DATATYPES)));

您可能仍会看到有关未知数据类型的消息,但这将是非致命警告而不是错误。

资源:

于 2013-05-19T03:43:07.973 回答