10

dBpediaの上で使用neo4jしようとしていますruby on rails

neo4jをインストールし、 dBpediaデータセットの1つをダウンロードしたと仮定します。

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

4

2 に答える 2

8

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

必要に応じてJRubyでこれを書き直すこともできますが、通常のRubyは、Rubyに相当するものがないJavaライブラリであるBlueprintsに依存しているため機能しません。

ロード手順を提供する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

これが関係するものの説明です

ブループリントは、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つの方法のいずれかでグラフにアクセスできます。

  1. JRubyとBlueprints-Neo4jAPIを直接使用します。
  2. 通常のRubyとRexsterRESTサーバーを使用します。これは、複数のグラフデータベースをサポートすることを除いてNeo4jサーバーに似ています。

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

これに対する別のアプローチは、Rubyでdbpedia RDFダンプファイルを処理し、ノードと関係をCSVファイルに書き出し、Neo4jバッチインポーターを使用してロードすることです。ただし、これには、RDFデータをNeo4j関係に手動で変換する必要があります。

于 2012-09-09T05:09:34.907 に答える
3

私の見方では、2つの選択肢があります。

  1. このようなアプローチを正確に実装するか、このアプローチの背後にあるリポジトリ(または同様の別のリポジトリ)をフォークして、目的に合わせて拡張/修正することができます。

  2. ゼロから自分でやってください。一般的なアプローチは次のとおりです。

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

次に、フォーマットされたデータをneo4jデータベースに挿入します。これを実現する1つの方法は、neo4jのバッチ挿入コンポーネントを使用することです。この機能は、彼らが述べているように、最初のインポートを目的としていることに注意してください(スレッドセーフではなく、非トランザクション、つまりACIDに準拠していないため)。したがって、これは実際にはユースケースによって異なります。

私の2セントは、この機能が開発中のコアでない限り、すでに存在するものを使用することです。それは構築するのが苦痛であり、効率的に実行されるものを構築するのはさらに苦痛になるからです。

于 2012-09-06T00:53:02.610 に答える