Compilation de Virtuoso et chargement de DBpedia

Julien Plu

Ce tutoriel fait suite à celui sur l'exécution du framework d'extraction de DBpedia. Il est consacré à la compilation et à la configuration de Virtuoso ainsi qu'à l'importation des triplets de DBPedia. Cette compilation a été faite sous Ubuntu 13.10. Il faut vous assurer d'avoir tous les prérequis : Commentez .

sudo apt-get install autoconf automake libtool bison flex gawk gperf libssl-dev

- Titre : Compilation de Virtuoso et chargement de DBpedia

- Auteur : Julien Plu

- Parution : 18 janvier 2014

- Mise à jour : 14 janvier 2016

- Public visé :

- Licence : Copyright ® 2013-2016 Julien Plu. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Étape 1 : clonage du dépôt Git

- II. Étape 2 : compilation

- III. Étape 3 : configuration

- IV. Étape 4 : chargement des données DBpedia

- V. Réinstallation du graphe si besoin

- VI. Remerciements

I - Étape 1 : clonage du dépôt Git

La première chose à faire est de cloner le dépôt Git du projet Virtuoso Open Source. Il sera admis que le clonage se fasse dans le home :

git clone https://github.com/openlink/virtuoso-opensource.git virtuoso

Il faut maintenant choisir la dernière version :

cd virtuoso
git checkout -b stable/7 origin/stable/7

II - Étape 2 : compilation

Vous devez à présent générer le fichier configure, pour cela lancez la commande :

./autogen.sh

Ensuite, faire un export de certaines options de compilation :

export CFLAGS="-O2 -m64"

Puis lancer le configure en précisant un dossier d'installation :

./configure --prefix=XX --program-transform-name="s/isql/isql-v/" --enable-dbpedia-vad --enable-rdfmappers-vad --enable-conductor-vad

L'option --program-transform-name permet de renommer l'interface de commande SQL de Virtuoso en isql-v pour éviter un conflit avec celle de unixODBC. Pensez à remplacer XX par l'endroit où vous souhaitez l'installer. Dans ce tutoriel, il sera installé dans /usr/bin/virtuoso/.

Le configure couvre le strict minimum pour ce que nous voulons faire, mais on peut lui rajouter beaucoup d'autres modules. Pour cela, faites :

./configure -h

Afin d'en voir la liste et choisir ceux que vous voudrez installer en plus.

Ensuite, lancez la compilation et l'installation :

make && sudo make install

III - Étape 3 : configuration

Maintenant que Virtuoso est installé, il faut le configurer. Pour commencer il faut faire en sorte qu'il démarre en même temps que la machine, pour cela il faut éditer le fichier ~/virtuoso/debian/init.d. Modifier :

DAEMON=/usr/bin/virtuoso-t

par :

DAEMON=/usr/bin/virtuoso/bin/virtuoso-t

Modifier :

DBBASE=/var/lib/virtuoso/db

par :

DBBASE=/usr/bin/virtuoso/var/lib/virtuoso/db

Ensuite, le copier dans le init.d du système :

sudo cp ~/virtuoso/debian/init.d /etc/init.d/virtuoso

Et pour finir, lancer ces trois liens symboliques :

sudo ln -s /etc/init.d/virtuoso /etc/rc2.d/S99virtuoso
sudo ln -s /etc/init.d/virtuoso /etc/rc3.d/S99virtuoso
sudo ln -s /etc/init.d/virtuoso /etc/rc5.d/S99virtuoso

Donner à Virtuoso l'accès au port 80 sans pour autant lui donner les droits root :

sudo setcap 'cap_net_bind_service=+ep' /usr/bin/virtuoso/bin/virtuoso-t

Une fois ceci fait, il faut installer le VAD de DBpedia, pour ceci il faut suivre aussi certaines étapes :

- étape 1 : ouvrir isql /usr/bin/virtuoso/bin/isql-v ;

- étape 2 : taper toutes ces lignes de commande :

registry_set ('dbp_decode_iri',   'on');
registry_set ('dbp_domain',       'http://fr.dbpedia.org');
registry_set ('dbp_graph',        'http://fr.dbpedia.org');
registry_set ('dbp_lang',         'fr');
registry_set ('dbp_DynamicLocal', 'on');
registry_set ('dbp_category',     'Catégorie');
registry_set ('dbp_imprint',      'http://dbpedia.fr/doc/Imprint');
registry_set ('dbp_website',      'http://localhost/projects/dbpedia/');
registry_set ('dbp_lhost',        ':80');
registry_set ('dbp_vhost',        'http://fr.dbpedia.org');

Attention à bien mettre le paramètre DynamicLocal à 1 dans le fichier de configuration de Virtuoso /usr/bin/virtuoso/var/lib/virtuoso/db/virtuoso.ini.

Puis installer le package pour DBpedia :

vad_install('/usr/bin/virtuoso/share/virtuoso/vad/dbpedia_dav.vad', 0);

IV - Étape 4 : chargement des données DBpedia

Maintenant que tout est installé et configuré, il faut charger les données dans Virtuoso. Pour cela il faut copier les archives des dumps de DBPedia effectués par l'outil d'extraction dans un dossier autorisé de Virtuoso. Pour cela, ouvrez le fichier /usr/bin/virtuoso/var/lib/virtuoso/db/virtuoso.ini et modifiez la variable DirsAllowed :

DirsAllowed = ., /usr/bin/virtuoso/share/virtuoso/vad, /mon/dossier/de/dumps/

Remplacez donc /mon/dossier/de/dumps/ par le chemin que vous souhaitez. Mais n'oubliez pas que ce dossier doit contenir les données que vous souhaitez charger dans Virtuoso. Redémarrez maintenant Virtuoso :

sudo service virtuoso restart

Maintenant il faut insérer les données, pour cela ouvrir /usr/bin/virtuoso/bin/isql-v puis taper :

ld_dir ('/mon/dossier/de/dumps', '*.nt.gz', 'http://fr.dbpedia.org');

Vous pouvez lui donner les fichiers archivés, il s'occupera de les extraire tout seul. Une fois ceci fait, sortez de isql et ouvrez le fichier (ou créez-le s'il n'existe pas) global.graph à l'endroit où se trouvent les archives de données pour y ajouter le nom de votre graphe http://fr.dbpedia.org. Retournez maintenant dans isql pour charger toutes les données :

rdf_loader_run();

Il ne reste plus qu'à attendre le message disant que tout s'est bien passé. Pour vérifier si toutes les données sont bien présentes, une simple petite requête :

SPARQL SELECT count(*) FROM <http://fr.dbpedia.org> WHERE { ?s ?p ?o };

S'il vous sort un résultat autre que 0 c'est que des données ont bien été insérées.

V - Réinstallation du graphe si besoin

Afin de réinstaller le graphe, il faut auparavant purger la liste des archives de la table qui les gère :

delete from db.dba.load_list;

Ensuite, toujours dans isql, entrez les commandes suivantes :

log_enable(3,1);
SPARQL CLEAR GRAPH  <http://fr.dbpedia.org>;

Lancez maintenant les commandes ld_dir et rdf_loader_run vues précédemment afin de recharger les données dans Virtuoso.

VI - Remerciements

Merci à Philippe DUVAL et Claude Leloup pour leur relecture orthographique.