Monthly Archives: mai 2013

URL, URN, URI quelles différences ?

Commençons pas la définition officielle de la RFC 3986 :

A URI can be further classified as a locator, a name, or both. The term « Uniform Resource Locator » (URL) refers to the subset of URIs that, in addition to identifying a resource, provide a means of locating the resource by describing its primary access mechanism (e.g., its network « location »). The term « Uniform Resource Name » (URN) has been used historically to refer to both URIs under the « urn » scheme [RFC2141], which are required to remain globally unique and persistent even when the resource ceases to exist or becomes unavailable, and to any other URI with the properties of a name.

URI_Euler_Diagram_no_lone_URIs.svgURI : Une URI identifie une ressource soit par son nom, soit pas sa localisation soit par les deux. Il existe deux types d’URI :
- URL : Uniform Resource Locator
- URN : Uniform Resource Name

 

URL : une URL est un sous ensemble des URI qui spécifie la localisation d’une ressource et comment la récupérer grâce au schéma : http, ftp, smb, file, …

URN : l’URN n’implique pas de disponibilité de la ressource, elle identifie juste de manière unique cette dite ressource sans décrire ni comment ni où la trouver. Elle se représente obligatoirement via le schéma URN.

Exemples d’URL :
mailto:someone@example.com
http://www.google.fr/
file:///home/someuser/somefile.txt

Exemples d’URN :
urn:sha1:YNCKHTQCWBTRNJIV4WNAE52SJUQCZO5C
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66

Je n’ai malheureusement pas trouvé d’exemple d’URI étant à la fois URL et URN.

Explication par analogie

Pour expliquer de façon concrète, je vais m’appuyer sur la réponse Roger Pate sur stackoverflow.

De manière générale, une URI identifie et une URL localise. Ces deux notions ne sont pas antinomiques puisque localiser revient à identifier, mais identifier n’est pas forcément localiser. C’est pour cela qu’une URL est une URI, mais que toutes les URI ne sont pas des URL.

Exemple

Roger Pate

Ces quelques lettres représentent un nom qui par définition permet d’identifier une personne. Cela ne peut pas s’apparenter à une URL car il ne véhicule aucune information permettant de localiser ou de contacter la personne.

On pourrait le rapprocher d’une URN. En effet, une URN peut être employée pour parler d’une ressource sans que cela ne préjuge de son emplacement ou de la manière de la référencer. Elle est toutefois très restrictive au sujet de l’unicité dans le temps et dans l’espace. Pour continuer avec l’exemple précédent, dans le monde, plusieurs personnes peuvent s’appeler Roger Pate. Quand bien même il n’existe qu’un seul Roger Pate sur Terre, d’autres Roger Pate ont sûrement existé avant lui. Et si ce n’est pas le cas, rien n’enpêche Roger Pate de transmettre à un de ses descendants sont nom et prénom. Le nom n’est pas unique dans le temps ni dans l’espace, cela ne fait donc pas une bonne URN.

 

4914 West Bay Street, Nassau, Bahamas

Ceci est une adresse qui permet de localiser un lieu. On peut l’apparenter à une URL car elle identifie (indirectement) Roger Pate tant que « résident de … »

 

Syntaxe des URI

Toutes les URIs sont formées de la sorte :
<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]
Pour les détails, voir la page wikipedia

Toutefois, les exemples suivants sont également des URI ; plus précisément des références d’URI :
- relative/path/to/resource.txt
- /../../resource.txt
- /resource.txt#frag01

 

Sources
http://stackoverflow.com/questions/176264/whats-the-difference-between-a-uri-and-a-url
http://stackoverflow.com/questions/4913343/what-is-the-difference-between-uri-url-and-urn
http://damnhandy.com/2011/01/18/url-vs-uri-vs-urn-the-confusion-continues/ http://en.wikipedia.org/wiki/Uniform_Resource_Identifier