fbpx
Wikipedia

Uniform Resource Identifier

A Uniform Resource Identifier (URI) is a unique sequence of characters that identifies a logical or physical resource used by web technologies. URIs may be used to identify anything, including real-world objects, such as people and places, concepts, or information resources such as web pages and books. Some URIs provide a means of locating and retrieving information resources on a network (either on the Internet or on another private network, such as a computer filesystem or an Intranet); these are Uniform Resource Locators (URLs). A URL provides the location of the resource. A URI identifies the resource by name at the specified location or URL. Other URIs provide only a unique name, without a means of locating or retrieving the resource or information about it, these are Uniform Resource Names (URNs). The web technologies that use URIs are not limited to web browsers. URIs are used to identify anything described using the Resource Description Framework (RDF), for example, concepts that are part of an ontology defined using the Web Ontology Language (OWL), and people who are described using the Friend of a Friend vocabulary would each have an individual URI.

Uniform Resource Identifier (URI)
AbbreviationURI
DomainWorld Wide Web

History

Conception

URIs and URLs have a shared history. In 1990, Tim Berners-Lee's proposals for hypertext implicitly introduced the idea of a URL as a short string representing a resource that is the target of a hyperlink.[1] At the time, people referred to it as a "hypertext name"[2] or "document name".

Over the next three and a half years, as the World Wide Web's core technologies of HTML, HTTP, and web browsers developed, a need to distinguish a string that provided an address for a resource from a string that merely named a resource emerged. Although not yet formally defined, the term Uniform Resource Locator came to represent the former, and the more contentious Uniform Resource Name came to represent the latter. In July 1992 Berners-Lee's report on the IETF "UDI (Universal Document Identifiers) BOF" mentions URLs (as Uniform Resource Locators), URNs (originally, as Unique Resource Numbers), and the need to charter a new working group.[3] In November 1992 the IETF "URI Working Group" met for the first time.[4]

During the debate over defining URLs and URNs, it became evident that the concepts embodied by the two terms were merely aspects of the fundamental, overarching, notion of resource identification. In June 1994, the IETF published Berners-Lee's first Request for Comments that acknowledged the existence of URLs and URNs. Most importantly, it defined a formal syntax for Universal Resource Identifiers (i.e. URL-like strings whose precise syntaxes and semantics depended on their schemes). In addition, the RFC 1630 attempted to summarize the syntaxes of URL schemes in use at the time. It acknowledged -- but did not standardize -- the existence of relative URLs and fragment identifiers.[5]

Refinement

In December 1994, RFC 1738 formally defined relative and absolute URLs, refined the general URL syntax, defined how to resolve relative URLs to absolute form, and better enumerated the URL schemes then in use.[6] The agreed definition and syntax of URNs had to wait until the publication of IETF RFC 2141[7] in May 1997.

The publication of IETF RFC 2396[8] in August 1998 saw the URI syntax become a separate specification[9] and most of the parts of RFCs 1630 and 1738 relating to URIs and URLs in general were revised and expanded by the IETF. The new RFC changed the meaning of "U" in "URI" to "Uniform" from "Universal".

In December 1999, RFC 2732[10] provided a minor update to RFC 2396, allowing URIs to accommodate IPv6 addresses. A number of shortcomings discovered in the two specifications led to a community effort, coordinated by RFC 2396 co-author Roy Fielding, that culminated in the publication of IETF RFC 3986[11] in January 2005. While obsoleting the prior standard, it did not render the details of existing URL schemes obsolete; RFC 1738 continues to govern such schemes except where otherwise superseded. IETF RFC 2616[12] for example, refines the http scheme. Simultaneously, the IETF published the content of RFC 3986 as the full standard STD 66, reflecting the establishment of the URI generic syntax as an official Internet protocol.

In 2001, the W3C's Technical Architecture Group (TAG) published a guide to best practices and canonical URIs for publishing multiple versions of a given resource.[13] For example, content might differ by language or by size to adjust for capacity or settings of the device used to access that content.

In August 2002, IETF RFC 3305[14] pointed out that the term "URL" had, despite widespread public use, faded into near obsolescence, and serves only as a reminder that some URIs act as addresses by having schemes implying network accessibility, regardless of any such actual use. As URI-based standards such as Resource Description Framework make evident, resource identification need not suggest the retrieval of resource representations over the Internet, nor need they imply network-based resources at all.

The Semantic Web uses the HTTP URI scheme to identify both documents and concepts in the real world, a distinction which has caused confusion as to how to distinguish the two. The TAG published an e-mail in 2005 on how to solve the problem, which became known as the httpRange-14 resolution.[15] The W3C subsequently published an Interest Group Note titled Cool URIs for the Semantic Web, which explained the use of content negotiation and the HTTP 303 response code for redirections in more detail.[16]

Design

URLs and URNs

A Uniform Resource Name (URN) is a URI that identifies a resource by name in a particular namespace. A URN may be used to talk about a resource without implying its location or how to access it. For example, in the International Standard Book Number (ISBN) system, ISBN 0-486-27557-4 identifies a specific edition of Shakespeare's play Romeo and Juliet. The URN for that edition would be urn:isbn:0-486-27557-4. However, it gives no information as to where to find a copy of that book.

A Uniform Resource Locator (URL) is a URI that specifies the means of acting upon or obtaining the representation of a resource, i.e. specifying both its primary access mechanism and network location. For example, the URL http://example.org/wiki/Main_Page refers to a resource identified as /wiki/Main_Page, whose representation, in the form of HTML and related code, is obtainable via the Hypertext Transfer Protocol (http:) from a network host whose domain name is example.org.

A URN is analogous to a person's name, while a URL is analogous to their street address. In other words, a URN identifies an item and a URL provides a method for finding it.


Technical publications, especially standards produced by the IETF and by the W3C, normally reflect a view outlined in a W3C Recommendation of 30 July 2001, which acknowledges the precedence of the term URI rather than endorsing any formal subdivision into URL and URN.

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.[17]

As such, a URL is simply a URI that happens to point to a resource over a network.[a][18] However, in non-technical contexts and in software for the World Wide Web, the term "URL" remains widely used. Additionally, the term "web address" (which has no formal definition) often occurs in non-technical publications as a synonym for a URI that uses the http or https schemes. Such assumptions can lead to confusion, for example, in the case of XML namespaces that have a visual similarity to resolvable URIs.

Specifications produced by the WHATWG prefer URL over URI, and so newer HTML5 APIs use URL over URI.[19]

Standardize on the term URL. URI and IRI [Internationalized Resource Identifier] are just confusing. In practice a single algorithm is used for both so keeping them distinct is not helping anyone. URL also easily wins the search result popularity contest.[20]

While most URI schemes were originally designed to be used with a particular protocol, and often have the same name, they are semantically different from protocols. For example, the scheme http is generally used for interacting with web resources using HTTP, but the scheme file has no protocol.

Syntax

A URI has a scheme that refers to a specification for assigning identifiers within that scheme. As such, the URI syntax is a federated and extensible naming system wherein each scheme's specification may further restrict the syntax and semantics of identifiers using that scheme. The URI generic syntax is a superset of the syntax of all URI schemes. It was first defined in RFC 2396, published in August 1998,[9] and finalized in RFC 3986, published in January 2005.[21]

A URI is composed from an allowed set of ASCII characters consisting of reserved characters (generic: :, /, ?, #, [, ], and @; scheme- or implementation-specific: !, $, &, ', (, ), *, +, ,, ;, and =),[22] unreserved characters (uppercase and lowercase letters, decimal digits, -, ., _, and ~),[23] and the character %.[24] Syntax components and subcomponents are separated by delimiters from the reserved characters (only from generic reserved characters for components) and define identifying data represented as unreserved characters, reserved characters that do not act as delimiters in the component and subcomponent respectively,[25] and percent-encodings when the corresponding character is outside the allowed set or is being used as a delimiter of, or within, the component. A percent-encoding of an identifying data octet is a sequence of three characters, consisting of the character % followed by the two hexadecimal digits representing that octet's numeric value.[24]


The URI generic syntax consists of five components organized hierarchically in order of decreasing significance from left to right:[26]

URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment] 

A component is undefined if it has an associated delimiter and the delimiter does not appear in the URI; the scheme and path components are always defined.[27] A component is empty if it has no characters; the scheme component is always non-empty.[26]

The authority component consists of subcomponents:

authority = [userinfo "@"] host [":" port] 

This is represented in a syntax diagram as:

 

The URI comprises:

  • A non-empty scheme component followed by a colon (:), consisting of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus (+), period (.), or hyphen (-). Although schemes are case-insensitive, the canonical form is lowercase and documents that specify schemes must do so with lowercase letters. Examples of popular schemes include http, https, ftp, mailto, file, data and irc. URI schemes should be registered with the Internet Assigned Numbers Authority (IANA), although non-registered schemes are used in practice.[b]
  • An optional authority component preceded by two slashes (//), comprising:
    • An optional userinfo subcomponent followed by an at symbol (@), that may consist of a user name and an optional password preceded by a colon (:). Use of the format username:password in the userinfo subcomponent is deprecated for security reasons. Applications should not render as clear text any data after the first colon (:) found within a userinfo subcomponent unless the data after the colon is the empty string (indicating no password).
    • A host subcomponent, consisting of either a registered name (including but not limited to a hostname) or an IP address. IPv4 addresses must be in dot-decimal notation, and IPv6 addresses must be enclosed in brackets ([]).[29][c]
    • An optional port subcomponent preceded by a colon (:), consisting of decimal digits.
  • A path component, consisting of a sequence of path segments separated by a slash (/). A path is always defined for a URI, though the defined path may be empty (zero length). A segment may also be empty, resulting in two consecutive slashes (//) in the path component. A path component may resemble or map exactly to a file system path but does not always imply a relation to one. If an authority component is defined, then the path component must either be empty or begin with a slash (/). If an authority component is undefined, then the path cannot begin with an empty segment—that is, with two slashes (//)—since the following characters would be interpreted as an authority component.[31]
By convention, in http and https URIs, the last part of a path is named pathinfo and it is optional. It is composed by zero or more path segments that do not refer to an existing physical resource name (e.g. a file, an internal module program or an executable program) but to a logical part (e.g. a command or a qualifier part) that has to be passed separately to the first part of the path that identifies an executable module or program managed by a web server; this is often used to select dynamic content (a document, etc.) or to tailor it as requested (see also: CGI and PATH_INFO, etc.).
Example:
URI: "http://www.example.com/questions/3456/my-document"
where: "/questions" is the first part of the path (an executable module or program) and "/3456/my-document" is the second part of the path named pathinfo, which is passed to the executable module or program named "/questions" to select the requested document.
An http or https URI containing a pathinfo part without a query part may also be referred to as a 'clean URL' whose last part may be a 'slug'.
Query delimiter Example
Ampersand (&) key1=value1&key2=value2
Semicolon (;)[d] key1=value1;key2=value2
  • An optional query component preceded by a question mark (?), consisting of a query string of non-hierarchical data. Its syntax is not well defined, but by convention is most often a sequence of attribute–value pairs separated by a delimiter.
  • An optional fragment component preceded by a hash (#). The fragment contains a fragment identifier providing direction to a secondary resource, such as a section heading in an article identified by the remainder of the URI. When the primary resource is an HTML document, the fragment is often an id attribute of a specific element, and web browsers will scroll this element into view.

The scheme- or implementation-specific reserved character + may be used in the scheme, userinfo, host, path, query, and fragment, and the scheme- or implementation-specific reserved characters !, $, &, ', (, ), *, ,, ;, and = may be used in the userinfo, host, path, query, and fragment. Additionally, the generic reserved character : may be used in the userinfo, path, query and fragment, the generic reserved characters @ and / may be used in the path, query and fragment, and the generic reserved character ? may be used in the query and fragment.[33]

Example URIs

The following figure displays example URIs and their component parts.

 userinfo host port ┌──┴───┐ ┌──────┴──────┐ ┌┴┐ https://john.doe@www.example.com:123/forum/questions/?tag=networking&order=newest#top └─┬─┘ └───────────┬──────────┘ └───────┬───────┘ └────────────┬────────────┘ └┬┘ scheme authority path query fragment ldap://[2001:db8::7]/c=GB?objectClass?one └┬─┘ └─────┬─────┘└─┬─┘ └──────┬──────┘ scheme authority path query mailto:John.Doe@example.com └─┬──┘ └────┬─────────────┘ scheme path news:comp.infosystems.www.servers.unix └┬─┘ └─────────────┬─────────────────┘ scheme path tel:+1-816-555-1212 └┬┘ └──────┬──────┘ scheme path telnet://192.0.2.16:80/ └─┬──┘ └─────┬─────┘ scheme authority path urn:oasis:names:specification:docbook:dtd:xml:4.1.2 └┬┘ └──────────────────────┬──────────────────────┘ scheme path

DOIs (digital object identifiers) fit within the Handle System and fit within the URI system, as facilitated by appropriate syntax.

URI references

A URI reference is either a URI or a relative reference when it does not begin with a scheme component followed by a colon (:).[34] A path segment that contains a colon character (e.g., foo:bar) cannot be used as the first path segment of a relative reference if its path component does not begin with a slash (/), as it would be mistaken for a scheme component. Such a path segment must be preceded by a dot path segment (e.g., ./foo:bar).[35]

Web document markup languages frequently use URI references to point to other resources, such as external documents or specific portions of the same logical document:[36]

  • in HTML, the value of the src attribute of the img element provides a URI reference, as does the value of the href attribute of the a or link element;
  • in XML, the system identifier appearing after the SYSTEM keyword in a DTD is a fragmentless URI reference;
  • in XSLT, the value of the href attribute of the xsl:import element/instruction is a URI reference; likewise the first argument to the document() function.
https://example.com/path/resource.txt#fragment //example.com/path/resource.txt /path/resource.txt path/resource.txt ../resource.txt ./resource.txt resource.txt #fragment 

Resolution

Resolving a URI reference against a base URI results in a target URI. This implies that the base URI exists and is an absolute URI (a URI with no fragment component). The base URI can be obtained, in order of precedence, from:[37]

  • the reference URI itself if it is a URI;
  • the content of the representation;
  • the entity encapsulating the representation;
  • the URI used for the actual retrieval of the representation;
  • the context of the application.

Within a representation with a well defined base URI of

http://a/b/c/d;p?q 

a relative reference is resolved to its target URI as follows:[38]

"g:h" -> "g:h" "g" -> "http://a/b/c/g" "./g" -> "http://a/b/c/g" "g/" -> "http://a/b/c/g/" "/g" -> "http://a/g" "//g" -> "http://g" "?y" -> "http://a/b/c/d;p?y" "g?y" -> "http://a/b/c/g?y" "#s" -> "http://a/b/c/d;p?q#s" "g#s" -> "http://a/b/c/g#s" "g?y#s" -> "http://a/b/c/g?y#s" ";x" -> "http://a/b/c/;x" "g;x" -> "http://a/b/c/g;x" "g;x?y#s" -> "http://a/b/c/g;x?y#s" "" -> "http://a/b/c/d;p?q" "." -> "http://a/b/c/" "./" -> "http://a/b/c/" ".." -> "http://a/b/" "../" -> "http://a/b/" "../g" -> "http://a/b/g" "../.." -> "http://a/" "../../" -> "http://a/" "../../g" -> "http://a/g" 

URL munging

URL munging is a technique by which a command is appended to a URL, usually at the end, after a "?" token. It's commonly used in WebDAV as a mechanism of adding functionality to HTTP. In a versioning system, for example, to add a "checkout" command to a URL, it's written as http://editing.com/resource/file.php?command=checkout. It has the advantage of both being easy for CGI parsers and also acts as an intermediary between HTTP and underlying resource, in this case.[39]

Relation to XML namespaces

In XML, a namespace is an abstract domain to which a collection of element and attribute names can be assigned. The namespace name is a character string which must adhere to the generic URI syntax.[40] However, the name is generally not considered to be a URI,[41] because the URI specification bases the decision not only on lexical components, but also on their intended use. A namespace name does not necessarily imply any of the semantics of URI schemes; for example, a namespace name beginning with http: may have no connotation to the use of the HTTP.

Originally, the namespace name could match the syntax of any non-empty URI reference, but the use of relative URI references was deprecated by the W3C.[42] A separate W3C specification for namespaces in XML 1.1 permits Internationalized Resource Identifier (IRI) references to serve as the basis for namespace names in addition to URI references.[43]

See also

Notes

  1. ^ A report published in 2002 by a joint W3C/IETF working group aimed to normalize the divergent views held within the IETF and W3C over the relationship between the various 'UR*' terms and standards. While not published as a full standard by either organization, it has become the basis for the above common understanding and has informed many standards since then.
  2. ^ The procedures for registering new URI schemes were originally defined in 1999 by RFC 2717, and are now defined by RFC 7595, published in June 2015.[28]
  3. ^ For URIs relating to resources on the World Wide Web, some web browsers allow .0 portions of dot-decimal notation to be dropped or raw integer IP addresses to be used.[30]
  4. ^ Historic RFC 1866 (obsoleted by RFC 2854) encourages CGI authors to support ';' in addition to '&'.[32]

References

  1. ^ Palmer, Sean. "The Early History of HTML". infomesh.net. Retrieved 2020-12-06.
  2. ^ "W3 Naming Schemes". www.w3.org. 1992. Retrieved 2020-12-06.
  3. ^ "Proceedings of the Twenty-Fourth Internet Engineering Task Force" (PDF). p. 193. Retrieved 2021-07-27.
  4. ^ "Proceedings of the Twenty-Fifth Internet Engineering Task Force" (PDF). p. 501. Retrieved 2021-07-27.
  5. ^ Berners-Lee, Tim (June 1994). "Universal Resource Identifiers in WWW". Network Working Group. doi:10.17487/RFC1630. Retrieved 2020-12-06. {{cite journal}}: Cite journal requires |journal= (help)
  6. ^ Berners-Lee, Tim (December 1994). "Request for Comments: 1738: Uniform Resource Locators (URL)". tools.ietf.org/html. doi:10.17487/RFC1738. Retrieved 2020-12-06.
  7. ^ Moats, R. (May 1997). "Request for Comments: 2141: URN Syntax". tools.ietf.org. doi:10.17487/RFC2141. Retrieved 2020-12-06.
  8. ^ Berners-Lee, Tim (August 1998). "RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax". tools.ietf.org. doi:10.17487/RFC2396. Retrieved 2020-12-06.
  9. ^ a b RFC 2396 (1998).
  10. ^ Hinden, R. (December 1999). "RFC 2732:Format for Literal IPv6 Addresses in URL's". tools.ietf.org. doi:10.17487/RFC2732. Retrieved 2020-12-06.
  11. ^ Berners-Lee, Tim (January 2005). "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax". tools.ietf.org. doi:10.17487/RFC3986. Retrieved 2020-12-06.
  12. ^ Fielding, R. (June 1999). "RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1". tools.ietf.org. doi:10.17487/RFC2616. Retrieved 2020-12-06.
  13. ^ Raman, T.V. (2006-11-01). "On Linking Alternative Representations To Enable Discovery And Publishing". www.w3.org. Retrieved 2020-12-06.
  14. ^ Mealling, M. (August 2002). Mealling, M; Denenberg, R (eds.). "RFC 3305: Uniform Resource Identifiers (URIs), URLs, and Uniform Resource Names". tools.ietf.org. doi:10.17487/RFC3305. Retrieved 2020-12-06.
  15. ^ Fielding, Roy (2005-06-18). "[httpRange-14] Resolved". lists.w3.org. Retrieved 2020-12-06.
  16. ^ Sauermann, Leo (December 2008). "Cool URIs for the Semantic Web". www.w3.org. Retrieved 2020-12-06.
  17. ^ URI Planning Interest Group, W3C/IETF (September 2001). "URIs, URLs, and URNs: Clarifications and Recommendations 1.0". www.w3.org. W3C/IETF. Retrieved 2020-12-08.
  18. ^ Joint W3C/IETF URI Planning Interest Group (2002).
  19. ^ "URL Standard: 6.3. URL APIs elsewhere".
  20. ^ "URL Standard: Goals".
  21. ^ RFC 3986 (2005).
  22. ^ RFC 3986 (2005), §2.2.
  23. ^ RFC 3986 (2005), §2.3.
  24. ^ a b RFC 3986 (2005), §2.1.
  25. ^ RFC 3986 (2005), §2.
  26. ^ a b RFC 3986 (2005), §3.
  27. ^ RFC 3986 (2005), §5.2.1.
  28. ^ IETF (2015).
  29. ^ RFC 3986 (2005), §3.2.2.
  30. ^ Lawrence (2014).
  31. ^ RFC 2396 (1998), §3.3.
  32. ^ RFC 1866 (1995), §8.2.1.
  33. ^ RFC 3986 (2005), §A.
  34. ^ RFC 3986 (2005), §4.1.
  35. ^ RFC 3986 (2005), §4.2.
  36. ^ RFC 3986 (2005), §4.4.
  37. ^ RFC 3986 (2005), §5.1.
  38. ^ RFC 3986 (2005), §5.4.
  39. ^ Whitehead 1998, p. 38.
  40. ^ Morrison (2006).
  41. ^ Harold (2004).
  42. ^ W3C (2009).
  43. ^ W3C (2006).

Further reading

  • Whitehead, E.J (1998). "WebDAV: IEFT standard for collaborative authoring on the Web". IEEE Internet Computing. 2 (5): 34–40. doi:10.1109/4236.722228. ISSN 1941-0131. Retrieved 2021-10-12.

External links

  • URI Schemes – IANA-maintained registry of URI Schemes
  • URI schemes on the W3C wiki
  • Architecture of the World Wide Web, Volume One, §2: Identification – by W3C
  • W3C URI Clarification

uniform, resource, identifier, redirects, here, other, uses, disambiguation, confused, with, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, this, article, technical, m. URI redirects here For other uses see URI disambiguation Not to be confused with URL This article has multiple issues Please help improve it or discuss these issues on the talk page Learn how and when to remove these template messages This article may be too technical for most readers to understand Please help improve it to make it understandable to non experts without removing the technical details November 2020 Learn how and when to remove this template message This article relies excessively on references to primary sources Please improve this article by adding secondary or tertiary sources Find sources Uniform Resource Identifier news newspapers books scholar JSTOR November 2020 Learn how and when to remove this template message Learn how and when to remove this template message A Uniform Resource Identifier URI is a unique sequence of characters that identifies a logical or physical resource used by web technologies URIs may be used to identify anything including real world objects such as people and places concepts or information resources such as web pages and books Some URIs provide a means of locating and retrieving information resources on a network either on the Internet or on another private network such as a computer filesystem or an Intranet these are Uniform Resource Locators URLs A URL provides the location of the resource A URI identifies the resource by name at the specified location or URL Other URIs provide only a unique name without a means of locating or retrieving the resource or information about it these are Uniform Resource Names URNs The web technologies that use URIs are not limited to web browsers URIs are used to identify anything described using the Resource Description Framework RDF for example concepts that are part of an ontology defined using the Web Ontology Language OWL and people who are described using the Friend of a Friend vocabulary would each have an individual URI Uniform Resource Identifier URI AbbreviationURIDomainWorld Wide Web Contents 1 History 1 1 Conception 1 2 Refinement 2 Design 2 1 URLs and URNs 2 2 Syntax 2 3 Example URIs 2 4 URI references 2 5 Resolution 2 6 URL munging 2 7 Relation to XML namespaces 3 See also 4 Notes 5 References 6 Further reading 7 External linksHistory EditConception Edit URIs and URLs have a shared history In 1990 Tim Berners Lee s proposals for hypertext implicitly introduced the idea of a URL as a short string representing a resource that is the target of a hyperlink 1 At the time people referred to it as a hypertext name 2 or document name Over the next three and a half years as the World Wide Web s core technologies of HTML HTTP and web browsers developed a need to distinguish a string that provided an address for a resource from a string that merely named a resource emerged Although not yet formally defined the term Uniform Resource Locator came to represent the former and the more contentious Uniform Resource Name came to represent the latter In July 1992 Berners Lee s report on the IETF UDI Universal Document Identifiers BOF mentions URLs as Uniform Resource Locators URNs originally as Unique Resource Numbers and the need to charter a new working group 3 In November 1992 the IETF URI Working Group met for the first time 4 During the debate over defining URLs and URNs it became evident that the concepts embodied by the two terms were merely aspects of the fundamental overarching notion of resource identification In June 1994 the IETF published Berners Lee s first Request for Comments that acknowledged the existence of URLs and URNs Most importantly it defined a formal syntax for Universal Resource Identifiers i e URL like strings whose precise syntaxes and semantics depended on their schemes In addition the RFC 1630 attempted to summarize the syntaxes of URL schemes in use at the time It acknowledged but did not standardize the existence of relative URLs and fragment identifiers 5 Refinement Edit In December 1994 RFC 1738 formally defined relative and absolute URLs refined the general URL syntax defined how to resolve relative URLs to absolute form and better enumerated the URL schemes then in use 6 The agreed definition and syntax of URNs had to wait until the publication of IETF RFC 2141 7 in May 1997 The publication of IETF RFC 2396 8 in August 1998 saw the URI syntax become a separate specification 9 and most of the parts of RFCs 1630 and 1738 relating to URIs and URLs in general were revised and expanded by the IETF The new RFC changed the meaning of U in URI to Uniform from Universal In December 1999 RFC 2732 10 provided a minor update to RFC 2396 allowing URIs to accommodate IPv6 addresses A number of shortcomings discovered in the two specifications led to a community effort coordinated by RFC 2396 co author Roy Fielding that culminated in the publication of IETF RFC 3986 11 in January 2005 While obsoleting the prior standard it did not render the details of existing URL schemes obsolete RFC 1738 continues to govern such schemes except where otherwise superseded IETF RFC 2616 12 for example refines the http scheme Simultaneously the IETF published the content of RFC 3986 as the full standard STD 66 reflecting the establishment of the URI generic syntax as an official Internet protocol In 2001 the W3C s Technical Architecture Group TAG published a guide to best practices and canonical URIs for publishing multiple versions of a given resource 13 For example content might differ by language or by size to adjust for capacity or settings of the device used to access that content In August 2002 IETF RFC 3305 14 pointed out that the term URL had despite widespread public use faded into near obsolescence and serves only as a reminder that some URIs act as addresses by having schemes implying network accessibility regardless of any such actual use As URI based standards such as Resource Description Framework make evident resource identification need not suggest the retrieval of resource representations over the Internet nor need they imply network based resources at all The Semantic Web uses the HTTP URI scheme to identify both documents and concepts in the real world a distinction which has caused confusion as to how to distinguish the two The TAG published an e mail in 2005 on how to solve the problem which became known as the httpRange 14 resolution 15 The W3C subsequently published an Interest Group Note titled Cool URIs for the Semantic Web which explained the use of content negotiation and the HTTP 303 response code for redirections in more detail 16 Design EditURLs and URNs Edit A Uniform Resource Name URN is a URI that identifies a resource by name in a particular namespace A URN may be used to talk about a resource without implying its location or how to access it For example in the International Standard Book Number ISBN system ISBN 0 486 27557 4 identifies a specific edition of Shakespeare s play Romeo and Juliet The URN for that edition would be urn isbn 0 486 27557 4 However it gives no information as to where to find a copy of that book A Uniform Resource Locator URL is a URI that specifies the means of acting upon or obtaining the representation of a resource i e specifying both its primary access mechanism and network location For example the URL http example org wiki Main Page refers to a resource identified as wiki Main Page whose representation in the form of HTML and related code is obtainable via the Hypertext Transfer Protocol http from a network host whose domain name is example org A URN is analogous to a person s name while a URL is analogous to their street address In other words a URN identifies an item and a URL provides a method for finding it Technical publications especially standards produced by the IETF and by the W3C normally reflect a view outlined in a W3C Recommendation of 30 July 2001 which acknowledges the precedence of the term URI rather than endorsing any formal subdivision into URL and URN 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 17 As such a URL is simply a URI that happens to point to a resource over a network a 18 However in non technical contexts and in software for the World Wide Web the term URL remains widely used Additionally the term web address which has no formal definition often occurs in non technical publications as a synonym for a URI that uses the http or https schemes Such assumptions can lead to confusion for example in the case of XML namespaces that have a visual similarity to resolvable URIs Specifications produced by the WHATWG prefer URL over URI and so newer HTML5 APIs use URL over URI 19 Standardize on the term URL URI and IRI Internationalized Resource Identifier are just confusing In practice a single algorithm is used for both so keeping them distinct is not helping anyone URL also easily wins the search result popularity contest 20 While most URI schemes were originally designed to be used with a particular protocol and often have the same name they are semantically different from protocols For example the scheme http is generally used for interacting with web resources using HTTP but the scheme file has no protocol Syntax Edit See also List of URI schemes A URI has a scheme that refers to a specification for assigning identifiers within that scheme As such the URI syntax is a federated and extensible naming system wherein each scheme s specification may further restrict the syntax and semantics of identifiers using that scheme The URI generic syntax is a superset of the syntax of all URI schemes It was first defined in RFC 2396 published in August 1998 9 and finalized in RFC 3986 published in January 2005 21 A URI is composed from an allowed set of ASCII characters consisting of reserved characters generic and scheme or implementation specific amp and 22 unreserved characters uppercase and lowercase letters decimal digits and 23 and the character 24 Syntax components and subcomponents are separated by delimiters from the reserved characters only from generic reserved characters for components and define identifying data represented as unreserved characters reserved characters that do not act as delimiters in the component and subcomponent respectively 25 and percent encodings when the corresponding character is outside the allowed set or is being used as a delimiter of or within the component A percent encoding of an identifying data octet is a sequence of three characters consisting of the character followed by the two hexadecimal digits representing that octet s numeric value 24 The URI generic syntax consists of five components organized hierarchically in order of decreasing significance from left to right 26 URI scheme authority path query fragment A component is undefined if it has an associated delimiter and the delimiter does not appear in the URI the scheme and path components are always defined 27 A component is empty if it has no characters the scheme component is always non empty 26 The authority component consists of subcomponents authority userinfo host port This is represented in a syntax diagram as The URI comprises A non empty scheme component followed by a colon consisting of a sequence of characters beginning with a letter and followed by any combination of letters digits plus period or hyphen Although schemes are case insensitive the canonical form is lowercase and documents that specify schemes must do so with lowercase letters Examples of popular schemes include a href Hypertext Transfer Protocol html title Hypertext Transfer Protocol http a a href HTTP Secure html class mw redirect title HTTP Secure https a a href File Transfer Protocol html title File Transfer Protocol ftp a a href Mailto html title Mailto mailto a a href File URI scheme html title File URI scheme file a a href Data URI scheme html title Data URI scheme data a and a href Internet Relay Chat html URI scheme title Internet Relay Chat irc a URI schemes should be registered with the Internet Assigned Numbers Authority IANA although non registered schemes are used in practice b An optional authority component preceded by two slashes comprising An optional userinfo subcomponent followed by an at symbol that may consist of a user name and an optional password preceded by a colon Use of the format username password in the userinfo subcomponent is deprecated for security reasons Applications should not render as clear text any data after the first colon found within a userinfo subcomponent unless the data after the colon is the empty string indicating no password A host subcomponent consisting of either a registered name including but not limited to a hostname or an IP address IPv4 addresses must be in dot decimal notation and IPv6 addresses must be enclosed in brackets 29 c An optional port subcomponent preceded by a colon consisting of decimal digits A path component consisting of a sequence of path segments separated by a slash A path is always defined for a URI though the defined path may be empty zero length A segment may also be empty resulting in two consecutive slashes in the path component A path component may resemble or map exactly to a file system path but does not always imply a relation to one If an authority component is defined then the path component must either be empty or begin with a slash If an authority component is undefined then the path cannot begin with an empty segment that is with two slashes since the following characters would be interpreted as an authority component 31 By convention in http and https URIs the last part of a path is named pathinfo and it is optional It is composed by zero or more path segments that do not refer to an existing physical resource name e g a file an internal module program or an executable program but to a logical part e g a command or a qualifier part that has to be passed separately to the first part of the path that identifies an executable module or program managed by a web server this is often used to select dynamic content a document etc or to tailor it as requested see also CGI and PATH INFO etc Example URI http www example com questions 3456 my document where questions is the first part of the path an executable module or program and 3456 my document is the second part of the path named pathinfo which is passed to the executable module or program named questions to select the requested document dd An http or https URI containing a pathinfo part without a query part may also be referred to as a clean URL whose last part may be a slug Query delimiter ExampleAmpersand amp key1 value1 amp key2 value2Semicolon d key1 value1 key2 value2An optional query component preceded by a question mark consisting of a query string of non hierarchical data Its syntax is not well defined but by convention is most often a sequence of attribute value pairs separated by a delimiter An optional fragment component preceded by a hash The fragment contains a fragment identifier providing direction to a secondary resource such as a section heading in an article identified by the remainder of the URI When the primary resource is an HTML document the fragment is often an id attribute of a specific element and web browsers will scroll this element into view The scheme or implementation specific reserved character may be used in the scheme userinfo host path query and fragment and the scheme or implementation specific reserved characters amp and may be used in the userinfo host path query and fragment Additionally the generic reserved character may be used in the userinfo path query and fragment the generic reserved characters and may be used in the path query and fragment and the generic reserved character may be used in the query and fragment 33 Example URIs Edit The following figure displays example URIs and their component parts userinfo host port https john doe www example com 123 forum questions tag networking amp order newest top scheme authority path query fragment ldap 2001 db8 7 c GB objectClass one scheme authority path query mailto John Doe example com scheme path news comp infosystems www servers unix scheme path tel 1 816 555 1212 scheme path telnet 192 0 2 16 80 scheme authority path urn oasis names specification docbook dtd xml 4 1 2 scheme path DOIs digital object identifiers fit within the Handle System and fit within the URI system as facilitated by appropriate syntax URI references Edit A URI reference is either a URI or a relative reference when it does not begin with a scheme component followed by a colon 34 A path segment that contains a colon character e g foo bar cannot be used as the first path segment of a relative reference if its path component does not begin with a slash as it would be mistaken for a scheme component Such a path segment must be preceded by a dot path segment e g foo bar 35 Web document markup languages frequently use URI references to point to other resources such as external documents or specific portions of the same logical document 36 in HTML the value of the src attribute of the img element provides a URI reference as does the value of the href attribute of the a or link element in XML the system identifier appearing after the SYSTEM keyword in a DTD is a fragmentless URI reference in XSLT the value of the href attribute of the xsl import element instruction is a URI reference likewise the first argument to the document function https example com path resource txt fragment example com path resource txt path resource txt path resource txt resource txt resource txt resource txt fragment Resolution Edit Resolving a URI reference against a base URI results in a target URI This implies that the base URI exists and is an absolute URI a URI with no fragment component The base URI can be obtained in order of precedence from 37 the reference URI itself if it is a URI the content of the representation the entity encapsulating the representation the URI used for the actual retrieval of the representation the context of the application Within a representation with a well defined base URI of http a b c d p q a relative reference is resolved to its target URI as follows 38 g h gt g h g gt http a b c g g gt http a b c g g gt http a b c g g gt http a g g gt http g y gt http a b c d p y g y gt http a b c g y s gt http a b c d p q s g s gt http a b c g s g y s gt http a b c g y s x gt http a b c x g x gt http a b c g x g x y s gt http a b c g x y s gt http a b c d p q gt http a b c gt http a b c gt http a b gt http a b g gt http a b g gt http a gt http a g gt http a g URL munging Edit URL munging is a technique by which a command is appended to a URL usually at the end after a token It s commonly used in WebDAV as a mechanism of adding functionality to HTTP In a versioning system for example to add a checkout command to a URL it s written as http editing com resource file php command checkout It has the advantage of both being easy for CGI parsers and also acts as an intermediary between HTTP and underlying resource in this case 39 Relation to XML namespaces Edit In XML a namespace is an abstract domain to which a collection of element and attribute names can be assigned The namespace name is a character string which must adhere to the generic URI syntax 40 However the name is generally not considered to be a URI 41 because the URI specification bases the decision not only on lexical components but also on their intended use A namespace name does not necessarily imply any of the semantics of URI schemes for example a namespace name beginning with http may have no connotation to the use of the HTTP Originally the namespace name could match the syntax of any non empty URI reference but the use of relative URI references was deprecated by the W3C 42 A separate W3C specification for namespaces in XML 1 1 permits Internationalized Resource Identifier IRI references to serve as the basis for namespace names in addition to URI references 43 See also EditCURIE Linked data Extensible Resource Identifier Internationalized Resource Identifier IRI Internet resource locator Persistent uniform resource locator Uniform Naming Convention Resource Directory Description Language Universally unique identifier List of URI schemesNotes Edit A report published in 2002 by a joint W3C IETF working group aimed to normalize the divergent views held within the IETF and W3C over the relationship between the various UR terms and standards While not published as a full standard by either organization it has become the basis for the above common understanding and has informed many standards since then The procedures for registering new URI schemes were originally defined in 1999 by RFC 2717 and are now defined by RFC 7595 published in June 2015 28 For URIs relating to resources on the World Wide Web some web browsers allow 0 portions of dot decimal notation to be dropped or raw integer IP addresses to be used 30 Historic RFC 1866 obsoleted by RFC 2854 encourages CGI authors to support in addition to amp 32 References Edit Palmer Sean The Early History of HTML infomesh net Retrieved 2020 12 06 W3 Naming Schemes www w3 org 1992 Retrieved 2020 12 06 Proceedings of the Twenty Fourth Internet Engineering Task Force PDF p 193 Retrieved 2021 07 27 Proceedings of the Twenty Fifth Internet Engineering Task Force PDF p 501 Retrieved 2021 07 27 Berners Lee Tim June 1994 Universal Resource Identifiers in WWW Network Working Group doi 10 17487 RFC1630 Retrieved 2020 12 06 a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help Berners Lee Tim December 1994 Request for Comments 1738 Uniform Resource Locators URL tools ietf org html doi 10 17487 RFC1738 Retrieved 2020 12 06 Moats R May 1997 Request for Comments 2141 URN Syntax tools ietf org doi 10 17487 RFC2141 Retrieved 2020 12 06 Berners Lee Tim August 1998 RFC 2396 Uniform Resource Identifiers URI Generic Syntax tools ietf org doi 10 17487 RFC2396 Retrieved 2020 12 06 a b RFC 2396 1998 Hinden R December 1999 RFC 2732 Format for Literal IPv6 Addresses in URL s tools ietf org doi 10 17487 RFC2732 Retrieved 2020 12 06 Berners Lee Tim January 2005 RFC 3986 Uniform Resource Identifier URI Generic Syntax tools ietf org doi 10 17487 RFC3986 Retrieved 2020 12 06 Fielding R June 1999 RFC 2616 Hypertext Transfer Protocol HTTP 1 1 tools ietf org doi 10 17487 RFC2616 Retrieved 2020 12 06 Raman T V 2006 11 01 On Linking Alternative Representations To Enable Discovery And Publishing www w3 org Retrieved 2020 12 06 Mealling M August 2002 Mealling M Denenberg R eds RFC 3305 Uniform Resource Identifiers URIs URLs and Uniform Resource Names tools ietf org doi 10 17487 RFC3305 Retrieved 2020 12 06 Fielding Roy 2005 06 18 httpRange 14 Resolved lists w3 org Retrieved 2020 12 06 Sauermann Leo December 2008 Cool URIs for the Semantic Web www w3 org Retrieved 2020 12 06 URI Planning Interest Group W3C IETF September 2001 URIs URLs and URNs Clarifications and Recommendations 1 0 www w3 org W3C IETF Retrieved 2020 12 08 Joint W3C IETF URI Planning Interest Group 2002 sfnp error no target CITEREFJoint W3C IETF URI Planning Interest Group2002 help URL Standard 6 3 URL APIs elsewhere URL Standard Goals RFC 3986 2005 RFC 3986 2005 2 2 RFC 3986 2005 2 3 a b RFC 3986 2005 2 1 RFC 3986 2005 2 a b RFC 3986 2005 3 RFC 3986 2005 5 2 1 IETF 2015 RFC 3986 2005 3 2 2 Lawrence 2014 RFC 2396 1998 3 3 RFC 1866 1995 8 2 1 RFC 3986 2005 A RFC 3986 2005 4 1 RFC 3986 2005 4 2 RFC 3986 2005 4 4 RFC 3986 2005 5 1 RFC 3986 2005 5 4 Whitehead 1998 p 38 Morrison 2006 Harold 2004 W3C 2009 W3C 2006 Further reading EditHarold Elliotte Rusty 2004 XML 1 1 Bible Third ed Wiley Publishing p 291 ISBN 978 0 7645 4986 1 Hansen Tony Hardie Ted June 2015 Thaler Dave ed Guidelines and Registration Procedures for URI Schemes Ietf Request for Comments RFC Pages Test Internet Engineering Task Force doi 10 17487 RFC7595 ISSN 2070 1721 Morrison Michael Wayne 2006 Hour 5 Putting Namespaces to Use Sams Teach Yourself XML Sams Publishing p 91 URI Planning Interest Group W3C IETF 2001 09 21 URIs URLs and URNs Clarifications and Recommendations 1 0 Retrieved 2009 07 27 On Linking Alternative Representations To Enable Discovery And Publishing World Wide Web Consortium 2006 2001 Retrieved 2012 04 03 Bray Tim Hollander Dave Layman Andrew Tobin Richard eds 2006 08 16 Namespaces in XML 1 1 Second Edition World Wide Web Consortium 2 2 Use of URIs as Namespace Names Retrieved 2015 08 31 Ayers Danny Volkel Max 2008 12 03 Sauermann Leo Cyganiak Richard eds Cool URIs for the Semantic Web World Wide Web Consortium Retrieved 2012 04 03 Bray Tim Hollander Dave Layman Andrew Tobin Richard Thompson Henry S eds 2009 12 08 Namespaces in XML 1 0 Third Edition World Wide Web Consortium 2 2 Use of URIs as Namespace Names Retrieved 2015 08 31 Berners Lee Tim Connolly Daniel Dan November 1995 Hypertext Markup Language 2 0 Internet Engineering Task Force doi 10 17487 RFC1866 S2CID 6628570 Retrieved 2015 09 13 a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help Berners Lee Tim Fielding Roy T Masinter Larry August 1998 Uniform Resource Identifiers URI Generic Syntax Internet Engineering Task Force doi 10 17487 RFC2396 RFC 2396 Retrieved 2015 08 31 Berners Lee Tim Fielding Roy T Masinter Larry January 2005 Uniform Resource Identifiers URI Generic Syntax Internet Engineering Task Force doi 10 17487 RFC3986 RFC 3986 Retrieved 2015 08 31 Berners Lee Tim Fielding Roy T Masinter Larry January 2005 Uniform Resource Identifiers URI Generic Syntax section 3 Syntax Components Internet Engineering Task Force doi 10 17487 RFC3986 RFC 3986 Retrieved 2015 08 31 Lawrence Eric 2014 03 06 Browser Arcana IP Literals in URLs IEInternals Microsoft Retrieved 2016 04 25 Whitehead E J 1998 WebDAV IEFT standard for collaborative authoring on the Web IEEE Internet Computing 2 5 34 40 doi 10 1109 4236 722228 ISSN 1941 0131 Retrieved 2021 10 12 External links EditURI Schemes IANA maintained registry of URI Schemes URI schemes on the W3C wiki Architecture of the World Wide Web Volume One 2 Identification by W3C W3C URI Clarification Retrieved from https en wikipedia org w index php title Uniform Resource Identifier amp oldid 1136116376 Syntax, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.