有没有办法加速将rdf文件加载到Sesame?我的文件大小从几MB到几GB的N-triple格式。我在Sesame Cook Book尝试了三种第一种方法,但无济于事。我通过在每500,000行(在cook book中接近2)分割输入文件,在17小时内加载了一个~700MB的文件。芝麻在Windows 7的商用机器上运行。
奖金部分:我想对数据进行推理,但是将推断的数据存储在单独的芝麻存储库中(或者在同一存储库中的另一个上下文/图形中)。基本上我想将数据存储在两个版本中,一个是“常规”rdf,另一个是针对某些查询进行优化的 - 因此需要单独存储它们。我一直在查看CustomGraphQueryInferencer,但还没弄清楚我是否可以使用它来分别存储数据。此外,CustomGraphQueryInferencer似乎大大减慢了加载时间,因此非常缺乏吸引力。任何替代解决方案?
答案 0 :(得分:5)
在17小时内插入500k三倍是荒谬坏;这大约是8个三分之一秒。据我所知,芝麻没有批量插入模式,但你不应该看到 慢的加载速率。
您可能确定没有自动提交;对每个三元组做出承诺,这可能会很长一段时间来解释为什么你的负载率非常低。
关于推理,负载率较低的另一个因素是您正在使用执行实现的推理器。也就是说,每次写入数据库时,都会(重新)计算推断语句并将其保存回数据库。此外,您选择使用的推理器基于查询,因此您在数据库中的加载受到查询回答,真值维护和实现的阻碍。
这可能是负载率很低的很大一部分,尽管如此,它似乎仍然太慢了。但也许结合启用autoCommit,这可能解释它。
您可以在加载所有数据后添加推理器,我不太了解该特定推理器如何工作以了解这是否正确,但从理论上讲,它肯定是可能的。 Sesame邮件列表可能包含有关其工作原理的更多详细信息。
您还可以考虑在查询时执行推理而不是加载时间的解决方案;这不会产生昂贵的写入开销,并且允许您在最适合您的应用程序时使用或不使用推理。这有效地让你有两个版本'数据,一个是推理应用而另一个没有,实际上不必有两个版本或实现推理。