rdf - 加速 rdf 文件的芝麻加载

标签 rdf sesame

有什么办法可以加快 rdf 文件加载到 Sesame 中的速度吗?我有 N-triple 格式的文件,大小从几 MB 到几 GB。我已经尝试了 Sesame Cook Book 中的前三种方法,但无济于事。我通过每 500,000 行分割输入文件(在 cook book 中的方法 2),在 17 小时内加载了一个 ~700MB 的文件。 Sesame 在装有 Windows 7 的商用机器上运行。

奖励部分:我想对数据进行推理,但将推断的数据存储在单独的芝麻存储库中(或者在同一存储库中的另一个上下文/图中)。本质上,我想将数据存储在两个版本中,一个是“常规”rdf,另一个是针对某些查询进行了优化 - 因此需要单独存储它们。我一直在看CustomGraphQueryInferencer ,但还没有弄清楚我是否可以用它来单独存储数据。此外,CustomGraphQueryInferencer似乎大大减慢了加载时间,从而使其非常没有吸引力。任何替代解决方案?

最佳答案

在 17 小时内插入 500k 三元组是 荒唐坏的;这大约是 8 个三元组/秒。据我所知,Sesame 没有批量插入模式,但是您不可能看到加载速度那么慢。

您可能会确保没有启用 autoCommit;这将对每个三元组进行提交,这对于解释为什么您的加载率如此低的原因大有帮助。

关于推理,加载率低的另一个因素是您使用的是执行物化的推理器。也就是说,每次写入数据库时​​,推断的语句都会(重新)计算并保存回数据库中。此外,您选择使用的推理器基于查询,因此您加载到数据库中会受到查询回答、真理维护和物化的阻碍。

这可能是负载率不佳的很大一部分,尽管如此,它似乎仍然太慢了。但也许结合启用了 autoCommit,这可能会解释它。

您可能可以在加载所有数据后添加推理器,我对特定推理器的工作原理知之甚少,无法知道这是否正确,但从理论上讲,这当然是可能的。 Sesame 邮件列表可能包含有关其工作原理的更多详细信息。

您还可以考虑在查询时而不是加载时执行推理的解决方案;这不会产生昂贵的写入开销,并且还允许您在最适合您的应用程序时使用或不使用推理。这将有效地让您拥有数据的两个“版本”,一个应用了推理,另一个没有,实际上不必有两个版本或实现推理。

关于rdf - 加速 rdf 文件的芝麻加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22528957/

相关文章:

python - 对 Python 的 cURL 请求(使用 multipart/form-data)

java - Sparql Select Query 适用于 Sesame-Workbench,但不适用于 Java

Java RDF 验证

seo - RDFa 面包屑

rdf - 您是否使用微格式、RDF、都柏林核心或其他类型的语义标记?

java - 如何同时加载和查询 RDF

java - 如何在 Java 中使用 Openrdf 来使用 OWL.INVERSEOF

java - 如何删除耶拿的 UnionClass

web - OSGi 和芝麻与 OWLIM

java - 在 Tomcat 6 的 List Applications 中找不到已部署的应用程序