2012-08-31 48 views

Respuesta

8

La forma más sencilla de cargar dbpedia en Neo4j es utilizar la biblioteca dbpedia4neo. Esta es una biblioteca de Java, pero no necesita saber nada de Java porque todo lo que necesita hacer es ejecutar el ejecutable.

Puede volver a escribir esto en JRuby si lo desea, pero Ruby regular no funcionará porque se basa en Blueprints, una biblioteca de Java sin equivalente de Ruby.

Aquí están los dos archivos de clave, que proporcionan el procedimiento de carga.

  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

Aquí es una description of what's involved.

Blueprints está traduciendo los datos RDF a una representación gráfica. Para comprender lo que ocurre bajo el capó, consulte Blueprints Sail Ouplementation:

Después de descargar los archivos de volcado de dbpedia, debe poder compilar la biblioteca de Java dbpedia4neo y ejecutarla sin modificar el código de Java.

En primer lugar, clonar tenedor del oleiade del repositorio GitHub y cambiar al directorio dbpedia4neo:

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

(tenedor de Oleiade incluye una actualización de planos menores que hace sail.initialize(); Ver https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJ).

Antes de compilarlo, deberá actualizar el pom.xml para usar versiones más actuales de Blueprints y el repositorio actual de Blueprints (Sonatype).

Para ello, abra pom.xml y en la parte superior de la sección dependencies, cambie todas las versiones Tinkerpop Modelos 0.6-0.9.

Mientras está en el archivo, añadir el repositorio Sonatype a la sección repositories al final del archivo:

<repository> 
    <id>sonatype-nexus-snapshots</id> 
    <name>Sonatype Nexus Snapshots</name> 
    <url>https://oss.sonatype.org/content/repositories/releases</url> 
</repository> 

Guardar el archivo y luego construirlo utilizando Maven:

$ mvn clean install 

Esto descargará e instalará todas las dependencias por usted y creará un archivo jar en el directorio target.

Para cargar DBpedia, experta utiliza para ejecutar el ejecutable:

$ mvn exec:java \ 
    -Dexec.mainClass=org.acaro.dbpedia4neo.inserter.DBpediaLoader \ 
    -Dexec.args="/path/to/dbpedia-dump.nt" 

El vertedero DBpedia es grande por lo que este tomará un tiempo para cargar.

Ahora que se cargan los datos, puede acceder a la gráfica de una de dos maneras:

  1. Uso JRuby y la API de Planos-Neo4j directamente.
  2. Uso de Ruby regular y el servidor Rexster REST, que es similar a Neo4j servidor excepto que soporta múltiples bases de datos de gráficos.

Para ver un ejemplo de cómo crear un cliente Rexster, vea Bulbos, un framework de Python que escribí y que admite Neo4j Server y Rexster.

Otro enfoque para todo esto sería para procesar la DBpedia RDF archivo de volcado en Ruby, escribir los nodos y las relaciones a un archivo CSV, y use el Neo4j batch importer para cargarlo. Pero esto requerirá que traduzca manualmente los datos de RDF a las relaciones de Neo4j.

3

De la forma en que lo veo, tiene dos opciones.

  1. Usted podría intentar poner en práctica un enfoque como this one exactamente, o tenedor the repo detrás de este enfoque (u otro parecido) y extender/solucionarlo para satisfacer sus propósitos.

  2. Hágalo usted mismo, desde cero. Aquí está el enfoque general:

analizar sintácticamente el conjunto de datos DBpedia en un formato adecuado para los métodos de inserción de Neo4j. Existen bibliotecas que existen como openRDF que existen para procesar datos. A menos que planee dedicar tiempo a la investigación que se adapte mejor a sus necesidades, la solución existente que he vinculado anteriormente ya implementa esta biblioteca.

Luego inserte los datos formateados en su neo4j db. Un método para lograr esto es a través del componente Batch Insertion de neo4j. Tenga en cuenta que esta función, tal como indican, está destinada a las importaciones iniciales (ya que no es segura para subprocesos y no es transaccional, es decir, no cumple con ACID). Entonces esto realmente depende de tu caso de uso.

Mi 2 centavos es que usted usa algo que ya existe, a menos que esta funcionalidad sea el núcleo de lo que está desarrollando. Como es algo que será difícil de construir, y más aún un dolor para construir algo que funcione de manera eficiente.

+0

¿Tiene una pregunta más específica? – anxiety