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