dBpedia
の上で使用neo4j
しようとしていますruby on rails
。
neo4jをインストールし、 dBpediaデータセットの1つをダウンロードしたと仮定します。
dbpedia
データセットをにインポートするにはどうすればよいneo4j
ですか?
dBpedia
の上で使用neo4j
しようとしていますruby on rails
。
neo4jをインストールし、 dBpediaデータセットの1つをダウンロードしたと仮定します。
dbpedia
データセットをにインポートするにはどうすればよいneo4j
ですか?
dbpediaをNeo4jにロードする最も簡単な方法は、dbpedia4neoライブラリを使用することです。これはJavaライブラリですが、実行可能ファイルを実行するだけなので、Javaを知る必要はありません。
必要に応じてJRubyでこれを書き直すこともできますが、通常のRubyは、Rubyに相当するものがないJavaライブラリであるBlueprintsに依存しているため機能しません。
ロード手順を提供する2つのキーファイルを次に示します。
これが関係するものの説明です。
ブループリントは、RDFデータをグラフ表現に変換しています。内部で何が起こっているかを理解するには、BlueprintsSailOuplementationを参照してください。
dbpediaダンプファイルをダウンロードすると、dbpedia4neo Javaライブラリをビルドして、Javaコードを変更せずに実行できるようになります。
まず、GitHubリポジトリのoleiadeのフォークのクローンを作成し、次のdbpedia4neo
ディレクトリに移動します。
$ git clone https://github.com/oleiade/dbpedia4neo.git
$ cd dbpedia4neo
(Oleiadeのフォークには、https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJを参照するマイナーなブループリントの更新が含まれていますsail.initialize();
) 。
pom.xml
ビルドする前に、最新のブループリントバージョンと現在のブループリントリポジトリ(Sonatype)を使用するようにを更新する必要があります。
これを行うpom.xml
には、セクションを開いて上部でdependencies
、TinkerPopブループリントのすべてのバージョンをから0.6
に変更し0.9
ます。
ファイル内にいる間に、Sonatypeリポジトリをrepositories
ファイルの最後のセクションに追加します。
<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ファイルが作成されます。
dbpediaをロードするには、mavenを使用して実行可能ファイルを実行します。
$ mvn exec:java \
-Dexec.mainClass=org.acaro.dbpedia4neo.inserter.DBpediaLoader \
-Dexec.args="/path/to/dbpedia-dump.nt"
dbpediaダンプが大きいため、ロードに時間がかかります。
データがロードされたので、次の2つの方法のいずれかでグラフにアクセスできます。
Rexsterクライアントを作成する方法の例については、Neo4jサーバーとRexsterの両方をサポートする私が作成したPythonフレームワークであるBulbsを参照してください。
これに対する別のアプローチは、Rubyでdbpedia RDFダンプファイルを処理し、ノードと関係をCSVファイルに書き出し、Neo4jバッチインポーターを使用してロードすることです。ただし、これには、RDFデータをNeo4j関係に手動で変換する必要があります。
私の見方では、2つの選択肢があります。
このようなアプローチを正確に実装するか、このアプローチの背後にあるリポジトリ(または同様の別のリポジトリ)をフォークして、目的に合わせて拡張/修正することができます。
ゼロから自分でやってください。一般的なアプローチは次のとおりです。
dbpediaデータセットをneo4jの挿入方法に適した形式に解析します。データを処理するために存在するopenRDFのように存在するライブラリがあります。時間をかけて自分のニーズに最適な調査を行う予定がない限り、上記でリンクした既存のソリューションはすでにこのライブラリを実装しています。
次に、フォーマットされたデータをneo4jデータベースに挿入します。これを実現する1つの方法は、neo4jのバッチ挿入コンポーネントを使用することです。この機能は、彼らが述べているように、最初のインポートを目的としていることに注意してください(スレッドセーフではなく、非トランザクション、つまりACIDに準拠していないため)。したがって、これは実際にはユースケースによって異なります。
私の2セントは、この機能が開発中のコアでない限り、すでに存在するものを使用することです。それは構築するのが苦痛であり、効率的に実行されるものを構築するのはさらに苦痛になるからです。