是否可以使用openrdf框架中的解析器将单行文本解析为openrdf模型? 我想解析巨大的nquads文件,并希望使用
org.openrdf.rio.nquads.NQuadsParser
执行此任务。我的梦想解决方案将返回org.openrdf.model.Statement
,其中包含主题,谓词,对象和上下文的正确实例。我知道班级本身没有办法做到这一点。
由于我尝试解析非常大的文件,我无法将它们完全加载到存储库中。我可能会将文件块解析到存储库中,评估然后清除存储库,为下一个块腾出空间。
我想知道是否有更好的方法从文本文件的行中获取语句?
对于某些上下文,我想收集有关Huge Nquads Files的统计信息,我需要对其进行评估,但不需要存储大部分语句。
答案 0 :(得分:2)
无法解析单行AFAIK,但Sesame确实有一个API,允许您控制解析语句的操作,这样可以避免代码将语句实际存储到存储库中。
有关仅计算三元组的简单示例,请参阅documentation,但您可以通过这种方式轻松完成更复杂的处理。
答案 1 :(得分:2)
经过进一步调查,我意识到除了
之外还有更多的ParserSettingsorg.openrdf.rio.helpers.BasicParserSettings
具体来说,
NTriplesParserSettings.FAIL_ON_NTRIPLES_INVALID_LINES
可以防止解析器在发现无效行时失败。例如。设置
parser.getParserConfig().addNonFatalError(NTriplesParserSettings.FAIL_ON_NTRIPLES_INVALID_LINES);
会将您的解析器配置为更容错。这允许在嘈杂的nquads / ntriples文件中解析“好”三元组。