Uniform Resource Identifier: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite URI nach Uniform Resource Identifier
Keine Bearbeitungszusammenfassung
 
(59 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' - Kurzbeschreibung
'''Uniform Resource Identifier''' (URI)
 
== Beschreibung ==
== Beschreibung ==
== Installation ==
Ein '''Uniform Resource Identifier''' (Abk. '''URI''', für ''einheitlicher Bezeichner für [[Ressource]]n'') ist ein [[Identifikator]] und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen [[Ressource#Informatik|Ressource]] dient. ''URI''s werden zur Bezeichnung von Ressourcen (wie [[Webseite]]n, sonstigen Dateien, Aufruf von [[Web Service|Webservices]], aber auch [[E-Mail]]-Empfängern) im [[Internet]] und dort vor allem im [[World Wide Web|WWW]] eingesetzt. Der aktuelle Stand 2016 ist als <nowiki>RFC&nbsp;3986</nowiki> publiziert
== Syntax ==
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Anwendung ==
=== Fehlerbehebung ===
== Konfiguration ==
=== Dateien ===
== Anhang ==
=== Siehe auch ===
==== Unterseiten ====
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
==== Sicherheit ====
==== Dokumentation ====
===== RFC =====
===== Man-Pages =====
===== Info-Pages =====
==== Links ====
===== Einzelnachweise =====
<references />
===== Projekt =====
===== Weblinks =====
<noinclude>
=== Testfragen ===
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 1''
<div class="mw-collapsible-content">'''Antwort1'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 2''
<div class="mw-collapsible-content">'''Antwort2'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 3''
<div class="mw-collapsible-content">'''Antwort3'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 4''
<div class="mw-collapsible-content">'''Antwort4'''</div>
</div>
<div class="toccolours mw-collapsible mw-collapsed">
''Testfrage 5''
<div class="mw-collapsible-content">'''Antwort5'''</div>
</div>


= TMP =
Ursprünglich führte [[Tim Berners-Lee]] den Begriff 1994 im <nowiki>RFC&nbsp;1630</nowiki> als ''Universal Resource Identifier'' ein. Erst später tauchte dann in offiziellen [[World Wide Web Consortium|W3C]]-Dokumenten die Auflösung ''Uniform'' auf. Aus diesem Grund wird ''Universal'' gelegentlich –&nbsp;selbst in der Fachliteratur&nbsp;– als erster Namensbestandteil genannt
'''Uniform Resource Identifier''' ('''URI''')


URIs können als Zeichenfolge (kodiert mit einem [[Zeichensatz]]) in digitale Dokumente, insbesondere solche im [[Hypertext Markup Language|HTML]]-Format eingebunden oder auch von Hand auf Papier aufgeschrieben werden. Einen Verweis von einer [[Webseite]] auf eine andere nennt man [[Hyperlink]] oder kurz „Link“


, {{enS}} für ''einheitlicher Bezeichner für [[Ressource]]n'') ist ein [[Identifikator]] und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen [[Ressource#Informatik|Ressource]] dient. ''URI''s werden zur Bezeichnung von Ressourcen (wie [[Webseite]]n, sonstigen Dateien, Aufruf von [[Web Service|Webservices]], aber auch z.&nbsp;B. [[E-Mail]]-Empfängern) im [[Internet]] und dort vor allem im [[World Wide Web|WWW]] eingesetzt.
Eine Erweiterung der nur aus druckbaren [[American Standard Code for Information Interchange|ASCII]]-Zeichen bestehenden URIs sind die [[Internationalized Resource Identifier]]s (IRIs)
* Der aktuelle Stand 2016 ist als RFC 3986 publiziert.
 
Ursprünglich führte [[Tim Berners-Lee]] den Begriff 1994 im RFC 1630 als ''Universal Resource Identifier'' ein.
* Erst später tauchte dann in offiziellen [[World Wide Web Consortium|W3C]]-Dokumenten die Auflösung ''Uniform'' auf.
* Aus diesem Grund wird ''Universal'' gelegentlich –&nbsp;selbst in der Fachliteratur&nbsp;– als erster Namensbestandteil genannt.
 
URIs können als Zeichenfolge (kodiert mit einem [[Zeichensatz]]) in digitale Dokumente, insbesondere solche im [[Hypertext Markup Language|HTML]]-Format eingebunden oder auch von Hand auf Papier aufgeschrieben werden.
* Einen Verweis von einer [[Webseite]] auf eine andere nennt man [[Hyperlink]] oder kurz „Link“.
 
Eine Erweiterung der nur aus druckbaren [[American Standard Code for Information Interchange|ASCII]]-Zeichen bestehenden URIs sind die [[Internationalized Resource Identifier]]s (IRIs).


== Konzeption ==
== Konzeption ==
Ein URI (oder in der Erweiterung IRI) ist das abstrakte Prinzip, die Syntax, einer Kennzeichnung, bei dem ein Satz an Regeln vorgegeben ist. Dieses Grundkonzept der URI wird dann auf verschiedene konkrete Anwendungsbereiche übertragen, für die dann die entsprechenden Regeln und Begriffe gelten


Ein URI (oder in der Erweiterung IRI) ist das abstrakte Prinzip, die Syntax, einer Kennzeichnung, bei dem ein Satz an Regeln vorgegeben ist.
=== Beispiel ===
* Dieses Grundkonzept der URI wird dann auf verschiedene konkrete Anwendungsbereiche übertragen, für die dann die entsprechenden Regeln und Begriffe gelten.
* URI dürfen keine Leerzeichen enthalten
* Zum Beispiel:
* Zu Beginn steht der Name eines Schemas in [[American Standard Code for Information Interchange|ASCII]]-Buchstaben und Ziffern, gegebenenfalls gegliedert durch Punkt und Bindestrich, beginnend mit Buchstaben, worauf ein Doppelpunkt folgt


* „URI dürfen keine Leerzeichen enthalten.“ oder
=== Typen von Anwendungen ===
* „Zu Beginn steht der Name eines Schemas in [[American Standard Code for Information Interchange|ASCII]]-Buchstaben und Ziffern, gegebenenfalls gegliedert durch Punkt und Bindestrich, beginnend mit Buchstaben, worauf ein Doppelpunkt folgt.“
{| class="wikitable options"
 
| Name ||Der ''Inhalt'' einer Ressource (und damit jede inhaltsgleiche Kopie) erhält eine eindeutige Kennung
Grundsätzlich gibt es drei Typen von Anwendungen:
* Beispiel: Die [[Internationale Standardbuchnummer|ISBN]] eines Buches. Es gibt unbegrenzt viele Exemplare dieses Buches
 
|-
* Name
| Locator || Der ''Ort'' einer Ressource ist über ihren Bezeichner definiert. Sie wird also darüber identifiziert, ''wo'' sie zu finden ist; es wird damit jedoch nicht zwangsläufig ihr Inhalt festgelegt
** Der ''Inhalt'' einer Ressource (und damit jede inhaltsgleiche Kopie) erhält eine eindeutige Kennung.
* Beispiel: Aktueller Wetterbericht im Internet. Es ist bekannt, an welcher Stelle (URL) dieser zu finden ist; der Inhalt ändert sich ständig
** Beispiel: Die [[Internationale Standardbuchnummer|ISBN]] eines Buches.  
* Beispiel: Ein Buch wird dadurch beschrieben, in welcher Bibliothek es steht: dort im zweiten Raum, drittes Regal, viertes Fach von oben, fünftes Buch von links. Dort könnten die aktuellen Top-5 der Bestsellerliste stehen – unabhängig von ihrem Inhalt
* Es gibt unbegrenzt viele Exemplare dieses Buches.
|-
* Locator
| Individuum || Die Regeln der URI können auch angewendet werden, wenn etwas überhaupt keine klassische Ressource ist, trotzdem identifiziert werden soll
** Der Ort einer Ressource ist über ihren Namen definiert.  
* Zunächst verstand man unter „Ressource“ etwas wie [[Ressource (Software)|Ressourcen]] im informationstechnischen Sinn, also im weitesten Sinne elektronische Dateien, die auch im Internet verfügbar gemacht werden könnten. Davon gingen 1994 die <nowiki>RFC&nbsp;1630</nowiki> und <nowiki>RFC&nbsp;1738</nowiki> festgelegt worden: „A resource can be anything that has identity.“ Auch Personen, Organisationen und gedruckte Bücher könnten als Ressource betrachtet werden. Diese Betrachtung zielt auf die Kennzeichnung zuordnungsfähiger Entitäten
* Sie wird also darüber identifiziert, ''wo'' sie zu finden ist; es wird damit jedoch nicht zwangsläufig ihr Inhalt festgelegt.
|}
** Beispiel: Aktueller Wetterbericht im Internet.  
; Beispiele
* Es ist bekannt, an welcher Stelle (URL) dieser zu finden ist; der Inhalt ändert sich ständig.
E-Mail-Adresse, Nummer eines Mobiltelefons, Reisepass sowie die legitime Inhaberin, Sozialversicherungsnummer, Fingerabdruck und der Mensch dazu
** Beispiel: Ein Buch wird dadurch beschrieben, in welcher Bibliothek es steht: dort im zweiten Raum, drittes Regal, viertes Fach von oben, fünftes Buch von links.  
Im Januar 2005 wurde mit <nowiki>RFC&nbsp;3986</nowiki> das Konzept der Ressource im Sinne der URI auch noch um abstrakte Konzepte erweitert:
* Dort könnten die aktuellen Top-5 der Bestsellerliste stehen – unabhängig von ihrem Inhalt.
* Individuum
** Die Regeln der URI können auch angewendet werden, wenn etwas überhaupt keine klassische Ressource ist, trotzdem identifiziert werden soll.
** Zunächst verstand man unter „Ressource“ etwas wie [[Ressource (Software)|Ressourcen]] im informationstechnischen Sinn, also im weitesten Sinne elektronische Dateien, die auch im Internet verfügbar gemacht werden könnten.  
* Davon gingen 1994 die RFC 1630 und RFC 1738 aus.
* Dieses Konzept wurde jedoch erweitert.
* So war 1998 in der RFC 2396 (Abschnitt 1.1) festgelegt worden: „A resource can be anything that has identity.“ Auch Personen, Organisationen und gedruckte Bücher könnten als Ressource betrachtet werden.  
* Diese Betrachtung zielt auf die Kennzeichnung zuordnungsfähiger Entitäten.
** Beispiele: E-Mail-Adresse, Nummer eines Mobiltelefons, Reisepass sowie der legitime Inhaber, Sozialversicherungsnummer, Fingerabdruck und der Mensch dazu.
Im Januar 2005 wurde mit RFC 3986 das Konzept der Ressource im Sinne der URI auch noch um abstrakte Konzepte erweitert:
{{Zitat
{{Zitat
  |Text=A resource is not necessarily accessible via the Internet; e.g., human beings, corporations, and bound books in a library can also be resources.  
  |Text=A resource is not necessarily accessible via the Internet; e.g., human beings, corporations, and bound books in a library can also be resources. Likewise, abstract concepts can be resources, such as the operators and operands of a mathematical equation, the types of a relationship (e.g., ‘parent’ or ‘employee’), or numeric values (e.g., [[Zero One Infinity|zero, one, and infinity]])
* Likewise, abstract concepts can be resources, such as the operators and operands of a mathematical equation, the types of a relationship (e.g., ‘parent’ or ‘employee’), or numeric values (e.g., [[Zero One Infinity|zero, one, and infinity]]).
  |Sprache=en
  |Sprache=en
|Autor=
  |Quelle=RFC<nowiki /> 3986, Abschnitt 1.1
  |Quelle=RFC 3986, Abschnitt 1.1
  |Übersetzung=Eine Ressource ist nicht notwendigerweise über das Internet erreichbar; beispielsweise können Menschen, Firmen und gebundene Bücher in Bibliotheken ebenfalls eine Ressource darstellen. Ebenso können abstrakte Konzepte, wie Operatoren und Operanden einer mathematischen Gleichung, Arten einer Beziehung (z.&nbsp;B. ‚[[Elter]]‘ oder ‚Angestellter‘), oder Zahlen (z.&nbsp;B. Null, Eins und Unendlich) eine Ressource sein
  |Übersetzung=Eine Ressource ist nicht notwendigerweise über das Internet erreichbar; beispielsweise können Menschen, Firmen und gebundene Bücher in Bibliotheken ebenfalls eine Ressource darstellen.  
* Ebenso können abstrakte Konzepte, wie Operatoren und Operanden einer mathematischen Gleichung, Arten einer Beziehung (z.&nbsp;B. 'Elter' oder 'Angestellter'), oder Zahlen (z.&nbsp;B.  
* Null, Eins und Unendlich) eine Ressource sein.
  |ref=}}
  |ref=}}


== Aufbau ==
== Aufbau ==
 
Nach dem aktuellen Standard <nowiki>RFC&nbsp;3986</nowiki> besteht ein URI aus fünf Teilen: scheme (Schema oder Protokoll), authority (Anbieter oder Server), path (Pfad), query (Abfrage) und fragment (Teil), wovon nur scheme und path in jedem URI vorhanden sein müssen. Die generische Syntax ist:
Nach dem aktuellen Standard RFC 3986 besteht ein URI aus fünf Teilen: <code>scheme</code> (Schema oder Protokoll), <code>authority</code> (Anbieter oder Server), <code>path</code> (Pfad), <code>query</code> (Abfrage) und <code>fragment</code> (Teil), wovon nur <code>scheme</code> und <code>path</code> in jedem URI vorhanden sein müssen.  
* Die generische Syntax ist:
<pre>
<pre>
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
</pre>
</pre>
Dabei steht <code>hier-part</code> (hierarchischer Teil) für eine optionale <code>authority</code> und den <code>path</code>.  
Dabei steht hier-part (hierarchischer Teil) für eine optionale authority und den path. Ist die Angabe einer authority erforderlich, um die Ressource letztlich zu verorten, so wird sie durch doppelten Schrägstrich eingeleitet und die darauf folgende Pfadangabe muss mit einem Schrägstrich beginnen. Der Standard verdeutlicht diese Komponenten mit zwei Beispielen:
* Ist die Angabe einer <code>authority</code> erforderlich, um die Ressource letztlich zu verorten, so wird sie durch doppelten Schrägstrich eingeleitet und die darauf folgende Pfadangabe muss mit einem Schrägstrich beginnen.  
* Der Standard verdeutlicht diese Komponenten mit zwei Beispielen:
<pre>
<pre>
  foo://example.com:8042/over/there?name=ferret#nose
  foo://example.com:8042/over/there?name=ferret#nose
Zeile 126: Zeile 55:
</pre>
</pre>


=== {{Anker|Schema|Scheme}} Schema (''Scheme'') ===
=== Schema ===
 
; Schema (''Scheme'')
Das Schema (der Teil vor dem Doppelpunkt) definiert den Kontext und bezeichnet so den Typ des URIs, was die Interpretation des folgenden Teils festlegt.  
Das Schema (der Teil vor dem Doppelpunkt) definiert den Kontext und bezeichnet so den Typ des URIs, was die Interpretation des folgenden Teils festlegt. Bekannte Schemata sind beispielsweise die Protokolle [[Hypertext Transfer Protocol|http]] und [[File Transfer Protocol|ftp]] sowie Notationskonzepte wie [[Uniform Resource Name|urn]] und [[Digital Object Identifier|doi]]. Mit dem Doppelpunkt endet der erste obligatorische Teil des URI. Gibt es keinen Bezug auf eine die Namensverwaltung organisierende (aktive) Autorität, so folgt direkt auf diesen Doppelpunkt der Pfad zur Verortung der Ressource
* Bekannte Schemata sind beispielsweise die Protokolle <code>[[Hypertext Transfer Protocol|http]]</code> und <code>[[File Transfer Protocol|ftp]]</code> sowie Notationskonzepte wie <code>[[Uniform Resource Name|urn]]</code> und <code>[[Digital Object Identifier|doi]]</code>.  
* Mit dem Doppelpunkt endet der erste obligatorische Teil des URI.  
* Gibt es keinen Bezug auf eine die Namensverwaltung organisierende (aktive) Autorität, so folgt direkt auf diesen Doppelpunkt der Pfad zur Verortung der Ressource.


=== Authority (im Sinne von ''Zuständigkeit'') ===
=== Authority ===
; Authority (im Sinne von ''Zuständigkeit'')
Viele ''URI''-Schemata wie http oder ftp haben einen authority-Teil. Der Begriff ''authority'' bezieht sich auf eine Instanz, die die Namen in diesem (vom Schema angegebenen Interpretations-) Raum zentral verwalten kann. Ein Beispiel dafür ist das [[Domain Name System]], das von globalen und lokalen [[Domain Name Registrar|Registraren]] verwaltet wird


Viele ''URI''-Schemata wie <code>http</code> oder <code>ftp</code> haben einen <code>authority</code>-Teil.  
Die authority besteht aus einer optionalen Benutzerinformation (gefolgt von einem ‚@‘), dem [[Host (Informationstechnik)|Host]] und einer optionalen (durch einen Doppelpunkt eingeleiteten) Port-Angabe. Sie folgt auf zwei Schrägstriche (//) und wird von einem einfachen Schrägstrich (/), einem Fragezeichen (?), einem Doppelkreuz (#) oder dem Ende des URIs begrenzt. Der Host-Teil kann aus einer [[IP-Adresse]], einer [[IPv6]]-Adresse (in eckigen Klammern ‚[…]‘) oder einem registrierten Namen bestehen
* Der Begriff ''authority'' bezieht sich auf eine Instanz, die die Namen in diesem (vom Schema angegebenen Interpretations-) Raum zentral verwalten kann.
* Ein Beispiel dafür ist das [[Domain Name System]], das von globalen und lokalen [[Domain Name Registrar|Registraren]] verwaltet wird.


Die <code>authority</code> besteht aus einer optionalen Benutzerinformation (gefolgt von einem ‚<code>@</code>‘), dem [[Host (Informationstechnik)|Host]] und einer optionalen (durch einen Doppelpunkt eingeleiteten) Port-Angabe.  
; Beispiele für gültige Werte
* Sie folgt auf zwei Schrägstriche (<code>//</code>) und wird von einem einfachen Schrägstrich (<code>/</code>), einem Fragezeichen (<code>?</code>), einem Doppelkreuz (<code>#</code>) oder dem Ende des URIs begrenzt.  
* de.wikipedia.org
* Der Host-Teil kann aus einer [[IP-Adresse]], einer [[IPv6]]-Adresse (in eckigen Klammern ‚<code>[…]</code>‘) oder einem registrierten Namen bestehen.  
* user@example.com:8080
* Gültige Werte sind beispielsweise:
* 192.0.2.16:80
* [2001:db8::7]


* <code>de.wikipedia.org</code>
Die mögliche Angabe von Benutzername und Kennwort in der Benutzerinformation (user:password@…) wird in <nowiki>RFC&nbsp;3986</nowiki> (Abschnitt 3.2.1) als überholt bezeichnet und sollte nicht mehr verwendet werden, da URIs oft im Klartext übertragen und protokolliert werden
* <code>user@example.com:8080</code>
* <code>192.0.2.16:80</code>
* <code>[2001:db8::7]</code>


Die mögliche Angabe von Benutzername und Kennwort in der Benutzerinformation (<code>user:password@…</code>) wird in [[RFC:3986#section-3.2.1|RFC 3986 (Abschnitt 3.2.1)]] als überholt bezeichnet und sollte nicht mehr verwendet werden, da URIs oft im Klartext übertragen und protokolliert werden.
=== Pfad ===
; Pfad (''Path'')
Der Pfad enthält –&nbsp;oft hierarchisch organisierte&nbsp;– Angaben, die zusammen mit dem Abfrageteil eine Ressource identifizieren. Falls in der URI eine im vorangegangenen Abschnitt beschriebene authority angegeben wurde, muss der path mit einem Schrägstrich (/) beginnen; gibt es keine authority, darf der path nicht mit einem doppelten Schrägstrich (//) beginnen. Dadurch ist die eindeutige Interpretation gesichert. Er wird von einem Fragezeichen (?), einem Doppelkreuz (#) oder dem Ende des URI begrenzt. Gültige Pfade sind beispielsweise:


=== Pfad (''Path'') ===
* /over/there
* example:animal:ferret:nose


Der Pfad enthält –&nbsp;oft hierarchisch organisierte&nbsp;– Angaben, die zusammen mit dem Abfrageteil eine Ressource identifizieren.
=== Abfrage ===
* Falls in der URI eine im vorangegangenen Abschnitt beschriebene <code>authority</code> angegeben wurde, muss der <code>path</code> mit einem Schrägstrich (<code>/</code>) beginnen; gibt es keine <code>authority</code>, darf der <code>path</code> nicht mit einem doppelten Schrägstrich (<code>//</code>) beginnen.  
; Abfrage (''Query'')
* Dadurch ist die eindeutige Interpretation gesichert.  
Der Abfrageteil ([[Query-String]]) beinhaltet Daten zur Identifizierung von solchen Ressourcen, deren Ort durch die Pfadangabe allein nicht genau angegeben werden kann. Sie müssen aus der durch den Pfad bezeichneten Quelle, durch ebendiese Abfrage wie ein Datensatz aus einer Datenbank abgerufen werden. Er wird mit einem Fragezeichen (?) eingeleitet und von einem Doppelkreuz (#) oder dem Ende des URI begrenzt. Eine gültige Abfrage nach dem ‚?‘ ist beispielsweise:
* Er wird von einem Fragezeichen (<code>?</code>), einem Doppelkreuz (<code>#</code>) oder dem Ende des URI begrenzt.  
* Gültige Pfade sind beispielsweise:


* <code>/over/there</code>
* title=Uniform_Resource_Identifier&amp;action=submit
* <code>example:animal:ferret:nose</code>


=== Abfrage (''Query'') ===
Hier spielen ‚&‘ und ‚=‘ etwa die gleiche Rolle wie ‚.‘ und ‚:‘ im Teil für die authority
 
Der Abfrageteil ([[Query-String]]) beinhaltet Daten zur Identifizierung von solchen Ressourcen, deren Ort durch die Pfadangabe allein nicht genau angegeben werden kann.
* Sie müssen aus der durch den Pfad bezeichneten Quelle, durch ebendiese Abfrage wie beispielsweise ein Datensatz aus einer Datenbank abgerufen werden.
* Er wird mit einem Fragezeichen (<code>?</code>) eingeleitet und von einem Doppelkreuz (<code>#</code>) oder dem Ende des URI begrenzt.
* Eine gültige Abfrage nach dem ‚<code>?</code>‘ ist beispielsweise:
 
* <code>title=Uniform_Resource_Identifier&amp;action=submit</code>
 
Hier spielen ‚<code>&</code>‘ und ‚<code>=</code>in etwa die gleiche Rolle wie ‚<code>.</code>‘ und ‚<code>:</code>‘ im Teil für die <code>authority</code>.


=== Fragment ===
=== Fragment ===
<code>fragment</code> ist der optionale [[Fragmentbezeichner]] und referenziert eine Stelle innerhalb einer Ressource.  
fragment ist der optionale [[Fragmentbezeichner]] und referenziert eine Stelle innerhalb einer Ressource. Der Fragmentbezeichner bezieht sich immer nur auf den unmittelbar vorangehenden Teil des URI und wird von einem Doppelkreuz (#) eingeleitet. Ein Beispiel dafür ist der [[Anker (HTML)|Anker]] in HTML
* Der Fragmentbezeichner bezieht sich immer nur auf den unmittelbar vorangehenden Teil des URI und wird von einem Doppelkreuz (<code>#</code>) eingeleitet.  
* Ein Beispiel dafür ist der [[Anker (HTML)|Anker]] in HTML.


=== Beispiele ===
=== Beispiele ===
* <code><nowiki>https://de.wikipedia.org/wiki/Uniform_Resource_Identifier</nowiki></code>
* <nowiki>https://de.wikipedia.org/wiki/Uniform_Resource_Identifier</nowiki>
* <code><nowiki>ftp://ftp.is.co.za/rfc/rfc1808.txt</nowiki></code>
* <nowiki>ftp://ftp.is.co.za/rfc/rfc1808.txt</nowiki>
* <code><nowiki>file:///C:/Users/Benutzer/Desktop/Uniform%20Resource%20Identifier.html</nowiki></code>
* <nowiki>file:///C:/Users/Benutzer/Desktop/Uniform%20Resource%20Identifier.html</nowiki>
* <code><nowiki>file:///etc/fstab</nowiki></code>
* <nowiki>file:///etc/fstab</nowiki>
* <code><nowiki>geo:48.33,14.122;u=22.5</nowiki></code>
* <nowiki>geo:48.33,14.122;u=22.5</nowiki>
* <code><nowiki>ldap://[2001:db8::7]/c=GB?objectClass?one</nowiki></code>
* <nowiki>ldap://[2001:db8::7]/c=GB?objectClass?one</nowiki>
* <code><nowiki>gopher://gopher.floodgap.com</nowiki></code>
* <nowiki>gopher://gopher.floodgap.com</nowiki>
* <code><nowiki>mailto:John.Doe@example.com</nowiki></code>
* <nowiki>mailto:John.Doe@example.com</nowiki>
* <code><nowiki>sip:911@pbx.mycompany.com</nowiki></code>
* <nowiki>sip:911@pbx.mycompany.com</nowiki>
* <code><nowiki>news:comp.infosystems.www.servers.unix</nowiki></code>
* <nowiki>news:comp.infosystems.www.servers.unix</nowiki>
* <code><nowiki>data:text/plain;charset=iso-8859-7,%be%fa%be</nowiki></code>
* <nowiki>data:text/plain;charset=iso-8859-7,%be%fa%be</nowiki>
* <code><nowiki>tel:+1-816-555-1212</nowiki></code>
* <nowiki>tel:+1-816-555-1212</nowiki>
* <code><nowiki>telnet://192.0.2.16:80/</nowiki></code>
* <nowiki>telnet://192.0.2.16:80/</nowiki>
* <code><nowiki>urn:oasis:names:specification:docbook:dtd:xml:4.1.2</nowiki></code>
* <nowiki>urn:oasis:names:specification:docbook:dtd:xml:4.1.2</nowiki>
* <code><nowiki>git://github.com/rails/rails.git</nowiki></code>
* <nowiki>git://github.com/rails/rails.git</nowiki>
* <code><nowiki>crid://broadcaster.com/movies/BestActionMovieEver</nowiki></code>
* <nowiki>crid://broadcaster.com/movies/BestActionMovieEver</nowiki>
Ein Beispiel mit sehr vielen Elementen gleichzeitig in der URI:
Ein Beispiel mit sehr vielen Elementen gleichzeitig in der URI:
* <code><nowiki>http://nobody:password@example.org:8080/cgi-bin/script.php?action=submit&pageid=86392001#section_2</nowiki></code>
* <nowiki>http://nobody:password@example.org:8080/cgi-bin/script.php?action=submit&pageid=86392001#section_2</nowiki>


== URI-Referenzen ==
== URI-Referenzen ==


Oft verwenden Anwendungen nicht den vollständigen URI, sondern eine abgekürzte Syntax, beispielsweise um Platz zu sparen oder den einfachen Umzug auf andere Server zu ermöglichen.  
Oft verwenden Anwendungen nicht den vollständigen URI, sondern eine abgekürzte Syntax, beispielsweise um Platz zu sparen oder den einfachen Umzug auf andere Server zu ermöglichen. Manche URI-Schemata begrenzen in ihrer Definition zudem die Syntax auf eine bestimmte Form. Unter dem Begriff der URI-Referenzen werden unterschiedliche Schreibweisen zusammengefasst
* Manche URI-Schemata begrenzen in ihrer Definition zudem die Syntax auf eine bestimmte Form.  
* Unter dem Begriff der URI-Referenzen werden unterschiedliche Schreibweisen zusammengefasst.


=== Absolute URIs ===
=== Absolute URIs ===


Ein absoluter URI identifiziert eine Ressource unabhängig vom Kontext der Verwendung des URI.<ref>[https://www.ietf.org/rfc/rfc2396.txt ietf.org]</ref>
Ein absoluter URI identifiziert eine Ressource unabhängig vom Kontext der Verwendung des URI
Er besteht mindestens aus <code>scheme</code> und <code>hier-part</code> (also einer <code>authority</code> und/oder einem <code>path</code>).
 
Er besteht mindestens aus scheme und hier-part (also einer authority und/oder einem path)
Beispiele sind:
Beispiele sind:


* <code><nowiki>https://de.wikipedia.org</nowiki></code>
* <nowiki>https://de.wikipedia.org</nowiki>
* <code>file://localhost/var/spool/dump.bin</code>
* file://localhost/var/spool/dump.bin


=== Relative Referenz ===
=== Relative Referenz ===
Im Gegensatz zu einem absoluten URI beschreibt ein relativer URI nur die Abweichung zwischen dem absoluten URI einer Ressource und dem aktuellen Kontext in einem hierarchischen Namensraum
Wenn eine URI-Referenz nicht mit einem scheme beginnt, wird angenommen, dass es sich um eine relative Referenz handelt. Die Auflösung einer relativen Referenz zu einem absoluten URI erfolgt abhängig vom Kontext nach standardisierten Regeln. Eine relative Referenz besteht aus einem path sowie optional aus query und fragment


Im Gegensatz zu einem absoluten URI beschreibt ein relativer URI nur die Abweichung zwischen dem absoluten URI einer Ressource und dem aktuellen Kontext in einem hierarchischen Namensraum.<ref>[https://www.ietf.org/rfc/rfc2396.txt ietf.org]</ref>
; Es werden drei Arten von relativen Referenzen unterschieden
 
* Beginnt der Pfad ohne Schrägstrich, handelt es sich um eine ''relative Pfad-Referenz'', beispielsweise image.png, ./image.png und ../images/image.png
Wenn eine URI-Referenz nicht mit einem <code>scheme</code> beginnt, wird angenommen, dass es sich um eine relative Referenz handelt.
* Beginnt der Pfad mit einem einzelnen Schrägstrich (/), handelt es sich um eine ''absolute Pfad-Referenz''
* Die Auflösung einer relativen Referenz zu einem absoluten URI erfolgt abhängig vom Kontext nach standardisierten Regeln.
* Beginnt der Pfad mit doppelten Schrägstrichen (//), handelt es sich um eine ''Netzwerk-Pfad-Referenz''
* Eine relative Referenz besteht aus einem <code>path</code> sowie optional aus <code>query</code> und <code>fragment</code>.
* Es werden drei Arten von relativen Referenzen unterschieden:
 
* Beginnt der Pfad ohne Schrägstrich, handelt es sich um eine ''relative Pfad-Referenz'', beispielsweise <code>image.png</code>, <code>./image.png</code> und <code>../images/image.png</code>.
* Beginnt der Pfad mit einem einzelnen Schrägstrich (<code>/</code>), handelt es sich um eine ''absolute Pfad-Referenz''.
* Beginnt der Pfad mit doppelten Schrägstrichen (<code>//</code>), handelt es sich um eine ''Netzwerk-Pfad-Referenz''.


=== Referenz innerhalb desselben Dokumentes ===
=== Referenz innerhalb desselben Dokumentes ===
 
URI-Referenzen können auf dasselbe Dokument verweisen, dessen Teil sie sind. Die häufigste Anwendung ist das Doppelkreuz (#), gefolgt von einem Fragment-Bezeichner
URI-Referenzen können auf dasselbe Dokument verweisen, dessen Teil sie sind.  
* Die häufigste Anwendung ist das Doppelkreuz (<code>#</code>), gefolgt von einem Fragment-Bezeichner.


=== Suffix-Referenzen ===
=== Suffix-Referenzen ===


Weit verbreitet ist die Angabe von URI-Referenzen des Internets ohne Bezeichnung des Protokolls (des Schemas), etwa <code>www.wikipedia.de</code>.  
Weit verbreitet ist die Angabe von URI-Referenzen des Internets ohne Bezeichnung des Protokolls (des Schemas), etwa www.wikipedia.de. Unter der Annahme, dass sich aus dem [[Suffix]] (im Beispiel www, DNS-Namen werden von rechts nach links aufgebaut) auf das Protokoll (hier http) schließen lässt, funktioniert die Auflösung solcher Referenzen. Allerdings ist diese Auflösung von entsprechenden Annahmen und zudem von der jeweiligen Software abhängig. Deshalb sollten Suffix-Referenzen vermieden werden
* Unter der Annahme, dass sich aus dem [[Suffix]] (im Beispiel <code>www</code>, DNS-Namen werden von rechts nach links aufgebaut) auf das Protokoll (hier <code>http</code>) schließen lässt, funktioniert die Auflösung solcher Referenzen.  
* Allerdings ist diese Auflösung von entsprechenden Annahmen und zudem von der jeweiligen Software abhängig.  
* Deshalb sollten Suffix-Referenzen vermieden werden.


== Schemata ==
== Schemata ==
Zeile 243: Zeile 146:


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
! Schema !! Beschreibung
! Schema !! Beschreibung
|-
|-
| <code>crid</code> || [[Content Reference Identifier]] (für [[Fernsehsendung]]en)
| crid || [[Content Reference Identifier]] (für [[Fernsehsendung]]en)
|-
|-
| <code>data</code> || [[Data-URL]]: direkt eingebettete Daten
| data || [[Data-URL]]: direkt eingebettete Daten
|-
|-
| <code>file</code> || Dateien im lokalen [[Dateisystem]]
| file || Dateien im lokalen [[Dateisystem]]
|-
|-
| <code>ftp</code> || [[File Transfer Protocol]]
| ftp || [[File Transfer Protocol]]
|-
|-
| <code>geo</code> || [[Geografische Koordinaten]]
| geo || [[Geografische Koordinaten]]
|-
|-
| <code>gopher</code> || [[Gopher]]
| gopher || [[Gopher]]
|-
|-
| <code>http</code> || [[Hypertext Transfer Protocol]]
| http || [[Hypertext Transfer Protocol]]
|-
|-
| <code>ldap</code> || [[Lightweight Directory Access Protocol]]
| ldap || [[Lightweight Directory Access Protocol]]
|-
|-
| <code>mailto</code> || [[E-Mail]]-Adresse
| mailto || [[E-Mail]]-Adresse
|-
|-
| <code>news</code> || [[Newsgroup]] oder Newsartikel
| news || [[Newsgroup]] oder Newsartikel
|-
|-
| <code>pop</code> || Mailboxzugriff über [[POP3]]
| pop || Mailboxzugriff über [[POP3]]
|-
|-
| <code>rsync</code> || Synchronisation von Daten mit [[rsync]]
| rsync || Synchronisation von Daten mit [[rsync]]
|-
|-
| <code>sip</code> || [[Session Initiation Protocol|SIP]]-gestützter Sitzungsaufbau, z.&nbsp;B.  
| sip || [[Session Initiation Protocol|SIP]]-gestützter Sitzungsaufbau, z.&nbsp;B. für [[IP-Telefonie]]
* für [[IP-Telefonie]]
|-
|-
| <code>tel</code> || [[Telefonnummer]]
| tel || [[Telefonnummer]]
|-
|-
| <code>telnet</code> || [[Telnet]]
| telnet || [[Telnet]]
|-
|-
| <code>urn</code> || [[Uniform Resource Name]]s (URNs)
| urn || [[Uniform Resource Name]]s (URNs)
|-
|-
| <code>ws</code> || rowspan="2" | [[WebSocket]]
| ws || rowspan="2" | [[WebSocket]]
|-
|-
| <code>wss</code>
| wss
|-
|-
| <code>xmpp</code> || [[Extensible Messaging and Presence Protocol]] für [[Jabber Identifier]]
| xmpp || [[Extensible Messaging and Presence Protocol]] für [[Jabber Identifier]]
|}
|}


Auf der Website der [[Internet Assigned Numbers Authority]] (IANA) befindet sich eine vollständige Liste der offiziellen Schemata.<ref name="IANA-Schemata" />
Auf der Website der [[Internet Assigned Numbers Authority]] (IANA) befindet sich eine vollständige Liste der offiziellen Schemata


Daneben haben sich einige inoffizielle, von der IANA auch als „vorläufig“ bezeichnete, Schemata für einzelne Anwendungen oder gängige Protokolle etabliert:
Daneben haben sich einige inoffizielle, von der IANA auch als „vorläufig“ bezeichnete, Schemata für einzelne Anwendungen oder gängige Protokolle etabliert:


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
! Schema !! Beschreibung
! Schema !! Beschreibung
|-
|-
| about || [[Webbrowser|browserinterne]] Informationen
|-
|-
| <code>about</code> || [[Webbrowser|browserinterne]] Informationen<ref>[https://tools.ietf.org/html/draft-holsten-about-uri-scheme-06 tools.ietf.org]</ref>
| afp || [[Apple Filing Protocol]]
|-
| <code>afp</code> || [[Apple Filing Protocol]]<ref>[https://tools.ietf.org/html/draft-ietf-svrloc-afp-service-01 tools.ietf.org]</ref>
|-
|-
| <code>apt</code> || [[Advanced Packaging Tool]]
| apt || [[Advanced Packaging Tool]]
|-
|-
| <code>callto</code> || Telefonnummern (u.&nbsp;a. [[Skype]] und [[NetMeeting]])
| callto || Telefonnummern (u.&nbsp;a. [[Skype]] und [[NetMeeting]])
|-
|-
| <code>coffee</code> || [[Hyper Text Coffee Pot Control Protocol]]
| coffee || [[Hyper Text Coffee Pot Control Protocol]]
|-
|-
| <code>daap</code> || [[Digital Audio Access Protocol]]
| daap || [[Digital Audio Access Protocol]]
|-
|-
| <code>doi</code> || [[Digital Object Identifier]]
| doi || [[Digital Object Identifier]]
|-
|-
| <code>ed2k</code> || [[ED2k-URI-Schema]] von [[eDonkey2000]]/[[Kademlia]]
| ed2k || [[ED2k-URI-Schema]] von [[eDonkey2000]]/[[Kademlia]]
|-
|-
| <code>feed</code> || [[Web-Feed]]s
| feed || [[Web-Feed]]s
|-
|-
| <code>finger</code> || [[Finger (Internetprotokoll)|Finger]]<ref>[https://tools.ietf.org/html/draft-ietf-uri-url-finger-03 tools.ietf.org]</ref>
| finger || [[Finger (Internetprotokoll)|Finger]]
|-
|-
| <code>fish</code> || [[FISH (Protokoll)|Files transferred over Shell protocol]]
| fish || [[FISH (Protokoll)|Files transferred over Shell protocol]]
|-
|-
| <code>git</code> || [[Git]]
| git || [[Git]]
|-
|-
| <code>irc</code>/<code>ircs</code> || [[Internet Relay Chat]]<ref>[https://tools.ietf.org/html/draft-butcher-irc-url-04 tools.ietf.org]</ref>
| irc/ircs || [[Internet Relay Chat]]
|-
|-
| <code>itunes</code> || [[iTunes]]
| itunes || [[iTunes]]
|-
|-
| <code>javascript</code> || Ausführung von [[JavaScript]]-Code<ref>[https://tools.ietf.org/html/draft-hoehrmann-javascript-scheme-03 tools.ietf.org]</ref>
| javascript || Ausführung von [[JavaScript]]-Code
|-
|-
| <code>lastfm</code> || [[Last.fm]]
| lastfm || [[Last.fm]]
|-
|-
| <code>magnet</code> || [[Magnet-Link]]
| magnet || [[Magnet-Link]]
|-
|-
| <code>mms</code> || [[Microsoft Media Server]]
| mms || [[Microsoft Media Server]]
|-
|-
| <code>rtmp</code> || [[Real Time Messaging Protocol]]
| rtmp || [[Real Time Messaging Protocol]]
|-
|-
| <code>sftp</code> || [[SSH File Transfer Protocol]]<ref>[https://www.iana.org/assignments/uri-schemes/prov/sftp iana.org]</ref><ref name="sftpssh">[https://tools.ietf.org/html/draft-ietf-secsh-scp-sftp-ssh-uri-04 tools.ietf.org]</ref>
| sftp || [[SSH File Transfer Protocol]]
|-
|-
| <code>skype</code> || Telefonnummern (nur [[Skype]])
| skype || Telefonnummern (nur [[Skype]])
|-
|-
| <code>smb</code> || [[Server Message Block]]<ref>[https://tools.ietf.org/html/draft-crhertel-smb-url-12 tools.ietf.org]</ref>
| smb || [[Server Message Block]]
|-
|-
| <code>ssh</code> || [[Secure Shell]]<ref>[https://www.iana.org/assignments/uri-schemes/prov/ssh iana.org]</ref><ref name="sftpssh" />
| ssh || [[Secure Shell]]
|-
|-
| <code>svn</code>/<code>svn+ssh</code> || [[Apache Subversion]]
| svn/svn+ssh || [[Apache Subversion]]
|-
|-
| <code>view-source</code> || Quelltextanzeige für eine Webseite<ref>[https://docs.microsoft.com/en-us/previous-versions//aa767742(v=vs.85) msdn.microsoft.com]</ref>
| view-source || Quelltextanzeige für eine Webseite
|-
|-
| <code>webcal</code> || [[iCalendar]]
| webcal || [[iCalendar]]
|-
|-
| <code>wyciwyg</code> || What You Cache Is What You Get, Firefox-interne Anzeige für die Darstellung gecachter Inhalte
| wyciwyg || What You Cache Is What You Get, Firefox-interne Anzeige für die Darstellung gecachter Inhalte
|-
|-
| <code>ymsgr</code> || [[Yahoo Messenger]]
| ymsgr || [[Yahoo Messenger]]
|}
|}


== Unterarten ==
== Unterarten ==
{| class="wikitable sortable options"
| [[Uniform Resource Locator]] (URL) || Benennen eine Ressource über ihren primären Zugriffsmechanismus wie [[Hypertext Transfer Protocol|http]] oder [[File Transfer Protocol|ftp]]. Danach folgt die Bezeichnung des Ortes ({{enS|location}}) der Ressource im Netz – meistens der Domain-Name. URLs waren ursprünglich die einzige Art von URIs, weshalb der Begriff URL oft gleichbedeutend mit URI verwendet wird
|-
| [[Uniform Resource Name]] (URN) || Mit dem URI-Schema urn (oder ggf. anderer) eine Ressource identifizieren mittels eines vorhandenen oder frei zu vergebenden Namens, beispielsweise [[Internationale Standardbuchnummer|urn:isbn]] oder [[SHA-1|urn:sha1]]
|}


Es werden folgende Unterarten von URIs unterschieden:
Ursprünglich sollte jeder URI in eine dieser beiden Klassen (oder weitere noch zu definierende) eingeteilt werden. Diese strenge Aufteilung wurde jedoch aufgegeben, da sie unnötig ist und einige Schemata (wie data oder das früher den URLs zugeordnete [[mailto]]) in keine der beiden Klassen passen


; [[Uniform Resource Locator]] (URL)
<noinclude>
: Benennen eine Ressource über ihren primären Zugriffsmechanismus wie zum Beispiel <code>[[Hypertext Transfer Protocol|http]]</code> oder <code>[[File Transfer Protocol|ftp]]</code>.
* Danach folgt die Bezeichnung des Ortes (engl. ''location'') der Ressource im Netz – meistens der Domain-Name.
* URLs waren ursprünglich die einzige Art von URIs, weshalb der Begriff URL oft gleichbedeutend mit URI verwendet wird.
; [[Uniform Resource Name]] (URN)
: Mit dem URI-Schema <code>urn</code> identifizieren eine Ressource mittels eines vorhandenen oder frei zu vergebenden Namens, beispielsweise <code>[[Internationale Standardbuchnummer|urn:isbn]]</code> oder <code>[[SHA-1|urn:sha1]]</code>.


Ursprünglich sollte jeder URI in eine dieser beiden Klassen (oder weitere noch zu definierende) eingeteilt werden.
== Anhang ==
* Diese strenge Aufteilung wurde jedoch aufgegeben, da sie unnötig ist und einige Schemata (wie <code>data</code> oder das früher den URLs zugeordnete <code>[[mailto]]</code>) in keine der beiden Klassen passen.
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}


== Siehe auch ==
==== Links ====
* [[Digital Object Identifier]] (DOI)
* [[Persistent Uniform Resource Locator]] (PURL)
* [[Internationalized Resource Identifier]] (IRI)


== Weblinks ==
=== RFC ===
* RFC 1630 – ''Universal Resource Identifiers in WWW'' (Status: INFORMATIONAL)
{| class="wikitable sortable options"
* RFC 3986 – ''Uniform Resource Identifier (URI): Generic Syntax'' (Status: STANDARD)
|-
* [https://www.w3.org/Addressing/ Web Naming and Addressing] (englisch)
! RFC !! Titel
* [https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml ''Uniform Resource Identifier (URI) Schemes''] – Liste der URI-Schemata bei der [[Internet Assigned Numbers Authority]] (IANA). (englisch)
|-
* [[Tim Berners-Lee]]: [https://www.w3.org/Provider/Style/URI ''Cool URIs Don’t Change''.] (englisch)
| [https://www.rfc-editor.org/info/rfc3986 3986] || Uniform Resource Identifier (URI): Generic Syntax
|-
| [https://www.rfc-editor.org/info/rfc1630 1630] || Universal Resource Identifiers in WWW
|-
| [https://www.rfc-editor.org/info/rfc8820 8820] || URI Design and Ownership
|}


== Einzelnachweise ==
===== Weblinks =====
<references>
# https://de.wikipedia.org/wiki/Uniform_Resource_Identifier
<ref name="IANA-Schemata">
# [https://www.w3.org/Addressing/ Web Naming and Addressing]
{{Internetquelle
# [https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml ''Uniform Resource Identifier (URI) Schemes''] – Liste der URI-Schemata bei der [[Internet Assigned Numbers Authority]] (IANA)
|autor=Graham Klyne
# [[Tim Berners-Lee]]: [https://www.w3.org/Provider/Style/URI ''Cool URIs Don’t Change'']
|url=https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
# [https://www.w3.org/Addressing/ Web Naming and Addressing.] [[World Wide Web Consortium|W3C]] (englisch)
|titel=Uniform Resource Identifier (URI) Schemes
# [https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml ''Uniform Resource Identifier (URI) Schemes''.] [[Internet Assigned Numbers Authority]] (IANA) – Liste der URI-Schemata (englisch)
|werk=https://www.iana.org/
# [[Tim Berners-Lee]]: [https://www.w3.org/Provider/Style/URI ''Cool URIs Don’t Change''.] [[World Wide Web Consortium|W3C]] (englisch)
|hrsg=[[Internet Assigned Numbers Authority]] (IANA)
|datum=2016-03-20
|sprache=en
|abruf=2016-04-08}}
</ref>
</references>
 
[[Kategorie:Netzwerk/Adresse]]


[[Kategorie:URI]]
</noinclude>
</noinclude>

Aktuelle Version vom 4. Februar 2024, 14:16 Uhr

Uniform Resource Identifier (URI)

Beschreibung

Ein Uniform Resource Identifier (Abk. URI, für einheitlicher Bezeichner für Ressourcen) ist ein Identifikator und besteht aus einer Zeichenfolge, die zur Identifizierung einer abstrakten oder physischen Ressource dient. URIs werden zur Bezeichnung von Ressourcen (wie Webseiten, sonstigen Dateien, Aufruf von Webservices, aber auch E-Mail-Empfängern) im Internet und dort vor allem im WWW eingesetzt. Der aktuelle Stand 2016 ist als RFC 3986 publiziert

Ursprünglich führte Tim Berners-Lee den Begriff 1994 im RFC 1630 als Universal Resource Identifier ein. Erst später tauchte dann in offiziellen W3C-Dokumenten die Auflösung Uniform auf. Aus diesem Grund wird Universal gelegentlich – selbst in der Fachliteratur – als erster Namensbestandteil genannt

URIs können als Zeichenfolge (kodiert mit einem Zeichensatz) in digitale Dokumente, insbesondere solche im HTML-Format eingebunden oder auch von Hand auf Papier aufgeschrieben werden. Einen Verweis von einer Webseite auf eine andere nennt man Hyperlink oder kurz „Link“

Eine Erweiterung der nur aus druckbaren ASCII-Zeichen bestehenden URIs sind die Internationalized Resource Identifiers (IRIs)

Konzeption

Ein URI (oder in der Erweiterung IRI) ist das abstrakte Prinzip, die Syntax, einer Kennzeichnung, bei dem ein Satz an Regeln vorgegeben ist. Dieses Grundkonzept der URI wird dann auf verschiedene konkrete Anwendungsbereiche übertragen, für die dann die entsprechenden Regeln und Begriffe gelten

Beispiel

  • URI dürfen keine Leerzeichen enthalten
  • Zu Beginn steht der Name eines Schemas in ASCII-Buchstaben und Ziffern, gegebenenfalls gegliedert durch Punkt und Bindestrich, beginnend mit Buchstaben, worauf ein Doppelpunkt folgt

Typen von Anwendungen

Name Der Inhalt einer Ressource (und damit jede inhaltsgleiche Kopie) erhält eine eindeutige Kennung
  • Beispiel: Die ISBN eines Buches. Es gibt unbegrenzt viele Exemplare dieses Buches
Locator Der Ort einer Ressource ist über ihren Bezeichner definiert. Sie wird also darüber identifiziert, wo sie zu finden ist; es wird damit jedoch nicht zwangsläufig ihr Inhalt festgelegt
  • Beispiel: Aktueller Wetterbericht im Internet. Es ist bekannt, an welcher Stelle (URL) dieser zu finden ist; der Inhalt ändert sich ständig
  • Beispiel: Ein Buch wird dadurch beschrieben, in welcher Bibliothek es steht: dort im zweiten Raum, drittes Regal, viertes Fach von oben, fünftes Buch von links. Dort könnten die aktuellen Top-5 der Bestsellerliste stehen – unabhängig von ihrem Inhalt
Individuum Die Regeln der URI können auch angewendet werden, wenn etwas überhaupt keine klassische Ressource ist, trotzdem identifiziert werden soll
  • Zunächst verstand man unter „Ressource“ etwas wie Ressourcen im informationstechnischen Sinn, also im weitesten Sinne elektronische Dateien, die auch im Internet verfügbar gemacht werden könnten. Davon gingen 1994 die RFC 1630 und RFC 1738 festgelegt worden: „A resource can be anything that has identity.“ Auch Personen, Organisationen und gedruckte Bücher könnten als Ressource betrachtet werden. Diese Betrachtung zielt auf die Kennzeichnung zuordnungsfähiger Entitäten
Beispiele

E-Mail-Adresse, Nummer eines Mobiltelefons, Reisepass sowie die legitime Inhaberin, Sozialversicherungsnummer, Fingerabdruck und der Mensch dazu Im Januar 2005 wurde mit RFC 3986 das Konzept der Ressource im Sinne der URI auch noch um abstrakte Konzepte erweitert: Vorlage:Zitat

Aufbau

Nach dem aktuellen Standard RFC 3986 besteht ein URI aus fünf Teilen: scheme (Schema oder Protokoll), authority (Anbieter oder Server), path (Pfad), query (Abfrage) und fragment (Teil), wovon nur scheme und path in jedem URI vorhanden sein müssen. Die generische Syntax ist:

URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]

Dabei steht hier-part (hierarchischer Teil) für eine optionale authority und den path. Ist die Angabe einer authority erforderlich, um die Ressource letztlich zu verorten, so wird sie durch doppelten Schrägstrich eingeleitet und die darauf folgende Pfadangabe muss mit einem Schrägstrich beginnen. Der Standard verdeutlicht diese Komponenten mit zwei Beispielen:

 foo://example.com:8042/over/there?name=ferret#nose
 \_/ \________________/\_________/ \_________/ \__/
 | | | | |
scheme authority path query fragment
 | _____________________|__
 / \ / \
 urn:example:animal:ferret:nose

Schema

Schema (Scheme)

Das Schema (der Teil vor dem Doppelpunkt) definiert den Kontext und bezeichnet so den Typ des URIs, was die Interpretation des folgenden Teils festlegt. Bekannte Schemata sind beispielsweise die Protokolle http und ftp sowie Notationskonzepte wie urn und doi. Mit dem Doppelpunkt endet der erste obligatorische Teil des URI. Gibt es keinen Bezug auf eine die Namensverwaltung organisierende (aktive) Autorität, so folgt direkt auf diesen Doppelpunkt der Pfad zur Verortung der Ressource

Authority

Authority (im Sinne von Zuständigkeit)

Viele URI-Schemata wie http oder ftp haben einen authority-Teil. Der Begriff authority bezieht sich auf eine Instanz, die die Namen in diesem (vom Schema angegebenen Interpretations-) Raum zentral verwalten kann. Ein Beispiel dafür ist das Domain Name System, das von globalen und lokalen Registraren verwaltet wird

Die authority besteht aus einer optionalen Benutzerinformation (gefolgt von einem ‚@‘), dem Host und einer optionalen (durch einen Doppelpunkt eingeleiteten) Port-Angabe. Sie folgt auf zwei Schrägstriche (//) und wird von einem einfachen Schrägstrich (/), einem Fragezeichen (?), einem Doppelkreuz (#) oder dem Ende des URIs begrenzt. Der Host-Teil kann aus einer IP-Adresse, einer IPv6-Adresse (in eckigen Klammern ‚[…]‘) oder einem registrierten Namen bestehen

Beispiele für gültige Werte
  • de.wikipedia.org
  • user@example.com:8080
  • 192.0.2.16:80
  • [2001:db8::7]

Die mögliche Angabe von Benutzername und Kennwort in der Benutzerinformation (user:password@…) wird in RFC 3986 (Abschnitt 3.2.1) als überholt bezeichnet und sollte nicht mehr verwendet werden, da URIs oft im Klartext übertragen und protokolliert werden

Pfad

Pfad (Path)

Der Pfad enthält – oft hierarchisch organisierte – Angaben, die zusammen mit dem Abfrageteil eine Ressource identifizieren. Falls in der URI eine im vorangegangenen Abschnitt beschriebene authority angegeben wurde, muss der path mit einem Schrägstrich (/) beginnen; gibt es keine authority, darf der path nicht mit einem doppelten Schrägstrich (//) beginnen. Dadurch ist die eindeutige Interpretation gesichert. Er wird von einem Fragezeichen (?), einem Doppelkreuz (#) oder dem Ende des URI begrenzt. Gültige Pfade sind beispielsweise:

  • /over/there
  • example:animal:ferret:nose

Abfrage

Abfrage (Query)

Der Abfrageteil (Query-String) beinhaltet Daten zur Identifizierung von solchen Ressourcen, deren Ort durch die Pfadangabe allein nicht genau angegeben werden kann. Sie müssen aus der durch den Pfad bezeichneten Quelle, durch ebendiese Abfrage wie ein Datensatz aus einer Datenbank abgerufen werden. Er wird mit einem Fragezeichen (?) eingeleitet und von einem Doppelkreuz (#) oder dem Ende des URI begrenzt. Eine gültige Abfrage nach dem ‚?‘ ist beispielsweise:

  • title=Uniform_Resource_Identifier&action=submit

Hier spielen ‚&‘ und ‚=‘ etwa die gleiche Rolle wie ‚.‘ und ‚:‘ im Teil für die authority

Fragment

fragment ist der optionale Fragmentbezeichner und referenziert eine Stelle innerhalb einer Ressource. Der Fragmentbezeichner bezieht sich immer nur auf den unmittelbar vorangehenden Teil des URI und wird von einem Doppelkreuz (#) eingeleitet. Ein Beispiel dafür ist der Anker in HTML

Beispiele

  • https://de.wikipedia.org/wiki/Uniform_Resource_Identifier
  • ftp://ftp.is.co.za/rfc/rfc1808.txt
  • file:///C:/Users/Benutzer/Desktop/Uniform%20Resource%20Identifier.html
  • file:///etc/fstab
  • geo:48.33,14.122;u=22.5
  • ldap://[2001:db8::7]/c=GB?objectClass?one
  • gopher://gopher.floodgap.com
  • mailto:John.Doe@example.com
  • sip:911@pbx.mycompany.com
  • news:comp.infosystems.www.servers.unix
  • data:text/plain;charset=iso-8859-7,%be%fa%be
  • tel:+1-816-555-1212
  • telnet://192.0.2.16:80/
  • urn:oasis:names:specification:docbook:dtd:xml:4.1.2
  • git://github.com/rails/rails.git
  • crid://broadcaster.com/movies/BestActionMovieEver

Ein Beispiel mit sehr vielen Elementen gleichzeitig in der URI:

  • http://nobody:password@example.org:8080/cgi-bin/script.php?action=submit&pageid=86392001#section_2

URI-Referenzen

Oft verwenden Anwendungen nicht den vollständigen URI, sondern eine abgekürzte Syntax, beispielsweise um Platz zu sparen oder den einfachen Umzug auf andere Server zu ermöglichen. Manche URI-Schemata begrenzen in ihrer Definition zudem die Syntax auf eine bestimmte Form. Unter dem Begriff der URI-Referenzen werden unterschiedliche Schreibweisen zusammengefasst

Absolute URIs

Ein absoluter URI identifiziert eine Ressource unabhängig vom Kontext der Verwendung des URI

Er besteht mindestens aus scheme und hier-part (also einer authority und/oder einem path) Beispiele sind:

  • https://de.wikipedia.org
  • file://localhost/var/spool/dump.bin

Relative Referenz

Im Gegensatz zu einem absoluten URI beschreibt ein relativer URI nur die Abweichung zwischen dem absoluten URI einer Ressource und dem aktuellen Kontext in einem hierarchischen Namensraum Wenn eine URI-Referenz nicht mit einem scheme beginnt, wird angenommen, dass es sich um eine relative Referenz handelt. Die Auflösung einer relativen Referenz zu einem absoluten URI erfolgt abhängig vom Kontext nach standardisierten Regeln. Eine relative Referenz besteht aus einem path sowie optional aus query und fragment

Es werden drei Arten von relativen Referenzen unterschieden
  • Beginnt der Pfad ohne Schrägstrich, handelt es sich um eine relative Pfad-Referenz, beispielsweise image.png, ./image.png und ../images/image.png
  • Beginnt der Pfad mit einem einzelnen Schrägstrich (/), handelt es sich um eine absolute Pfad-Referenz
  • Beginnt der Pfad mit doppelten Schrägstrichen (//), handelt es sich um eine Netzwerk-Pfad-Referenz

Referenz innerhalb desselben Dokumentes

URI-Referenzen können auf dasselbe Dokument verweisen, dessen Teil sie sind. Die häufigste Anwendung ist das Doppelkreuz (#), gefolgt von einem Fragment-Bezeichner

Suffix-Referenzen

Weit verbreitet ist die Angabe von URI-Referenzen des Internets ohne Bezeichnung des Protokolls (des Schemas), etwa www.wikipedia.de. Unter der Annahme, dass sich aus dem Suffix (im Beispiel www, DNS-Namen werden von rechts nach links aufgebaut) auf das Protokoll (hier http) schließen lässt, funktioniert die Auflösung solcher Referenzen. Allerdings ist diese Auflösung von entsprechenden Annahmen und zudem von der jeweiligen Software abhängig. Deshalb sollten Suffix-Referenzen vermieden werden

Schemata

Unter anderem sind folgende Schemata definiert:

Schema Beschreibung
crid Content Reference Identifier (für Fernsehsendungen)
data Data-URL: direkt eingebettete Daten
file Dateien im lokalen Dateisystem
ftp File Transfer Protocol
geo Geografische Koordinaten
gopher Gopher
http Hypertext Transfer Protocol
ldap Lightweight Directory Access Protocol
mailto E-Mail-Adresse
news Newsgroup oder Newsartikel
pop Mailboxzugriff über POP3
rsync Synchronisation von Daten mit rsync
sip SIP-gestützter Sitzungsaufbau, z. B. für IP-Telefonie
tel Telefonnummer
telnet Telnet
urn Uniform Resource Names (URNs)
ws WebSocket
wss
xmpp Extensible Messaging and Presence Protocol für Jabber Identifier

Auf der Website der Internet Assigned Numbers Authority (IANA) befindet sich eine vollständige Liste der offiziellen Schemata

Daneben haben sich einige inoffizielle, von der IANA auch als „vorläufig“ bezeichnete, Schemata für einzelne Anwendungen oder gängige Protokolle etabliert:

Schema Beschreibung
about browserinterne Informationen
afp Apple Filing Protocol
apt Advanced Packaging Tool
callto Telefonnummern (u. a. Skype und NetMeeting)
coffee Hyper Text Coffee Pot Control Protocol
daap Digital Audio Access Protocol
doi Digital Object Identifier
ed2k ED2k-URI-Schema von eDonkey2000/Kademlia
feed Web-Feeds
finger Finger
fish Files transferred over Shell protocol
git Git
irc/ircs Internet Relay Chat
itunes iTunes
javascript Ausführung von JavaScript-Code
lastfm Last.fm
magnet Magnet-Link
mms Microsoft Media Server
rtmp Real Time Messaging Protocol
sftp SSH File Transfer Protocol
skype Telefonnummern (nur Skype)
smb Server Message Block
ssh Secure Shell
svn/svn+ssh Apache Subversion
view-source Quelltextanzeige für eine Webseite
webcal iCalendar
wyciwyg What You Cache Is What You Get, Firefox-interne Anzeige für die Darstellung gecachter Inhalte
ymsgr Yahoo Messenger

Unterarten

Uniform Resource Locator (URL) Benennen eine Ressource über ihren primären Zugriffsmechanismus wie http oder ftp. Danach folgt die Bezeichnung des Ortes () der Ressource im Netz – meistens der Domain-Name. URLs waren ursprünglich die einzige Art von URIs, weshalb der Begriff URL oft gleichbedeutend mit URI verwendet wird
Uniform Resource Name (URN) Mit dem URI-Schema urn (oder ggf. anderer) eine Ressource identifizieren mittels eines vorhandenen oder frei zu vergebenden Namens, beispielsweise urn:isbn oder urn:sha1

Ursprünglich sollte jeder URI in eine dieser beiden Klassen (oder weitere noch zu definierende) eingeteilt werden. Diese strenge Aufteilung wurde jedoch aufgegeben, da sie unnötig ist und einige Schemata (wie data oder das früher den URLs zugeordnete mailto) in keine der beiden Klassen passen


Anhang

Siehe auch

Links

RFC

RFC Titel
3986 Uniform Resource Identifier (URI): Generic Syntax
1630 Universal Resource Identifiers in WWW
8820 URI Design and Ownership
Weblinks
  1. https://de.wikipedia.org/wiki/Uniform_Resource_Identifier
  2. Web Naming and Addressing
  3. Uniform Resource Identifier (URI) Schemes – Liste der URI-Schemata bei der Internet Assigned Numbers Authority (IANA)
  4. Tim Berners-Lee: Cool URIs Don’t Change
  5. Web Naming and Addressing. W3C (englisch)
  6. Uniform Resource Identifier (URI) Schemes. Internet Assigned Numbers Authority (IANA) – Liste der URI-Schemata (englisch)
  7. Tim Berners-Lee: Cool URIs Don’t Change. W3C (englisch)