В настоящее время я делаю то же самое.Я обнаружил, что самой большой проблемой для этого является индексация, поэтому лучшим решением является написание Java-программы, которая извлекает операторы с хэшами md5 в тройной файл следующим образом: subjectHash \ t предикатHash \ t objectHash \ t subject \ t предикат \ tobject \ n.
В другом файле вам нужно будет хранить узлы (так же как объекты и объекты утверждений): nodeHash \ t nodeValue
Код этой процедуры можно загрузить с моего github.: https://github.com/eschleining/DbPediaImport.git
Скомпилируйте его с пакетом mvn, и он создаст файл jar в target, который принимает файлы gzipped 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: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) и запустить его в том же каталоге, что и node_unique.Файлы gz и triples_unique.gz он создает каталог базы данных Neo4J с именем «DbpediaNe04J» (помните опечатку «0 вместо o).
Я нашел это самым быстрым способом, так как он ищет индекс только один раз длякаждая пара субъект / объект в тройке.
Не стесняйтесь добавлять узлы типа данных в качестве свойств и т. д. В настоящее время я реализовал каждую тройку как отношение между двумя узлами.