# Uniform Resource Identifier

In informatica, lo Uniform Resource Identifier (in acronimo URI) è una sequenza di caratteri che identifica universalmente ed univocamente una risorsa. Sono esempi di URI: un indirizzo web (URL), un documento, un indirizzo di posta elettronica, il codice ISBN di un libro, un numero di telefono col prefisso internazionale.

## Definizione

La RFC3986 definisce con precisione le tre parti dell'acronimo, e la loro finalità:
* Uniform: consiste nella identità del contenuto al variare delle forme in cui è presentato. Ad esempio, un libro cartaceo o l'ebook corrispondente. Dà parecchi vantaggi: tipi diversi di identificatori di risorse possono essere usati nello stesso contesto, anche se i meccanismi usati per accedere a tali risorse possono essere diversi; è possibile usare il medesimo meccanismo di interpretazione semantica su tipi diversi di identificatori di risorse; è possibile aggiungere nuovi tipi di risorse senza interferire con il modo in cui gli identificatori già esistenti sono usati; gli identificatori possono essere riutilizzati in diversi contesti, pertanto nuove applicazioni o protocolli possono usare gli identificatori già esistenti.
* Resource: Una risorsa è tutto ciò che ha una identità. Non tutte le risorse tuttavia sono reperibili in rete: ad esempio un essere umano, un libro o un'azienda. Più precisamente, una risorsa è la mappatura concettuale di un'entità (o di un insieme di entità), e non è necessariamente legata all'entità in un determinato istante: infatti la risorsa può restare costante anche se le entità che la compongono cambiano nel corso del tempo, a patto che resti costante il legame concettuale (si pensi alla risorsa "Wikipedia": nonostante l'entità cambi nel tempo, poiché il contenuto del sito cambia, la risorsa che concettualmente identifica "Wikipedia" rimane la stessa).
* Identifier: Un identificatore è un oggetto che viene impiegato come riferimento a qualcosa che ha un'identità. Nel caso della URI, tale oggetto è una sequenza di caratteri con una sintassi ben definita.

## Relazione fra URI, URL e URN

Un URI può essere classificato come qualcosa che definisce posizioni (URL) o nomi (URN) o entrambi.
* Un URL (Uniform Resource Locator) è un URI che identifica una risorsa tramite la sua "collocazione" ("location") in un grafo. Di fatto, non identifica la risorsa per nome, ma con il modo con cui la si può reperire. Per esempio, l'URL http://www.example.com/ è un URI che identifica una risorsa (l'home page di un sito web) e lascia intendere che una rappresentazione di tale risorsa (il codice HTML della versione corrente di tale home page) è ottenibile via HTTP da un host di rete chiamato www.example.com.
* Un URN (Uniform Resource Name) è un URI che identifica una risorsa mediante un "nome" in un particolare dominio di nomi ("namespace"). Tale URN deve restare unico e persistente anche qualora la risorsa smetta di esistere o non sia più disponibile. Un URN può quindi essere usato per identificare una risorsa, senza lasciarne intendere l'ubicazione o come ottenerne una rappresentazione. Per esempio l'URN urn:isbn:0-395-36341-1 è un URI che mappa universalmente e univocamente un libro mediante il suo identificativo, o nome, (0-395-36341-1) nel namespace dei codici ISBN, ma non suggerisce dove e come possiamo ottenere una copia di tale libro. Si noti che, da RFC8141, un URN è un URI assegnata sotto lo schema URI "urn".

## Sintassi

Il formato segue schemi prefissati. Il registro ufficiale viene mantenuto presso la Internet Assigned Numbers Authority.
La sintassi di un URI dipende dallo schema. In generale, URI assoluti si scrivono come segue
<scheme>:<scheme-specific-part>
Un URI assoluto contiene il nome dello schema usato (<scheme>) seguito dai due punti (":") e quindi da una stringa (<scheme-specific-part>) la cui interpretazione dipende dallo schema.
La sintassi non prescrive che la componente scheme-specific-part abbia una struttura generale o una semantica comune a tutti gli URI.
Tuttavia, un sottoinsieme di URI condivide una sintassi comune per rappresentare relazioni gerarchiche nel namespace. Questa sintassi di "URI generico" consiste di una sequenza di 4 componenti:
<scheme>://<authority><path>?<query>
ognuna delle quali, tranne <scheme>, può anche non comparire in un determinato URI. Ad esempio, alcuni schemi di URI non ammettono una componente <authority> mentre altri non utilizzano la componente <query>.
Come esempio, lo schema completo di una URL è del tipo (non tutte le componenti sono obbligatorie)
<scheme>://<domain>:<port>/<path>?<querystring>#<fragmentid>
mentre lo schema completo di una URN è del tipo
urn:<NamespaceIDentifier>:<NamespaceSpecificString>

## Esempi di URL

* ftp://ftp.is.co.za/rfc/rfc1808.txt—schema per servizi FTP
* http://www.math.uio.no/faq/compression-faq/part1.html—schema per servizi HTTP
* file://C:/Folder1/SubFolder2/file%20text.txt—schema per un file nel file system locale
* mailto:tizio@example.org—schema per indirizzi di posta elettronica
* news:comp.infosystems.www.servers.unix—schema per newsgroup e articoli Usenet
* telnet://melvyl.ucop.edu/—schema per servizi interattivi telnet
* irc://irc.freenode.net/wikipedia-it—schema per IRC
* spotify:track:4cOdK2wGLETKBW3PvgPWqT—schema per brani su Spotify
* usb://Samsung/SCX-4x21%20Series?serial=8P36BADL316673B.&interface=1—esempio di stampante in ambiente Linux
* data:text/html;charset=UTF-8,contenuto—inserisce testo/html su browser

## Esempi di URN

* isbn:0-395-36341-1—Esempio di URN che identifica un libro nel dominio dei codici ISBN (spazio dei nomi)
* uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66—Esempio di URN che identifica un Identificativo Univoco Universale (Universally unique identifier)
* oasis:names:specification:docbook:dtd:xml:4.1.2—Esempio di URN che identifica la versione 4.1.2 del sottodominio xml. L'identificazione univoca avviene per sottodomini (nello spazio dei nomi) fino al nome non specifico della risorsa specifica finale. L'identificazione diviene specifica ed univoca grazie alla concatenazione esatta (sequenza ordinata) dei nomi dei sottodomini fino alla risorsa finale.

## Numero di telefono

* un numero di telefono, come tel:+1-816-555-1212 è un URI che ha entrambi i caratteri di URL e URN: è uno schema per accedere ad una utenza telefonica tramite chiamata voce (come URL), ma anche identificativo univoco associato ad una utenza (come URN).

## Standard per la legislazione dell'Unione Europea

L'European Legislation Identifier (ELI) è uno standard tecnico aperto, basato sul paradigma RDF per l'identificazione univoca dei contenuti a carattere legale ed il loro arricchimento mediante un insieme di metadati strutturati e personalizzabili, utili:
* alla preservazione digitale dei documenti nel lungo termine,
* all'accessibilità da parte degli agenti umani in modo efficiente ed efficace
* al web semantico: per l'interscambio di dati ed informazioni che rendono i contenuti pubblicati elaborabili in modo semi-automatico dalle applicazioni Web, favorendo l'interoperabilità dei sistemi.
Nel 2012, il Consiglio d'Europa costituì un tavolo tecnico formato dai rappresentanti di Danimarca, Irlanda, Francia, Lussemburgo, Regno Unito e dal Pubblication Office dell'Unione Europea. Basandosi sulle migliori pratiche dei singoli Paesi, nel 2015 fu pubblicata la prima edizione delle linee-guida rivolte ai decisori, politici, giuristi e tecnologi degli Stati membri, che si proponessero di implementare lo standard nelle rispettive istituzioni di appartenenza.