Uniform Resource Identifiers (URI) ist eine Zeichensequenz (String), die eine abstrakte oder physikalische Datenquelle identifiziert. [1]
Sobald eine Resource identifiziert ist, kann das System eine ganze Menge von Operationen auf diese Resource anwenden, wie zum Beispiel herunterladen, updaten, ersetzen, finden usw.
Eine URI wird als ASCII-Zeichensequenz codiert. In diesem Zeichensatz nicht enthaltene Zeichen oder Spezialzeichen müssen als sog. Escape-Sequenzen codiert werden (z.B. %20 für Leerzeichen).
Die einzelnen Teile einer URI werden durch Spezialzeichen von einander getrennt. Diese Spezialzeichen dürfen also nicht in URI-Teilen vorkommen.
Es wird unterschieden zwischen reservierten und nicht reservierten Spezialzeichen. Die reservierten Spezialzeichen werden je nach URI-Typ als Trennzeichen für die einzelnen URI-Teile verwendet.
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
unreserved = alphanum | mark
mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
Kontrollzeichen (ASCII 00-1F und 7F) dürfen nicht verwendet werden. Leerzeichen (ASCII 20) darf ebenfalls nicht verwendet werden.
delims = "<" | ">" | "#" | "%" | <">
Delimiter sollen nicht verwendet werden, da sie oft eine spezielle Funktion haben in Umgebungen, die mit URI's arbeiten. Die folgenden Zeichen werden gerne von Systemen verändert, und sollten daher möglichst auch nicht eingesetzt werden.
unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`"
Eine URI kann weiter klassifiziert werden als ein Locator, ein Name oder beides. Der Ausdruck Uniform Resource Locator (URL) bezieht sich auf einen Teil der URI, welcher sich auf eine Resource bezieht, indem er einen Zugriffs-Pfad representiert (z.B. eine Netzwerk-Location). Der Ausdruck Uniform Resource Name (URN) bezieht sich auf den Teil der URI, der benötigt wird, um eine Resource global eindeutig zu identifizieren, selbst wenn die Resource nicht mehr verfügbar ist oder nicht existiert.