2012-08-31 12 views
10

neo4jオンタップruby on railsdBpediaを使用しようとしています。ruby​​-on-railsアプリケーションのdBpedia ontopでneo4jを設定するには?

neo4jをインストールし、dBpedia datasetsのいずれかをダウンロードしたとします。

dbpediaデータセットをneo4jにインポートするにはどうすればよいですか?

+2

新しいneo4j.rbドキュメントの別のリンク:https://github.com/andreasronge/neo4j/wiki –

答えて

8

dbpediaをNeo4jにロードする最も簡単な方法は、dbpedia4neoライブラリを使用することです。これはJavaライブラリですが、実行可能ファイルを実行するだけでJavaを知る必要はありません。

JRubyでこれを書き換えることはできますが、Rubyに相当するJavaライブラリであるBlueprintsに依存しているため、通常のRubyは動作しません。

ロード手順を示す2つのキーファイルがあります。ここで

  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

description of what's involvedです。

BlueprintsはRDFデータをグラフ表現に変換しています。どのようなことが起こっているのかを理解するには、Blueprints Sail Ouplementationを参照してください。

dbpediaダンプファイルをダウンロードした後、dbpedia4neo Javaライブラリをビルドし、Javaコードを変更せずに実行できるはずです。(Oleiadeのフォークはsail.initialize();https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJを参照してくださいないマイナーな青写真の更新を含みます)

$ git clone https://github.com/oleiade/dbpedia4neo.git 
$ cd dbpedia4neo 

を:

まず、GitHubのリポジトリのoleiadeのフォークのクローンを作成し、dbpedia4neoディレクトリに変更します。

ビルドする前に、現在のBlueprintsバージョンと現在のBlueprintsリポジトリ(Sonatype)を使用するようにpom.xmlを更新する必要があります。

この、オープンpom.xmlを行うと、dependencies部分の上部に、0.90.6からTinkerPop青写真のすべてのバージョンを変更します。

あなたがファイルにありますが、ファイルの末尾にrepositoriesセクションにSonatypeリポジトリを追加します。

<repository> 
    <id>sonatype-nexus-snapshots</id> 
    <name>Sonatype Nexus Snapshots</name> 
    <url>https://oss.sonatype.org/content/repositories/releases</url> 
</repository> 

は、ファイルを保存して、Mavenを使用して、それを構築する:

$ mvn clean install 

これにより、すべての依存関係がダウンロードされてインストールされ、targetディレクトリにjarファイルが作成されます。実行可能ファイルを実行するために、使用MavenをDBpediaのロードするに

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

DBpediaのダンプので、これはロードに時間がかかるだろう大きいです。

今すぐデータがロードされていることを、次のいずれかの方法で、グラフにアクセスすることができます直接

  1. 使用JRubyと青写真-のNeo4jのAPI。
  2. 通常のRubyサーバーとRexster RESTサーバーを使用します。これはNeo4jサーバーに似ていますが、複数のグラフデータベースをサポートしています。

Rexsterクライアントを作成する方法の例は、Neo4j ServerとRexsterの両方をサポートするPythonフレームワークのBulbsを参照してください。

  • https://github.com/espeed/bulbs/tree/master/bulbs/rexster
    • http://bulbflow.com/
    • https://github.com/espeed/bulbs

      これはDBpediaのRDFは、CSVファイルへのノードとの関係を書き出し、Rubyでファイルをダンプ処理することであろうすべての別のアプローチ、およびNeo4j batch importerを使用してロードしてください。しかし、これでは、RDFデータを手動でNeo4j関係に変換する必要があります。

    3

    私はそれを見る方法には2つの選択肢があります。

    1. あなたは正確にthis one、またはこのアプローチ(またはそれのような別の)背後にあるフォークthe repoのようなアプローチを実装しようとし、あなたの目的に合うようにそれを修正/拡張することができどちらか。

    2. 最初からやり直してください。

    neo4jの挿入メソッドに適した形式でdbpediaデータセットを解析します。データを処理するために存在するopenRDFのようなライブラリがあります。あなたのニーズに最適なリサーチに時間を費やす予定がない限り、上記のリンク先の既存のソリューションはすでにこのライブラリを実装しています。

    次に、フォーマットされたデータをneo4j dbに挿入します。これを達成する1つの方法は、neo4jのBatch Insertionコンポーネントです。このファシリティは、初期のインポートを意図しています(スレッドセーフではなく、トランザクションではない、つまりACIDに準拠していないため)。したがって、これは実際にあなたのユースケースに依存します。

    私の2セントは、この機能があなたが開発しているものの中核でない限り、既にそこにあるものを使用しているということです。それはビルドするのに苦痛となるものであり、効率的に動作するものを構築するにはさらに苦痛です。

    +0

    もっと具体的な質問がありますか? – anxiety

    関連する問題