!

Dette materialet blir ikke lenger vedlikeholdt. Du vil finne oppdatert materiale på siden: http://borres.hiof.no/wep/

URI
URN
URL
Børre Stenseth
Dokument >UR?

URI, URN, URL

Hva
Hvor befinner dokumentene seg hen i verden

Hva er det for noe alt sammen: URN,URI, URL

Begrepene:

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

er delvis overlappende og brukes i forskjellige sammenhenger på litt forskjellig måte. Ulike forfattere har forskjellig presisjonsnivå når de omtaler ressurser på nettet. Det er grunn til se litt nærmere på disse begrepene fordi de inngår i en del formelle definisjoner, og fordi det er viktig å forstå dem for å formulere seg riktig når vi lager en lenke eller vil sende en forespørsel.

W3C innleder sine filosoferinger over temaet med å peke på at Internettet består av eller inneholder et (stort) sett med punkter med innhold. Dette innholdet er vanligvis filer av en eller annen sort. Disse punktene identifiserer vi ved hjelp av stringer som vi generelt kaller URI'er.

Disse punktene kan vi tenke oss å identifisere ved å angi deres nøyaktige adresse eller ved å angi et entydig navn. Det siste forutsetter at vi har en mekanisme for å oversette navn til adresse, akkurat som vi slår opp i en indekstabell, en adressebok. Vi kan sammenligne URN med et navn og URL med absolutte adresser. Hvis vi forutsetter at det finnes en oversettelse fra navn til adresse så ser vi at det er en fordel å bruke navn (URN) fordi ressursen kan flyttes eller dupliseres uten at navnet må endres. Vi kan referere ressursen uten å vite nøyaktig hvor den er til en hver tid.

Tradisjonelt har vi benyttet begrepet URL for å angi en slik adresse, sammen med metoden for å få tilgang til adressen. Vi er vant til å skrive:

  http://www.it.hiof.no/a/b/index.html

Vi har da angitt at fila a/b/index.html på maskinen med adresse www.it.hiof.no kan nås via protokollen http (Hyper Text Transfer Protocol).

Begrepet URL er fjernet fra W3C's definisjonsapparat. Det vil si at det brukes ikke lenger for å definere andre mekanismer. URL'er oppfattes som et spesialtilfelle av samlebegrepet URI.

URN er en annen form for URI. En URN er altså et navn på en ressurs i internettrommet som ikke trenger være identifiserbart ved sin adresse, men det skal alltid være mulig å finne den ved hjelp av navnet og et eller annet program eller adressebok.

W3C har følgende figur for å forklare forholdet mellom begrepene

ur?

En URN kan inkludere en adresse (og blir da en URL), men den trenger ikke gjøre det.

Vi kan tenke oss en URN slik:

  urn:bigcatalog:borres_UR_side

Der vi altså har sagt at vi har en urn, at vi bruker en oppslagsmekanisme bigcatalog og leter etter en ressurs som heter borres_UR_side. Kanskje den ligger på denne adressen:

  http://www.it.hiof.no/~borres/dw/ur/p-ur.html

Formalia

En URI beskriver både lokale filstier og adresser på internettet. Det vil si at følgende er eksempler på lovlige URI'er:

   http://www.it.hiof.no/~borres/dw/ur/p-ur.html
   a/b.txt
   ftp://a.b/c/d.htm
   ../../a/b/c.html#slutten

Det grunnleggende oppsettet for en URI er slik:

[scheme:] scheme-spesific-part [#fragment]

Det som står i hakeparenteser, [], er valgfritt. De svart tegnene, :#, er nødvendige dersom den aktuelle delen skal være med.

En absolutt URI har en skjema-del. Andre er relative. URI'er sorteres også etter hvorvidt de er lukkede(opaque), eller hierarkiske.

Opaque

En lukket, opaque, URI er absolutt og har en skjemaspesifikk del som ikke begynner på /. Eksempel:

   mailto:ole.brumm@100mskogen.no

Hierarkiske

URI'er som ikke er lukkede er altså hierarkiske. En hierarkisk URI er derfor enten en absolutt URI med en skjemaspesifikk del som begynner på /, eller en relative URI. Hierarkiske URI'er er nærmere beskrevet slik:

[scheme:] [//authority] [path] [?query] [#fragment]

"authority"-delen er enten registerbasert eller serverbasert.

Serverbaserte

Vi står da tilbake med den gruppen vi forholder oss oftest til, hierarkiske, serverbaserte URI'er. De er beskrevet slik:

[scheme:] [//[user-info@] host [:port]] [path] [?query] [#fragment]

Vi ser at

authority

er ekspandert til

[user-info@] host [:port]

En path er enten relativ eller absolutt. Den er absolutt dersom den begynner med /.

La oss se på de enkelte delene:

scheme

Schemes er navngitt etter forskjellige protokoller. Den vanligste i det vi gjør på Internettet er: http. Andre er: ftp, mail, news, gopher, mailto, telnet.

Det er opptil de programmene som skal tolke en URI hvordan de vil behandle URI'en, men sammenhengen mellom scheme og overføringsprotokoll er ganske fast.

user-info

Vi kan oppgi et brukernavn, og eventuelt et passord, når vi skal sette opp tilgang til en fil.

host

Dette er navnet til den tjeneren vi vil bruke. Navnet oversettes til en absolutt IP-adresse av en navnetjener.

port

Portnummerete er en angivelse av hvilken port tjenerprogramvaren skal bruke til å betjene oss.

path

Dette er filstien på den aktuelle tjeneren.

query

Her kan vi formulere en parameterliste som skal behandles.

fragment

Et internt anker på den siden, filen, vi får tak i.

Eksempler

Hvis vi betrakter beskrivelsen ovenfor så passer den med måten vi behandler filer og stier i Unix/Linux. Vi vet imidlertid at når vi arbeider med MSWindows stiller det seg litt annerledes. For det første er tegnet som skiller elementene i en sti \ og ikke /. For det andre er absolutte filstier angitt som f.eks. c:\a\b.txt og ikke /a/b.txt.

Den web-siden du ser på nå kan jeg nå på følgende måter fra MSIE. Når jeg jobber mot en harddisk som er tilgjengelig via filebrowseren:

   f:\html\dw\ur\p-ur.html
   file:\\f:\html\dw\ur\p-ur.html
   file:///f:/html/dw/ur/p-ur.html

Når jeg aksesserer siden vi http-protokollen:

   http://www.it.hiof.no/~borres/dw/ur/p-ur.html
   http://www.it.hiof.no/~borres\dw\ur\p-ur.html

Mozilla liker ikke de variantene som bruker \.

Det er ingen grunn til å bruke \ i hverken relative eller absolutte URI'er, enten du arbeider på din egen harddisk eller du lager linker til nettressurser.

En komplett form er slik:

   http://www.it.hiof.no:80/~borres/dw/ur/p-ur.html

Vi kan kutte ut portnummeret fordi vi stoler på at tjeneren forholder seg til den konvensjonen at http betjenes over port 80.

   http://www.it.hiof.no/~borres/dw/ur/p-ur.html

Vi kan også kutte ut http:// siden den vanligste protokollen er http, og denne forutsettes av de fleste nettlesere dersom ingen protokoll er angitt.

   www.it.hiof.no/~borres/dw/ur/p-ur.html

Dersom vi vil bruke GET-protokollen og legge til en query til en URI:

   http://www.it.hiof.no/~borres/cgi-bin/ajaxtest/shakereturn.py?sonette_num=12
Referanser
  1. Addressing W3C www.w3.org/Addressing/ 14-03-2010
  1. Uniform Resource Identifier Wikipedia en.wikipedia.org/wiki/Uniform_Resource_Identifier 14-03-2010
  1. Java API: URI Sun java.sun.com/j2se/1.4.2/docs/api/ 14-03-2010
  1. Python: URI Python www.python.org/doc/ 14-03-2010
Vedlikehold
Børre Stenseth, des 2002
( Velkommen ) Dokument >UR? ( Tegnsett )