Resource - Uniform resource identifier (URI)
A Uniform Resource Identifier (URI) is a string of characters that Identify a resource.
Because a resource can be created dynamically, an URI is also a request.
- The W3C URL specification defines the term url, various algorithms for dealing with URLs, and an API for constructing, parsing, and resolving URLs.
Type (URI, URL and URN)
URIs can be of the type:
- or both.
|Names||Uniform resource name (URN)||To defines an item's identity||A person's name|
|Locators||Uniform resource locator (URL)||To provide a method for finding an item||person's street address|
See Web - URL
The ISBN system for uniquely identifying books provides a typical example of the use of URNs. ISBN 0486275574 (urn:isbn:0-486-27557-4) cites, unambiguously, a specific edition of Shakespeare's play Romeo and Juliet.
To get this book, a location is needed: a URL address. A typical URL for this book on a Unix-like operating system would be a file path such as file:///home/username/RomeoAndJuliet.pdf, identifying the electronic book saved in a file on a local hard disk.
- mailto:[email protected]
An opaque URI is an absolute URI whose scheme-specific part does not begin with a slash character ('/').
Opaque URIs are not subject to further parsing. Some examples of opaque URIs are:
A hierarchical URI is subject to further parsing according to the syntax
URI = scheme ":" (/|//) [authority] path [ "?" query ] [ "#" fragment ]
- the characters ,, /,?, and # stand for themselves.
- the scheme is required
- the path is required but may be empty
- /|// means that when authority is:
- present, the path must either be empty or begin with a slash (/) character.
- not present, the path cannot begin with two slash characters (//).
A URI is absolute if, and only if, it has a scheme component.
Absolute URI = URI without fragment identifier
An absolute hierarchical URI reference follows the pattern: ://?#
absolute-URI = scheme ":" hier-part [ "?" query ]
More see Absolute URI
A URI that is not absolute is said to be relative
Relative URI references (which are always hierarchical) follow one of two patterns: ?# or //?#
An opaque URI follows this pattern: :#
Components of a parsed URL, which is the result of processing a URL through the URL parser
See URI - Authority (User /Host / Port )
See URI - Path
A query string is the part of a URI that defines key/value data.
URI - Fragment (Ref, Reference)
Interpretation and Access
Interpretation is independent of access. “http://localhost/” has the same interpretation for every user of that reference, even though the network interface corresponding to “localhost” may be different for each end-user:
However, an action made on the basis of that reference will take place in relation to the end-user's context.
Global vs user context
An action intended to refer to a globally unique thing must use a URI that distinguishes that resource from all other things. URIs that identify in relation to the end-user's local context should only be used when the context itself is a defining aspect of the resource, such as when an on-line help manual refers to a file on the end-user's file system (e.g., "file:///etc/hosts").
Because an URL uses characters to delimit its component such as the /, ?, #, if you want to use this character in a URL as value, you need to encode them.
See What is URL encoding ? known also as Percent-encoding
Example: Simple String Comparison
You can create templates of URI and expand them to create URI with variables.