加快rdf文件的加载速度

加快rdf文件的加载速度,rdf,sesame,Rdf,Sesame,有没有办法加速将rdf文件加载到Sesame中?我有N-triple格式的文件,大小从几MB到几GB不等。我在年尝试了前三种方法,但都没有用。我在17个小时内加载了一个大约700MB的文件,每500000行分割一次输入文件(中的方法2)。Sesame正在一台装有Windows7的商品机器上运行 附加部分:我希望对数据执行推断,但将推断出的数据存储在单独的sesame存储库中(或者存储在同一存储库中的另一个上下文/图形中)。本质上,我希望将数据存储在两个版本中,一个是“常规”rdf,另一个是针对特

有没有办法加速将rdf文件加载到Sesame中?我有N-triple格式的文件,大小从几MB到几GB不等。我在年尝试了前三种方法,但都没有用。我在17个小时内加载了一个大约700MB的文件,每500000行分割一次输入文件(中的方法2)。Sesame正在一台装有Windows7的商品机器上运行


附加部分:我希望对数据执行推断,但将推断出的数据存储在单独的sesame存储库中(或者存储在同一存储库中的另一个上下文/图形中)。本质上,我希望将数据存储在两个版本中,一个是“常规”rdf,另一个是针对特定查询进行优化的—因此需要分别存储它们。我一直在查看,但没有弄清楚是否可以使用它单独存储数据。此外,似乎会大大降低加载时间,因此非常不吸引人。任何替代方案?

在17小时内插入500个三倍体是荒谬的糟糕;大约是8个三倍每秒。据我所知,Sesame没有批量插入模式,但是你不可能看到加载速率如此之慢

你可以确保你没有自动提交;这将对每三个进行提交,这将大大有助于解释为什么您的负载率如此之低

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

这可能是低负载率的很大一部分,尽管如此,它似乎仍然太慢了。但也许再加上启用了自动提交,这就可以解释它了

在加载所有数据后,您可能可以添加推断器,我不知道该特定推断器是如何工作的,因此不知道这是否正确,但从理论上讲,这肯定是可能的。芝麻邮件列表可能有更多关于它如何工作的细节


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

我不确定加载速率是否真的那么差,OP说他把原始文件分成了500k个块,但他没有说他有多少个块。这17个小时似乎是用来加载所有的Chunk。我制作了一个java jar文件,它加载了一个数据集,包含了所有依赖项,并尝试在我自己的Linux笔记本电脑上运行它。根据varisous的选项,我得到大约10000-20000个三元组/秒。当我将jar和数据集文件传输到Windows计算机(CPU和RAM更强大,磁盘可能类似)时,我只得到大约50-100个三倍/秒。源代码是:禁用自动提交加速了最初的三元组(前10k在~1s内),但随后开始下降(接下来10k在55s内)。运行方式:java-jar sesam-1.1-jar-with-dependencies.jar--load--chunk 10k tmp customer.ttlI可能会添加一个更正:17个小时用于整个数据集,即10个约70MB的文件,每个文件包含500000个三元组(最后一个稍少一点的文件除外),总计480万,这意味着平均加载时间为78个三元组/秒,这仍然非常缓慢。如果你没有定期提交,除了推断和加载工作之外,你肯定遇到了GC问题。您对代码的测量可能比对芝麻的测量要多。没有芝麻帆会质疑我所知道的时间推理;如果需要查询时间推理,您需要一个与芝麻兼容的第三方解决方案。