Uniform Resource Identifier

URI (ang. Uniform Resource Identifier) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci. Zdefiniowany jest w dokumencie RFC 2396.

URI jest zazwyczaj krótkim łańcuchem znaków, zapisanym zgodnie ze składnią określoną w standardzie. Łańcuch ten określa nazwę lub adres zasobu, który dany URI identyfikuje.

URI składa się z URL (ang. Uniform Resource Locator) i URN (ang. Uniform Resource Name).

Szczególnym przypadkiem URI jest URL, który oprócz identyfikacji zasobu wskazuje również sposób dostępu do niego.

Spis treści

[edytuj] Składnia URI

[edytuj] Wzór skrócony

<schemat> : <specyficzna dla schematu część hierarchiczna>

lub

<schemat> : <specyficzna dla schematu część niehierarchiczna>

Część hierarchiczna zawsze zaczyna się od ukośnika / (np. z ://) podczas gdy niehierarchiczne URI mają tylko dwukropek : i dalsza ich część jest brana jako jedna całość i nie podlega parsowaniu.

Przykłady:

http://www.wikipedia.org
http://www.wikipedia.org:8080
ftp://ftp.wikipedia.org
mailto:jakas-osoba@wikipedia.org

Trzy pierwsze przykłady to hierarchiczne URI a ostatni to niehierarchiczny.

[edytuj] Pełny wzór URI hierarchicznych

<schemat> : <autoryzacja> : <port> / <ścieżka> ? <zapytanie> # <fragment>

lub z użytkownikiem i hasłem:

<schemat> : // użytkownik:hasło @ <autoryzacja> : <port> / <ścieżka> ? <zapytanie> # <fragment>

Przy czym "autoryzacja" to nazwa hosta, czyli nazwa komputera w sieci (nazwa domenowa lub adres IP). Używanie nazwy użytkownika z hasłem w URI najczęściej stanowi poważną lukę w bezpieczeństwie i z tego powodu nie jest zalecane. Zapytanie zawiera dodatkowe parametry dla serwera, wpływające na zawartość odpowiedzi. Typowym zastosowaniem zapytań są strony WWW generowane dynamicznie na serwerach WWW korzystających z technologii CGI, np. strony PHP. Zapytanie ma postać parametrów z wartościami przypisanymi po znaku równości, przy czym kolejne parametry oddzielone są od siebie znakiem ampersanda (&).

[edytuj] Przykład URI

   http://www.jakis-serwer.pl:8080/katalog1/katalog2/plik?parametr1=wartosc1&parametr2=wartosc2#fragment_dokumentu
   \__/   \_________________/\___/\_____________________/ \___________________________________/ \________________/
     |             |           |             |                              |                            |
  schemat     autoryzacja     port   ścieżka do pliku                   zapytanie                     fragment
(protokół)  (nazwa serwera)

Inne przykłady:

http://pl.wikipedia.org/wiki/URI
http://www.google.com/search?hl=pl&q=uri

[edytuj] URI a URL

Właściwie URI jest pojęciem nadrzędnym i obejmuje URL i URN jako dwa różne sposoby reprezentacji tego samego adresu. Podstawową różnicą między nimi jest fakt, że URL z definicji wskazuje lokalizację, tj. miejsce, z którego dany zasób można ściągnąć (adres) i sposób, w jaki można to zrobić (protokół, np. http, ftp, ...). URI służy tylko do identyfikacji i niekoniecznie musi wskazywać miejsce skąd coś można ściągnąć. Standardowo URI strony www (np. http://www.wikipedia.org) jest utożsamiany z jej URL. Stąd wynika fakt, że te dwa terminy są często używane zamiennie.

Rozróżnienie na URL i URI odgrywa jednak kluczową rolę w technologii RDF stanowiącej sieci trzeciej generacji Semantic Web. Wizja nakreślona przez twórcę Semantic Web Tima Berners-Lee mówi o zapisywaniu ludzkiej wiedzy w postaci zrozumiałej dla maszyn. W tej postaci wszystko ma swój własny unikalny identyfikator, przez wszystkich jednakowo interpretowany - URI. Identyfikatory odnoszą się zarówno do abstracyjnych pojęć, jak i do konkretnych bytów - ludzi, zdarzeń, etc. Powstaje potrzeba rozróżnienia. URI strony domowej to nie to samo, co URI jej właściciela - człowieka. URI Wikipedii to nie to samo, co URI Wikimedia Foundation - organizacji, która nią zarządza, rozumianej jako osoba prawna. Tworzy się słowniki pojęć - , które nadają identyfikatory URI pojęciom nawet tak abstrakcyjnym jak 'byt fizyczny' czy 'byt abstrakcyjny'. [1]. Badania w tym kierunku są bardzo głęboko osadzone w filozofii.

URI może też służyć do identyfikacji zasobów na dysku komputera, plików, wpisów w kalendarzu, kontaktów w książce adresowej, maili w skrzynce pocztowej etc. Istnieje cała gama projektów badawczych, które idą w tym kierunku, np. Haystack, Gnowsis, Nepomuk.

W swej istocie URI jest ogólnym narzędziem do identyfikacji wszystkiego. Utożsamianie go z URL - adresem pod którym coś można ściągnąć z internetu - jest sporym uproszczeniem.

Ciekawy artykuł na temat roli URI w Semantic Web i rozróżnienia, kiedy URI wskazuje na zasób, który można ściągnąć, kiedy URI jest URL, a kiedy nie, można przeczytać (niestety, tylko po angielsku) pod adresem:

http://www.dfki.uni-kl.de/~sauermann/2006/11/cooluris/

[edytuj] Zobacz też