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

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.

Introduction modifier

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

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

Installation modifier

Installer d’abord 4Store modifier

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

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

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

Créer une base de données modifier

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

sudo 4s-backend-setup test

Démarrer le serveur SPARQL modifier

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

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

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

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

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

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

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 modifier

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 .
 

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 modifier

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

Autres documents :