Lisez-moi S.V.P. 

W3C

Format XML des résultats d'interrogation SPARQL

Recommandation du W3C du 15 janvier 2008

Cette version :
http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115/
Dernière version :
http://www.w3.org/TR/rdf-sparql-XMLres/
Version précédente :
http://www.w3.org/TR/2007/PR-rdf-sparql-XMLres-20071112/
Rédacteurs :
Dave Beckett, Institute for Learning and Research Technology (ILRT), University of Bristol
Jeen Broekstra, Information Systems Group, Eindhoven University of Technology

Veuillez consulter la page des errata de ce document, laquelle peut contenir des corrections normatives.

Cf. aussi d'éventuelles traductions.


Résumé

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é.

Statut de ce document

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.


Table des matières

1. Introduction

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].

2. Définition

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.

2.1. Élément de document

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.

2.2. En-tête

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>

2.3. Résultats

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.

2.3.1. Résultats à liaison de variables

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 :

Référence URI RDF U
<binding><uri>U</uri></binding>
Littéral RDF S
<binding><literal>S</literal></binding>
Littéral RDF S avec langue L
<binding><literal xml:lang="L">S</literal></binding>
Littéral typé RDF S avec adresse URI de type de données D
<binding><literal datatype="D">S</literal></binding>
Étiquette de nœud anonyme I
<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>

2.3.2. Résultats booléens

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>

3. Exemples

3.1. Exemples de résultats à liaison de variables

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.

3.2. Exemples de résultats booléens

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.

4. Schémas XML

Des schémas XML sont fournis dans les formats suivants :

  1. RELAX NG [RELAXNG] Compact [RELAXNG-COMPACT] dans le fichier result.rnc ;
  2. RELAX NG XML dans le fichier result.rng ;
  3. Schéma XML du W3C [XMLSCHEMA-1] dans le fichier result.xsd
    Remarque : ce schéma est généré automatiquement à partir du schéma RELAX NG XML.

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>

5. Type de média Internet, extension de fichier et type de fichier Macintosh

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.

Internet Media Type Registration Form

To: ietf-types@iana.org
Subject: Registration of media type application/sparql-results+xml

Type name:
application
Subtype name:
sparql-results+xml
Required parameters:
None
Optional parameters:
"charset": This parameter has identical semantics to the charset parameter of the "application/xml" media type as specified in [RFC3023], section 3.2.
Encoding considerations:
Identical to those of "application/xml" as specified in [RFC3023], section 3.2.
Security considerations:

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.

Interoperability considerations:
There are no known interoperability issues.
Published specification:
This specification.
Applications which use this media type:
No known applications currently use this media type.
Additional information:
Magic number(s):
As specified for "application/xml" in [RFC3023], section 3.2.
File extension(s):
".srx"
Fragment identifiers:
Identical to that of "application/xml" as described in RFC 3023 [RFC3023], section 5.
Base URI:
As specified in [RFC3023], section 6.
Macintosh file type code(s):
"TEXT"
Person & email address to contact for further information:
Dave Beckett, Eric Prud'hommeaux <public-rdf-dawg-comments@w3.org>
Intended usage:
COMMON
Restrictions on usage:
None
Author/Change controller:
The SPARQL specification is a work product of the World Wide Web Consortium's RDF Data Access Working Group. The W3C has change control over these specifications.

References

[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.

6. Références

[XML]
Langage de balisage extensible (XML) 1.0 (troisième édition), T. Bray, J. Paoli, C.M. Sperberg-McQueen, E. Maler, F. Yergeau, rédacteurs, recommandation du W3C, 4 février 2004. Ce document est à http://www.w3.org/TR/2004/REC-xml-20040204 ; sa dernière version est disponible à http://www.w3.org/TR/REC-xml.
[SPARQL-QUERY]
Langage d'interrogation SPARQL pour RDF, E. Prud'hommeaux, A. Seaborne, rédacteurs, recommandation du W3C, 15 janvier 2008. Ce document est à http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/ ; sa dernière version est disponible à http://www.w3.org/TR/rdf-sparql-query/.
[RELAXNG]
RELAX NG Specification, James Clark et MURATA Makoto, rédacteurs, OASIS Committee Specification, 3 décembre 2001. Ce document est à http://www.oasis-open.org/committees/relax-ng/spec-20011203.html ; sa dernière version est disponible à http://www.oasis-open.org/committees/relax-ng/spec.html.
[RELAXNG-COMPACT]
RELAX NG Compact Syntax, James Clark, rédacteur. OASIS Committee Specification, 21 novembre 2002. Ce document est à http://www.oasis-open.org/committees/relax-ng/compact-20021121.html.
[XMLSCHEMA-1]
XML Schema tome 1 — Structures (deuxième édition), D. Beech, N. Mendelsohn, M. Maloney, H. S. Thompson, rédacteurs, recommandation du W3C, 28 octobre 2004. Ce document est à http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/ ; sa dernière version est disponible à http://www.w3.org/TR/xmlschema-1/.