我的网络搜索没有发现任何有用的东西,也许还没有人做过这件事.虽然我已经完成了一些处理freebase转储并使用rdf和arangodb,但我的经验仍然非常有限,我想听听有关该主题的意见/建议/经验.
我想知道的一些事情:
有没有人曾经将一个freebase转储导入ArangoDb?
有没有工具来帮助实现这一目标?
手动执行此操作的策略是什么?
或许这只是一个坏主意,不应该这样做?
我期待的一些挑战是:
rdf数据中没有订购保证(afaik).假设我对某个人感兴趣并且/ people/person实例引用的一些信息出现在实际人员面前的转储中 - 然后我必须再次通过转储来查找此参考信息
在存储数据方面,可以为每个类型创建一个集合,并在它们之间添加引用,或者保存一个人感兴趣的顶层类型的所有属性(根据模式,a / people/person includes/common/topic - 来自OO - 相应的freebase会进行多重继承,这可能是选择的语言(java)不支持)
人们可能不得不至少两次通过转储,一次收集和存储实体及其属性,另一次在它们之间添加图形边缘)
更新
目前,我多次通过垃圾场.步骤大致如下:
将28GB gzip(250GB未压缩)分成5M行的较小gzip文件,这导致大约550个文件
转到每个文件,查找声明某种类型的三元组并将主题(freebase命名空间+ mid)存储在每个我感兴趣的类型的文件中
(a)再次通过每个文件,因为我现在知道中,我可以组装完整的对象.它们尽可能地保存在内存中,但是持久化到磁盘,每个对象一个json文件(在整个转储处理之前我们无法确定对象是否完整)
转到磁盘上的所有文件并将它们加载到arangodb中
它可以工作,但它很慢并且让我感到效率很低,无法多次通过转储.在(a)我们发现更多与我感兴趣的核心实体相关的实体时,将会有更多的传递通过转储.
并且向freebase api提出数百万个请求也不会好得多.
这就是为什么我对这个主题感兴趣的一些背景知识,如果有一个预先制定的解决方案,那就太好了.