Suite à une petite discussion de couloir avec Got, je m’aperçois qu’une courte note sur le design des URIs en RDF ne suffira pas. De plus, je l’ai certainement mal exprimé.

Je reprends donc différemment mon explication.

Quand vous appelez une ressource, vous ne savez pas quels liens cette ressource peut avoir avec d’autres ressources.
Il faut soit parcourir une représentation de la ressource elle même, soit aller consulter l’existence d’un lien dans dans une ressource créé spécialement pour gérer les liens. Or on pourrait vouloir (et il faudrait expliciter des usages) connaître au moins certains liens de la ressource, uniquement en connaissant son URI.

Comment faire ?

  • Quand on écrit une URI comme

    /parent/enfant

    on indique une relation de filiation entre des ressources

  • Quand on écrit des caractères de ponctuation dans les variables de chemin c’est généralement pour indiquer qu’il n’y a pas de relation hiérarchique entre les ressources :

    /parent/enfant1;enfant2

  • On peut également utiliser les variables de requêtes pour passer des paramètres à un programme :

    /chercher/?q=%duseh&d%E9ut=20

Mais toujours rien, dans ces exemples (tirés de RESTful Web Services p.125 ed. française), qui me permette de connaître les liens vers d’autres URIs (mise à part la relation hiérarchique) et toujours simplement en lisant l’URI.

Ainsi je pourrais avoir une URI sur ma personne qui soit :

/organisation/people/Christian Fauré[foaf:homepage rdf:resource=”http://www.christian-faure.net”/]

Avec cet exemple (bidon dans sa syntaxe), je peux donc connaître, à la simple lecture de l’URI, un lien typé vers une autre ressource.
Je peux donc exprimer des liens entre des ressources, autrement que par un lien dans la représentation de la ressource (lien html par exemple) ou par la consultation d’un référentiel extérieur (un fichier RDF ou un end point RDF).

Il y a peut-être une économie de ces liens passés en variable de chemin qu’il faut trouver car, même si la norme HTTP n’impose aucune limite de longueur des URIs, les serveurs et client web imposent d’autres contraintes (2083 caractères pour IE par exemple).