URI, URL e URN

Diagramma delle classi URI - URL - URN

Requisiti

Potrebbe essere utile la lettura di:

Introduzione

  • URI - Uniform Resource Identifier
  • URL - Uniform Resource Locator
  • URN - Uniform Resource Name

L'URI è un modo generico ed estendibile per identificare risorse. Gli URL e gli URN, invece, specificano come identificarle.

In tal senso possiamo considerarli come "specializzazioni" degli URI o più semplicemente solo URI.

Gli URL identificano una risorsa attraverso l'indicazione su come ottenerla/prelevarla dalla rete o in altri termini in base alla "posizione" della risorsa.

Gli URN identificano una risorsa attraverso un nome. A differenza degli URL non contengono informazione su come prelevarla dalla rete. L'obiettivo degli URN è quello di creare un identificatore per la risorsa che sia persistente e indipendente dalla posizione.

Ad es. se una risorsa identificata da un URL A, cambia posizione e diventa raggiungibile dall'URL B allora attraverso il suo URN sarà comunque raggiungibile anche se dall'URL A non lo sarà più.

Una descrizione più dettagliata degli URI chiarirà tutto.

URI

A livello più generale, un identificatore URI è una stringa che ha la sintassi seguente:

(scheme ':')?scheme-specific-part('#' fragment)?

dove scheme: e #fragment sono opzionali e scheme-specific-part è sempre presente.

Come detto poco sopra, l'URI è un modo generico per identificare risorse. Il modo specifico è indicato su scheme (lo schema). Ogni modo specifico, inoltre, è libero di avere una sua sintassi (o modo per identificare risorse). Questa è indicata al posto di scheme-specific-part.

Diamo un po' di definizioni:

  • un URI è detto assoluto se specifica lo schema. E' relativo altrimenti.
  • un URI è detto opaco se è un URI assoluto e la parte specifica dello schema non inizia con /
  • un URI è detto gerarchico se è vera una delle 2 condizioni:
    • è un URI relativo (non ha schema)
    • è un URI assoluto e la parte specifica dello schema inizia con /

Un URI gerarchico può essere rappresentato in questo modo:

(scheme ':')?(//authority)?(path)?('?' query)?('#' fragment)?

dove authority sta per:

(user-info '@')?host(:port)?

Operazioni sugli URI: risoluzione, normalizzazione, relativizzazione

Per normalizzazione si intende il processo di rimozione dei segmenti "." e ".." dai segmenti di un URI gerarchico. Il "." è semplicemente rimosso, mentre ".." è rimosso solo se è preceduto da un segmento diverso da "..".

Ad esempio normalizzare l'URI http://www.example.com/uno/./due/tre/../pagina.html restituisce http://www.example.com/uno/due/pagina.html

L'operazione di risoluzione di un URI consiste nell'ottenere un URI assoluto a partire da un altro URI assoluto e un URI relativo.

Ad esempio: risolvere l'URI relativo due/pagina.html rispetto all'URI base assoluto http://www.example.com/uno/ restituisce http://www.example.com/uno/due/pagina.html

La relativizzazione è l'operazione inversa della risoluzione. Da un URI assoluto e un URI base si ottiene un URI relativo.

Ad esempio: relativizzare l'URI http://www.example.com/uno/due/pagina.html rispetto all'URI base http://www.example.com/uno restituisce due/pagina.html

Riferimenti

0 commenti:

Posta un commento

Lettori fissi

 
DISCLAIMER: Questo blog non costituisce una testata giornalistica. Non ha carattere periodico ed è aggiornato secondo la disponibilità e la reperibilità dei materiali. Pertanto non può essere considerato in alcun modo un prodotto editoriale ai sensi della Legge. n. 62 del 2001.
COPYRIGHT: Tutti i diritti sui testi/contenuti presenti su questo blog sono di proprietà dell'autore. Per utilizzare il materiale contattarmi all'indirizzo: nevit76@gmail.com