Zum Hauptinhalt springen

2. URN-Syntax (URN Syntax)

Wie oben diskutiert, erlaubt die Syntax für URNs in dieser Spezifikation deutlich mehr Funktionalität als dies bei den früheren Spezifikationen, zuletzt [RFC2141], der Fall war. Sie ist auch mit der allgemeinen URI-Syntax [RFC3986] harmonisiert (die, wie zu bemerken ist, nach den früheren URN-Spezifikationen fertiggestellt wurde).

Diese Spezifikation erweitert jedoch nicht die URN-Syntax, um die direkte Verwendung von Zeichen außerhalb des ASCII-Bereichs [RFC20] zu ermöglichen. Diese Einschränkung bedeutet, dass solche Zeichen prozentual codiert werden müssen, wie in Abschnitt 2.1 der URI-Spezifikation [RFC3986] beschrieben.

Die grundlegende Syntax für einen URN wird unter Verwendung der erweiterten Backus-Naur-Form (Augmented Backus-Naur Form, ABNF) definiert, wie in [RFC5234] spezifiziert. Regeln, die hier nicht definiert sind (speziell: alphanum, fragment und pchar), werden als Teil der URI-Syntax [RFC3986] definiert und hier verwendet, um auf die syntaktische Beziehung mit den dort verwendeten Begriffen hinzuweisen. Die Definitionen einiger der unten verwendeten Begriffe sind nicht umfassend; zusätzliche Einschränkungen werden durch den Prosatext auferlegt, der in Abschnitten dieses Dokuments zu finden ist, die für diese Begriffe spezifisch sind (insbesondere r-component in Abschnitt 2.3.1 und q-component in Abschnitt 2.3.2).

namestring    = assigned-name
[ rq-components ]
[ "#" f-component ]
assigned-name = "urn" ":" NID ":" NSS
NID = (alphanum) 0*30(ldh) (alphanum)
ldh = alphanum / "-"
NSS = pchar *(pchar / "/")
rq-components = [ "?+" r-component ]
[ "?=" q-component ]
r-component = pchar *( pchar / "/" / "?" )
q-component = pchar *( pchar / "/" / "?" )
f-component = fragment

Das Fragezeichen-Zeichen "?" kann ohne Prozentkodierung innerhalb von r-components, q-components und f-components verwendet werden. Außer innerhalb dieser Komponenten ist ein "?", dem nicht unmittelbar "=" oder "+" folgt, für URNs nicht definiert und SOLLTE von URN-spezifischen Parsern und anderen Prozessoren als Syntaxfehler behandelt werden.

Die folgenden Abschnitte bieten zusätzliche Informationen zu den syntaktischen Elementen von URNs.