【问题标题】:Loading (parts of) a Freebase dump into ArangoDb将 Freebase 转储(部分)加载到 ArangoDb
【发布时间】: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 发出数百万个请求也不会好多少。

所以这就是我为什么对这个主题感兴趣的一些背景知识,如果有一个预制的解决方案会很好。

【问题讨论】:

    标签: freebase arangodb


    【解决方案1】:

    对来自维基百科this project 的数据进行了类似的处理。虽然我不知道 Freebase 转储,但它应该与 Wikipedia 转储非常相似,不是吗?您需要执行的步骤如下:

    1. 将 Freebase 中的数据转换为 JSON 格式,您希望将它们存储在您的 ArangoDB 实例中。
    2. 使用arangoimp 进行导入。

    【讨论】:

    • 维基百科转储完全不同,每页有一个 xml 节点,而 freebase 位于 RDF 中(约 27 亿个三元组)。请查看原帖的更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2019-05-10
    • 2016-09-04
    相关资源
    最近更新 更多