Passa al contenuto principale

2.2. Stringa specifica dello spazio dei nomi (Namespace Specific String - NSS)

La NSS è una stringa, univoca all'interno di uno spazio dei nomi URN, che viene assegnata e gestita in modo coerente e che è conforme alla definizione dello spazio dei nomi URN pertinente. La combinazione del NID (univoco nell'intero schema "urn") e della NSS (univoca all'interno dello spazio dei nomi URN) garantisce che l'URN risultante sia globalmente univoco.

La NSS come specificata in questo documento consente diversi caratteri non permessi dalle specifiche precedenti (vedere Appendice B). In particolare, il carattere "/", che è ora consentito, rende effettivamente possibile incapsulare nomi gerarchici da sistemi di identificatori non-URN. Ad esempio, considerate l'esempio ipotetico di un sistema di identificatori gerarchici in cui i nomi assumono la forma di una sequenza di numeri separati dal carattere "/", come "1/406/47452/2". Se l'autorità per tali nomi dovesse utilizzare URN, sarebbe naturale posizionare il nome esistente nella NSS, risultando in URN come "urn:example:1/406/47452/2".

Tali modifiche alla sintassi per la NSS non modificano le regole di codifica per gli spazi dei nomi URN definiti in conformità con [RFC2141]. Se uno spazio dei nomi URN i cui nomi sono utilizzati al di fuori del contesto URN (cioè, in un sistema di identificatori non-URN) consente anche l'uso di "/", "~" o "&" nella forma nativa all'interno di quel sistema di identificatori, allora le regole di codifica per quello spazio dei nomi URN non vengono modificate da questa specifica.

A seconda delle regole che governano un sistema di identificatori non-URN e il suo spazio dei nomi URN associato, i nomi che sono validi in quel sistema di identificatori potrebbero contenere caratteri che non sono consentiti dalla produzione "pchar" referenziata sopra (ad esempio, caratteri al di fuori dell'intervallo ASCII o, coerentemente con le restrizioni in RFC 3986, i caratteri "/", "?", "#", "[" e "]"). Sebbene un tale nome possa essere valido all'interno del sistema di identificatori non-URN, non è un URN valido finché non è stato tradotto in una NSS conforme alle regole di quel particolare spazio dei nomi URN. Nel caso di URN formati da nomi che esistono separatamente in un sistema di identificatori non-URN, la traduzione di un nome dal suo formato "nativo" a un formato URN viene realizzata utilizzando i metodi di canonicalizzazione e codifica definiti per gli URN in generale o regole specifiche per quello spazio dei nomi URN. Il software che non è a conoscenza delle regole di canonicalizzazione e codifica specifiche dello spazio dei nomi NON DEVE costruire URN dal nome nel sistema di identificatori non-URN.

In particolare, per quanto riguarda i caratteri al di fuori dell'intervallo ASCII, gli URN che appaiono nei protocolli o che vengono passati tra sistemi DEVONO utilizzare solo caratteri Unicode codificati in UTF-8 e ulteriormente codificati come richiesto da RFC 3986. Nella misura fattibile e coerente con i requisiti dei nomi definiti e standardizzati altrove, nonché i principi discussi nella Sezione 1.2, i caratteri utilizzati per rappresentare i nomi DOVREBBERO essere limitati a lettere e cifre ASCII o ai caratteri e alla sintassi di alcuni modelli ampiamente utilizzati come quelli dell'Internazionalizzazione dei Nomi di Dominio nelle Applicazioni (IDNA) [RFC5890], Preparazione, Applicazione e Confronto di Stringhe Internazionalizzate (PRECIS) [RFC7613], o la specifica di Sintassi degli Identificatori e dei Pattern Unicode [UAX31].

Al fine di rendere gli URN il più stabili e persistenti possibile quando i protocolli si evolvono e l'ambiente intorno a loro cambia, gli spazi dei nomi URN NON DOVREBBERO consentire caratteri al di fuori dell'intervallo ASCII [RFC20] a meno che la natura del particolare spazio dei nomi URN non renda tali caratteri necessari.