Was ist der Unterschied zwischen einem URI, einer URL und einer URN?

Man spricht von URLs, URIs und URNs, als ob es sich um unterschiedliche Dinge handeln würde, aber für das bloße Auge sehen sie gleich aus.

Was sind die entscheidenden Unterschiede zwischen ihnen?

Lösung

Aus RFC 3986:

Ein URI kann weiter klassifiziert werden als ein Locator, ein Name oder beides. Der Begriff "Uniform Resource Locator" (URL) bezieht sich auf die Teilmenge von URIs die zusätzlich zur Identifizierung einer Ressource ein Mittel zur Auffinden der Ressource durch Beschreibung ihres primären Zugriffsmechanismus (z. B. ihren Netz-"Standort"). Der Begriff "Uniform Resource Name" (URN) wurde in der Vergangenheit sowohl für URIs nach dem "urn"-Schema [RFC2141], die weltweit eindeutig und beständig bleiben müssen und beständig bleiben müssen, auch wenn die Ressource nicht mehr existiert oder nicht mehr verfügbar ist, als auch auf jeden anderen URI mit den Eigenschaften eines Namens.

Alle URLs sind also URIs (eigentlich nicht ganz - siehe unten), und alle URNs sind URIs - aber URNs und URLs sind unterschiedlich, also kann man nicht sagen, dass alle URIs URLs sind.

EDIT: Ich hatte zuvor gedacht, dass alle URLs gültige URIs sind, aber wie in den Kommentaren:

Nicht "alle URLs sind URIs". Es hängt von der Interpretation des RFC ab. In Java zum Beispiel mag der URI-Parser kein [ oder ] und das liegt daran, dass die Spezifikation "should not" und nicht "shall not" sagt.

Das macht die Sache also leider noch unübersichtlicher.

Wenn Sie Roger Pates Antwort noch nicht gelesen haben, empfehle ich Ihnen, dies ebenfalls zu tun.

Kommentare (20)

Das ist das Gleiche. Ein URI ist eine Verallgemeinerung einer URL. Ursprünglich sollten URIs in URLs (Adressen) und URNs (Namen) unterteilt werden, aber dann gab es kaum einen Unterschied zwischen einer URL und einem URI, und http-URIs wurden als Namensräume verwendet, obwohl sie eigentlich keine Ressourcen lokalisieren.

Kommentare (4)

Wikipedia bietet alle Informationen, die Sie hier benötigen. Ich zitiere aus http://en.wikipedia.org/wiki/URI:

Eine URL ist eine URI, die nicht nur eine Ressource identifiziert, sondern auch die Möglichkeit bietet, auf die Ressource zuzugreifen oder eine Darstellung der Ressource zu erhalten, indem sie ihren primären Zugriffsmechanismus oder ihren Netzwerk-"Standort" beschreibt.

Kommentare (0)