如何使用dBpedia在ruby-on-rails应用程序上设置neo4j?

0x9*_*x90 10 nlp ruby-on-rails jruby neo4j dbpedia

我想用dBpedianeo4j的ontop的ruby on rails.

假设我已经安装了neo4j并下载了一个dBpedia数据集.

如何将dbpedia数据集导入neo4j

esp*_*eed 8

将dbpedia加载到Neo4j的最简单方法是使用dbpedia4neo库.这是一个Java库,但您不需要知道任何Java,因为您需要做的就是运行可执行文件.

如果你愿意的话,你可以在JRuby中重写它,但是常规Ruby不能工作,因为它依赖于Blueprints,一个没有Ruby等价物的Java库.

以下是两个提供加载过程的密钥文件.

  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数据转换为图形表示.要了解幕后发生的事情,请参阅Blueprints Sail Ouplementation:

下载dbpedia转储文件后,您应该能够构建dbpedia4neo Java库并在不修改Java代码的情况下运行它.

首先,克隆GitHub存储库的oleiade的fork并切换到dbpedia4neo目录:

$ git clone https://github.com/oleiade/dbpedia4neo.git
$ cd dbpedia4neo
Run Code Online (Sandbox Code Playgroud)

(Oleiade的分支包含一个次要的蓝图更新,sail.initialize();请参阅 https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJ).

在构建之前,您需要更新pom.xml以使用更多当前的Blueprints版本和当前的Blueprints存储库(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>
Run Code Online (Sandbox Code Playgroud)

保存文件,然后使用maven构建它:

$ mvn clean install
Run Code Online (Sandbox Code Playgroud)

这将为您下载并安装所有依赖项,并在target目录中创建一个jar文件.

要加载dbpedia,请使用maven运行可执行文件:

$ mvn exec:java \
  -Dexec.mainClass=org.acaro.dbpedia4neo.inserter.DBpediaLoader \
  -Dexec.args="/path/to/dbpedia-dump.nt"
Run Code Online (Sandbox Code Playgroud)

dbpedia转储很大,因此加载需要一段时间.

现在加载了数据,您可以通过以下两种方式之一访问图表:

  1. 直接使用JRuby和Blueprints-Neo4j API.
  2. 使用常规Ruby和Rexster REST服务器,它与Neo4j Server类似,只是它支持多个图形数据库.

有关如何创建Rexster客户端的示例,请参阅Bulbs,我编写的支持Neo4j Server和Rexster的Python框架.

所有这些的另一种方法是在Ruby中处理dbpedia RDF转储文件,写出节点和与CSV文件的关系,并使用Neo4j批处理导入程序加载它.但这需要您手动将RDF数据转换为Neo4j关系.