openrdf芝麻:是否可以解析单行?

时间:2013-07-13 09:45:14

标签: java parsing rdf sesame

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

org.openrdf.rio.nquads.NQuadsParser

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

对于某些上下文,我想收集有关Huge Nquads Files的统计信息,我需要对其进行评估,但不需要存储大部分语句。

2 个答案:

答案 0 :(得分:2)

无法解析单行AFAIK,但Sesame确实有一个API,允许您控制解析语句的操作,这样可以避免代码将语句实际存储到存储库中。

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

答案 1 :(得分:2)

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

之外还有更多的ParserSettings
org.openrdf.rio.helpers.BasicParserSettings

具体来说,

NTriplesParserSettings.FAIL_ON_NTRIPLES_INVALID_LINES

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

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

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