Qu'est-ce qu'une URI ?
Une URI est l'identifiant d'une ressource (une « chose », qui peut être n'importe quoi) ; en particulier, en RDF, les nœuds du graphe sont identifiés par une URI.
Pas toujours, cela peut être une chaîne de caractère, une date, ou autre chose, disons plutôt "la plupart du temps"
Vous êtes sans doute familier avec la notion d'URL (Uniform Ressource Locator)
qui est ce qui s'affiche dans la barre d'adresse de votre navigateur quand vous naviguez sur Internet. Ces URL sont en fait un sous-ensemble des URI (Uniform Resource Identifier) ; toute URL est une URI, mais l'inverse n'est pas vrai. Une URI, comme son nom l'indique,
identifie une ressource. Cette ressource peut être n'importe quoi, une personne, une ville, votre chat, etc.
Lorsqu'on essaie d'accéder à une URI, en la mettant dans la barre d'adresse du navigateur, il est bien évident que la chose identifiée ne pourra pas elle-même être retournée en réponse : si vous décidez d'identifier votre chat par une URI, et que vous mettez cette URI dans votre navigateur, votre chat ne sera pas « aspiré » du canapé où il est endormi pour
réapparaitre réapparaître coincé dans la fenêtre du navigateur. Cependant, vous pourriez (mais ce n'est pas obligatoire) obtenir en réponse une
représentation de la chose identifiée : par exemple une photo de votre chat. C'est la différence – subtile – entre une URI et une URL : l'URL
localise un document, et permet d'accéder à ce document, l'URI
identifie une chose, et permet (normalement, mais ce n'est pas obligatoire) d'accéder à une représentation de cette chose.
Voir aussi : qu'est-ce que la négociation de contenu ?
Qu'est-ce que la négociation de contenu ?
La négociation de contenu est un mécanisme défini par la norme HTTP permettant à un serveur de retourner des réponses différentes pour une même URI. Ainsi, un internaute en
france France et un internaute aux
états-unis États-Unis pourraient voir 2 versions de la même URI, l'un en français, l'autre en anglais. La négociation de contenu s'appuie sur les en-têtes de la requêtes HTTP envoyée par le client pour déterminer quel contenu retourner.
Dans le
web Web sémantique où toutes les ressources sont identifiées à l'aide d'URI, la négociation de contenu est utilisée pour retourner une représentation « pour les humains » de la ressource (une page HTML) lorsque c'est un internaute qui accède à l'URI par son navigateur, ou bien une représentation « pour les machines » de la même ressource (un fichier RDF). Par exemple, DBPedia identifie la ville de Berlin par l'URI
http://dbpedia.org/resource/Berlin. Si vous accédez à cette URI via votre navigateur en cliquant sur le lien, vous serez redirigés vers
http://dbpedia.org/page/Berlin, qui est une page HTML. Mais si un programme accède à la même URI en stipulant dans l'entête de la requête qu'il accepte du RDF, il obtiendra
http://dbpedia.org/data/Berlin, qui est un document RDF.
Excepté si un humain demande l'adresse http://dbpedia.org/data/Berlin via son navigateur, il tombera sur la description RDF de l'URI et réciproquement avec l'adresse http://dbpedia.org/page/Berlin pour une machine qui tombera sur la description HTML. Il faut donc faire bien attention à utiliser le pattern de l'adresse correspondant à la négociation de contenu, soit avec DBPedia http://dbpedia.org/resource/XXX.
Est-ce que RDF, c'est du XML ? Puis-je traiter des fichiers RDF avec des feuilles de style XSLT ?
Non, RDF n'est pas du XML. RDF est un
modèle de données dont l'une des sérialisations (= représentation) possibles est en XML. Cependant il n'existe pas de sérialisation canonique de RDF : c'est-à-dire que les mêmes données RDF peuvent être représentées par plusieurs fichiers différents. Par exemple, cet extrait de XML :
1 2 3
| <foaf:Person rdf:about="http://www.ex.com/annuaire#sf">
<foaf:name>Sophie Fonfec</foaf:name>
</foaf:Person> |
Et celui-là :
1 2 3 4
| <rdf:Description rdf:about="http://www.ex.com/annuaire#sf">
<rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Person" />
<foaf:name>Sophie Fonfec</foaf:name>
</rdf:Description> |
Sont différents, et pourtant ils représentent
les mêmes informations RDF (à savoir <http://www.ex.com/annuaire#sf> est une personne
et qui a pour nom « Sophie Fonfec »).
En théorie, il n'est donc pas conseillé de traiter des données RDF avec une feuille de style XSLT, car ces données RDF peuvent être dans d'autres sérialisations (comme N3), et la sérialisation des données peut varier.
Dans la pratique, si on est sûr que le RDF à traiter est toujours en XML, et qu'on a des garanties sur sa sérialisation, ou qu'on prend en compte toutes les sérialisations possibles dans la feuille de style, il est possible de transformer du XML avec du XSLT.
L'approche recommandée est d'utiliser des outils comme XSparql (
http://xsparql.deri.org/)
(c'est Nuno qui va être content, merci pour lui ) ou XSLT+SPARQL (
http://berrueta.net/research/xsltsparql) permettant de combiner la flexibilité de SPARQL et la puissance du XSLT.
Partager