【问题标题】:How to setup neo4j with dBpedia ontop of ruby-on-rails application?如何在 ruby​​-on-rails 应用程序之上使用 dBpedia 设置 neo4j?
【发布时间】:2012-08-26 01:48:04
【问题描述】:

我正在尝试在ruby on rails 之上使用dBpedianeo4j

假设我已经安装了neo4j 并下载了dBpedia datasets 之一。

如何将dbpedia 数据集导入neo4j

【问题讨论】:

标签: ruby-on-rails nlp jruby neo4j dbpedia


【解决方案1】:

在我看来,你有两个选择。

  1. 您可以尝试完全实现 this one 之类的方法,或者在此方法(或其他类似方法)后面分叉 the repo 并扩展/修复它以适合您的目的。

    李>
  2. 自己动手,从头开始。这是一般方法:

将您的 dbpedia 数据集解析为适合 neo4j 插入方法的格式。存在像openRDF 这样的库来处理数据。除非您打算花时间研究最适合您的需求,否则我上面链接的现有解决方案已经实现了这个库。

然后将格式化的数据插入到您的 neo4j 数据库中。实现此目的的一种方法是通过 neo4j 的 Batch Insertion 组件。请注意,正如他们所说,此工具旨在用于初始导入(因为它不是线程安全的并且是非事务性的,换句话说,不符合 ACID)。所以这真的取决于你的用例。

我的 2 美分是您使用已经存在的东西,除非此功能是您正在开发的核心。因为构建它会很痛苦,构建高效运行的东西更痛苦。

【讨论】:

  • 您有更具体的问题吗?
【解决方案2】:

将 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

这是description of what's involved

Blueprints 正在将 RDF 数据转换为图形表示。要了解幕后发生的事情,请参阅Blueprints Sail Ouplementation

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

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

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

(Oleiade 的分叉包含一个小的蓝图更新,该更新可用于 sail.initialize(); 请参阅 https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJ)。

在构建它之前,您需要更新 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 转储很大,因此加载需要一段时间。

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

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

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

解决所有这些问题的另一种方法是在 Ruby 中处理 dbpedia RDF 转储文件,将节点和关系写入 CSV 文件,然后使用 Neo4j batch importer 加载它。但这需要您手动将 RDF 数据转换为 Neo4j 关系。

【讨论】:

    猜你喜欢
    • 2012-08-10
    • 2011-08-11
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多