(W3C/IETF URI Planning 2001
) There is some confusion in the web community over the partitioning of URI space, specifically, the relationship among the concepts of URL, URN, and URI. The confusion owes to the incompatibility between two different views of URI partitioning, which we call the 'classical' and 'contemporary' views.
¶¶ 1.1 Classical View
¶ During the early years of discussion of web identifiers (early to mid 90s), people assumed that an identifier type would be cast into one of two (or possibly more) classes. An identifier might specify the location of a resource (a URL) or its name (a URN) independent of location. Thus a URI was either a URL or a URN. There was discussion about generalizing this by addition of a discrete number of additional classes; for example, a URI might point to metadata rather than the resource itself, in which case the URI would be a URC (citation). URI space was thus viewed as partitioned into subspaces: URL and URN, and additional subspaces, to be defined. The only such additional space ever proposed was URC and there never was any buy-in; so without loss of generality it's reasonable to say that URI space was thought to be partitioned into two classes: URL and URN. Thus for example, 'http:' was a URL scheme, and 'isbn:' would (someday) be a URN scheme. Any new scheme would be cast into one or the other of these two classes.
¶¶ 1.2 Contemporary View
¶ Over time, the importance of this additional level of hierarchy seemed to lessen; the view became that an individual scheme does not need to be cast into one of a discrete set of URI types such as 'URL', 'URN', 'URC', etc. Web-identifier schemes are in general URI schemes; a given URI scheme may define subspaces. Thus 'http:' is a URI scheme. 'urn:' is also a URI scheme; it defines subspaces, called 'namespaces'. For example, the set of URNs of the form 'urn:isbn:n-nn-nnnnnn-n' is a URN namespace. ('isbn' is an URN namespace identifier. It is not a 'URN scheme' nor a 'URI scheme').
¶ Further according to the contemporary view, the term 'URL' does not refer to a formal partition of URI space; rather, URL is a useful but informal concept: a URL is a type of URI that identifies a resource via a representation of its primary access mechanism (e.g., its network 'location'), rather than by some other attributes it may have. Thus as we noted, 'http:' is a URI scheme. An http URI is a URL. The phrase 'URL scheme' is now used infrequently, usually to refer to some subclass of URI schemes which exclude URNs.