Загрузка (части) дампа Freebase в ArangoDb

Мои поиски в Интернете не дали ничего полезного, и, возможно, никто еще не сделал этого. Хотя я немного обрабатывал дампы freebase и работал с rdf и arangodb, мой опыт все еще очень ограничен, и я хотел бы услышать мнения/предложения/опыт по этой теме.

Несколько вещей, о которых мне интересно:

  • Кто-нибудь когда-нибудь импортировал дамп Freebase в ArangoDb?
  • Есть ли инструмент, который поможет это сделать?
  • Какова будет стратегия, чтобы сделать это вручную?
  • А может быть, это просто плохая идея и не стоит этого делать?

Вот некоторые из проблем, которые я ожидаю:

  • Нет гарантии заказа в данных rdf (афаик). Скажем, меня интересует определенный человек, и некоторая информация, на которую ссылается экземпляр /people/person, появляется в дампе до фактического человека, тогда мне нужно пройти через дамп второй раз, чтобы найти эту ссылочную информацию.
  • Что касается хранения данных, можно создать коллекцию для каждого типа и добавить между ними ссылки или сохранить все свойства в интересующем типе верхнего уровня (согласно схеме /people/person включает /common/topic - с точки зрения объектно-ориентированного программирования freebase выполняет множественное наследование, которое может не поддерживаться выбранным языком (java) )
  • Вероятно, придется пройтись по дампу как минимум дважды, один раз для сбора и сохранения сущностей и их свойств, а другой раз для добавления ребер графа между ними)

Обновить

В настоящее время я прохожу дамп несколько раз. Шаги примерно такие:

  • Разделите 28 ГБ gzip (250 ГБ без сжатия) на более мелкие файлы gzip по 5 миллионов строк, в результате получится около 550 файлов.
  • Просмотрите каждый из файлов, найдите тройки, которые объявляют определенный тип, и сохраните темы (пространство имен freebase + mid) в одном файле для каждого интересующего меня типа.
  • (a) Пройтись по каждому из файлов еще раз, так как теперь я знаю средние значения, я могу собрать полные объекты. Они максимально хранятся в памяти, но сохраняются на диске, по одному файлу json на объект (мы не можем быть уверены, завершен ли объект, пока весь дамп не будет обработан)
  • Просмотрите все файлы на диске и загрузите их в arangodb.

Это работает, но медленно, и мне кажется неэффективным много раз проходить дамп. И будет больше проходов через дамп, во время/после (а) мы обнаруживаем еще много сущностей, связанных с интересующими меня основными сущностями.

И делать миллионы запросов к API бесплатной базы тоже не намного лучше.

Итак, это немного предыстории того, почему меня интересует эта тема, и если бы для этого было готовое решение, было бы неплохо.


person stackmagic    schedule 24.11.2014    source источник


Ответы (1)


То же самое было сделано с данными из Википедии в этом проекте. Я не знаю о дампе Freebase, но он должен быть очень похож на дамп Википедии, не так ли? Шаги, которые вам нужно будет сделать, следующие:

  1. Преобразуйте данные из Freebase в формат JSON в форме, в которой вы хотели бы хранить их в своем экземпляре ArangoDB.
  2. Используйте arangoimp для импорта.
person moonglum    schedule 24.11.2014
comment
Дамп Википедии совсем другой, там у вас есть один узел xml на страницу, а freebase находится в RDF (около 2,7 миллиардов троек). Пожалуйста, смотрите обновление исходного поста. - person stackmagic; 25.11.2014