1. 程式人生 > 其它 >URL, URN, URI, IRI

URL, URN, URI, IRI

“網址”到底是什麼?一般的理解是URL(Uniform resource locator

在RDF/OWL1/OWL2中卻使用了不同的概念

還有一個相關概念 URN(Uniform Resource Name)。他們有什麼區別?

簡述如下:

URL是這樣的形式:

scheme://domain:port/path?query_string#fragment_id

如本頁的編輯頁面是  https://blog.baojie.org:80/wp-admin/post-new.php?post_type=post#

URI是URL的擴充套件,形式是:

<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]

例:
foo://username:[email protected]:8042/over/there/index.dtb?type=animal&name=narwhal#nose
Wikipedia上列有官方和非官方的URI scheme,如about, ed2k, doi, skype,都是。

URI不一定指向一個網址

URN是一種URI,形式如 urn:isbn:0451450523(書號),urn:mpeg:mpeg7:schema:2001(MPEG-7標準)。URN使我們可以描述一個資源而不必關係它的具體存檔地址。

IRI是URI的擴充套件:URI只能用ASCII,而IRI可以用Universal Character Set (USC), Unicode——比如中文。

所以RDF和OWL裡的資源,都不只是用“網址”來命名的。理論上,每個人都可以自己定義一個scheme來唯一確定自己的資源,不一定要放在網上,比如對我的冰箱,我可以命名為

urn:baojie-bengbu-iowa:冰箱:2012

更多關於URL/URI/IRI的請看W3C官方網頁:Naming and Addressing: URIs, URLs, …

另參Tim Berners-Lee的Design IssuesDocument Naming

 (1991)

他們之間的關係

    IRI is a superset of URI (IRI ⊃ URI)
    URI is a superset of URL (URI ⊃ URL)
    URI is a superset of URN (URI ⊃ URN)
    URL and URN are disjoint (URL ∩ URN = ∅)