Как настроить neo4j с помощью dBpedia ontop приложения ruby-on-rails?

Я пытаюсь использовать dBpedia с neo4j наверх ruby on rails.

предполагая, что я установил СУБД Neo4j и скачал один из наборы данных dBpedia.

как импортировать dbpedia dataset в neo4j ?

2 ответов


самый простой способ загрузить dbpedia в Neo4j-использовать dbpedia4neo библиотека. Это Java-библиотека, но вам не нужно знать Java, потому что все, что вам нужно сделать, это запустить исполняемый файл.

вы можете переписать это в JRuby, если хотите, но обычный Ruby не будет работать, потому что он полагается на проектов, библиотека Java без эквивалента Ruby.

вот два ключевых файла, которые обеспечивают загрузку процедура.

  1. https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/DBpediaLoader.java
  2. https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/TripleHandler.java

здесь описание того, что участвует.

Blueprints переводит данные RDF в графическое представление. Чтобы понять, что происходит под капотом, см. Чертежи Паруса Ouplementation:

после загрузки файлов дампа dbpedia, вы должны быть в состоянии построить dbpedia4neo библиотека Java и запустите ее без изменения кода Java.

во-первых, клонировать вилку oleiade репозитория GitHub и изменить на .

чтобы загрузить dbpedia, используйте maven для запуска исполняемого файла:

$ mvn exec:java \
  -Dexec.mainClass=org.acaro.dbpedia4neo.inserter.DBpediaLoader \
  -Dexec.args="/path/to/dbpedia-dump.nt"

дамп dbpedia большой, поэтому для загрузки потребуется некоторое время.

теперь, когда данные загружены, вы можете получить доступ к графике в одном из двух способов:--16-->

  1. используйте JRuby и Blueprints-Neo4j API напрямую.
  2. используйте обычный Рубин и Rexster REST server, который похож на сервер Neo4j, за исключением того, что он поддерживает несколько баз данных графов.

пример создания клиента Rexster см. В разделе Bulbs, написанная мной платформа Python, которая поддерживает как сервер Neo4j, так и Rexster.

другим подходом ко всему этому было бы обработать файл дампа dbpedia RDF в Ruby, записать узлы и отношения к CSV-файлу и использовать импортер партии Neo4j, чтобы загрузить его. Но для этого потребуется, чтобы вы вручную переведите данные RDF в отношения Neo4j.


Как я вижу, у вас есть два варианта.

  1. вы можете либо попытаться реализовать такой подход, как этот точно, или вилка РЕПО за этим подходом (или другим, как он) и расширить/исправить его, чтобы соответствовать вашим целям.

  2. сделайте это сами, с нуля. Вот общий подход:

проанализируйте набор данных dbpedia в формате, подходящем для методов вставки neo4j. Есть библиотеки, которые существуют как openRDF, которые существуют для обработки данных. Если вы не планируете тратить время на исследование, которое лучше всего соответствует вашим потребностям, существующее решение, которое я связал выше, уже реализует эту библиотеку.

затем вставьте отформатированные данные в БД neo4j. Один из методов для достижения этого - через neo4j Пакетная Вставка компонент. Обратите внимание, что это средство, как они заявляют, предназначено для начального импорта (поскольку оно не является потокобезопасным и нетранзакционный, другими словами, не совместимый с кислотой). Так что это действительно зависит от вашего варианта использования.

мои 2 цента в том, что вы используете что-то уже там, если эта функциональность не является ядром того, что вы разрабатываете. Поскольку это то, что будет больно строить, и еще больше боль, чтобы построить что-то, что работает эффективно.