Загрузка (части) дампа Freebase в ArangoDb
Мой веб-поиск не дал ничего полезного, и, возможно, никто еще этого не делал. Несмотря на то, что я провел некоторую обработку дампов в бесплатной базе и работал с rdf и arangodb, мой опыт все еще очень ограничен, и я хотел бы услышать мнения / предложения / опыт по этой теме.
Несколько вещей, которые меня интересуют:
- Кто-нибудь когда-нибудь импортировал FreeBase-дамп в ArangoDb?
- Есть ли инструмент, чтобы помочь достичь этого?
- Какова будет стратегия, чтобы сделать это вручную?
- Или, может быть, это просто плохая идея и не должно быть сделано?
Вот некоторые из проблем, которые я ожидал бы:
- Нет гарантии заказа в данных rdf (afaik). Скажем, я заинтересован в определенном человеке, и некоторая информация, на которую ссылается экземпляр /people/person, появляется в дампе перед фактическим человеком - тогда мне нужно пройти через дамп во второй раз, чтобы найти эту ссылочную информацию
- С точки зрения хранения данных, можно создать коллекцию для каждого типа и добавить ссылки между ними или сохранить все свойства в интересующем типе верхнего уровня (согласно схеме, /people/person включает / common / topic - из OO-перспективная freebase делает множественное наследование, что может не поддерживать язык выбора (java)
- Скорее всего, придется пройти через дамп как минимум дважды, один раз, чтобы собрать и сохранить сущности и их свойства, и еще один раз, чтобы добавить ребра графа между ними)
Обновить
В настоящее время я прохожу через свалку несколько раз. Шаги примерно таковы:
- Разбейте gzip 28 ГБ (250 ГБ без сжатия) на файлы меньшего размера gzip по 5 миллионов строк, в результате получается около 550 файлов
- Пройдите через каждый из файлов, найдите тройки, которые объявляют определенный тип, и сохраните темы (пространство имен freebase + mid) в одном файле для каждого интересующего меня типа.
- (а) Снова пройдитесь по каждому файлу, так как теперь я знаю средние значения, я могу собрать все объекты. Они хранятся в памяти как можно больше, но сохраняются на диске, по одному файлу json на объект (мы не можем быть уверены, что объект завершен, пока не будет обработан весь дамп)
- Пройдите через все файлы на диске и загрузите их в arangodb
Это работает, но медленно и кажется мне неэффективным много раз проходить через дамп. И будет больше проходов через дамп, во время / после (a) мы обнаруживаем еще много сущностей, которые связаны с основными сущностями, которые меня интересуют.
И делать миллионы запросов к API freebase тоже будет не намного лучше.
Так что это немного предыстории о том, почему я заинтересован в этой теме, и если бы было готовое решение для этого, было бы неплохо.
1 ответ
Подобное было сделано с данными из Википедии в этом проекте. Я не знаю о дампе Freebase, но он должен быть очень похож на дамп из Википедии, не так ли? Шаги, которые вам нужно сделать, следующие:
- Преобразуйте данные из Freebase в формат JSON в форме, которую вы хотели бы сохранить в своем экземпляре ArangoDB.
- Используйте arangoimp для импорта.