3

我需要将 dbpedia 导入 neo4j。我从这里下载 dbpedia:http ://wiki.dbpedia.org/Downloads37 知道吗?

4

1 回答 1

0

我目前正在做同样的事情。我发现最大的问题是索引,所以最好的解决方案是编写一个 java 程序,将带有 md5 哈希的语句提取到一个三重文件中,如下所示:subjectHash \t predicateHash \t objectHash \t subject \t predicate \t对象\n。

在另一个文件中,您需要存储节点(也就是语句的主题和对象): nodeHash \t nodeValue

这个过程的代码可以从我的github下载: https ://github.com/eschleining/DbPediaImport.git

使用 mvn package 编译它,它会在 target 中创建一个 jar 文件,该文件将 gzip 压缩的 dbpedia 文件作为参数。如果你只有 bz2 文件,你可以像下面这样转换它们: for i in *.bz2 ; do bzcat "$i" | gzip > "${i%.bz2}.gz"; done &

现在运行: java -jar ConcurrentDataTableWriter-0.0.1-SNAPSHOT.jar yourdbpediaFolder/*.gz

然后使用 linux 的 sort 实用程序手动对新创建的文件进行排序: gunzip -c nodes.gz | sort -k2 -u | gzip > nodes_unique.gz

三元组文件: gunzip -c triples.gz | sort -k1,3,2 -u | gzip > triples_unique.gz

现在您可以使用 maven3(mvn 包)编译我的 repo 的批处理插入器并在与 nodes_unique.gz 和triples_unique.gz 文件相同的目录中运行它,它会创建一个名为“DbpediaNe04J”的 Neo4J 数据库目录(请注意错字“0” o)。

我发现这是最快的方法,因为它只为三元组中的每个主题/对象对查找一次索引。

随意添加数据类型节点作为属性等等。我目前已经将每个三元组实现为两个节点之间的关系。

于 2015-04-02T15:10:47.707 回答