Un Uniform Resource Name o URN è un URI che identifica una risorsa all'interno di un namespace, ma, a differenza dell'URL, non permette l'identificazione della locazione della risorsa stessa. Un esempio di URN è il codice ISBN: questo identifica univocamente un libro, ma non ci dà alcuna informazione sulla locazione dello stesso[1][2].
namestring=assigned-name[rq-components]["#"f-component]assigned-name="urn"":"NID":"NSSNID=(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; regole generiche sintattiche URI (RFC3986)fragment=*(pchar/"/"/"?")pchar=unreserved/pct-encoded/sub-delims/":"/"@"pct-encoded="%"HEXDIGHEXDIGunreserved=ALPHA/DIGIT/"-"/"."/"_"/"~"sub-delims="!"/"$"/"&"/"'"/"("/")"/"*"/"+"/","/";"/"="alphanum=ALPHA/DIGIT; obsoleto
oppure, sotto forma di diagramma di sintassi, come:
Lo schema principale (urn:) non fa distinzione tra maiuscole e minuscole.
<NID>è l'identificatore del namespace e può includere lettere, cifre e -.
Il NID è seguito dalla stringa specifica del namespace<NSS>, la cui interpretazione dipende dal namespace specificato. L'NSS può contenere lettere e cifre ASCII e molti segni di punteggiatura e caratteri speciali. I caratteri ASCII e Unicode non consentiti possono essere inclusi se codificati in percentuale.
Nel 2017 è stata aggiornata la sintassi per gli URN[5]:
Il carattere barra (/) in questo caso è consentito in NSS per rappresentare nomi contenenti barre da sistemi di identificazione non URN.
Il componente q è stato aggiunto per consentire il passaggio di parametri alle risorse nominate.
Il componente r è stato aggiunto per consentire il passaggio di parametri ai resolver. Tuttavia, la specifica aggiornata rileva che non dovrebbe essere utilizzata fino a quando la sua semantica non sarà definita tramite un'ulteriore standardizzazione.
Namespace
Al fine di garantire l'unicità globale dei namespace URN, i loro identificatori (NID) devono essere registrati presso lo IANA. I namespace registrati possono essere "formali" o "informali". Un'eccezione al requisito di registrazione è stata precedentemente fatta per "namespace sperimentali", in quanto annullato dalla RFC 8141[6][1].
Formale
Sono stati registrati circa sessanta identificatori formali dei namespace URN. Si tratta di namespace in cui ci si aspetta che gli utenti di Internet traggano vantaggio dalla loro pubblicazione e sono soggetti a diverse restrizioni[5][6]. Essi devono:
Non essere un NID già registrato
Non iniziare con urn-
Essere più di due lettere
Non iniziare con XY-, dove XY è una combinazione di due lettere ASCII
Non iniziare con x-
Informale
I namespace informali sono registrati con IANA e assegnati a una sequenza numerica (scelta da IANA in base all'ordine di arrivo) come identificatore, nel formato[5]:
"urn-" <number>
I namespace informali sono namespace URN completi e possono essere registrati nei servizi di registrazione globali.
Sperimentale
Un'eccezione al requisito di registrazione è stata precedentemente fatta per i "namespace sperimentali". Tuttavia, in seguito alla deprecazione della notazione "X-" per i nuovi namespace di tipo identificatore, RFC 8141 ha eliminato i namespace URN sperimentali, indicando una preferenza per l'uso del namespaceurn:example ove appropriato[5][7].
Esempi
URN
corrisponde a
urn:isbn:0451450523
Il libro del 1968 The Last Unicorn, identificato dal suo numero di libro.
urn:isan:0000-0000-2CEA-0000-1-0000-0000-Y
Il film del 2002 Spider-Man, identificato dal suo numero audiovisivo.
urn:ISSN:0167-6423
La rivista scientifica Science of Computer Programming, identificata dal suo numero di serie.
^ab Peter Saint-Andre e John C. Klensin, Uniform Resource Names (URNs), RFC 8141, Internet Engineering Task Force, 2017-04. URL consultato il 28 ottobre 2021.