• Aucun résultat trouvé

Interrogation du Web Sémantique

Évolution du Web

2.2 Le web sémantique

2.2.4 Interrogation du Web Sémantique

Afin d’accéder à la quantité énorme d’information sémantique qui est stockée de manière structurée, il est nécessaire d’avoir un langage de requêtes sémantiques [Corby

et al. 2004,Mendelzon et al. 1997], semblable à SQL et dans la continuité de RDQL [ Sea-borne 2004], SPARQL [Prud’hommeaux & Seaborne 2008,Franconi & Tessaris 2005] acronyme pour Simple Protocol And RDF Query Language qui est à la fois un langage et un protocole pour interroger des données modélisées en RDF.

Le composant de base d’une requête SPARQL est un motif de graphe basique (Basic Graph Pattern), qui peut être vu comme un ensemble de morceaux de requête élémen-taires, appelés motif de triplet (Triple Pattern). Un motif de triplet s’exprime sous la forme d’un triplet RDF, pouvant contenir une ou plusieurs variables V en tant que

< sujet, prédicat, objet > ∈ (T ∪ V ) × (U ∪ V ) × (T ∪ V ). Une variable est caractérisée par

le fait qu’elle commence par un point d’interrogation dans le motif de triplet.

Il utilise d’ailleurs une syntaxe proche de SQL [Harris & Shadbolt 2005], et notamment la structure générale SELECT WHERE d’une requête. Le contenu de la clause W HERE est un motif de graphe RDF dont chaque occurrence dans la base de triplets interrogée constitue une réponse à la requête. Une requête peut interroger un ou plusieurs documents rdf [Carroll & Klyne 2004,Hayes 2004,Lassila & Swick 1999,Manola & Miller 2004, Be-ckett 2009b], soit par l’utilisation d’un attribut F ROM en début de requête, soit par l’intermédiaire d’APIs - Application Programming Interface - qui permettent de considérer simultanément plusieurs sources, soit via l’utilisation d’entrepôts de données rdf [Carroll & Klyne 2004,Hayes 2004,Lassila & Swick 1999,Manola & Miller 2004,Beckett 2009b]associés à des points d’accès (ou endpoints). SP ARQL dispose des quatre opérateurs suivants :

— SELECT qui comme son nom l’indique va sélectionner différents éléments selon un pattern de requête particulier.

— CONSTRUCT qui permet de transformer un graphe RDF en un autre graphe. On peut ainsi voir cet opérateur comme le XSLT [Clark 1999] du Web Sémantique.

— ASK permet de répondre à une requête, en identifiant si oui ou non le pattern recherché est présent dans le graphe interrogé.

— DESCRIBE qui renvoie sous forme d’un graphe RDF une description de la ressource passée en argument. Cette description est laissée à la discrétion des outils de moteurs SPARQL et peut pas exemple retourner l’ensemble des triplets ayant pour sujet cette ressource.

Dans ce BGP, les triplets s’expriment dans une syntaxe très proche de Turtle, qui autorise en plus l’utilisation de variables ; les variables commencent par ? ou $ directement suivi de l’identifiant de la variable, comme par exemple ?maVariable. Un motif de graphe M est formé de l’un des éléments suivants :

— Un motif de triplet (s p o.) constitué de termes RDF et de variables, — Une jointure de deux motifs (M1M2),

— Une union de deux motifs (M1 UNION M2), — Un motif optionnel (OPTIONAL M1),

— Un motif de filtre (FILTER F ) où F est soit une expression booléenne fondée sur des opérateurs prédéfinis, soit une négation de motif (NOT EXIST G1),

— Un motif de graphe nommé (GRAPH g G1) où g est l’URI, le nom qualifié ou une variable faisant référence à un graphe nommé,

— Une sous-requête ( SELECT ... WHERE G1 ).

Les préfixes se déclarent comme en Turtle, mais en amont de la clause WHERE, avant le mot-clé SELECT, et sans le caractère .

Définition 2.2.10 (motif de graphe SPARQL). Un motif de graphe SPARQL est un motif

de graphe basique, définie comme suit Ssi P , P0 sont deux motif de graphe basique et K une contrainte SPARQL, alors (P AND P0), (P UNION P0), (P OPT P0), et (P FILTER K) sont des motifs de graphe SPARQL.

Le traitement d’une requête (c’est-à-dire la recherche des résultats de cette requête) se fait par appariement de graphe (graph pattern matching) [Glimm & Krötzsch 2010]. Pour répondre à une requête, un moteur SPARQL détermine l’ensemble des valeurs que peuvent prendre les variables du pattern de graphe de sorte que le graphe obtenu après instanciation de ces variables soit un sous-graphe partiel du graphe cible ; chaque appariement variables-valeurs menant à un sous-graphe partiel du graphe cible est une réponse à la requête. Le contenu de la clause SELECT liste l’ensemble des variables dont la valeur doit être retournée pour chaque réponse.

Définition 2.2.11 (Map). Soit V1 ⊆ T , et V2 ⊆ T deux terminologies. Un map de V1 à V2 est une fonction σ : V1→ V2 tels que ∀x ∈ (V1∩ V), σ(x) = x.

Définition 2.2.12 (Répondre à une requête). Soit |=RDF une relation d’entailment sur les motif de graphes basiques, P , P0 est un motif de graphe SPARQL, K est une contrainte

SPARQL, et G un graphe RDF. L’ensemble S(P, G) des réponses de P dans G est l’ensemble des maps de B(P ) vers T (G) est définie intuitivement comme suit :

S(P, G) = {σ|B(P )| G |=RDF σ(P )} Si P est un motif de graphe basique     2.1 S((P AND P0), G) = S(P, G) on S(P0, G)     2.2 S(P UNION P0, G) = S(P, G) ∪ S(P0, G)     2.3 S(P OPT P0, G) = (S(P, G) on S(P0, G)) ∪ (S(P, G) \ S(P0, G))     2.4 S(P FILTER K, G) = {σ ∈ S(P, G) | σ(K) = >}     2.5 Dans cet exemple, le premier motif de triplet est (<http ://dbpe-dia.org/resource/Algeria> owl :sameAs ?x) introduisant une première variable ?x pouvant (à cette étape-ci de la requête) prendre la valeur de n’importe quelle ressource du graphe interrogé équivalente à la ressource Algérie dont l’ URI des recherché contient la sous-chaine " geo ". Voici le code de cette requête Q :

[Requête Q]

P R E F I X owl : < h t t p :// www . w3 . org / 2 0 0 2 / 0 7 / owl # > s e l e c t ? x

{

< h t t p :// d b p e d i a . org / r e s o u r c e / Algeria > owl : s a m e A s ? x f i l t e r r e g e x ( str (? x ) , " geo ")

}

Listing 2.2 – Exemple de requête Q de filtrage textuel SPARQL

X

<http ://linkedgeodata.org/triplify/node432424926> <http ://gadm.geovocab.org/id/065 >

<http ://sws.geonames.org/2589581/>

Table 2.5 – Résultat de la requête Q (Filtrage textuel)

La requête Q0permet de lister au plus 6 noms de ville ou village faisant partie de l’Algérie : [Requête Q’] P R E F I X d b p e d i a : < h t t p :// d b p e d i a . org / r e s o u r c e / > P R E F I X dbp - ont : < h t t p :// d b p e d i a . org / o n t o l o g y / > s e l e c t * { ? l o c a t i o n ? l o c a t e d I n d b p e d i a : A l g e r i a .

? l o c a t i o n a ? t y p e f i l t e r (? t y p e = dbp - ont : C i t y || ? t y p e = dbp - ont : V i l l a g e ) } l i m i t 6

Listing 2.3 – Exemple de requête Q’ de filtrant les ressources cibles SPARQL

Location locatedIn type

:Algiers dbpedia :ontology/country dbpedia :ontology/City :Adrar dbpedia :ontology/country dbpedia :ontology/City :Annaba dbpedia :ontology/country dbpedia :ontology/City :Aokas dbpedia :ontology/country dbpedia :ontology/City :Barika dbpedia :ontology/country dbpedia :ontology/City :Biskra dbpedia :ontology/country dbpedia :ontology/City

Table 2.6 – Résultat de la requête Q’