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

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Système d'implication
Icône de la faculté
Chapitre no 9
Leçon : SPARQL Protocol and RDF Query Language
Chap. préc. :Requêtes d'exportation
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « SPARQL : Système d'implication
SPARQL Protocol and RDF Query Language/Système d'implication
 », n'a pu être restituée correctement ci-dessus.

On a vu que des triplestores (ou bases de données RDF) mettent en œuvre certaines caractéristiques qui les rendent très attractifs. Les données ne sont plus liées à des schémas statiques, car les schémas sont contenus directement au sein des données. On insère ces données, comme on l'a vu, via des requêtes d'écriture SPARQL ou à travers des importations de sources RDF via les outils de sauvegarde et d'importation de la base de données.
Cependant, la caractéristique la plus intéressante d'un triplestore est la possibilité de mettre en œuvre un système d'implication (en anglais, entailment regime).

Le système d'implication au sein d'un triplestore permettra deux choses :

  • faire des déductions sur les inférences contenues dans la base de données par des agents intelligents
  • détecter les implications incohérentes au sein des données, c'est-à-dire détecter les erreurs d'intégrité des données

Le système d'implication est l'équivalent de ce que l’on nomme les mécanismes d'intégrité au sein d'une base de données relationnelle. Ce chapitre va essayer de vous expliquer cette nouvelle approche, qui servira de base au développement de l'intégrité des données RDF.


Système d'implication[modifier | modifier le wikicode]

Définitions[modifier | modifier le wikicode]

Les ontologies du Web sémantique, comme le vocabulaire RDF, RDFS ou encore OWL (Web Ontology Language), fournissent des éléments de base pour la définition d'ontologies ou de vocabulaires destinés à structurer des ressources RDF. Avec ces ressources structurées dans un triplestore, vous pouvez utiliser le langage de requêtes SPARQL pour les atteindre à travers le Web.




Différences entre les systèmes d'implication[modifier | modifier le wikicode]

Pour illustrer les différences entre des implications simples, RDF et RDFS, examiner les données suivantes :

En clair 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
Regime entailment basic
En RDF/turtle
@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 . }

Sans système d'implication[modifier | modifier le wikicode]

(1) ex:dog1	   rdf:type	    ex:animal .
(2) ex:cat1	   rdf:type	    ex:cat .
(3) ex:cat	   rdfs:subClassOf  ex:animal .
(4) zoo:host	   rdfs:range	    ex:animal .
(5) ex:cat2	   zoo:host	    ex:zoo1 .

De toute évidence, ex:dog1 est une réponse à cause du triplet (1). Intuitivement, on peut s'attendre à ce qu'ex:cat1 soit aussi une réponse parce qu’il est un chat (2) et tous les chats sont des animaux (3). Même ex:cat2 est un animal parce qu’il est hébergé par un zoo (5) et tout ce qui est hébergé par un zoo est un animal (4).

Cependant, sans implications RDF ou RDFS, vous n'aurez que la réponse suivante à la requête SPARQL :

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

Ici, seul le triplet (1) répond à la condition de la requête, car un système qui n'utilise aucune implication ne procédera à aucune des étapes de raisonnement qui sont nécessaires pour trouver ex:cat1 et ex:cat2 qui sont des animaux.


Avec les implications de RDF[modifier | modifier le wikicode]

Les recommandations de RDF contiennent l'ontologie de base que devront contenir les triple­stores, par exemple avec rdf:type ou encore rdf:Property. Les implications RDF permettent d'obtenir quelques inférences, mais pas celles qui sont requises pour obtenir "ex:cat1 et ex:cat2 sont des animaux".

Par contre, voir l'exemple de requête suivant :

SELECT ?prop 
WHERE { ?prop a rdf:Property }

Avec, les données précédentes et les implications RDF, on devrait obtenir le résultat suivant :

prop
<http://example.org/zoo/host>

Sans implication, la requête donnerait une réponse vide, mais sous implication RDF, le triplet (5) peut servir à déduire que zoo:host est une propriété du type ex:zoo1 et ainsi servir de solution à cette requête SPARQL.

Avec les implications de RDFS[modifier | modifier le wikicode]

Afin de récupérer ex:cat1 et ex:cat2, on aurait besoin d'un système qui supporte les implications RDFS.

Voici le raisonnement pour trouver :

  • ex:cat1 : le triplet 3 indique que les chats sont des animaux et le triplet 2 indique qu'ex:cat1 est un chat donc ex:cat1 est un animal
  • ex:cat2 : le triplet 4 indique que la propriété zoo:host attend uniquement des objets de type animal et le triplet 5 indique qu'ex:cat2 est une valeur de la propriété zoo:host donc, si le graphe est bien formé, qu'ex:cat2 est un animal.


Voici le résultat final de la requête "qui est un animal ?" à condition que votre triplestore implémente les implications RDF et RDFS :

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

À suivre[modifier | modifier le wikicode]

La recommandation SPARQL lecture et écriture 1.1 est assez stable, bien que non encore validée, mais la partie qui concerne le système d'implication dans SPARQL 1.1 est loin d’être stabilisée. La raison est qu’il faut au moins une (ou deux) version(s) implémentée(s) de la recommandation pour la valider. Le logiciel 4SR que nous utiliserons dans un TP est l'une des versions qui sont en cours d'implémentation.

Mais, même si la recommandation n’est pas stable, le concept d'implication est présent partout, donc il y a fort à parier que ce concept figurera encore dans la version validée. C'est pour cela qu’il est présent dans ce chapitre et qu’il vous permettra de lire la documentation du W3C et des triplestores qui commencent à utiliser ce concept.

De plus, les concepts d'ontologies sont très complexes à appréhender et le fait de comprendre la finalité exacte d'une ontologie permet de relativiser son utilisation. Il est souvent contre-productif d’utiliser des ontologies extrêmement complexes exploitant des implications qui ne seront pas développées avant bien longtemps au sein de triplestores dans le monde réel.

Évidemment, cette leçon évoluera au rythme des implémentations des triplestores qui respectent les recommandations et nous irons donc au même rythme pour décrire l’utilisation des ontologies.

Références[modifier | modifier le wikicode]