Люди говорят о URL, URI и URN как о разных вещах, но невооруженным глазом они выглядят одинаково. .
Каковы различия между ними?
Люди говорят о URL, URI и URN как о разных вещах, но невооруженным глазом они выглядят одинаково. .
Каковы различия между ними?
Из RFC 3986:
URI можно дополнительно классифицировать как указатель, имя или и то, и другое. Термин унифицированный указатель ресурса (URL) относится к подмножеству URI, которые, помимо идентификации ресурса, предоставляют средства определения местоположения ресурса путем описания его основного механизма доступа (например, его местоположения в сети). Термин Uniform Resource Name (URN) исторически использовался для обозначения обоих URI в схеме urn [RFC2141 ], которые должны оставаться глобально уникальными и постоянными, даже когда ресурс перестает существовать или становится недоступным, а также для любого другого URI со свойствами имени.
Таким образом, все URL-адреса являются URI, а все URN являются URI, но URN и URL-адреса разные, поэтому вы не можете сказать, что все URI являются URL-адресами.
Если вы еще не прочитали ответ Роджера Пейта, я бы посоветовал сделать это тоже.
[
или ]
, и это потому, что в спецификации сказано, что не должен и не должен.
- person Adam Gent; 16.05.2013
java.net.URI
doc говорит, что каждый URL-адрес абстрактно говоря, это URI, но не каждый URI является URL-адресом. И java.net.URL
делает странные вещи, например, проверяет равенство URL-адресов, преобразовывая имена хостов в IP-адреса (что, в первую очередь, противоречит RFC 3986 sec 6 и нарушает w виртуальных хостов). Я думаю, это просто означает, что стандартная библиотека Java имеет противоречивое поведение класса.
- person Andrew Janke; 11.03.2014
[
и ]
. RFC 3986 sec 3.2.2 говорит, что [IPv6 host address] - единственное место, где в синтаксисе URI разрешены символы квадратных скобок. Если вы используете их в нужном месте, java.net.URI
их примет. new java.net.URI("foo://[1080:0:0:0:8:800:200C:417A]/a/b")
у меня получилось на Java 1.7. "foo://example.com/a[b]"
ошибок. Это звучит в соответствии с RFC. Форма new URI("http", "example.com", "/a/b[c]!$&'()*+", null, null)
будет% -кодировать []
. То, что java.net.URL
принимает их в другом месте, звучит так, как будто делает меньше проверки.
- person Andrew Janke; 11.03.2014
urlparse.urlparse('http://blah.com/a[b')
и urlparse.parse_qsl('a=[',True,True)
должны терпеть неудачу, но не работают (обратите внимание, как я даже передал параметр strict на последнем). Я написал об этом в блоге здесь, где есть еще несколько релевантных ссылок: adamgent.com/post/25161273526/urls-are-not-a-subset-of-uris. Вы также должны знать, что все контейнеры сервлетов (которые я использовал) с радостью будут передавать вам URL-адреса с [
и ]
в пути.
- person Adam Gent; 11.03.2014
[
, ]
, называются неразумными, поэтому не следует. Я не могу найти, где говорится, что не следует для неразумного (возможно, более старая спецификация), но это определенно подразумевается.
- person Adam Gent; 12.03.2014
идентификатор URI и найти URL; однако локаторы также являются идентификаторами, поэтому каждый URL-адрес также является URI, но есть URI, которые не являются URL-адресами.
Это мое имя, это идентификатор. Это похоже на URI, но не может быть URL-адресом, так как ничего не сообщает вам о моем местонахождении или о том, как со мной связаться. В этом случае также случается идентифицировать как минимум 5 других людей только в США.
Это локатор, который является идентификатором этого физического местоположения. Это похоже на URL и URI (поскольку все URL являются URI), а также идентифицирует меня косвенно как житель ... В этом случае он однозначно идентифицирует меня, но это изменится, если я найду соседа по комнате.
Я говорю «нравится», потому что эти примеры не соответствуют требуемому синтаксису.
Из Википедии:
В вычислениях унифицированный указатель ресурса (URL) - это подмножество унифицированного идентификатора ресурса (URI), которое указывает, где идентифицированный ресурс доступен, и механизм его извлечения. В популярном использовании, а также во многих технических документах и устных обсуждениях он часто неправильно используется как синоним URI, ... [курсив мой]
Из-за этой распространенной путаницы многие продукты и документация неправильно используют один термин вместо другого, присваивают собственное различие или используют их как синонимы.
Мое имя, Роджер Пейт, могло бы быть похоже на URN (унифицированное имя ресурса), за исключением много более регламентированы и призваны быть уникальными в как пространстве, так и времени.
Поскольку в настоящее время я делюсь этим именем с другими людьми, оно не является уникальным в глобальном масштабе и не подходит для использования в качестве URN. Однако, даже если никакая другая семья не использовала это имя, я назван в честь моего деда по отцовской линии, поэтому оно все равно не будет уникальным во времени. И даже если это не было так, возможность назвать моих потомков после меня делает это непригодным в качестве URN.
URN отличаются от URL-адресов этим жестким ограничением уникальности, хотя оба они имеют синтаксис URI.
URNs are different from URLs in this rigid uniqueness constraint
Означает ли это, что URL-адреса не идентифицируют местоположение однозначно?
- person eugene; 11.07.2013
URI - это стандарт для идентификации документов с использованием короткой строки цифр, букв и символов. Они определены в RFC 3986 - унифицированный идентификатор ресурса (URI): общий синтаксис. URL-адреса, URN и URC - все это типы URI.
Содержит информацию о том, как получить ресурс из его местоположения. Например:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:[email protected]
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment
/other/link.html
(относительный URL-адрес, полезен только в контексте другого URL-адреса)URL-адреса всегда начинаются с протокола (http
) и обычно содержат такую информацию, как имя сетевого хоста (example.com
) и часто путь к документу (/foo/mypage.html
). URL-адреса могут иметь параметры запроса и идентификаторы фрагментов.
Определяет ресурс по уникальному и постоянному имени, но не обязательно сообщает вам, как найти его в Интернете. Обычно он начинается с префикса urn:
. Например:
urn:isbn:0451450523
, чтобы идентифицировать книгу по ее номеру ISBN.urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
глобальный уникальный идентификаторurn:publishing:book
- пространство имен XML, которое идентифицирует документ как тип книги.URN могут идентифицировать идеи и концепции. Они не ограничиваются документами, удостоверяющими личность. Когда URN действительно представляет документ, он может быть переведен в URL-адрес с помощью «преобразователя». Затем документ можно загрузить по URL-адресу.
Указывает на метаданные о документе, а не на сам документ. Примером URC является тот, который указывает на исходный HTML-код страницы, например: view-source:http://example.com/
Вместо того, чтобы размещать их в Интернете или давать им имена, данные можно помещать непосредственно в URI. Примером может быть data:,Hello%20World
.
В спецификации W3 для HTML говорится, что href
тега привязки a> может содержать URI, а не только URL. Вы должны иметь возможность ввести URN, например <a href="urn:isbn:0451450523">
. Затем ваш браузер преобразует этот URN в URL-адрес и загрузит книгу для вас.
Не знаю, но современный веб-браузер реализует схему URI данных.
Нет. И относительные, и абсолютные URL-адреса являются URL-адресами (и URI).
Нет. Оба URL-адреса с параметрами запроса и без них являются URL-адресами (и URI).
Нет. Оба URL-адреса с идентификаторами фрагментов и без них являются URL-адресами (и URI).
Нет. URL-адреса определены как строгое подмножество URI. Если синтаксический анализатор допускает использование символа в URL-адресе, но не в URI, в анализаторе есть ошибка. Спецификации подробно описывают, какие символы разрешены в каких частях URL-адресов и URI. Некоторые символы могут быть разрешены только в некоторых частях URL-адреса, но сами по себе символы не являются разницей между URL-адресами и URI.
да. W3C понял, что по этому поводу существует масса путаницы. Они выпустили документ с разъяснением URI, в котором говорится, что теперь можно использовать термины URL. и URI взаимозаменяемо (для обозначения URI). Больше нет смысла строго сегментировать URI на разные типы, такие как URL, URN и URC.
Определение URN теперь более расплывчатое, чем то, что я сказал выше. В последнем RFC по URI говорится, что любой URI теперь может быть URN (независимо от того, начинается с urn:
) до тех пор, пока он имеет «свойства имени». То есть: он глобально уникален и постоянен, даже когда ресурс перестает существовать или становится недоступным. Пример: URI, используемые в документах HTML, например http://www.w3.org/TR/html4/strict.dtd
. Этот URI продолжит называть переходный тип документа HTML4, даже если страница на веб-сайте w3.org будет удалена.
file://
. Хотя браузеры обычно обрабатывают пути к файлам без форматирования URL. Mozilla публикует свои тестовые примеры для URL-адресов файлов.
- person Stephen Ostermiller; 08.06.2015
В итоге: URI идентифицирует, URL идентифицирует и находит.
Рассмотрим конкретное издание пьесы Шекспира Ромео и Джульетта, цифровая копия которой есть у вас в домашней сети.
Вы можете идентифицировать текст как urn:isbn:0-486-27557-4
.
Это будет URI, а точнее URN *, потому что он дает название тексту.
Вы также можете идентифицировать текст как file://hostname/sharename/RomeoAndJuliet.pdf
.
Это также будет URI, но, в частности, URL, поскольку он определяет местонахождение текста.
* Единое имя ресурса
(Обратите внимание, что мой пример адаптирован из Википедии)
ISBN 0486275574
также называет текст и, таким образом, квалифицируется как URN. Я выбираю формат, который, как мне казалось, будет более знаком читателям.
- person Greg; 31.12.2009
Это несколько очень хорошо написанных, но длинных ответов. Разница в том, что касается CodeIgniter:
URL - http://example.com/some/page.html
URI - /some/page.html
Проще говоря, URL-адрес - это полный способ идентифицировать любой ресурс в любом месте и может иметь разные протоколы, такие как FTP, HTTP, SCP и т. Д.
URI - это ресурс в текущем домене, поэтому для его поиска требуется меньше информации.
В каждом случае, когда CodeIgniter использует слово URL или URI, это разница, о которой они говорят, хотя в общей схеме Интернета это не на 100% правильно.
/some/page.html
не является URI. Это относительная ссылка, которая является своего рода ссылкой на URI. В сочетании с базовым контекстом URI он может быть преобразован в URI, но сам по себе не является URI. См. раздел 4.1 RFC 3986. CodeIgniter, вероятно, неправильно использует термины, и это следует отметить; Q (в том виде, в котором он сейчас редактируется) не оформлен как специфичный для CodeIgniter.
- person Andrew Janke; 11.03.2014
$_SERVER['REQUEST_URI']
отличает это.
- person Matmarbon; 06.07.2014
/some/page.html
не является URI, тогда это определенно не URL - он недостаточно полный, чтобы я мог найти ресурс.
- person Kenney; 23.09.2014
Прежде всего избавьтесь от путаницы и упростите задачу, и вы все поймете.
URI => Uniform Resource Identifier Определяет полный адрес местоположения, имени или обоих ресурсов i-e.
URL => Единый указатель ресурса Определяет местонахождение ресурса.
URN => Uniform Resource Name Определяет имя ресурса.
Пример
У нас есть адрес https://www.google.com/folder/page.html где,
URI (унифицированный идентификатор ресурса) => https://www.google.com/folder/page.html
URL (унифицированный указатель ресурсов) => https://www.google.com/
URN (унифицированное имя ресурса) => /folder/page.html
URI => (URL + URN) или только URL или только URN
Небольшое дополнение к уже опубликованным ответам, вот диаграмма Венна, чтобы резюмировать теорию (из прекрасного объяснение):
И пример (также с сайта Prateek):
#posts
идентификатор фрагмента может быть частью URL
- person ruvim; 04.12.2014
Identity = имя с местоположением
Каждый URL (U niform R esource L ocator) является URI (U niform R strong> esource I dentifier), абстрактно говоря, но каждый URI не является URL-адресом. Существует еще одна подкатегория URI - URN (U niform R esource N ame), который является именованным ресурсом, но не указывает, как найти они, как mailto, news, ISBN - это URI. Источник
URN:
urn:[namespace identifier]:[namespace specific string]
arn:partition:service:region:account-id:resource
URL:
[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
Аналогия:
Чтобы связаться с человеком: вождение (протокол других SMS, электронная почта, телефон), адрес (имя хоста, другой номер телефона, адрес электронной почты) и имя человека (имя объекта с относительным путем) .
Это одна из самых запутанных и, возможно, не относящихся к делу тем, с которыми я сталкивался как веб-профессионал.
Насколько я понимаю, URI - это описание чего-то в принятом формате, которое может определять как уникальное имя (идентификацию), так и его местонахождение.
Есть два основных подмножества:
Я склонен думать, что URN похожи на GUID. Это просто стандартизованная методология предоставления уникальных имен вещам. Как и в декларативном пространстве имен, в котором используется название компании - это не значит, что на сервере где-то находится ресурс, соответствующий этой строке текста - он просто однозначно идентифицирует что-то.
Я также стараюсь полностью избегать термина URI и обсуждать вещи только в терминах URL или URN, если это необходимо, потому что это вызывает много путаницы. Вопрос, на который мы действительно должны попытаться ответить для людей, не столько в семантике, сколько в том, как определить при встрече с терминами, есть ли в них какое-либо практическое различие, которое изменит подход к ситуации программирования. Например, если кто-то поправляет меня в разговоре и говорит: «О, это не URL-адрес, это URI, я знаю, что они его полны». Если кто-то говорит, что мы используем URN для определения ресурса, я с большей вероятностью пойму, что мы только присваиваем ему уникальное имя, а не размещаем его на сервере.
Если я не на базе, пожалуйста, дайте мне знать!
redirect_url
вместо redirect_uri
, кому это было бы интересно?
- person ; 06.04.2015
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL-адреса - это подмножество URI (которые также содержат URN).
По сути, URI - это общий идентификатор, где URL-адрес указывает местоположение, а URN указывает имя.
[
и ]
, но не URI.
- person Adam Gent; 16.05.2013
Другой пример, который мне нравится использовать, когда я думаю об URI, - это атрибут xmlns XML-документа:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
В этом случае com.mycompany.mynode будет URI, который однозначно идентифицирует пространство имен myPrefix для всех элементов, которые его используют в моем XML-документе. Это НЕ URL-адрес, потому что он используется только для идентификации, а не для поиска чего-либо как такового.
Это одно и то же. URI - это обобщение URL-адреса. Первоначально планировалось разделить URI на URL-адреса (адреса) и URN (имена), но тогда не было большой разницы между URL-адресом и URI, а http-URI использовались в качестве пространств имен, даже если они фактически не находили никаких ресурсов.
Из-за трудностей с четким различением URI и URL, насколько я помню, W3C больше не делает различий между URI и URL (http://www.w3.org/Addressing/).
URI, URL, URN
Как показано на изображении выше, здесь задействованы три различных компонента. При обсуждении подобных вопросов обычно лучше обратиться к источнику, поэтому вот выдержка из Tim Berners-Lee, et. al. в RFC 3986: унифицированный идентификатор ресурса (URI): общий синтаксис:
Унифицированный идентификатор ресурса (URI) - это компактная последовательность символов, которая идентифицирует абстрактный или физический ресурс.
URI можно дополнительно классифицировать как указатель, имя или и то, и другое. Термин «унифицированный указатель ресурса» (URL) относится к подмножеству URI, которые, помимо идентификации ресурса, предоставляют средства определения местоположения ресурса путем описания его основного механизма доступа (например, его сетевого «местоположения»).
URI - это своего рода суперкласс URL-адресов и URN. В Википедии есть прекрасная статья о них со ссылками на нужный набор RFC.
Википедия предоставит всю необходимую информацию здесь. Цитата из http://en.wikipedia.org/wiki/URI:
URL-адрес - это URI, который, помимо идентификации ресурса, предоставляет средства воздействия на ресурс или получения его представления путем описания его основного механизма доступа или сетевого «местоположения».
URL
URL-адрес - это специализация URI, которая определяет сетевое расположение определенного ресурса. В отличие от URN, URL-адрес определяет, как можно получить ресурс. Мы используем URL-адреса каждый день в виде http://example.com
и т. Д. Но URL-адрес не обязательно должен быть URL-адресом HTTP, он также может быть ftp://example.com
и т. Д.
URI
URI идентифицирует ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас использует URI, которые определяют местоположение ресурса. На мой взгляд, тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице. URI имеет две специализации, известные как URL и URN.
Разница между URL и URI
URI - это идентификатор некоторого ресурса, но URL-адрес дает вам конкретную информацию о том, как получить этот ресурс. URI - это URL-адрес, и, как заметил один из комментаторов, теперь считается неправильным использовать URL-адрес при описании приложений. Как правило, если URL-адрес описывает как расположение, так и имя ресурса, следует использовать термин URI. Поскольку это, как правило, случай, с которым большинство из нас сталкивается каждый день, URI - правильный термин.
URI идентифицирует ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас использует URI, которые определяют местоположение ресурса. На мой взгляд, тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице. URI имеет две специализации, известные как URL и URN.
URL-адрес - это специализация URI, которая определяет сетевое расположение определенного ресурса. В отличие от URN, URL-адрес определяет, как можно получить ресурс. Мы используем URL-адреса каждый день в виде http://stackoverflow.com и т. Д. Но URL-адрес не обязательно должен быть URL-адресом HTTP, это может быть ftp://example.com
и т. д.
Согласно RFC 3986, URI состоят из следующих частей:
scheme://authority/path?query
URI описывает протокол доступа к ресурсу (путь) или приложению (запрос) на сервере (полномочия).
Все URL-адреса являются URI, и все URN являются URI, но все URI не являются URL-адресами.
Пожалуйста, обратитесь для получения более подробной информации:
Хотя термины URI и URL строго определены, многие используют эти термины для других целей, чем они определены.
Возьмем, к примеру, Apache. Если http://example.com/foo запрашивается с сервера Apache, у вас будут следующие переменные среды установленный:
REDIRECT_URL
: /foo
REQUEST_URI
: /foo
При включенном mod_rewrite у вас также будут следующие переменные:
REDIRECT_SCRIPT_URL
: /foo
REDIRECT_SCRIPT_URI
: http://example.com/foo
SCRIPT_URL
: /foo
SCRIPT_URI
: http://example.com/foo
Это могло быть причиной некоторой путаницы.
См. этот документ. Конкретно,
URL - это тип URI, который идентифицирует ресурс через представление его основного механизма доступа (например, его сетевое «местоположение»), а не через некоторые другие атрибуты, которые он может иметь.
На самом деле, это не очень четкий термин.
Прочитав сообщения, я нахожу очень важные комментарии. Короче говоря, путаница между определениями URL и URI частично основана на том, какое определение зависит от того, от какого, а также на неформальном использовании слова URI при разработке программного обеспечения.
По определению URL - это подмножество URI [RFC2396]. URI содержит URN и URL. И URI, и URL-адрес имеют свой собственный синтаксис, который присваивает им статус URI или URL-адреса. URN предназначены для уникальной идентификации ресурса, а URL-адреса - для поиска ресурса. Обратите внимание, что у ресурса может быть несколько URL-адресов, но только один URN. [RFC2611]
Как веб-разработчики и программисты мы почти всегда будем иметь дело с URL-адресом и, следовательно, с URI. Теперь URL-адрес специально определен для того, чтобы иметь схему всех частей: конкретная часть схемы, например, https://stackoverflow.com/questions. Это URL-адрес, а также URI. Теперь рассмотрим относительную ссылку, встроенную в страницу, например ../index.html. Это уже не URL-адрес по определению. Это все еще то, что называется «URI-ссылкой» [RFC2396].
Я считаю, что когда слово URI используется для обозначения относительных путей, на самом деле имеется в виду «ссылка на URI». Таким образом, неформально программные системы используют URI для ссылки на относительный путь и URL для абсолютного адреса. Таким образом, в этом смысле относительный путь больше не является URL-адресом, но по-прежнему является URI.
Вот мое упрощение:
URN: уникальное имя ресурса, то есть "что" (например, urn: issn: 1234-5678). Это должно быть уникальным ... поскольку никакие два разных документа не могут иметь одну и ту же урну. Немного похоже на "uuid"
URL: "где" его найти (например, https://google.com/pub?issnid=1234-5678 .. или ftp://somesite.com/doc8.pdf)
URI: может быть URN или URL. Это нечеткое определение стало возможным благодаря RFC 3986, разработанному W3C и IETF.
Определение URI изменилось с годами, поэтому для большинства людей имеет смысл запутаться. Однако теперь вы можете утешиться тем, что можете ссылаться на http://somesite.com/something как на либо URL-адрес, либо URI ... и вы будете правы в любом случае (по крайней мере, пока ...)
Мне было интересно примерно то же самое, и я нашел это: http://docs.kohanaphp.com/helpers/url.
Вы можете увидеть наглядный пример, используя метод url::current()
. Если у вас есть этот URL: http://example.com/kohana/index.php/welcome/home.html?query=string
, то при использовании url:current()
вы получите URI, который, согласно документации, выглядит следующим образом: welcome / home
Чтобы ответить на этот вопрос, я опираюсь на ответ, который я изменил на другой вопрос. Хорошим примером URI является то, как вы идентифицируете ресурс Amazon S3. Давайте:
s3://www-example-com/index.html
[рис. 1]
который я создал как кешированную копию
http://www.example.com/index.html
[рис. 2]
в центре обработки данных Amazon S3-US-West-2.
Даже если StackOverflow позволит мне сделать гиперссылку на s3://
протокол s>, это не поможет вам найти ресурс. Поскольку он идентифицирует ресурс, рис. 1 - действительный URI. Это также действительный URN, потому что Amazon требует, чтобы корзина (их термин для authority
части URI) была уникальной для всех центров обработки данных. Его полезно найти, но он не указывает центр обработки данных. Поэтому он не работает как URL.
Итак, чем в этом случае отличаются URI, URL и URN?
ПРИМЕЧАНИЕ. RFC 3986 определяет URI как scheme://authority/path?query#fragment
.
URI возникли из-за необходимости идентифицировать ресурсы в Интернете, и другие ресурсы Интернета, такие как электронные почтовые ящики, единообразным и последовательным образом. Таким образом, можно ввести новый тип URI widget: для идентификации ресурсов widget или использовать URI tel:, чтобы веб-ссылки вызывали телефонные звонки производиться при вызове.
Некоторые URI предоставляют информацию для поиска ресурса (например, имя хоста DNS и путь на этом компьютере), а некоторые используются как чистые имена ресурсов. URL зарезервирован для идентификаторов, которые являются указателями ресурсов, включая URL-адреса http, такие как http://stackoverflow.com, который определяет веб-страница по заданному пути на хосте. Другой пример - URL-адреса mailto, такие как mailto: [email protected], который идентифицирует почтовый ящик по данному адресу.
URN - это URI, которые используются как чистые имена ресурсов, а не как указатели. Например, URI: mid: [email protected] - это URN, который идентифицирует сообщение электронной почты, содержащее его в поле «Message-Id». URI служит для отличия этого сообщения от любого другого сообщения электронной почты. Но он сам по себе не предоставляет адрес сообщения ни в одном магазине.
Лучшее (техническое) резюме imo - это
IRI, URI, URL, URN и их отличия от Яна Мартина Кейла:
Каждый, кто имеет дело с Семантической сетью, постоянно сталкивается с терминами IRI, URI, URL и URN. Тем не менее, я часто замечаю некоторую путаницу в их точном значении. И, конечно же, это заметили и другие (см., Например, RFC3305 или поиск в Google). Если честно, я даже сам вначале запутался. Но на самом деле вопрос не такой уж и сложный. Давайте посмотрим на определения упомянутых терминов, чтобы увидеть, в чем различия:
Универсальный идентификатор ресурса - это компактная последовательность символов, которая идентифицирует абстрактный или физический ресурс. Набор символов ограничен US-ASCII, за исключением некоторых зарезервированных символов. Символы вне набора разрешенных символов могут быть представлены с использованием процентного кодирования. URI может использоваться как указатель, имя или и то, и другое. Если URI является указателем, он описывает основной механизм доступа к ресурсу. Если URI - это имя, он идентифицирует ресурс, давая ему уникальное имя. Точные спецификации синтаксиса и семантики URI зависят от используемой схемы, которая определяется символами перед первым двоеточием. [RFC3986]
Унифицированное имя ресурса - это URI в урне схемы, предназначенный для использования в качестве постоянного, не зависящего от местоположения идентификатора ресурса. Исторически этот термин также относился к любому URI. [RFC3986] URN состоит из идентификатора пространства имен (NID) и специальной строки пространства имен (NSS): urn :: Синтаксис и семантика NSS специфичны для каждого NID. Помимо зарегистрированных NID, существует еще несколько NID, которые не прошли официальную регистрацию. [RFC2141]
Унифицированный указатель ресурса - это URI, который, помимо идентификации ресурса, предоставляет средства поиска ресурса путем описания его основного механизма доступа [RFC3986]. Поскольку не существует точного определения URL с помощью набора схем, «URL - полезная, но неформальная концепция», обычно относящаяся к подмножеству URI, которые не содержат URN [RFC3305].
Интернационализированный идентификатор ресурса определяется аналогично URI, но набор символов расширяется до универсального кодированного набора символов. Следовательно, он может содержать любые латинские и нелатинские символы, кроме зарезервированных символов. Вместо расширения определения URI был введен термин IRI, чтобы учесть четкое различие и избежать несовместимости. IRI предназначены для замены URI при идентификации ресурсов в ситуациях, когда поддерживается универсальный набор кодированных символов. По определению каждый URI - это IRI. Кроме того, существует определенное сюръективное сопоставление IRI с URI: каждый IRI может быть сопоставлен точно с одним URI, но разные IRI могут отображаться на один и тот же URI. Следовательно, обратное преобразование из URI в IRI может не дать исходный IRI. [RFC3987]
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 = ∅)
RDF явно позволяет использовать IRI для именования объектов [RFC3987]. Это означает, что мы можем использовать почти каждый символ в именах сущностей. С другой стороны, нам часто приходится иметь дело с программным обеспечением раннего состояния. Таким образом, маловероятно, что возникнут проблемы с использованием символов, отличных от ASCII. Поэтому я предлагаю избегать имен объектов, отличных от URI, и рекомендовать использовать http URI [LINKED-DATA]. Короче говоря: используйте только URL-адреса для именования своих сущностей. Конечно, мы можем ссылаться на существующие сущности, названные URN. Однако нам следует избегать создания новых идентификаторов такого типа.
Легко объяснить:
Предположим следующее
URI - это ваше имя
URL - это ваш адрес с вашим именем для связи с вами.
меня зовут лойола
Лойола - это URI
мой адрес TN, Ченнаи 600001.
TN, Ченнаи 600 001, Лойола - URL
Надеюсь, вы понимаете,
Теперь давайте посмотрим на точный пример
http://www.google.com/fistpage.html
в приведенном выше примере вы можете связаться со страницей с именем firstpage.html (URI), используя следующую команду http://www.google.com/fistpage.html (URL).
Следовательно, URI - это подмножество URL, но не наоборот.
Я нашел:
Единый идентификатор ресурса (URI) представляет собой некоторую общую картину. Вы можете разделить URI / URI, которые могут быть классифицированы как локаторы (унифицированные указатели ресурсов - URL), или как имена (единое имя ресурса - URN), или и то, и другое. Таким образом, URN функционирует как имя человека, а URL-адрес отображает адрес этого человека. Короче говоря, URN определяет идентичность элемента, в то время как URL-адрес определяет метод его поиска, наконец, инкапсулируя эти две концепции, является URI
Ответ неоднозначный. В Java это часто используется таким образом:
Унифицированный указатель ресурса (URL) - это термин, используемый для идентификации интернет-ресурса, включая схему (http, https, ftp, новости и т. Д.). Например, В чем разница между URI, URL-адресом и URN?
Универсальный идентификатор ресурса (URI) используется для идентификации одного документа на веб-сервере: например, / questions / 176264 / whats-the-difference-between-a-uri-and-a-url.
В сервлетах Java URI часто ссылается на документ без контекста веб-приложения.
Не забывайте URN. URI и URL-адреса являются URN. URL-адреса имеют местоположение:
URI: foo
URL: http://some.domain.com/foo
URL: http://some.domain.com:8080/foo
URL: ftp://some.domain.com/foo
Все они URN.
URL
- это то, что пользователь будет использовать для перехода к местоположению (независимо от того, вводится ли он вручную или копируется / вставляется), тогда какURI
- это интерпретация оригиналаURL
на стороне сервера. Но, судя по всему, это еще не все, как описано в многочисленных ответах. - person Jerry Dodge   schedule 19.08.2014( URIs ( URLs ) )
- person icc97   schedule 13.11.2014