Lisez-moi S.V.P. 
W3C

Introduction à GRDDL

Note de groupe de travail du W3C du 28 juin 2007

Cette version :
http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628/
Dernière version :
http://www.w3.org/TR/grddl-primer/
Version précédente :
http://www.w3.org/TR/2006/WD-grddl-primer-20061002/
Rédacteurs :
Harry Halpin, University of Edinburgh
Ian Davis, Talis
Auteurs et contributeurs :
Cf. la section Remerciements

Résumé

GRDDL est un mécanisme destiné à glaner des descriptions de ressources dans les dialectes des langages (N.d.T. Gleaning Resource Descriptions from Dialects of Languages). C'est une technique d'obtention de données RDF dans les documents XML et en particulier dans les pages XHTML. Les auteurs peuvent associer explicitement les documents à des algorithmes de transformation, typiquement dans une représentation XSLT, en utilisant un élément link dans la section head du document. D'une autre façon, les informations nécessaires pour obtenir la transformation peuvent se trouver associées dans un document de profil de métadonnées ou dans un document d'espace de noms. À la lecture du document, les clients peuvent suivre les liens à travers le Web en utilisant les techniques décrites dans la spécification GRDDL pour découvrir les transformations appropriées. Ce document reprend plusieurs exemples du document des cas d'utilisation GRDDL pour illustrer en détails les techniques offertes par GRDDL pour associer les documents aux instructions appropriées afin d'en extraire les données.

Statut de ce document

Cette section décrit le statut du document au moment de sa publication. D'autres documents peuvent le remplacer. On peut trouver une liste des publications actuelles du W3C et la dernière version de ce rapport technique dans l'index des rapports techniques du W3C à http://www.w3.org/TR/.

Ce document est une note de groupe de travail, développée par le groupe de travail GRDDL.

La publication de la note de groupe de travail marque l'achèvement des travaux sur ce document par le groupe de travail GRDDL. Les modifications apportées à la version précédente sont consignées dans le journal des changements. Les commentaires à propos de ce document peuvent être envoyés sur public-grddl-comments@w3.org (cf. les archives publiques). La suite de la discussion sur cette matière peut se tenir sur la liste de diffusion du groupe d'intérêt Semantic Web à semantic-web@w3.org (avec des archives publiques aussi).

La publication comme note de groupe de travail n'implique pas une approbation des membres du W3C. Ce document est une esquisse qui peut être remplacée ou rendue obsolète par d'autres documents à tout instant. Il n'est pas approprié de citer ce document autrement que comme un travail en cours.

Le document est 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 faites en rapport avec les produits livrables du groupe ; cette page contient également des instructions pour divulguer un brevet. Toute personne ayant connaissance réelle d'un brevet qu'elle 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

Introduction

GRDDL fournit un ensemble économe de mécanismes pour exploiter du contenu RDF dans XML et XHTML. GRDDL le fait en soulageant l'auteur de la formulation RDF pour la confier à des algorithmes de transformation écrit spécifiquement pour des dialectes XML tel XHTML. Dans ce document, on désigne par HTML le dialecte XHTML de HTML [XHTML].

GRDDL fonctionne en associant des transformations à un document individuel, soit par inclusion directe de références, soit indirectement par le biais de documents de profils et d'espaces de noms. Pour les dialectes XML, les transformations s'expriment couramment en utilisant XSLT 1.0, bien que d'autres méthodes soient possibles. Généralement, si on arrive à exprimer la transformation en XSLT 1.0, alors il est préférable d'utiliser ce format puisque les processeurs GRDDL sont censés interpréter les documents XSLT 1.0.

Bien que tout le monde puisse créer une transformation, une bibliothèque de transformation standard est fournie, laquelle peut extraire du RDF incorporé directement dans XML ou HTML avec des balises <rdf:RDF>, ainsi que des transformations de profils. On peut fabriquer des transformations GRDDL pour presque tous les dialectes, y compris les microformats.

Ce document peut être lu conjointement aux cas d'utilisation GRDDL [GRDDL-SCENARIOS] qui décrivent une série de scénarios courants où GRDDL peut convenir. Les lecteurs désireux de connaître les détails techniques du mécanisme GRDDL ou qui veulent eux-mêmes mettre en œuvre GRDDL devraient consulter la spécification GRDDL [GRDDL].

GRDDL et XHTML : Planifier une réunion

Un problème persistant et gênant est celui de découvrir précisément quand et où les amis se trouvent ensemble afin de pouvoir planifier une réunion. Dans notre exemple, Jane, une voyageuse assidue, essaye de voir si elle peut planifier, à un point quelconque l'année prochaine, une réunion avec trois de ses amis, bien que ceux-ci publient tous leurs agendas de différentes façons. Avec GRDDL, Jane découvrira si tous peuvent se réunir sans les obliger à utiliser le même système centralisé de calendrier Web.

GRDDL permet d'associer des transformations GRDDL à un contenu de plusieurs façons, chacune convenant à des situations différentes. La méthode la plus simple pour les auteurs de contenu HTML consiste à incorporer directement une référence aux transformations en utilisant un élément link dans l'en-tête (head) du document.

Les microformats sont des conventions simples pour incorporer le balisage sémantique d'un domaine spécifique dans des documents lisibles par des humains. Une amie de Jane a balisé son emploi du temps en utilisant le microformat hCalendar. Le microformat hCalendar utilise des attributs HTML class pour associer une sémantique d'événement aux éléments du balisage, comme illustré par le calendrier de Robin :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title xml:lang="fr">L'emploi du temps de Robin</title>
  </head>
  <body>
    <ol class="schedule">
      <li>2006
        <ol>
          <li class="vevent">
            <strong class="summary">Fashion Expo</strong> in 
            <span class="location">Paris, France</span>:
            <abbr class="dtstart" title="2006-10-20">Oct 20</abbr> to 
            <abbr class="dtend" title="2006-10-23">22</abbr>
          </li>
          <li class="vevent">
            <strong class="summary">New line review</strong> in 
            <span class="location">Cologne, Germany</span>:
            <abbr class="dtstart" title="2006-10-26">Oct 26</abbr> to 
            <abbr class="dtend" title="2006-10-28">27</abbr>
          </li>
          <li class="vevent">
            <strong class="summary">Clothing 2006</strong> in 
            <span class="location">Rome, Italy</span>:
            <abbr class="dtstart" title="2006-12-01">Dec 1</abbr> to 
            <abbr class="dtend" title="2006-12-06">5</abbr>
          </li>
        </ol>
      </li>
      <li>2007
        <ol>
          <li class="vevent">
            <strong class="summary">Web Design Conference</strong> in 
            <span class="location">Edinburgh, UK</span>:
            <abbr class="dtstart" title="2007-01-08">Jan 8</abbr> to 
            <abbr class="dtend" title="2007-01-11">10</abbr>
          </li>
          <li class="vevent">
            <strong class="summary">Board Review</strong> in 
            <span class="location">New York, USA</span>:
            <abbr class="dtstart" title="2007-02-23">Feb 23</abbr> to 
            <abbr class="dtend" title="2007-02-25">24</abbr>
          </li>
        </ol>
      </li>
    </ol>
  </body>
</html>

Pour relier explicitement les données dans ce document au modèle de données RDF, l'auteur doit faire deux modifications. Premièrement, ajouter un attribut profile à l'élément head pour indiquer que son document contient des métadonnées GRDDL. En HTML, les profils servent à lier les documents aux descriptions de schémas de métadonnées qu'ils emploient (cf. la spécification HTML, Les profils de métadonnées). L'adresse URI du profil de GRDDL est http://www.w3.org/2003/g/data-view, et en incluant cette adresse URI dans son document Robin déclare que son balisage peut être interprété avec GRDDL.

Le résultat HTML ressemble à ceci :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head profile="http://www.w3.org/2003/g/data-view">
    <title>Robin's Schedule</title>
  </head>
  <body>
  ...

Deuxièmement, ajouter un élément link contenant la référence de la transformation GRDDL spécifique pour convertir le code HTML contenant des motifs hCalendar en RDF. Elle peut écrire sa propre transformation GRDDL, ou bien réutiliser une transformation existante, et il y a en a justement une disponible pour les agendas. L'attribut rel de l'élément link a pour valeur l'atome transformation, et l'attribut href donne l'adresse URI de la transformation GRDDL en question pour extraire le RDF.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head profile="http://www.w3.org/2003/g/data-view">
    <title>Robin's Schedule</title>
    <link rel="transformation" href="http://www.w3.org/2002/12/cal/glean-hcal"/>
  </head>
  <body>
  ...

L'adresse URI du profil dans le nouveau fichier calendrier avec GRDDL de Robin signale au récepteur du document qu'il peut lire les éléments link dont l'attribut rel contient l'atome transformation et utiliser un ou tous ces liens pour déterminer comment traduire les données RDF du calendrier de Robin.

Un diagramme indiquant les étapes successives suivies pour obtenir le RDF d'un document en utilisant un lien explicite vers la transformation comme décrit dans le paragraphe précédent.

Référence par documents de profil

Les éditeurs de données individuels utilisant des vocabulaires populaires peuvent aussi offrir à leurs utilisateurs de les transformer en RDF sans même avoir à ajouter un nouveau balisage aux documents individuels. Cela se fait en référençant les transformations GRDDL dans un document de profil appelé dans l'en-tête du document HTML. D'autres vocabulaires XML peuvent utiliser leurs documents d'espace de noms dans le même but. Cette méthode ne nécessite aucun travail de la part du créateur du contenu des documents individuels mais exige que le document de profil contienne une référence à une transformation GRDDL qui soit accessible au client GRDDL, et donc peut nécessiter une action du créateur et du chargé du suivi du dialecte. C'est une bonne utilisation du temps, puisqu'une fois la transformation liée au document de profil, tous les utilisateurs du dialecte ont la valeur ajoutée du RDF.

Un autre ami de Jane, David, a choisi de baliser son emploi du temps en utilisant Embedded RDF. Embedded RDF a un lien vers une transformation GRDDL dans son document de profil.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head profile="http://purl.org/NET/erdf/profile">
    <title>Where Am I</title>
    <link rel="schema.cal" href="http://www.w3.org/2002/12/cal#" />
  </head>

  <body>
    <p class="-cal-Vevent" id="tiddlywinks">
      From <span class="cal-dtstart" title="2006-10-07">7 October, 2006</span>
      to <span class="cal-dtend"  title="2006-10-13">12 October, 2006</span> 
      I will be attending the <span class="cal-summary">National Tiddlywinks
      Championship</span> in 
      <span class="cal-location">Bognor Regis, UK</span>.
    </p>

   
    <p class="-cal-Vevent" id="holiday">
      Then I'm <span class="cal-summary">on holiday</span> in the 
      <span class="cal-location">Cayman Islands</span> between
      <span class="cal-dtstart" title="2006-11-14">14 November, 2006</span>

      and <span class="cal-dtend"  title="2007-01-02">1 January, 2007</span>. 
    </p>

    <p class="-cal-Vevent" id="award">
      I then visit Scotland on <span class="cal-dtstart" title="2007-01-08">the 8th
      January</span> to <span class="cal-summary">pick up a lifetime
      achievement award from the world gamers association</span>. This time
      the ceremony is in <span class="cal-location">Edinburgh, UK</span>. I'll be
      taking the train home on the <span class="cal-dtend"  title="2007-01-11">10th</span>. 
    </p>

  </body>
</html>

Dans ce document, remarquez quel l'attribut profile ne contient pas de référence au profil GRDDL. À la place, il référence l'adresse URI standard du profil Embedded RDF lequel contient les métadonnées GRDDL. Quiconque veut extraire les données RDF de la page de David peut récupérer l'adresse URI du profil Embedded RDF pour obtenir le document de profil suivant :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

  <head profile="http://www.w3.org/2003/g/data-view">
    <title>Embedded RDF HTML Profile</title>
    <link rel="transformation" href="http://www.w3.org/2003/g/glean-profile" />
  </head>
  <body>

    <p>
      <a rel="profileTransformation" 
          href="http://purl.org/NET/erdf/extract-rdf.xsl">GRDDL transform</a>
    </p>
  </body>
</html>

Ce document contient une référence au profil GRDDL lequel indique à nouveau que le profil peut contenir des références aux transformations GRDDL applicables au calendrier de David, même si David ne relie pas explicitement ces transformations à son calendrier. L'agent utilisateur de Jane applique une transformation normalisée pour documents de profil au document de profil Embedded RDF afin d'y trouver un lien vers une transformation pour tous les documents Embedded RDF, dont le document HTML de David. Cette transformation pour tous les documents Embedded RDF, http://purl.org/NET/erdf/extract-rdf.xsl, est identifiée dans le document de profil par un attribut rel valant profileTransformation. Ce processus peut être répété avec tout vocabulaire ayant une adresse URI de profil.

Un diagramme indiquant les étapes successives suivies pour extraire le RDF d'un document en utilisant l'adresse URI de profil comme décrit dans le paragraphe précédent.

Sur le Web, les pages avec microformats ne seront peut-être pas des pages XHTML valides. Pour cela, on utilisera un programme comme Tidy (ou un autre algorithme) pour rendre la page valide pour XHTML avant d'appliquer le GRDDL [GRDDL-SCENARIOS]. De la même façon, beaucoup de microformats n'auront peut-être pas de profils avec des transformations. L'utilisateur peut toujours prendre les choses en main et appliquer directement une transformation GRDDL pour un microformat sur la page pour extraire le RDF. C'est risqué car si l'auteur du document ou du microformat n'octroie pas explicitement de licence pour une transformation GRDDL, la responsabilité du résultat RDF est maintenant entre les mains de l'utilisateur.

Jane voudrait rencontrer David et Robin mais elle ne veut pas vérifier manuellement leurs calendriers, un processus fatigant et enclin aux erreurs humaines. Pour résoudre ce problème, Jane décide d'utiliser une mise en œuvre GRDDL qui convertit les deux calendriers de Robin et David en RDF. Jane stocke son calendrier directement en RDFa, une méthode pour incorporer directement du RDF dans le HTML. Elle peut utiliser une transformation GRDDL pour RDFa qui convertit le RDFa en RDF/XML, pour avoir son emploi du temps tout en RDF/XML.

Un avantage du modèle de données RDF est que l'on peut facilement mélanger les données RDF en les ajoutant à un magasin RDF, de sorte que Jane peut fusionner tous les emplois du temps et les interroger ensemble une fois transformés en RDF. Jane utilise le langage SPARQL [SPARQL] pour interroger ses données, qui fusionne automatiquement les sources des agendas avant de lancer la requête. SPARQL (ou « The SPARQL Protocol and RDF Query Language » en anglais) est un langage d'interrogation pour RDF avec une syntaxe similaire aux langages d'interrogation bien connus des bases de données. On trouvera des formulaires en ligne pour envoyer des requêtes SPARQL sur ce wiki.. Sa requête SPARQL de planification ressemble à ceci :

PREFIX ical: <http://www.w3.org/2002/12/cal/icaltzd#>
PREFIX xs: <http://www.w3.org/2001/XMLSchema#>

SELECT ?start1 ?stop1 ?loc1 ?summ1 ?summ2 ?summ3

FROM <http://www.w3.org/TR/grddl-primer/janeschedule.rdf>
FROM <http://www.w3.org/TR/grddl-primer/robin-hcal-grddl.rdf>
FROM <http://www.w3.org/TR/grddl-primer/david-erdf.rdf>

WHERE {

	?event1 a ical:Vevent;
              ical:summary ?summ1 ;
  	      ical:dtstart ?start1 ;
              ical:dtend ?stop1 ;
              ical:location ?loc1.
  	?event2 a ical:Vevent;
              ical:summary ?summ2 ;
  	      ical:dtstart ?start2;
              ical:dtend ?stop2;
              ical:location ?loc2.
  	?event3 a ical:Vevent;
              ical:summary ?summ3 ;
  	      ical:dtstart ?start3;
              ical:dtend ?stop3;
              ical:location ?loc3.
      FILTER (  ?event1 != ?event2 &&  ?event2 != ?event3  &&  ?event1 != ?event3  ) .
      FILTER ( xs:string(?start1) = xs:string(?start2) ).
      FILTER ( xs:string(?stop1) = xs:string(?stop2) ).
      FILTER ( xs:string(?loc1) = xs:string(?loc2) ).
      FILTER ( xs:string(?start1) = xs:string(?start3) ).
      FILTER ( xs:string(?stop1) = xs:string(?stop3) ).
      FILTER ( xs:string(?loc1) = xs:string(?loc3) ).
      FILTER ( xs:string(?start3) = xs:string(?start2) ).
      FILTER ( xs:string(?stop3) = xs:string(?stop2) ).
      FILTER ( xs:string(?loc3) = xs:string(?loc2) ).
      FILTER ( xs:string(?summ1) <= xs:string(?summ2) ). 
      FILTER ( xs:string(?summ2) <= xs:string(?summ3) ).
}

La ligne « SELECT » détermine quelle variable apparaîtra dans les résultats, à savoir ici une des dates de début (start), une des dates de fin (stop), un emplacement (location) et un résumé (summary). Les lignes « FROM » identifient les sources de données à utiliser dans la requête, ici le RDF/XML dérivé des documents originaux de Jane, David et Robin. La section « WHERE » fournit un motif pouvant correspondre à trois événements. Le premier bloc « FILTER » filtre les dates de début et de fin identiques ainsi que les emplacements entre les trois événements. Ces valeurs ayant peut-être des types différents sont réduites en littéraux simples avec l'opérateur str(). Les deux lignes « FILTER » finales sont des expressions idiomatiques qui empêchent le retour de résultats multiples dû à l'interchangeabilité des variables.

Les résultats pertinents de l'interrogation du résultat de GRDDL sont :

start1stop1loc1summ1
"2007-01-08"2007-01-11"Edinburgh, UK"Web Design Conference"

Jane découvre donc que ses amis Robin et David seront comme elle tous deux à Édimbourg du 8 au 11 janvier pour la Web Design Conference. Le script SPARQL étant si pratique, elle envisage de le monter comme un service Web afin que ses amis puissent l'utiliser facilement sans avoir à écrire du SPARQL depuis le début.

Hybridation de microformats : Réserver dans un hôtel

Dans cet exemple, nous combinerons des dialectes de données aussi différents que des critiques et des réseaux sociaux afin d'assurer une réservation d'hôtel d'après l'évaluation d'une personne de confiance. Ce processus de réservation d'hôtel met l'accent sur le rôle de GRDDL dans l'agrégation de données provenant d'un éventail de formats différents et de RDF comme format commun pour « hybrider » (N.d.T. mashup) toutes sortes de données, et pas juste des données d'agendas. Nous pouvons bien sûr écrire du code dans notre langage favori pour extraire et combiner ces formats de données d'agenda sans utiliser RDF. Cette capacité à combiner et interroger plusieurs types de données de microformats provenant de pages Web différentes est une caractéristique offerte par RDF, qu'une simple extraction de microformats vers un format de données personnalisé ne peut pas offrir. Cet exemple est similaire au cas d'utilisation de la critique de guitare.

Jane est ravie d'avoir trouvé que ses amis et elle pourront se rencontrer à Édimbourg. Toutefois, elle ne sait pas encore où y loger et décide de consulter des critiques. Il existe plusieurs publications spécialisées en ligne qui présentent des critiques d'hôtels, et des blogues contenant des comptes-rendus faits par des particuliers. Les critiques comprennent les amis et collègues de Jane et les personnes dont l'opinion compte pour elle (par exemple, les comptes-rendus des amis et des personnes que Jane a trouvés utiles dans le passé). Il peut aussi y avoir des comptes-rendus semés par des annonceurs d'hôtels qui offrent des vues partiales pour essayer d'attirer les clients.

Premièrement, Jane a besoin de dresser une liste de personnes en qui elle a confiance dans un type de document lisible par une machine. Une option serait FOAF (Friend of a Friend), un vocabulaire RDF pour décrire les réseaux sociaux d'amis et les données personnelles. Les autres choix sont constitués par un ensemble de contacts stockés dans le format vCard en utilisant RDF [VCARD].

Une autre option est d'utiliser les microformats. XFN (XHTML Friends Network) est un microformat permettant de glaner dans le document plus d'informations à propos des amis. Comme exemples de telles relations, les amis, les collègues, les compagnons de travail, et ainsi de suite, comme donné dans ce fichier d'exemple.

Puisque les relations XFN sont incorporées dans des éléments ancres (a), on peut les exprimer en RDF de façons diverses. Le document HTML de Jane utilisant le microformat XFN, une transformation GRDDL peut en extraire des données RDF. Ces descriptions permettent à un robot RDF de suivre les liens vers d'autres contenus RDF avec plus de descriptions XFN, vCard ou FOAF. Voici la liste XFN de Jane :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
	<head profile="
		http://www.w3.org/2003/g/data-view
		http://dublincore.org/documents/dcq-html/
		http://gmpg.org/xfn/11">
<link rel="transformation" href="grokXFN.xsl" />
		<title>La liste XFN de Jane</title>
	</head>
	<body>
		<h1>La liste <abbr lang="en" title="XHTML Friends Network">XFN</abbr> de Jane</h1>

		<ul class="xoxo">
			<li class="vcard"><a href="http://peter.example.org" class="url fn" rel="met collegue friend">Peter Smith</a></li>
			<li class="vcard"><a href="http://john.example.org" class="url fn" rel="met">John Doe</a></li>
			<li class="vcard"><a href="http://paul.example.org" class="url fn" rel="met">Paul Revere</a></li>
		</ul>
	</body>
</html>

Ce fichier XFN est convertible en RDF avec une autre transformation GRDDL pour XFN, produisant le fichier résultat RDF d'exemple.

Les sites de revues d'hôtels contiennent des critiques, dont certaines pour Édimbourg. Ce fichier de critiques d'hôtels particulier est balisé avec le mircroformat hReview que l'on peut également convertir en RDF en utilisant une transformation, pour produire une version RDF des critiques d'hôtels. On donne ci-dessous une partie du fichier d'exemple des hôtels en HTML pour illustrer l'utilisation du microformat hReview :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head profile="http://www.w3.org/2003/g/data-view">
    <title xml:lang="fr">Critiques d'hôtels par Example.com</title>
    <link rel="transformation" 
       href="http://www.w3.org/TR/grddl-primer/hreview2rdfxml.xsl"/> 
</head>
<div class="hreview" id="_665">
  <div class="item vcard">
  <b class="fn org">Witch's Caldron Hotel, Edinburgh</b>
  <ul>
    <li>
      <a class="url" href="http://witches.example.com/">Homepage</a>    </li>
  </ul>
  <span><span class="rating">5</span> out of 5 stars</span>
  <ul>
    <li class="adr">
	  <div class="type">intl postal parcel work</div>
      <div class="street-address">313 Cannongate</div>
      <div><span class="locality">Edinburgh</span>, <span class="postal-code">EH8 8DD </span> <span class="country-name">United Kingdom</span></div>
    </li>
  </ul>
  <div class="tel"><abbr class="type" title="work msg">Homepage</abbr>: <a class="value" href="tel:+44 1317861235">+44 1317862235</a></div>

Avec ces données « hybridées » (N.d.T. mashed-up data) combinées, nous pouvons trouver les amis de Jane et les critiques d'hôtels créées par eux. En utilisant GRDDL, nous pouvons glaner des renseignements à propos des hôtels, dont les comptes-rendus. Une fois ces données sous forme RDF, nous pouvons « hybrider » les données des amis et les critiques d'hôtels.

Un diagramme des relations de données d'hôtels

Un diagramme des relations de données d'hôtels

Pour trouver les hôtels d'un certain rang ou d'un rang supérieur dans le groupe des personnes de confiance de Jane, nous pouvons maintenant interroger les données « hybridées » avec SPARQL. SPARQL (The SPARQL Protocol and RDF Query Language) est un langage d'interrogation pour RDF qui peut automatiquement « hybrider » les données de sources multiples.

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rev: <http://www.purl.org/stuff/rev#>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>

SELECT DISTINCT ?rating ?name ?region ?hotelname

FROM <http://www.w3.org/TR/grddl-primer/hotel-data.rdf>

WHERE {
?x rev:hasReview ?review;
	vcard:ADR ?address;
	vcard:FN ?hotelname .
?review rev:rating ?rating .
?address vcard:Locality ?region.

FILTER (?rating > "2").

?review rev:reviewer ?reviewer.
?reviewer foaf:name ?name;
	foaf:homepage ?homepage

}

Cette requête produit le résultat suivant :

ratingnameregionhotelname
"5""RexR""Edinburgh""McRae Palace, Edinburgh"
"5""MaryV""Philadelphia""Franklin Hotel Philadelphia"
"5""JohnD""Helsinki""Elena Plaza Hotel"
"5""PeterS""Amsterdam""Enlightenment Amsterdam Hotel"
"4""PeterS""Cambridge""Fano Hotel"
"5""PeterS""Edinburgh""Witch's Caldron Hotel, Edinburgh"
"3""JennyR""Atlanta""Merton Atlanta"
"5""RexR""LEIDEN""Pilgrim Hostel"
"5""Simon""Edinburgh""Forest Cafe Youth Hostel, Edinburgh"
"5""PeterS""Cambridge""Royal Moon Hotel Boston"
"3""RexR""Washington""Bond Plaza Hotel"
"5""RexR""Edinburgh""Ritchie Centre, Edinburgh"
"4""JohnD""Edinburgh""Walter Scot Hotel, Edinburgh"
"5""PeterS""New York""Maximus New York Hotel & Towers"

La requête nous a malheureusement ramené tous les hôtels dans le monde avec plus de 2 étoiles, et nous devons donc restreindre le résultat aux seuls hôtels d'Édimbourg, avec cette requête améliorée.

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rev: <http://www.purl.org/stuff/rev#>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>

SELECT DISTINCT ?rating ?name ?hotelname ?region

FROM <http://www.w3.org/TR/grddl-primer/hotel-data.rdf>

WHERE {
?x rev:hasReview ?review;
	vcard:ADR ?address;
	vcard:FN ?hotelname .
?review rev:rating ?rating .
?address vcard:Locality ?region.

FILTER (?rating > "2" && ?region = "Edinburgh").

?review rev:reviewer ?reviewer.
?reviewer foaf:name ?name;
	foaf:homepage ?homepage

}

Le résultat est le suivant :

ratingnamehotelnameregion
"5""RexR""Ritchie Centre, Edinburgh""Edinburgh"
"5""PeterS""Witch's Caldron Hotel, Edinburgh""Edinburgh"
"5""Simon""Forest Cafe Youth Hostel, Edinburgh""Edinburgh"
"5""RexR""McRae Palace, Edinburgh""Edinburgh"
"4""JohnD""Walter Scott Hotel, Edinburgh""Edinburgh"

Le nouveau résultat nous donne les hôtels classés à 2 étoiles ou plus situés à Édimbourg. Le problème avec cette liste des possibles est qu'elle peut contenir des critiques biaisées. La prochaine étape consiste à restreindre le résultat aux seules critiques dans notre liste de contacts. En utilisant les liens XFN, dans la page de Jane, qui identifient les adresses URI des personnes en qui elle a confiance, en associant les adresses URI, nous pouvons sélectionner uniquement les critiques parmi les connaissances de Jane, comme dans cette nouvelle requête améliorée.

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rev: <http://www.purl.org/stuff/rev#>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
PREFIX xfn: <http://gmpg.org/xfn/11#>

SELECT DISTINCT ?rating ?name ?region ?homepage ?xfnhomepage ?hotelname

FROM <http://www.w3.org/TR/grddl-primer/janefriends.rdf>
FROM <http://www.w3.org/TR/grddl-primer/hotel-data.rdf>


WHERE {
?x rev:hasReview ?review;
   vcard:ADR ?address;
   vcard:FN ?hotelname.
?review rev:rating ?rating .
?address vcard:Locality ?region.

FILTER (?rating > "2" && ?region = "Edinburgh").

?review rev:reviewer ?reviewer.
?reviewer foaf:name ?name;
              foaf:homepage ?homepage.

?y xfn:friend ?xfnfriend.
?xfnfriend foaf:homepage ?xfnhomepage.

FILTER (?xfnhomepage = ?homepage).
}

Nous obtenons enfin le résultat souhaité : un hôtel avec un classement de 5 recommandé par une personne de confiance.

ratingnameregionhomepagexfnhomepagehotelname
"5""PeterS""Edinburgh"<http://peter.example.org/><http://peter.example.org/>"Witch's Caldron Hotel, Edinburgh"

Les résultats SPARQL peuvent être disponibles sous forme XML ou JSON et consommés facilement par une autre application. Les résultas peuvent être affichés à l'écran, envoyés à Jane par courrier électronique ou réinjectés dans une autre application qui parcourt le Web à la recherche des meilleurs prix dans la liste réduite d'hôtels.

GRDDL et XML : Intégrer des feuilles de calculs

GRDDL est aussi utile pour intégrer les données provenant de dialectes XML d'utilisation générale produites par des applications de tous les jours. Des trésors d'informations accumulées sont stockés dans les feuilles de calcul, qui peuvent être sauvegardées en utilisant un format XML d'utilisation générale. Intégrer, réutiliser et « hybrider » les informations contenues dans les feuilles de calcul peut être profitable, et GRDDL fournit un mécanisme pour accéder à ces informations en tant que RDF afin d'y parvenir. Dans cet exemple, nous étudierons le problème spécifique de glaner des informations dans des feuilles de calcul Microsoft® Excel, quoique d'autres dialectes XML de type feuilles de calcul puissent tirer avantage du même mécanisme de base.

Jane est secrétaire dans une petite association, avec ses deux amis David et Robin, qui se réunit une fois par mois. Elle note les présences (N.d.T. attendance) à ces réunions en utilisant une simple feuille de calcul Excel, et elle en recommence une nouvelle chaque année. Elle souhaite que les membres de l'association puissent interroger librement cette accumulation de statistiques, et elle sait que RDF permet ce type de fonctionnalité de fusion et d'interrogation. Elle décide d'utiliser GRDDL afin que chaque membre de l'association puisse glaner le code RDF dans ces feuilles de présence et y rechercher des données avec tout autre RDF qui serait disponible.

Jane envisage d'utiliser une transformation GRDDL intitulée xcel-mf2rdf.xsl, laquelle impose à la feuille de calcul Excel d'être conforme à un profil particulier. Elle doit d'abord identifier les cellules de données (N.d.T. data cells) dans la feuille de calcul. Dans une feuille de calcul de présence, les cellules de données sont les indicateurs de présence et elle les identifie en les nommant « Data ». Elle doit aussi identifier les cellules de rubriques (N.d.T. header cells). Ici les cellules de rubriques sont celles contenant les noms et les dates, et Jane les identifie en les nommant « Header ». Jane donne ensuite un nom supplémentaire à chaque cellule de données et chaque cellule de rubrique, lequel sert de nom local de la propriété de cette cellule. Elle nomme les cellules de dates « date », les cellules de noms de membres « name » et les cellules de présence « present ». Enfin, Jane doit placer deux propriétés personnalisées globalement sur la feuille de calcul. La première est appelée « profile », et ce profil particulier a l'adresse URI de profil http://www.mnot.net/2005/08/xcel-mf. La deuxième propriété est appelée « namespace », et elle fournit l'espace de noms à utiliser pour les propriétés RDF dans le résultat GRDDL. Jane choisit l'adresse URI d'espace de noms http://example.org/attendance/.

Copie d'écran de la feuille de calcul Excel de résultat

Feuille de calcul de présence avec les cellules de rubriques sélectionnées

Puisque GRDDL opère sur des documents XML, elle sauvegarde ses fichiers Excel en utilisant le dialecte XML offert par Excel. Après leur sauvegarde en XML, elle ajoute la référence de cette transformation à l'élément racine de chaque document de présence. En suivant les directives du profil Excel et en incluant les références GRDDL appropriées, voici une tranche du document de feuille de calcul résultant :

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook
  xmlns="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:o="urn:schemas-microsoft-com:office:office"
  xmlns:x="urn:schemas-microsoft-com:office:excel"
  xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
  xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
  xmlns:html="http://www.w3.org/TR/REC-html40"
  xmlns:grddl="http://www.w3.org/2003/g/data-view#"
  grddl:transformation="xcel-mf2rdf.xsl">
 <!-- ... -->
 <CustomDocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <profile dt:dt="string">http://www.mnot.net/2005/08/xcel-mf</profile>
  <namespace dt:dt="string">http://example.org/attendance/</namespace>
 </CustomDocumentProperties>
 <!-- ... -->
 <Worksheet ss:Name="Sheet1">
  <Table>
   <!-- ... -->
   <Row ss:Index="3">
    <!-- ... -->
    <Cell ss:StyleID="s26"><Data ss:Type="String">2006-04</Data><NamedCell
      ss:Name="Header"/><NamedCell ss:Name="date"/></Cell>
    <!-- ... -->
   </Row>
   <!-- ... -->
   <Row>
    <Cell ss:StyleID="s25"><Data ss:Type="String">Robin</Data><NamedCell
      ss:Name="name"/><NamedCell ss:Name="Header"/></Cell>
    <!-- ... -->
    <Cell><Data ss:Type="String">n</Data><NamedCell ss:Name="present"/><NamedCell
      ss:Name="Data"/></Cell>
    <!-- ... -->
   </Row>
   <!-- ... -->
  </Table>
  <!-- ... -->
 </Worksheet>
</Workbook>

Lorsqu'il est traité par un agent connaissant GRDDL, un document comme celui-ci sera transformé en RDF qui préserve la signification de la feuille de calcul :

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://example.org/attendance/">
 <!-- ... -->
 <rdf:Description>
  <name>Robin</name>
  <date>2006-04</date>
  <present>n</present>
 </rdf:Description>
 <!-- ... -->
</rdf:RDF>

Jane et les autres membres de l'association peuvent maintenant utiliser ces données dans des situations variées. Par exemple, supposons qu'il existe d'autres enregistrements de décisions prises lors de ces réunions et que l'enregistrement d'une réunion a aussi été stocké dans une feuille de calcul convertie en RDF.

En fusionnant ces triplets avec le résultat GRDDL de la feuille de calcul de présence, Jane peut poser des questions telle que « qui a assisté à la réunion où nous avons décidé du nouveau lieu de réunion » ? En SPARQL, l'interrogation correspondante de la feuille de calcul est celle-ci :

PREFIX att: <http://example.org/attendance/>
PREFIX ev: <http://example.org/events/>

SELECT ?name 

FROM <http://www.w3.org/TR/grddl-primer/events.rdf>
FROM <http://www.w3.org/TR/grddl-primer/attendance.rdf>

WHERE
{
  ?event ev:label "choose new meeting location" .
  ?event ev:date ?date .
  ?attendance att:date ?date .
  ?attendance att:name ?name .
  ?attendance att:present "y" .
}

Ce qui donnerait le résultat suivant :

name
Jane
David

Ce tableau indique que Jane et David assistaient à la réunion où la décision a été prise.

Dans cet exemple, le lien vers la transformation GRDDL a été ajouté à la main. En revanche, comme cela est montré en détails dans la spécification GRDDL [GRDDL] pour XML Schema, les documents d'espace de noms RDF et HTML peuvent aussi avoir des liens vers des transformations de dialectes XML. Donc un agent connaissant GRDDL peut également récupérer le document d'espace de noms d'un dialecte XML pour rechercher une transformation GRDDL « au flair », depuis l'espace de noms sur l'élément racine du document source GRDDL jusqu'au document d'espace de noms. L'utilisation d'un espace de noms sur l'élément racine représente une déclaration selon laquelle le document est conforme à la définition autoritaire de cet espace de noms telle que définie par le propriétaire de l'espace de noms, ce qui peut inclure une transformation depuis ce dialecte XML vers RDF en utilisant GRDDL.

Il existe quelques règles empiriques à suivre par les possesseurs d'espaces de noms XML souhaitant mettre à disposition des transformations GRDDL pour leurs dialectes XML particuliers. Soit une représentation de document XML, un agent connaissant GRDDL, souhaitant déterminer des transformations d'espaces de noms ou de profils, peut résoudre l'adresse URI de l'espace de noms ou du profil pour obtenir une représentation. À cause de la négociation du contenu, ou d'autres facteurs, des agents connaissant GRDDL différents, résolvant la même adresse URI d'espace de noms ou de profil, pourraient obtenir chacun des représentations différentes, qui pourraient à leur tour définir des transformations d'espaces de noms ou de profil différentes, lesquelles produiraient à leur tour des résultats GRDDL différents. En particulier, un agent connaissant GRDDL, qui reçoit une représentation de d'espace de noms ou de profil laquelle définit des transformations GRDDL, ne saura peut-être même pas qu'une certaine autre représentation définissant des transformations supplémentaires ou différentes est disponible. Cela peut poser des problèmes aux utilisateurs qui pensent récupérer tous les résultats GRDDL disponibles associés à la représentation du document XML original.

Pour régler ce problème, les auteurs de documents d'espaces de noms et de profils, qui choisissent de servir des représentations indiquant des transformations d'espaces de noms ou de profils, sont invités à vérifier que toutes ces représentations définissent les mêmes transformations d'espaces de noms ou de profils.

GRDDL et inférence : Résoudre des problèmes de soins

GRDDL peut servir non seulement pour combiner des données HTML mais aussi pour des données XML. Cette section utilise CDA de HL7, un vocabulaire XML largement répandu à utiliser dans les données cliniques, comme exemple de la façon de glaner du RDF dans un dialecte XML. Cette partie de l'introduction avance étape par étape dans le cas d'utilisation Santé : Interrogation de données cliniques fondées sur XML.

Kayode veut écrire des modules capables d'extraire les descriptions RDF des documents XML CDA HL7, transmis par les divers appareils d'un système de soins utilisant une ontologie clinique, afin de pouvoir fusionner les rapports cliniques et utiliser des inférences pour détecter les problèmes possibles. CDA est un modèle d'informations très bien conçu, optimisé pour l'échange de messages entre systèmes hospitaliers informatisés ; on donne un exemple de document CDA. Voir ci-dessous une section de ce document décrivant l'auteur d'un document clinique et le patient que le document décrit.

Ce document CDA dopé au GRDDL peut être traité par un pipeline XSLT en produisant un graphe RDF correspondant qui présente le contenu clinique dans des vocabulaires consensuels (N.d.T. consensus vocabularies) fortement implantés, tels que Open GALEN, DOLCE: Descriptive Ontology of Linguistics and Cognitive Engineering, FOAF et une traduction OWL de RIM de HL7 [OWL]. Un exemple d'ontologie OWL décrit les concepts de base d'un dossier médical pour les besoins de cet exemple.

D'une manière similaire à la déclaration d'utilisaion de GRDDL avec HTML, nous pouvons ajouter un attribut glean:transformation à la racine du document afin qu'un agent connaissant GRDDL interprète un message CDA HL7 transmis à l'aide d'ontologies interopérables couramment utilisées.

<ClinicalDocument
  xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  templateId="2.16.840.1.113883.3.27.1776"
  xmlns:grddl="http://www.w3.org/2003/g/data-view#" 
  grddl:transformation="http://www.w3.org/TR/grddl-primer/hl7-rim-to-pomr.xslt">
...
 	<Observation>

 	<id root="10.23.4573.15877"/>

 	<code code="282290005" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Imaging interpretation"/>
 	<value xsi:type="CD" code="249674001" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Chest hyperinflated"/>
 	<reference typeCode="SPRT">
 		<ExternalObservation classCode="DGIMG">
 			<id root="123.456.2557"/>

 			<code code="56350004" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Chest-X-ray"/>

 		</ExternalObservation>
 	</reference>
</Observation>

Une fois la transformation ajoutée au nœud racine du document HL7 en exemple, un agent connaissant GRDDL peut alors transformer les données dans ce RDF HL7-ci en utilisant la transformation XSLT liée. Les personnes confondent parfois RDF, un modèle abstrait de données à graphe [RDFC], avec l'une de ses sérialisations syntaxiques communes, RDF/XML [RDFXML]. On peut sérialiser RDF en plusieurs formats de données différents, allant de RDF/XML jusqu'à une sérialisation mieux lisible par un humain nommée Turtle, et RDF laisse à l'utilisateur ou à l'application le choix de la syntaxe la plus pratique pour la tâche à réaliser. La fusion et l'interrogation des données a entièrement lieu au niveau des graphes abstraits, et non de la syntaxe concrète. Un analyseur RDF peut donc interpréter le même résultat GRDDL exprimé en Turtle, en RDF/XML ou bien en une autre syntaxe comme NTriples, et au niveau du modèle de données, le graphe produit sera équivalent.

Un diagramme indiquant les relations entre les sérialisations RDF concrètes et la syntaxe abstrait.

Une fois les données exprimées en RDF, on peut découvrir plusieurs faits utiles à propos du diagnostic du patient, qui resteraient obscurs dans le document XML original. Le plus important est que la radio des poumons du patient (un cyc:XRayImage ou foaf:Image) conclut à un problème médical (cpr:medical-sign). On utilise un code SNOMED CT qui correspond à un terme spécifique dans le langage inspiré de la logique de description dans lequel la nomenclature SNOMED CT est exprimée. Voici un extrait du résultat de la transformation GRDDL, exprimé dans la syntaxe concise de Turtle pour RDF.

[ a cpr:patient-record;
         dc:date "2000-04-07";
         edns:about [ a galen:Patient;
                      foaf:family_name "Levin";
                      foaf:firstName "Henry"];
         foaf:maker [ a foaf:Person;
                      foaf:family_name "Dolin";
                      foaf:firstName "Robert"]]


[ a cpr:clinical-description;
                 cpr:description-of [ a cpr:screening-act;
                                      edns:realizes [ a cpr:medical-sign;
                                      cpr:interpretant-of [
                                         a foaf:Image;
                                         skos:prefLabel "Chest-X-ray"];
                                      skos:prefLabel "Chest hyperinflated"];
                                      skos:prefLabel "Imaging interpretation"]]

En fonction de la quantité d'images dans un système de recueil de dossiers patients, il serait utile qu'il existe un moyen de détecter aisément les images qui sont les diagnoses de problèmes médicaux. Nous pouvons utiliser une classe OWL appelée DiagnosingImage (un exemple RDF/XML et un exemple Turtle) qui détecte si les images dans le dossier ont été interprétés comme ayant une portée médicale (N.d.T. medical significance).

@prefix : <http://www.w3.org/2002/07/owl#> .
@prefix g: <http://www.example.org/grddl-primer#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

g:DiagnosingImage     a :Class;
     :intersectionOf  (
    <http://xmlns.com/foaf/0.1/Image>
     [
             a :Restriction;
             :onProperty g:indicates;
             :someValuesFrom <http://purl.org/cpr/0.5#medical-problem> ] ) .

g:indicates     a :ObjectProperty;
     rdfs:comment """Property relating a foaf:Image to a medical sign it 
indicates""";
     rdfs:domain <http://xmlns.com/foaf/0.1/Image>;
     rdfs:range <http://purl.org/cpr/0.5#medical-sign>;
     :inverseOf <http://purl.org/cpr/0.5#interpretant-of> .

<http://xmlns.com/foaf/0.1/Image>     a :Thing .

Lorsqu'un raisonneur OWL tel que Closed World Machine est lancé sur le fusion (N.d.T. merge) du graphe RDF résultant et de l'ontologie, notre ensemble de données augmente avec des déclarations RDF supplémentaires indiquant que certaines images sont bien membres de la classe DiagnosingImage. On peut les découvrir dans le graphe RDF résultant à l'aide de la requête médicale SPARQL en exemple suivante :

PREFIX cpr: <http://purl.org/cpr/0.5#>
PREFIX ex: <http://www.example.org/grddl-primer#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?sign ?image

FROM <http://www.w3.org/TR/grddl-primer/hl7-sample-plus-owl.rdf>

WHERE {
  ?image a ex:DiagnosingImage;
         ex:indicates [ skos:prefLabel ?sign ]
}

Si nous lançons cette requête SPARQL sur notre ensemble de données élargi par le raisonnement OWL, nous pouvons alors détecter une inflammation pulmonaire (N.d.T. chest hyperinflated). Savoir que le document CDA original contient une image de portée médicale est d'importance pour le patient.

imagesign
_:foo "Chest hyperinflated"

De cette manière, GRDDL permet d'amorcer des données Web sémantique à partir de dialectes XML, et ainsi d'aider ces dialectes XML à interagir par référence à des ontologies bien connues et à étendre leurs contenus par inférence.

Informations supplémentaires

Ceci conclut l'introduction à GRDDL. On trouvera tous les détails techniques du mécanisme GRDDL dans l'esquisse de « Gleaning Resource Descriptions from Dialects of Languages (GRDDL) ».

Références

[GRDDL]
Glaner les descriptions de ressources des dialectes de langages (GRDDL), D. Connolly, rédacteur, Recommandation candidate du W3C (travaux en cours), 2 mai 2007, http://www.w3.org/TR/2007/CR-grddl-20070502/ . Dernière version disponible à http://www.w3.org/TR/grddl/ .
[GRDDL-SCENARIOS]
Cas d'utilisation GRDDL : Scénarios d'extraction de données RDF des documents XML, F. Gandon, rédacteur, Note de groupe de travail du W3C, 6 avril 2007, http://www.w3.org/TR/2007/NOTE-grddl-scenarios-20070406/ . Dernière version disponible à http://www.w3.org/TR/grddl-scenarios/ .
[HTML]
La spécification HTML 4.01, I. Jacobs, D. Raggett, A. Le Hors, rédacteurs, Recommandation du W3C, 24 décembre 1999, http://www.w3.org/TR/1999/REC-html401-19991224 . Dernière version disponible à http://www.w3.org/TR/html401 .
[OWL]
Vue d'ensemble du langage d'ontologie Web OWL, F. van Harmelen, D. L. McGuinness, rédacteurs, Recommandation du W3C, 10 février 2004, http://www.w3.org/TR/2004/REC-owl-features-20040210/ . Dernière version disponible à http://www.w3.org/TR/owl-features/ .
[RDFA]
Introduction à RDFa 1.0, B. Adida, M. Birbeck, rédacteurs, Version préliminaire du W3C (travaux en cours), 12 mars 2007, http://www.w3.org/TR/2007/WD-xhtml-rdfa-primer-20070312/ . Dernière version disponible à http://www.w3.org/TR/xhtml-rdfa-primer/ .
[RDFC]
Le cadre de description de ressources (RDF) : Concepts et syntaxe abstraite, G. Klyne, J. J. Carroll, rédacteurs, Recommandation du W3C, 10 février 2004, http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/ . Dernière version disponible à http://www.w3.org/TR/rdf-concepts/ .
[RDFXML]
La spécification de la syntaxe RDF/XML (révisée), Beckett D., rédacteur, Recommandation du W3C, 10 février 2004. Cette version est à http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/. La dernière version est à http://www.w3.org/TR/rdf-syntax-grammar/.
[SPARQL]
Le langage d'interrogation SPARQL pour RDF, E. Prud'hommeaux, A. Seaborne, rédacteurs, Version préliminaire du W3C (travaux en cours), 26 mars 2007, http://www.w3.org/TR/2007/WD-rdf-sparql-query-20070326/ . Dernière version disponible à http://www.w3.org/TR/rdf-sparql-query/ .
[VCARD]
L'ontologie vCard, H. Halpin, B. Suda et N. Walsh, Note du groupe d'intérêt Semantic Web du W3C (en cours). Dernière version disponible à http://www.w3.org/2006/vcard/ns.
[XHTML]
La modularisation de XHTML 1.0 (deuxième édition), Version préliminaire du W3C (travaux en cours), 18 février 2004, http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218 . Dernière version disponible à http://www.w3.org/TR/xhtml-modularization/ .
[XSLT]
Les transformations XSL (XSLT) version 1.0, J. Clark, rédacteur, Recommandation du W3C, 16 novembre 1999, http://www.w3.org/TR/1999/REC-xslt-19991116 . Dernière version disponible à http://www.w3.org/TR/xslt .

On peut régénérer cette sortie en utilisant la clé suivante dans l'extracteur Technical Reports Bibliography :

HTML http://www.w3.org/TR/1999/REC-html401-19991224
RDFC http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/
SPARQL http://www.w3.org/TR/2006/WD-rdf-sparql-query-20061004/
VCARD http://www.w3.org/2006/vcard/ns
XHTML http://www.w3.org/TR/xhtml-modularization/
XSLT http://www.w3.org/TR/1999/REC-xslt-19991116

Remerciements

Le rédacteur voudrait remercier les membres suivants du groupe de travail pour la création de ce document :

Ce document est un produit du groupe de travail GRDDL.

L'exemple des feuilles de calcul s'appuie sur le travail de Mark Nottingham dans « Adding Semantics to Excel with Microformats and GRDDL" ». La version du script de transformation utilisé dans l'exemple diffère de l'original de Mark par quelques changements significatifs.

Journal des changements

Les changements depuis la décision du groupe de travail de publier du 27 sept. comprennent :

$Log: Overview.html,v $
Revision 1.1  2007/06/27 18:39:11  jean-gui
primer renamed to Overview
Revision 1.1  2007/06/27 18:38:18  jean-gui
NOTE-grddl-primer-20070628
Revision 1.125  2007/06/27 17:30:29  hhalpin
updated acknowledgements
Revision 1.123  2007/06/27 17:24:48  hhalpin
updated URIs of versions
Revision 1.122  2007/06/27 17:21:53  hhalpin
updated URIs of versions
Revision 1.121  2007/06/27 17:20:51  hhalpin
updated URIs of versions
Revision 1.120  2007/06/27 17:18:09  jclark4
Add diagram to hotel-finding example.
Revision 1.119  2007/06/27 17:10:15  hhalpin
fixed dates for Note pub
Revision 1.118  2007/06/27 16:58:53  jclark4
Undo the iframe scariness.
Revision 1.117  2007/06/27 16:44:37  hhalpin
updated with danja and chime's comments
Revision 1.116  2007/06/27 14:55:25  connolly
remove "microformat" from excel section; move mnot to acks section
Revision 1.115  2007/06/27 14:52:37  connolly
ids for authors to join across hCard and trdoc transformations
Revision 1.114  2007/06/27 14:51:07  connolly
add hCard markup for authors (with profile)
Revision 1.113  2007/06/27 00:55:10  hhalpin
moved link of hl7 tranform from test-cases to primer directory
Revision 1.112  2007/06/27 00:49:19  hhalpin
replaced doc29 with primer URI
Revision 1.86  2007/06/26 18:56:16  jclark4
Make the inline SPARQL equivalent to the linked SPARQL in the
spreadsheet section, and fix several well-formedness errors.
Revision 1.85  2007/06/26 14:14:04  jclark4
Minor consistency changes to the primer and the spreadsheet for the
spreadsheet example and some typo and wording changes to the primer.
Revision 1.84  2007/06/24 20:04:49  hhalpin
added danja's edits
Revision 1.83  2007/06/22 18:53:03  bsuda
fixed sparql #3 and updated primer
Revision 1.82  2007/06/22 18:48:58  bsuda
updated sparql queries, rdf and html and primer document to reflect the new queries
Revision 1.81  2007/06/20 14:05:38  connolly
uncomment embeddedRDF.png image; add hCalendar.png image back in
Revision 1.80  2007/06/20 02:02:34  hhalpin
minor updates to spreadsheet section, linking files
Revision 1.77  2007/06/14 10:56:48  jcarroll
switched to using local RDFa2RDFXML rather than td one
Revision 1.76  2007/06/13 17:43:27  jclark4
Convert SPARQL results to an HTML table in the "Reusing Spreadsheets"
section and fix numerous well-formedness errors.
Revision 1.75  2007/06/13 17:27:47  jclark4
Add entry in the table of contents for the new "Reusing Spreadsheets"
section.
Revision 1.74  2007/06/13 17:15:23  connolly
@@ around transition between spreadsheets and health care
Revision 1.73  2007/06/13 17:11:09  connolly
paste in spreadsheet example
from John Clark Tue, 12 Jun 2007 16:16:36 -0400
Revision 1.72  2007/06/13 16:54:06  hhalpin
updated xslt for hl7
Revision 1.71  2007/05/06 04:46:50  hhalpin
hotel-data.rdf replacced by review.rdf
Revision 1.70  2007/05/06 00:55:12  connolly
linebreaks in the ClinicalDocument
Revision 1.69  2007/05/06 00:53:02  connolly
linebreaks to make the examples less wide
Revision 1.68  2007/05/05 22:09:26  connolly
fix pre/p markup problem, copyright unicode characters
Revision 1.67  2007/05/05 20:43:24  hhalpin
removed errant SPARQL query, added XFN and hReview code back in
Revision 1.66  2007/05/05 20:36:11  hhalpin
reverting to 1.55 plus fixes in 1.65 in Healthcare section
Revision 1.55  2007/04/24 17:57:37  hhalpin
added more of Chime's test case and changed some text for easier reading
Revision 1.54  2007/04/11 08:21:45  hhalpin
added transform library mention
Revision 1.50  2007/04/11 08:18:35  hhalpin
added transform library mention
Revision 1.49  2007/03/21 04:35:42  hhalpin
cleaned up healthcare example
Revision 1.48  2007/03/14 08:11:13  hhalpin
fixed rdfa transform, fixed part 2
Revision 1.45  2007/02/21 06:52:53  hhalpin
added danja's comments
Revision 1.43  2007/02/19 19:07:53  idavis
Updated date of draft
Revision 1.42  2007/02/19 19:02:21  idavis
Fixed typo in SPARQL reference
Revision 1.41  2007/02/19 18:55:36  idavis
Addresses rreck comment, fixed typos and minor layout changes, added references in clinical data section
Revision 1.40  2007/02/12 01:38:28  hhalpin
added RDFa example
Revision 1.39  2007/02/12 00:57:18  hhalpin
added chime's test case
Revision 1.37  2007/02/07 15:09:22  hhalpin
updated sparql query
Revision 1.36  2007/01/13 00:00:26  hhalpin
edited some links
Revision 1.31  2007/01/12 18:57:21  hhalpin
dates fixed
Revision 1.30  2007/01/12 18:55:16  hhalpin
dates fixed
Revision 1.29  2007/01/12 03:56:21  hhalpin
edited
Revision 1.28  2007/01/12 03:50:11  hhalpin
minor edits
Revision 1.27  2007/01/12 03:49:45  hhalpin
minor edits
Revision 1.25  2007/01/09 23:54:10  hhalpin
fixed formatting
Revision 1.22  2007/01/09 23:43:15  hhalpin
using new vcard RDF
Revision 1.21  2006/12/13 00:34:29  hhalpin
fixing syntactic quibbles
Revision 1.18  2006/10/19 07:56:45  idavis
Revised references, corrected title from WD to editors draft
Revision 1.17  2006/10/19 07:07:51  idavis
Various minor editorial changes, spellings, grammar etc
Revision 1.16  2006/10/02 22:51:19  connolly
turned public-grddl-comments mailbox into a link
Revision 1.15  2006/09/30 00:38:47  connolly
note in the status section that some examples are incomplete
Revision 1.14  2006/09/30 00:35:01  connolly
removed some links to the glossary that were copied from the use cases document
updated link to suda.co.uk
Revision 1.13  2006/09/30 00:27:26  connolly
fix link from title page to acknowledgements section
Revision 1.12  2006/09/30 00:26:10  connolly
update parts of the status section that are different between
use cases and primer
Revision 1.11  2006/09/30 00:24:34  connolly
- remove "previous version" link to talis copy from title page
- move pubrules check to status section
- expand change log to give full audit trail since WG decision
- remove XHTML 1.1 icon, since pubrules requires 1.0 :-/
Revision 1.10  2006/09/29 23:54:08  hhalpin
fixed minor errors and links
revision 1.9
date: 2006/09/29 23:20:05;  author: hhalpin;  state: Exp;  lines: +5 -90
primer chnages for pubrules
----------------------------
revision 1.8
date: 2006/09/29 23:10:58;  author: hhalpin;  state: Exp;  lines: +1 -1
primer changes again
----------------------------
revision 1.7
date: 2006/09/29 23:07:42;  author: hhalpin;  state: Exp;  lines: +170 -42
primer changes again
----------------------------
revision 1.6
date: 2006/09/29 22:43:53;  author: hhalpin;  state: Exp;  lines: +2 -2
primer changes again spelling errors
----------------------------
revision 1.5
date: 2006/09/29 22:35:39;  author: hhalpin;  state: Exp;  lines: +6 -7
primer changes again
----------------------------
revision 1.4
date: 2006/09/29 22:33:00;  author: hhalpin;  state: Exp;  lines: +33 -70
primer changes
----------------------------
Revision 1.3  2006/09/29 22:05:17  connolly
"under construction" sign atop the section with XFN in it
Revision 1.2  2006/09/29 19:49:46  connolly
copied from devcvs v 1.4 2006/09/29 19:00:43 idavis
Revision 1.4  2006/09/29 19:00:43  idavis
Fixed formatting of CVS log at end of document
----------------------------
revision 1.3
date: 2006/09/29 18:58:18;  author: idavis;  state: Exp;  lines: +22 -13
Revised abstract to align more with use cases; checked in supporting HTML and PNG files
----------------------------
revision 1.2
date: 2006/09/29 18:22:17;  author: idavis;  state: Exp;  lines: +591 -437
Inserted current, latest and previous version links; revised abstract completely; normalised to linefeed line endings
----------------------------
revision 1.1
date: 2006/09/29 16:38:15;  author: connolly;  state: Exp;
6180 2006-09-27 13:29:57Z http://research.talis.com/2006/grddl-wg/primer.html