SPARQL Protocol and RDF Query Language/Travail pratique/Système d'implication
Introduction
modifierDans ce TP, nous allons installer 4SR, qui est une version temporaire (c'est-à-dire 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
modifierIl faut déjà avoir utilisé 4Store et avoir lu la leçon sur le système d'implication SPARQL.
Installation
modifierInstaller d’abord 4Store
modifier4SR 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
modifierVous 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
modifierComme 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
modifierCréer une base de données
modifierVoici la commande pour créer une base de données test :
sudo 4s-backend-setup test
Démarrer le serveur SPARQL
modifierIci 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
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
modifier4SR 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
modifierAllez 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
modifierComme 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
modifierComme 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
modifierVous 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
modifier4s-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
modifierNous 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 clair | En RDF/turtle | Le graphe RDF |
---|---|---|
|
@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 .
|
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.
Créer le fichier turtle : zoo.ttl
@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 .
Exécuter les commandes pour redémarrer votre serveur :
killall 4s-httpd
killall 4s-backend
4s-backend-setup demo4sr
4s-backend demo4sr
4s-httpd -R CPDR -p 8080 demo4sr
Importer les données via curl :
curl -T zoo.ttl -H 'Content-Type: application/x-turtle' http://localhost:8080/data/http://example.org/
Tester votre requête avec ce lien :
http://localhost:8080/sparql/?query=PREFIX ex: <http://example.org/> SELECT ?animal WHERE { ?animal a ex:animal . }
Références
modifierCe TP a été fabriqué avec les documents suivants :
Autres documents :