Uniform Resource Name

URI che identifica una risorsa all'interno di un namespace

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].

Sintassi modifica

 
Schema IRI-URI-URL-URN.

La sintassi di uno schema URIurn:è rappresentata nella Backus-Naur Form

 
Esempio di codice ISBN

come[3][4]:

  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

      ; regole generiche sintattiche URI (RFC3986)
      fragment      = *( pchar / "/" / "?" )
      pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
      pct-encoded   = "%" HEXDIG HEXDIG
      unreserved    = 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 modifica

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 modifica

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 modifica

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 modifica

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 modifica

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.
urn:ietf:rfc:2648 La RFC 2648 dell'IETF.
urn:mpeg:mpeg7:schema:2001 Le regole del namespace predefinite per i metadati video MPEG-7[8].
urn:oid:2.16.840 L'OID per gli Stati Uniti.

Note modifica

  1. ^ a b 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.
  2. ^ BookVocabularies - W3C Wiki, su w3.org. URL consultato il 28 ottobre 2021.
  3. ^ Tim Berners-Lee, Roy T. Fielding e Larry M. Masinter, Uniform Resource Identifier (URI): Generic Syntax, RFC 3986, Internet Engineering Task Force, 2005-01. URL consultato il 28 ottobre 2021.
  4. ^ tools.ietf.org.
  5. ^ a b c d 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.
  6. ^ a b Dirk-Willem van Gulik, Patrik Fältström e Leslie Daigle, Uniform Resource Names (URN) Namespace Definition Mechanisms, RFC 3406, Internet Engineering Task Force, 2002-10. URL consultato il 28 ottobre 2021.
  7. ^ Peter Saint-Andre, A Uniform Resource Name (URN) Namespace for Examples, RFC 6963, Internet Engineering Task Force, 2013-05. URL consultato il 28 ottobre 2021.
  8. ^ John R. Smith, A Uniform Resource Name (URN) Namespace for the Motion Picture Experts Group (MPEG), RFC 3614, Internet Engineering Task Force, 2003-09. URL consultato il 28 ottobre 2021.

Altri progetti modifica

Controllo di autoritàGND (DE7694957-6