« ezMasterisé » ?

Oui, le néologisme est un peu barbare, mais nous l’utilisons depuis quelques mois (pour l’outil lodex, le prototype comme sa deuxième version, et pour d’autres outils comme ezVIS, ezARK, et d’autres). Il signifie que l’on rend une application utilisable dans le système d’administration ezMaster.

L’intérêt ? Il y en a plusieurs :

  • un chargement de données facilité et homogène (quelle que soit l’application)
  • la création d’instance(s) du même logiciel sans connaissance informatique particulière (et sa suppression aussi)
  • la configuration de logiciels via une interface homogène
  • l’arrêt et le démarrage d’une application sans nécessité d’utiliser la ligne de commande
  • quand la machine est configurée, une mise à disposition sur le web facilitée
Interface d'ezMaster

Virtuoso : un triple store

Après avoir observé l’environnement d’ISTEX, une constatation s’imposait: pratiquement tous les triple stores (exposant des SPARQL end points) proches utilisaient Virtuoso, la plupart dans sa version Open Source. Ses performances étant reconnues, nous avons décidé de commencer par cette solution (c’est aussi la solution retenue par dbpedia).

Nous avons relevé quelques SPARQL end points manipulant des données similaires à celles d’ISTEX:

Autant d’expériences dans l’Enseignement Supérieur et la Recherche française autour de Virtuoso.

En pratique

Application (image Docker) / instance

Afin de ne pas avoir à maintenir une image Docker (passage obligé pour ezmasteriser une application web) complexe, nous nous sommes appuyés sur une image existante: tenforce/virtuoso, qui est la plus connue, à jour et pratique à utiliser.

L’image obtenue s’appelle inistcnrs/ezmaster-virtuoso, et s’installe comme une application dans ezMaster.

ezmaster-virtuoso est une application ezmaster

Une fois installée, elle peut s’instancier, en lui donnant un nom technique, qui fournira une partie de son URL quand c’est sur une machine exposée sur le web.

Une instance d’ezmaster-virtuoso dans ezMaster

Configuration

La configuration au format JSON modifiable via l’interface d’ezMaster, permet de configurer Virtuoso. En particulier, il est indispensable, dans les cas où on est sur une machine exposée sur le web, de modifier la variable d’environnement DBA_PASSWORD (sous peine de laisser le mot-de-passe par défaut à l’interface d’administration de Virtuoso) :

{
  "env": {
    "DBA_PASSWORD": "secret"
  }
}

Il est possible de modifier plus finement la configuration de Virtuoso, en suivant sa documentation (pour dérouler la pelote, commencez par tirer ), mais nous n’avons pas poussé celle-ci plus avant.

Chargement

Dans un triple store, on stocke des triplets (d’où le nom). L’ensemble des triplets forme un graphe. Mais quand on veut y distinguer des sous-ensembles (au moins pour en faciliter la mise à jour, sans avoir à recharger toutes les données), on peut apposer un nom aux parties de ce graphe (c’est d’ailleurs obligatoire, le nom par défaut du graphe étant http://localhost:8890/DAV dans virtuoso). Cela permet ensuite de n’interroger qu’une partie de ce graphe global.

Pour simplifier les choses (et nonobstant le fait qu’on peut aussi le faire autrement via l’administration de Virtuoso), nous avons établi une convention de nommage des fichiers (contenant des triplets, au format NQuads, mais aussi dans d’autres formats) permettant de déduire le nom du graphe dans lequel on les charge.

Par exemple, si on veut charger des triplets dans le graphe nommé http://ns.nature.com/graphs/articles, le nom du fichier devra être ns.nature.com_graphs_articles.nq (s’il est au format N-Quads).
La convention est qu’on remplace les caractères souligné _ par des slashs /, qu’on supprime l’extension (après avoir éventuellement enlevé une ultime extension .gz au cas où le format est compressé).

Contrairement à d’autres applications déjà ezmasterisées, il faut ici, pour que le chargement des données se fasse, arrêter l’instance, puis la redémarrer.
Se chargeront alors tous les fichiers plus récents que le dernier chargement.

Interrogation

Une fois les triplets chargés, on peut vérifier qu’ils sont disponibles en passant, non par la page d’accueil de Virtuoso (qui donne accès à l’administration du triple store), mais à l’adresse /sparql (comme de nombreux SPARQL end points).

Par exemple, si on veut savoir combien de triplets sont présents dans le graphe nommé http://lod.istex.fr/named-entity, on peut remplir le champ Default Data Set Name (Graph IRI), et saisir la requête dans le champ Query Text:

SELECT  COUNT(DISTINCT ?entity) as ?nb
WHERE {
 ?entity ?property ?value
}
LIMIT 100

Nous obtiendrons alors une réponse (dans une page HTML par défaut, mais d’autres formats sont disponibles, via un menu déroulant):

nb
9

Le SPARQL endpoint de virtuoso

À partir de là, les possibilités du langage d’interrogation SPARQL s’offrent à nous, mais ce sera peut-être pour une autre fois?