Skip to content

Sparql : 5e pas (description de la requête 2/2)

28/06/2012

Même si j’ai déjà empiété sur le sujet du jour, je préfère faire les choses proprement, en traduisant ici un peu moins approximativement le tutoriel déjà évoqué, rédigé par quelqu’un de plus compétent (quoique anglophone), pour la partie qui décrit la composition d’une requête.

Structure d’une requête

La requête SPARQL va sélectionner les noms de tous les éléments du tableau périodique :

PREFIX table: <http://www.daml.org/2003/01/periodictable/PeriodicTable#>
SELECT ?name
FROM <http://www.daml.org/2003/01/periodictable/PeriodicTable.owl>
WHERE { ?element table:name ?name. }

PREFIX

En prenant ces lignes depuis le début nous tombons sur le mot PREFIX. Le PREFIX est grosso modo l’équivalent SPARQL de la déclaration d’espaces de noms (namespace) en XML : il associe un libellé court à une URI précise. Exactement comme pour les espaces de noms, le libellé de contient pas de signification particulière : c’est juste un libellé.

Une requête peut contenir n’importe quel nombre d’assignations (statement) de préfixes. Ce libellé assigné à une URI peut être utilisé n’importe où dans une requête à la place de l’URI elle-même : par exemple dans un modèle de triplet. Dans le triplet de la requête ci-dessus, on peut voir le préfixe table utilisé comme raccourci de http://www.daml.org/2003/01/periodictable/PeriodicTable#name, qui est l’URI complète de la propriété name.

SELECT

Le vrai début de la requête est le mot SELECT. Comme dans une requête SQL,SELECT permet de définir les données que la requête doit récupérer. En l’occurrence, on récupère le nom de l’élément.

FROM

Comme on peut s’y attendre, FROM identifie les données que la requête va interroger. Dans cet exemple, la requête fait référence à l’URI d’une table périodique des éléments en RDF. Une requête peut inclure plusieurs FROM : c’est alors un moyen de constituer des graphes RDF plus larges en les interrogeant. C’est le propre des mashups.

WHERE

Enfin, la clause WHERE. Un modèle (pattern) de graphe est un ensemble de patterns de triplets qui permet d’identifier le type de graphe que nous voulons.

En fait, WHERE est facultatif et peut légitimement être omis pour formuler des requêtes plus brèves, sous la forme :

BASE <http://www.daml.org/2003/01/periodictable/>
PREFIX table: <PeriodicTable#>
SELECT ?name
FROM <PeriodicTable.owl> { ?element table:name ?name. }

Les URI sont souvent long et difficiles à manipuler, donc on n’a jamais trop d’astuces syntaxiques pour éviter de les répéter sans cesse. BASE est une autre manière d’abréger les URI, en définissant une URI de base que les requêtes vont systématiquement considérer comme URI racine, y compris ceux définis comme PREFIX. Comme vous le voyez, les préfixes communs aux deux URI dans l’exemple ci-dessus ont été factorisés par la déclaration d’une BASE URI.

One Comment

Trackbacks

  1. Sparql : 5e pas (description de la requête 2/2) | Ebooksinfo | Scoop.it

Les commentaires sont fermés.

%d blogueurs aiment cette page :