2

是否可以使用 openrdf 框架中的解析器将单行文本解析为 openrdf 模型?我想解析巨大的 nquads 文件并想使用

org.openrdf.rio.nquads.NQuadsParser

对于这个任务。我梦寐以求的解决方案将返回一个org.openrdf.model.Statement, 带有适当的主语、谓语、宾语和上下文实例。我知道班级本身没有这样做的方法。由于我尝试解析非常大的文件,因此无法将它们完全加载到存储库中。我可能会将文件的块解析到存储库中,评估然后清除存储库,为下一个块腾出空间。我想知道是否有更好的方法从文本文件的行中获取语句?

在某些情况下,我想收集有关Huge Nquads Files的统计信息,为此我需要评估每个语句,但不需要存储其中的大部分。

4

2 回答 2

2

无法解析单行 AFAIK,但 Sesame 确实有一个 API,可让您控制对已解析语句的处理,这将避免您的代码需要将语句实际存储到存储库中。

有关仅计算三元组的简单示例,请参阅文档,但您可以通过这种方式轻松进行更复杂的处理。

于 2013-07-13T17:15:59.200 回答
2

经过进一步调查,我意识到除了

org.openrdf.rio.helpers.BasicParserSettings

具体来说,

NTriplesParserSettings.FAIL_ON_NTRIPLES_INVALID_LINES

可以防止解析器在发现无效行时失败。例如设置

parser.getParserConfig().addNonFatalError(NTriplesParserSettings.FAIL_ON_NTRIPLES_INVALID_LINES);

会将您的解析器配置为更具容错性。这允许解析嘈杂的 nquads/ntriples 文件中的“好”三元组。

于 2013-07-15T23:55:26.473 回答