Ressources numériques en sciences humaines et sociales OpenEdition Nos plateformes OpenEdition Books OpenEdition Journals Hypothèses Calenda Bibliothèques OpenEdition Freemium Suivez-nous

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:

  1. APOC: bibliothèque ajoutant beaucoup de procédures dans Neo4J. (doc: https://neo4j.com/labs/apoc/)
  2. 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 crash
  • ports : 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 7687
  • environment: 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:

  1. Initialisation de n10s: création de la configuration de Neosémantics
  2. 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


Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

This site uses Akismet to reduce spam. Learn how your comment data is processed.