# URI

Uniform Resource Identifier (URI) é um termo técnico (e anglicismo de tecnologia da informação) que foi traduzido para a língua portuguesa como um "identificador uniforme de recurso", é uma cadeia de caracteres compacta usada para identificar ou denominar um recurso na Internet. O principal propósito desta identificação é permitir a interação com representações do recurso através de uma rede, tipicamente a Rede Mundial, usando protocolos específicos. URIs são identificados em grupos definindo uma sintaxe específica e protocolos associados.

## Relação com URL e URN

Um URI pode ser classificado como um localizador (URL) ou um nome (URN), ou ainda como ambos.
Um Nome de Recurso Uniforme URN - Uniform Resource Name (em inglês) é como o nome de uma pessoa, enquanto que um Localizador de Recurso Uniforme URL - Uniform Resource Locator (em inglês) é como o seu endereço. O URN define a identidade de um item, enquanto que o URL dá-nos um método para o encontrar.
Um URN típico é o sistema ISBN para identificar individualmente os livros. ISBN 0-486-27557-4 (urn:isbn:0-486-27557-4) cita sem equívocos uma edição específica da obra de Shakespeare "Romeu e Julieta" - Romeo and Juliet (em inglês). Para aceder a este objeto e ler o livro, é necessário obter a sua localização, ou seja, através de um endereço URL. Um URL típico para este livro é um caminho de arquivos, como file://home/pedro/Desktop/RomeoAndJuliet.pdf, identificando o livro eletrónico salvo no disco de um PC local. Então o propósito de URNs e URLs é o de serem complementares.

### Aspectos técnicos

Um URL é um URI que, além de identificar um recurso, provê meios de agir sobre obter e representar este recurso, descrevendo o seu mecanismo de acesso primário ou a localização na "rede". Por exemplo, o URL http://www.wikipedia.org/ é um URI que identifica um recurso (Wikipedia) e implica a representação deste recurso (como o código HTML atual da página, como caracteres codificados está disponível via HTTP de um hospedeiro de redes chamado www.wikipedia.org. Um URN é um URI que identifica um recurso pelo nome e um espaço de nome em particular. Um URN pode ser usado para falar sobre um recurso sem definir a sua localização ou como o aceder. Por exemplo, o URN urn:isbn:0-395-36341-1 é um URI que especifica o sistema de identificação, em outras palavras, Número de Livro Padrão Internacional ISBN - International Standard Book Number (em inglês), como a única referência neste sistema e permite falar sobre o livro, mas não sugere onde ou como obter uma cópia real dele.
Em publicações técnicas, especialmente padrões produzidos pela IETF e pelo W3C, o termo URL tem sido depreciado, já que raramente se torna necessária uma distinção entre URLs e URIs. Porém, fora de contextos técnicos e em software para a Rede Global, o termo URL permanece ambíguo. Além disso, o termo endereço web, que não possui qualquer definição formal, geralmente é usado em publicações não-técnicas como sinónimo para URL ou URI, embora geralmente se refira apenas a conjuntos URL "http" ou "https".

### RFC 3305

Muito desta discussão é tirado da RFC3305(em inglês), intitulada "Reportagem do planeamento da união W3C/IETF URI interessa grupo: Uniform Resource Identifiers (URIs), Uniform Resource Locator (URLs) e Uniform Resource Names (URNs): Explicações e Recomendações". Este RFC esboça o trabalho de um grupo de trabalho para união W3C/IETF que foi instalado especialmente para normalizar as visões divergentes levadas com o IETF e W3C, por meio das quais a relação foi entre os diversos termos e padrões "UR*". Enquanto não publicada uma padronização por ambas as organizações, tornou-se a base para um entendimento comum e tem informado muitos padrões.

## Sintaxe

A sintaxe URI é essencialmente um nome de conjunto URI como "HTTP", "FTP", "mailto", "URN", "tel", "rtsp", "file" etc, seguido de um caractere dois pontos e, por fim, a parte específica do conjunto. A sintaxe e a semântica desta parte específica é determinada pelas especificações que governam o conjunto, embora a sintaxe URI force todos os conjuntos a aderirem a uma síntese genérica que, além de outras coisas, reserva certos caracteres para propósitos especiais, mesmo sem dizer sempre quais esses propósitos são. A sintaxe URI também força restrições na parte específica do conjunto para, por exemplo, manter um certo grau de consistência quando a parte possui uma estrutura hierárquica. Codificação URL geralmente é um aspecto mal-compreendido da sintaxe URI.

### Usos de referências URI em linguagens marcadores

* Em HTML, o valor de src, atributo do elemento img, é uma referência URI, como também é o valor de href para os elementos a ou link.
* Em XML, o identificador de sistema sucedendo a palavra-chave SYSTEM em um DTD é uma referência URI sem fragmentos.
* Em XSLT, o valor do atributo href do elemento/instrução xsl:import é uma referência URI, como também o primeiro argumento da função document.

### Exemplos de URIs Absolutas

* http://example.org/absolute/URI/with/absolute/path/to/resource.txt
* ftp://example.org/resource.txt
* file://home/example/example.org/resource.txt
* urn:issn:1535-3613

### Exemplos de referências URI

* http://pt.wikipedia.org/wiki/URI#Exemplos_de_referências_URI ("http" é o nome do 'conjunto', "pt.wikipedia.org" é a 'autoridade', "/wiki/URI" é o 'caminho' apontando para este artigo, e "#Exemplos_de_referências_URI" é um 'fragmento' apontando para esta seção)
* http://example.org/absolute/URI/with/absolute/path/to/resource.txt
* ./relative/URI/with/absolute/path/to/resource.txt
* relative/path/to/resource.txt
* ../../../resource.txt
* ../resource.txt#frag01
* resource.txt
** frag01
* (cadeia vazia)