Aller au contenu

SPARQL Protocol and RDF Query Language/Travail pratique/Système d'implication

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Après ce TP, vous saurez :
  • tester les dernières versions de la branche 4Store qui implémente le système d'implication RDFS
  • tester les requêtes avancées SPARQL 1.1 du cours : Système d'implication.
Durée : 1,5 heure
Matériel :
  • un serveur Web sous Linux.
Début de la boite de navigation du travail pratique
Système d'implication
Image logo représentative de la faculté
T.P. no 15
Leçon : SPARQL Protocol and RDF Query Language

TP de niveau 15.

Précédent :Requêtes de découverte
Suivant :Javascript avec SPARQL
En raison de limitations techniques, la typographie souhaitable du titre, « Travail pratique : Système d'implication
SPARQL Protocol and RDF Query Language/Travail pratique/Système d'implication
 », n'a pu être restituée correctement ci-dessus.

Dans 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

[modifier | modifier le wikicode]

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

Installer d’abord 4Store

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

Créer une base de données

[modifier | modifier le wikicode]

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

sudo 4s-backend-setup test

Démarrer le serveur SPARQL

[modifier | modifier le wikicode]

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


Importer des données

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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

[modifier | modifier le wikicode]

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}"

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 clair En RDF/turtle Le 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.

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

Autres documents :