Installation de Néo4J pour Opentheso
Introduction
Pour exporter les données des vues d’Opentheso vers Neo4J, il est nécessaire d’installer et de configurer une base de données Neo4J, ainsi que de configurer Opentheso pour qu’il puisse se connecter à cette base. Afin de présenter une installation rapide, nous avons choisi d’utiliser dans cette documentation un serveur fraîchement créé avec Ubuntu comme système d’exploitation, avec Docker et Docker-compose installés au préalable..
Informations sur l’instance
Afin de pouvoir fonctionner correctement avec Opentheso, il sera nécessaire de rajouter deux plugins à Neo4J:
- APOC: bibliothèque ajoutant beaucoup de procédures dans Neo4J. (doc: https://neo4j.com/labs/apoc/)
- Neosémantics (n10s): Ce plugin va nous permettre d’importer directement des données au format RDF/XML dans la base de données. (doc: https://neo4j.com/labs/neosemantics/)
Pour simplifier le déploiement d’une instance Neo4J, un fichier docker-compose.yml est fourni:
name: neo4j
services:
database:
image: 'neo4j:5.18.1'
restart: always
ports:
- '7474:7474'
- '7687:7687'
environment:
- NEO4JLABS_PLUGINS= ["apoc", "n10s"]
volumes:
- ./data:/data
- ./logs:/logs
- ./conf:/conf
Ce fichier crée un réseau (Network) nommé neo4j_default et déploie un conteneur nommé neo4j-database-1 qui est une instance de l’image neo4j:5.18.1 .
Plusieurs paramètres sont passés à ce conteneur:
restart: always: permet d’automatiquement relancer le conteneur en cas de crashports: permet de lier un port de la machine hôte à un port du conteneur. Par exemple dans le cas présent, on lie le port 7474 du serveur au port 7474 du conteneur, de même pour le port 7687environment: permet de définir des variables d’environnement. Dans le cas présent, les variables suivantes sont définies:NEO4JLABS_PLUGINS= ["apoc", "n10s"]: Liste des plugins à installer dans la base Neo4J
volumes: permet de lier un emplacement du système de fichiers de la machine hôte à un emplacement du système de fichiers du conteneur (mount). Dans le cas présent, les dossiers suivants sont montés sur le serveur dans le répertoire ou se trouve le fichier docker-compose:./data:/data: dossier contenant les données de la base Neo4J../logs:/logs: dossier contenant les logs du serveur../conf:/conf: dossier contenant les fichiers de configuration si il y en a.
Lancement du serveur
Sur le serveur, le fichier docker-compose décrit dans la section précédente se trouve à l’emplacement suivant:
/home/neo4j/docker-compose.yml
Pour lancer le conteneur il suffit de se déplacer dans le dossier et effectuer la commande suivante:
docker compose up -d
Le paramètre -d permet de lancer le conteneur en mode détaché (on ne rentre pas dans le conteneur)
Une fois le serveur lancé, il suffit de se rendre à l’adresse suivante: http://<IP_SERVEUR>:7474
Première connexion
Par défaut, les identifiants à Neo4j sont:
- Identifiant:
neo4j - Mot de passe:
neo4j
Une fois connecté, il sera demandé de modifier le mot de passe.
Il est possible de modifier ces identifiants dès la création de l’instance en ajoutant des variables d’environnement supplémentaires dans le fichier
docker-compose.yml
Mise en place de la base
Afin d’avoir une base prête à importer les données depuis Opentheso, il est nécessaire de passer par deux étapes de mise en place:
- Initialisation de n10s: création de la configuration de Neosémantics
- Création d’une contrainte d’unicité sur les URIs des ressources qui seront importées
1 – Initialisation de Neosemantics
Pour créer le fichier de configuration de Neosémantics, il suffit d’effectuer la commande suivante avec en paramètre, les valeurs que nous souhaitons changer par rapport aux valeurs par défaut.
CALL n10s.graphconfig.init({handleMultival: 'ARRAY', keepLangTag: true})
Ici, nous modifions plusieurs paramètres:
handleMultiVal: avec un import de données au format RDF, certaines valeurs ont le même identifiant car elles représentent la même donnée mais dans une langue différente. Ce paramètre dis à n10s de créer un tableau (ARRAY) avec toutes les valeurs possibles que peut prendre un champ au lieu d’écraser lorsqu’une valeur à la même clé (paramètre par défaut:OVERRIDE)keepLangTag: Lorsqu’une clé à plusieurs valeurs qui représentent la même donnée dans différentes langues, l’identifiant de la langue est conservé afin de pouvoir identifier quel terme correspond a quelle langue.
2 – Création de la contrainte d’unicité
La documentation de n10s donne une commande qui permet de définir la contrainte d’unicité:
CREATE Constraint n10s_unique_uri for (r:Resource) REQUIRE r.uri IS UNIQUE
Cette commande dit donc à Neo4J que chaque ressource doit avoir une valeur uri unique. il est possible de changer la valeur unique au besoin en modifiant la clé après le mot-clé REQUIRE dans la requête.
OpenEdition vous propose de citer ce billet de la manière suivante :
jeremyboureux (29 juillet 2024). Installation de Néo4J pour Opentheso. Opentheso. Consulté le 15 novembre 2025 à l’adresse https://doi.org/10.58079/123so

