10 votes

Comment configurer neo4j avec dBpedia au-dessus d'une application ruby-on-rails ?

J'essaie d'utiliser dBpedia avec neo4j sur le dessus de ruby on rails .

En supposant que j'ai installé neo4j et téléchargé l'un des Jeux de données dBpedia .

Comment importer le dbpedia en neo4j ?

8voto

espeed Points 2951

La manière la plus simple de charger dbpedia dans Neo4j est d'utiliser la fonction dbpedia4neo bibliothèque. Il s'agit d'une bibliothèque Java, mais vous n'avez pas besoin de connaître le langage Java, car il vous suffit d'exécuter l'exécutable.

Vous pourriez réécrire ceci en JRuby si vous voulez, mais le Ruby normal ne fonctionnera pas parce qu'il s'appuie sur Blueprints une bibliothèque Java qui n'a pas d'équivalent en Ruby.

Voici les deux fichiers clés, qui fournissent la procédure de chargement.

  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

Voici un description de ce qui est impliqué .

Blueprints traduit les données RDF en une représentation graphique. Pour comprendre ce qui se passe sous le capot, voir Blueprints Sail Ouplementation :

Après avoir téléchargé les fichiers dump de dbpedia, vous devriez être en mesure de construire le fichier dbpedia4neo bibliothèque Java et l'exécuter sans modifier le code Java.

Tout d'abord, clonez le fork d'oleiade du dépôt GitHub et changez dans le fichier dbpedia4neo répertoire :

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

(Le fork d'Oleiade inclut une mise à jour mineure de Blueprints qui fait sail.initialize(); Voir https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJ ).

Avant de le construire, vous devrez mettre à jour le fichier pom.xml pour utiliser des versions plus récentes de Blueprints et le référentiel Blueprints actuel (Sonatype).

Pour ce faire, ouvrez pom.xml et au sommet de la dependencies section, changez toutes les versions de TinkerPop Blueprints de 0.6 à 0.9 .

Pendant que vous êtes dans le fichier, ajoutez le référentiel Sonatype à la section repositories à la fin du fichier :

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

Sauvegardez le fichier, puis construisez-le en utilisant maven :

$ mvn clean install

Cela téléchargera et installera toutes les dépendances pour vous et créera un fichier jar dans le dossier de l'utilisateur. target répertoire.

Pour charger dbpedia, utilisez maven pour exécuter l'exécutable :

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

La décharge dbpedia est volumineuse et le chargement prendra un certain temps.

Maintenant que les données sont chargées, vous pouvez accéder au graphique de l'une des deux manières suivantes :

  1. Utilisez directement JRuby et l'API Blueprints-Neo4j.
  2. Utilisez le langage ordinaire Ruby et l'option Rexster Serveur REST, qui est similaire au serveur Neo4j sauf qu'il supporte plusieurs bases de données de graphes.

Pour un exemple de la création d'un client Rexster, voir Bulbs, un framework Python que j'ai écrit et qui supporte à la fois Neo4j Server et Rexster.

Une autre approche de tout ceci serait de traiter le fichier RDF dump de dbpedia en Ruby, d'écrire les nœuds et les relations dans un fichier CSV, et d'utiliser la fonction Importateur de lots Neo4j pour le charger. Mais cela nécessitera que vous traduisiez manuellement les données RDF en relations Neo4j.

3voto

anxiety Points 1191

De la façon dont je le vois, vous avez deux options.

  1. Vous pouvez soit essayer de mettre en œuvre une approche comme éste exactement, ou fourchette le repo derrière cette approche (ou une autre similaire) et l'étendre/la modifier pour l'adapter à vos besoins.

  2. Faites-le vous-même, à partir de zéro. Voici l'approche générale :

Analyse votre jeu de données dbpedia dans un format adapté aux méthodes d'insertion de neo4j. Il existe des bibliothèques comme openRDF qui existent pour traiter les données. À moins que vous ne prévoyiez de prendre le temps de rechercher ce qui répondrait le mieux à vos besoins, la solution existante que j'ai liée ci-dessus met déjà en œuvre cette bibliothèque.

Puis insérez les données formatées dans votre db neo4j. L'une des méthodes pour y parvenir est l'utilisation de la fonction Insertion par lots composant. Notez que cette fonction, comme elle l'indique, est destinée aux importations initiales (car elle n'est pas thread safe et n'est pas transactionnelle, en d'autres termes, elle n'est pas conforme à la norme ACID). Cela dépend donc vraiment de votre cas d'utilisation.

Je vous conseille d'utiliser quelque chose qui existe déjà, à moins que cette fonctionnalité ne soit au cœur de votre projet de développement. En effet, c'est quelque chose qui sera pénible à construire, et encore plus pénible à construire quelque chose qui fonctionne efficacement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X