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