< SPARQL Protocol and RDF Query Language < Travail pratique

Introduction

Dans ce TP, nous allons installer 4SR, qui est une version temporaire (c'est-à-une une branche) du projet 4store. 4SR est, selon son auteur, une "Scalable SPARQL query system with RDFS reasoning". Cela signifie que c’est une version d'une base de données SPARQL qui a implémenté le système d'implication pour, au moins, l'ontologie RDFS.

4SR est un outil stable disponible sous licence GNU GPL3 et qui peut être librement utilisé et étendu par la communauté du Web Sémantique.

À savoir avant de commencer

Il faut déjà avoir utilisé 4Store et avoir lu la leçon sur le système d'implication SPARQL.

Installation

Installer d’abord 4Store

4SR a les mêmes dépendances que 4Store. Il vaut mieux installer 4Store au moins une fois avant de se risquer à installer 4SR.

Téléchargement de 4SR

Vous avez besoin de cloner la branche rdfs-reasoner de 4Store.

Taper les commandes suivantes dans votre console :

cd ~
git clone git@github.com:msalvadores/4sr.git
cd 4sr
git checkout -b rdfs-reasoner remotes/origin/rdfs-reasoner

Si vous tapez git branch, vous pouvez voir :

  master
* rdfs-reasoner

Un astérisque figure devant rdfs-reasoner, confirmant que nous avons sélectionné la branche du projet 4SR.

Compilation & installation

Comme 4Store, voici les commandes pour configurer la compilation du logiciel :

./autogen.sh
./configure

Les dernières lignes de ./configure doivent afficher les lignes suivantes (à quelques versions près) :

Configuration status:
  Found mDNS libraries, cluster suport enabled
  Using Raptor version 2.0.0
  Using Rasqal version 0.9.25
  RDFS Reasoner Included (4sr)

Voici les commandes pour compiler et pour tester le logiciel :

make
make test
make install

Il est probable que les tests ne passent pas à 100% : c’est normal, cela reste un logiciel expérimental.

Mode d’emploi du serveur

Créer une base de données

Voici la commande pour créer une base de données test :

sudo 4s-backend-setup test

Démarrer le serveur SPARQL

Ici nous exécuterons le service sur le port 8081 (paramètre -p) et nous désirons voir les erreurs en sortie (paramètre -D, mode debug).

sudo 4s-backend test
sudo 4s-httpd -D test -p 8081

Par défaut, les implications appliquées seront rdfs:subClassOf et rdfs:subPropertyOf. Pour spécifier d'autres niveaux de raisonnement, on peut utiliser le paramètre -R . Ce paramètre accepte une chaîne de caractères (C, P, D, R, N) pour indiquer quel constructeur RDFS est utilisé par défaut:

  • subClass reasoning : inclut rdfs:subClassOf.
  • subProperty reasoning : inclut rdfs:subPropertyOf.
  • Domain reasoning : inclut rdfs:domain.
  • Range reasoning : inclut rdfs:range.
  • None indique de n'appliquer par défaut aucun constructeur RDFS.

Examples:
Pour configurer un serveur qui appliquera par défaut les implications subClass, subProperty et Range, il faut paramétrer la commande de cette manière :

4s-httpd -R CPR -p 8080 demo

Pour configurer un serveur qui n’appliquera aucune implication (None) par défaut, il faut paramétrer la commande de cette manière :

4s-httpd -R N -p 8080 demo
Remarque

L'ordre de la chaîne de caractères passé au paramètre -R est sans importance. 'PC' et 'CP', par exemple, ajouteront les implications subClass and subProperty.

Importer des données

4SR semble supporter les requêtes INSERT et DELETE.

Pour importer des fichiers Turtle, vous pouvez utiliser la commande suivante :

curl -T vehicles.ttl -H 'Content-Type: application/x-turtle' \
                       http://localhost:8080/data/http://data.org/vehicles

Vérifier l'état de votre serveur SPARQL

Allez sur la page : http://localhost:8081/status

Vous devez voir la page status du serveur 4Store, où le nom de la version doit contenir le texte v4sr.

Arrêter le serveur SPARQL

Comme pour 4Store, on utilise ces commandes pour arrêter les processus.

sudo killall 4s-httpd
sudo killall 4s-backend

Supprimer une base de données

Comme pour 4Store, on utilise ces commandes pour supprimer une base de données.

sudo killall 4s-httpd
sudo killall 4s-backend
sudo 4s-backend-destroy test

Requête avec un paramètre d'implication

Vous avez vu qu'avec la commande 4s-httpd, on indique la liste les implications à appliquer par défaut aux requêtes, mais on peut surcharger cette configuration avec le paramètre HTTP reasoning.
Exemple de requête HTTP :

http://localhost:8080/sparql/?query=VOTRE_REQUETE_SPARQL&reasoning=PC

Ici, VOTRE_REQUETE_SPARQL est votre requête SPARQL. On précise le système d'implication à lui appliquer avec le paramètre reasoning qui prend la valeur P et C, c'est-à-dire rdfs:subClassOf et rdfs:subPropertyOf.

Requête SPARQL via la ligne de commande

4s-query est un outil de 4Store pour exécuter des requêtes SPARQL directement via la ligne de commande (quand 4s-httpd est arrêté). 4s-query est sans implication par défaut. Pour lui appliquer des implications, il faut, comme avec 4s-httpd, utiliser le paramètre -R.

Par exemple : avec la requête SELECT * WHERE { ?s a ?o} avec l'implication rdfs:subClassOf.

4s-query -R C demo "SELECT * WHERE { ?s a ?o}"

Exercice

Nous allons utiliser l'exemple du cours SPARQL_Protocol_and_RDF_Query_Language/Travail_pratique/Système_d'implication.

Pour illustrer les différences entre des implications simples, c'est-à-dire uniquement avec RDF et RDFS, examiner les données suivantes :

En clairEn RDF/turtleLe graphe RDF
  • Un chien est un animal
  • le chat1 est un chat
  • Les chats sont des animaux
  • les zoos hébergent uniquement des animaux
  • Le zoo1 héberge le chat2
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:   <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex:   <http://example.org/> .
@prefix zoo:   <http://example.org/zoo/> .
ex:dog1	   rdf:type	    ex:animal .
ex:cat1	   rdf:type	    ex:cat .
ex:cat	   rdfs:subClassOf  ex:animal .
zoo:host   rdfs:range	    ex:animal .
ex:zoo1    zoo:host         ex:cat2 .
Regime entailment basic

Maintenant, examiner la requête suivante :

PREFIX  ex: <http://example.org/>
SELECT ?animal
WHERE
  { ?animal a ex:animal . }


Voici le résultat final de la requête, à condition que votre triplestore applique les implications RDF et RDFS :

animal
<http://example.org/dog1>
<http://example.org/cat1>
<http://example.org/cat2>


Exercice : configurer votre serveur, importer les données via un fichier ttl pour obtenir le même résultat à cette requête sans paramètre reasoning.

Références

Ce TP a été fabriqué avec les documents suivants :

Autres documents :


Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.