Veuillez consulter la page des errata de ce document, laquelle peut contenir des corrections normatives.
Cf. aussi d'éventuelles traductions.
Copyright ©2007 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
Le langage RDF est un moyen flexible et extensible de représenter des informations à propos de ressources web. On l'utilise entre autres choses pour représenter des informations personnelles, des réseaux sociaux, des métadonnées à propos d'artéfacts numériques tels que de la musique et des images, ainsi que pour fournir un moyen d'intégration sur des sources d'information disparates. Un langage d'interrogation normalisé de données RDF de mises en œuvre multiples offre aux développeurs et aux utilisateurs finaux un moyen d'écrire et de consommer les résultats d'interrogations à travers ce large éventail d'informations.
Ce document décrit un format XML des résultats à liaison de variables et booléens produits par le langage d'interrogation SPARQL pour RDF, développé par le groupe de travail RDF Data Access du W3C (DAWG), sous l'égide de l'activité Semantic Web comme décrit dans la déclaration d'activité.
Cette section décrit le statut de ce document à sa publication. D'autres documents peuvent venir le remplacer. On peut trouver une liste des publications du W3C et la dernière version de ce rapport technique à l'index des rapports techniques du W3C à http://www.w3.org/TR/.
C'est une recommandation du W3C.
Ce document qui a été examiné par des membres du W3C, par des développeurs de logiciels et par d'autres groupes du W3C et des tiers intéressés est approuvé par le Directeur comme recommandation du W3C. C'est un document stable qui peut être utilisé comme document de référence ou cité par un autre document. Le rôle du W3C en produisant la recommandation est d'attirer l'attention sur la spécification et d'en promouvoir le large déploiement. Cela participe à améliorer la fonctionnalité et l'interopérabilité du Web.
Les commentaires concernant ce document devraient être envoyés à public-rdf-dawg-comments@w3.org, une liste de diffusion avec des archives publiques. Les questions et commentaires à propos de SPARQL sans rapport avec cette spécification, y compris les extensions et les caractéristiques, peuvent être débattus sur la liste de diffusion public-sparql-dev@w3.org (archives publiques).
Ce document a été produit par le groupe de travail RDF Data Access,
sous l'égide de l'activité Semantic Web du W3C.
La première parution de ce document au titre de version préliminaire est intervenue le 21 décembre 2004, et le groupe de travail
a répondu à nombre de commentaires reçus
et de problèmes depuis. Le type de média application/sparql-results+xml
est officialisé depuis la publication de la recommandation proposée de novembre 2007.
Le rapport de mise en œuvre pour le format XML des résultats d'interrogation SPARQL du groupe de travail démontre que les objectifs d'interopérabilité des mises en œuvre, établis dans la recommandation candidate de septembre 2007, ont été atteints.
Le groupe de travail Data Access a ajourné 12 problèmes, comprenant les fonctions agrégées et un langage de mise à jour.
Ce document a été produit par un groupe agissant sous couvert de la politique de brevets du W3C du 5 février 2004. Le W3C tient une liste publique des divulgations de brevets effectuées en rapport avec les produits livrables du groupe ; cette page contient également des instructions pour divulguer un brevet. Quiconque a connaissance véritable de l'existence d'un brevet qu'il estime contenir des revendications essentielles doit divulguer cette information conformément à la section 6 de la politique de brevets du W3C.
Le Langage d'interrogation SPARQL pour RDF
[SPARQL-QUERY] définit plusieurs formes de résultats d'interrogation
(query result forms)
(cf. la section 10).
Ce document définit un document de résultats SPARQL (SPARQL results document)
qui code les résultats d'interrogation à liaison de variables de type SELECT
(cf. la section 10.2)
et les résultats d'interrogation booléens de type ASK
(cf. la section 10.5) en
XML [XML].
Définition : document de résultats SPARQL (SPARQL results document)
Un document de résultats SPARQL est un document XML valide par rapport au schéma RELAX NG XML ou bien au schéma XML du W3C, cf. la section 4.
Le document de résultats SPARQL commence avec l'élément de document
(document element) sparql dans l'espace de noms http://www.w3.org/2005/sparql-results#,
qui s'écrit comme suit :
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... </sparql>
À l'intérieur de l'élément sparql se trouvent deux sous-éléments : l'élément head et un élément de résultat
(soit results, soit boolean) qui doivent apparaître dans cet ordre.
L'élément head est le premier sous-élément de l'élément sparql.
Pour un résultat d'interrogation à liaison de variables, l'élément head doit contenir une séquence d'éléments décrivant
l'ensemble des noms de variables d'interrogation
(query variable) dans la
séquence de solutions
(solution sequence), appelée ici « résultats d'interrogation ».
L'ordre des noms de variables dans la séquence est celui des noms de variables donnés en argument à l'instruction SELECT
dans l'interrogation SPARQL. Si on utilise l'instruction SELECT *, l'ordre des noms n'est pas défini.
À l'intérieur de l'élément head, la séquence ordonnée des noms de variables choisis est utilisée pour créer
les sous-éléments variable vides avec le nom de la variable comme valeur d'attribut name,
pour donner un document tel que celui-ci :
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="x"/>
<variable name="hpage"/>
<variable name="name"/>
<variable name="mbox"/>
<variable name="blurb"/>
</head>
...
</sparql>
Pour un résultat d'interrogation booléen, aucun élément n'est obligatoire dans l'élément head,
et aucun élément variable ne doit y apparaître.
Pour tout résultat d'interrogation, l'élément head peut également contenir des sous-éléments link
avec un attribut href dont la valeur est une adresse URI relative qui fournit un lien vers
des métadonnées supplémentaires à propos des résultats d'interrogation. L'adresse URI relative est résolue par rapport à
l'adresse URI de base en vigueur (in-scope), qui est habituellement l'adresse URI
du document de format des résultats d'interrogation. Les éléments link doivent apparaître après les éléments variable présents.
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
...
<link href="metadata.rdf"/>
</head>
...
</sparql>
Le deuxième sous-élément de sparql doit apparaître après l'élément head : il s'agit soit de
l'élément results, soit de l'élément boolean. L'élément s'inscrit même si les résultats d'interrogation sont vides.
L'élément results contient la séquence complète des résultats d'interrogation.
Pour chaque solution d'interrogation
dans les résultats d'interrogation, on ajoute un sous-élément result de l'élément results,
pour donner un document tel que celui-ci :
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
... head ...
<results>
<result>...
</result>
<result>...
</result>
...
</results>
</sparql>
Chaque élément result correspond à une seule solution d'interrogation (query solution)
dans un résultat et contient des sous-éléments (sans ordre particulier) pour chaque variable d'interrogation
(query variable) apparaissant dans la solution. L'élément sert à enregistrer la manière dont les variables d'interrogation
se lient aux termes RDF.
Chaque liaison dans une solution est représentée par un élément binding, en sous-élément de result,
avec le nom de la variable d'interrogation comme valeur d'attribut name. Ainsi, pour un résultat liant deux variables
x et hpage, cela donnerait :
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="x"/>
<variable name="hpage"/>
</head>
<results>
<result>
<binding name="x"> ... </binding>
<binding name="hpage"> ... </binding>
</result>
<result>
<binding name="x"> ... </binding>
<binding name="hpage"> ... </binding>
</result>
...
</results>
</sparql>
La valeur d'une liaison de variable d'interrogation, qui est un terme RDF, est incorporée au contenu de
l'élément binding comme suit :
<binding><uri>U</uri></binding><binding><literal>S</literal></binding><binding><literal xml:lang="L">S</literal></binding><binding><literal datatype="D">S</literal></binding><binding><bnode>I</bnode></binding>Si, pour une solution particulière, une variable n'est pas liée, aucun élément binding de cette variable
n'est inclus dans l'élément result.
Remarque :
L'étiquette de nœud anonyme I est dans la portée (scoped) du document XML d'ensemble de résultats
et n'a pas besoin d'avoir une association à l'étiquette de nœud anonyme de ce terme RDF dans le graphe d'interrogation
(query graph).
Voici un exemple de solution d'interrogation codée dans ce format :
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head>
<variable name="x"/>
<variable name="hpage"/>
<variable name="name"/>
<variable name="age"/>
<variable name="mbox"/>
<variable name="friend"/>
</head>
<results>
<result>
<binding name="x">
<bnode>r2</bnode>
</binding>
<binding name="hpage">
<uri>http://work.example.org/bob/</uri>
</binding>
<binding name="name">
<literal xml:lang="en">Bob</literal>
</binding>
<binding name="age">
<literal datatype="http://www.w3.org/2001/XMLSchema#integer">30</literal>
</binding>
<binding name="mbox">
<uri>mailto:bob@work.example.org</uri>
</binding>
</result>
...
</results>
</sparql>
Un résultat booléen s'inscrit comme contenu d'un sous-élément boolean de l'élément sparql
directement après l'élément head, contenant soit true, soit false, comme suit :
<?xml version="1.0"?> <sparql xmlns="http://www.w3.org/2005/sparql-results#"> ... head ... <boolean>true</boolean> </sparql>
Un exemple d'interrogation SPARQL de type SELECT dans le fichier example.rq,
opérant sur des données Turtle/N3 de graphe d'interrogation dans le fichier data.n3, produit des
résultats d'interrogation à liaison de variables, ordonnés, écrits en XML dans le fichier output.srx.
Ce XML peut être transformé en XHTML en utilisant le script XML Query d'exemple result-to-html.xq, pour donner output-xquery.html, ou en utilisant la feuille de style XSLT result-to-html.xsl, pour donner output-xslt.html.
Un exemple d'interrogation SPARQL de type ASK dans le fichier example2.rq,
opérant sur des données Turtle/N3 de graphe d'interrogation dans le fichier data.n3, produit un
résultat d'interrogation booléen écrit en XML dans le fichier output2.srx.
Ce XML peut être transformé en XHTML en utilisant le script XML Query d'exemple result-to-html.xq, pour donner le fichier output-xquery2.html, ou en utilisant la feuille de style XSLT result-to-html.xsl, pour donner output-xslt2.html.
Des schémas XML sont fournis dans les formats suivants :
Si le schéma XML du W3C est utilisé, on peut se servir d'un attribut xsi:schemaLocation
pointant vers le schéma ainsi :
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2007/SPARQL/result.xsd">
...
</sparql>
Le type de média Internet (ou type MIME) du format XML des résultats d'interrogation SPARQL est "application/sparql-results+xml".
Il est recommandé que les fichiers de résultats aient l'extension ".srx" (tout en minuscules) sur toutes les plateformes.
Il est recommandé que les fichiers de résultats stockés sur le système de fichier HFS de Macintosh reçoivent le type de fichier "TEXT".
Les informations suivantes ont été soumises à l'IESG pour examen, approbation et enregistrement auprès de l'IANA. L'IESG n'a pas encore donné sa réponse à la date de publication de ce document.
To: ietf-types@iana.org
Subject: Registration of media type application/sparql-results+xml
SPARQL query results uses URIs. See Section 7 of [RFC3986].
SPARQL query results uses IRIs. See Section 8 of [RFC3987].
As this media type uses the "+xml" convention, it shares the same security considerations as described in [RFC3023], section 10.
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media Types", RFC 3023, January 2001.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005.
[RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, January 2005.