Люди говорят об URL-адресах , URI- адресах и URN- адресах , как будто это разные вещи, но они выглядят одинаково невооруженным глазом.
Каковы различия между ними?
( URIs ( URLs ) )
Люди говорят об URL-адресах , URI- адресах и URN- адресах , как будто это разные вещи, но они выглядят одинаково невооруженным глазом.
Каковы различия между ними?
( URIs ( URLs ) )
Ответы:
Из RFC 3986 :
URI может быть далее классифицирован как локатор, имя или оба. Термин «унифицированный указатель ресурса» (URL) относится к подмножеству URI, которые, помимо идентификации ресурса, предоставляют средства для определения местоположения ресурса путем описания его основного механизма доступа (например, его «местоположение» в сети). Термин «Унифицированное имя ресурса» (URN) исторически использовался для ссылки на оба URI в схеме «urn» [RFC2141] , которые должны оставаться глобально уникальными и постоянными, даже когда ресурс перестает существовать или становится недоступным, и к любому другому URI со свойствами имени.
Таким образом, все URL-адреса являются URI (на самом деле не совсем - см. Ниже), а все URN являются URI - но URN и URL-адреса разные, поэтому нельзя сказать, что все URI являются URL-адресами.
РЕДАКТИРОВАТЬ: Ранее я думал, что все URL-адреса являются действительными URI, но в соответствии с комментариями:
Не «все URL являются URI». Это зависит от толкования RFC. Например, в Java парсер URI не нравится
[
или,]
и это потому, что спецификация говорит «не должен» и не «не должен».
Так что мутит воду дальше, к сожалению.
Если вы еще не прочитали ответ Роджера Пейта , я бы посоветовал сделать то же самое .
[
или, ]
и это потому, что спецификация говорит «не должен» и не «не должен».
java.net.URI
документ говорит "каждый URL является URI, абстрактно говоря, но не каждый URI является URL". И java.net.URL
делает странные вещи, такие как проверка равенства URL-адресов путем преобразования имен хостов в IP-адреса (что, в первую очередь, противоречит RFC 3986 sec 6 и разбивает w виртуальных хостов). Я думаю, это просто означает, что стандартная библиотека Java имеет некоторое противоречивое поведение классов.
URI S идентифицировать и URL s местонахождение ; однако локаторы также являются идентификаторами , поэтому каждый URL-адрес также является URI, но существуют URI, которые не являются URL-адресами.
Это мое имя, которое является идентификатором. Это похоже на URI, но не может быть URL-адресом, так как ничего не говорит о моем местоположении или о том, как связаться со мной. В этом случае также случается идентифицировать по крайней мере 5 других людей только в США.
Это локатор, который является идентификатором для этого физического местоположения. Это как URL и URI (так как все URL являются URI), а также косвенно идентифицирует меня как «резидент ..». В этом случае он однозначно идентифицирует меня, но это изменится, если я получу соседа по комнате.
Я говорю «нравится», потому что эти примеры не соответствуют требуемому синтаксису.
Из Википедии :
В вычислениях унифицированный указатель ресурса (URL) является подмножеством унифицированного идентификатора ресурса (URI), который указывает, где идентифицированный ресурс доступен и механизм его получения. В популярном использовании и во многих технических документах и устных обсуждениях это часто неправильно используется как синоним URI , ... [выделение мое]
Из-за этой общей путаницы многие продукты и документация неправильно используют один термин вместо другого, присваивают свое собственное различие или используют их как синонимы.
Мое имя, Роджер Пэйт, может быть похоже на URN (Uniform Resource Name), за исключением того, что оно гораздо более регламентировано и должно быть уникальным как в пространстве, так и во времени.
Поскольку в настоящее время я разделяю это имя с другими людьми, оно не является уникальным в глобальном масштабе и не подходит для использования в качестве URN. Однако, даже если никакая другая семья не использовала это имя, меня назвали в честь моего деда по отцовской линии, так что оно не было бы уникальным во времени. И даже если бы это было не так, возможность именования моих потомков после меня делает это неприемлемым в качестве URN.
URN отличаются от URL-адресов в этом жестком ограничении уникальности, даже если они оба имеют общий синтаксис URI.
URNs are different from URLs in this rigid uniqueness constraint
Означает ли это, что URL не идентифицируют однозначно местоположение?
URI - это стандарт идентификации документов с использованием короткой строки из цифр, букв и символов. Они определены в RFC 3986 - Унифицированный идентификатор ресурса (URI): общий синтаксис . URL, URN и URC - это все типы URI.
Содержит информацию о том, как извлечь ресурс из его местоположения. Например:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:user@example.com
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
тег привязки может содержать 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 .
mailto:user@example.com
в качестве URL, но другой ответ ниже говорит, что это URN? Какой правильный? Это и URN, и URL?
В итоге: URI идентифицирует, URL идентифицирует и находит.
Рассмотрим конкретный выпуск пьесы Шекспира « Ромео и Джульетта» , цифровая копия которого у вас есть в домашней сети.
Вы можете идентифицировать текст как urn:isbn:0-486-27557-4
.
Это будет URI, а точнее URN *, потому что он называет текст .
Вы также можете идентифицировать текст как file://hostname/sharename/RomeoAndJuliet.pdf
.
Это также будет URI, но более конкретно URL, потому что он находит текст .
* Единое название ресурса
(Обратите внимание, что мой пример адаптирован из Википедии )
ISBN 0486275574
текст также называется и, следовательно, квалифицируется как URN. Я выбираю формат, который, по моему мнению, был бы более знакомым для читателей.
Это некоторые очень хорошо написанные, но многословные ответы. Вот разница, что касается 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.
Прежде всего выведите свой разум из смятения и примите это просто, и вы поймете.
URI => Универсальный идентификатор ресурса Идентифицирует полный адрес ресурса, т.е. местоположение, имя или оба.
URL => Унифицированный указатель ресурса Идентифицирует местоположение ресурса.
URN => Унифицированное имя ресурса Идентифицирует имя ресурса
пример
У нас есть адрес 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
Это одна из самых запутанных и, возможно, нерелевантных тем, с которыми я сталкивался как веб-профессионал.
Насколько я понимаю, URI - это описание чего-то, следующего за принятым форматом, которое может определять как уникальное имя (идентификацию) чего-либо, так и его местоположение.
Существует два основных подмножества: URL-адреса, которые определяют местоположение (особенно для браузера, пытающегося найти веб-страницу) и URN, которые определяют уникальное имя чего-либо.
Я склонен считать, что URN похожи на GUID. Это просто стандартизированная методология предоставления уникальных названий вещей. Как и в декларативном пространстве имен, в котором используется название компании - не то, чтобы где-то на сервере находился ресурс, соответствующий этой строке текста, - он просто однозначно идентифицирует что-то.
Я также склоняюсь к тому, чтобы полностью избегать термина URI и обсуждать вещи только с точки зрения URL или URN, в зависимости от обстоятельств, потому что это вызывает так много путаницы. Вопрос, на который мы действительно должны попытаться ответить для людей, заключается не столько в семантике, сколько в том, как определить при столкновении с терминами, есть ли в них какое-либо практическое различие, которое изменит подход к ситуации программирования. Например, если кто-то исправляет меня в разговоре и говорит: «О, это не URL, а URI», я знаю, что он полон. Если кто-то скажет «мы используем URN для определения ресурса», я с большей вероятностью пойму, что мы называем его только уникально, а не размещаем его на сервере.
Если я далеко от базы - пожалуйста, дайте мне знать!
redirect_url
вместо этого использовался Google API redirect_uri
, кому-нибудь было бы интересно?
Идентичность = имя с местоположением
Каждый URL ( U niform R esource L ocator) является URI ( U niform R esource I dentifier), абстрактно говоря, но каждый URI не является URL. Существует еще одна подкатегория URI является URN ( U niform R esource N AME), который является именованным ресурсом , но не указывается , как найти их, как MAILTO, новости, ISBN является URI. Источник
URN:
urn:[namespace identifier]:[namespace specific string]
arn:partition:service:region:account-id:resource
URL:
[scheme]://[Domain][Port]/[path]?[queryString]#[fragmentId]
Аналогия:
для связи с человеком: управление автомобилем (протокол других SMS, электронная почта, телефон), адрес (имя хоста, другой номер телефона, emailid) и имя человека (имя объекта с относительным путем).
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL являются подмножеством URI (которые также содержат URN).
По сути, URI - это общий идентификатор, где URL указывает местоположение, а URN - имя.
[
и , ]
но не в URI.
Другой пример, который мне нравится использовать, когда я думаю о 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, насколько я помню, W3C больше не делает различий между URI и URL ( http://www.w3.org/Addressing/ ).
Это одно и то же . URI - это обобщение URL. Первоначально URI планировалось разделить на URL-адреса (адреса) и URN-ы (имена), но тогда между URL-адресом и URI было мало различий, а http-URI использовались в качестве пространств имен, хотя на самом деле они не находили никаких ресурсов.
URI, URL, URN
Как показано на рисунке выше, здесь есть три отдельных компонента. Обычно лучше всего обратиться к источнику при обсуждении подобных вопросов, так что вот отрывок из Тим Бернерс-Ли и др. и др. в RFC 3986: унифицированный идентификатор ресурса (URI): общий синтаксис:
Унифицированный идентификатор ресурса (URI) - это компактная последовательность символов, которая идентифицирует абстрактный или физический ресурс.
URI может быть далее классифицирован как локатор, имя или оба. Термин «унифицированный указатель ресурса» (URL) относится к подмножеству URI, которые, в дополнение к идентификации ресурса, предоставляют средство определения местоположения ресурса путем описания его основного механизма доступа (например, его «местоположение» в сети).
URI - это своего рода суперкласс URL и URN. В Wikipedia есть хорошая статья о них со ссылками на правильный набор RFC.
Википедия предоставит всю необходимую вам информацию здесь. Цитата из http://en.wikipedia.org/wiki/URI :
URL-адрес - это URI, который, в дополнение к идентификации ресурса, предоставляет средства воздействия или получения представления ресурса путем описания его основного механизма доступа или сетевого «местоположения».
URL
URL - это специализация URI, которая определяет сетевое местоположение определенного ресурса. В отличие от URN, URL-адрес определяет способ получения ресурса. Мы используем URL-адреса каждый день в форме http://example.com
и т. Д. Но URL-адрес не обязательно должен быть HTTP-URL, он также может быть ftp://example.com
и т. Д.
URI
URI идентифицирует ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас используют URI, которые определяют местоположение ресурса. На мой взгляд, тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице. URI имеет две специализации, известные как URL и URN.
Разница между URL и URI
URI - это идентификатор какого-либо ресурса, но URL дает вам конкретную информацию о том, как получить этот ресурс. URI - это URL, и, как отметил один из комментаторов, теперь считается неправильным использовать URL при описании приложений. Как правило, если URL-адрес описывает местоположение и имя ресурса, используется термин URI. Поскольку это, как правило, большинство из нас встречает каждый день, URI является правильным термином.
Согласно RFC 3986 , URI состоят из следующих частей:
scheme://authority/path?query
URI описывает протокол для доступа к ресурсу ( пути ) или приложению ( запросу ) на сервере ( полномочия ).
Все URL-адреса являются URI, и все URN являются URI, но все URI не являются URL-адресами.
Пожалуйста, обратитесь за более подробной информацией:
URI идентифицирует ресурс либо по местоположению, либо по имени, либо по обоим. Чаще всего большинство из нас используют URI, которые определяют местоположение ресурса. На мой взгляд, тот факт, что URI может идентифицировать ресурсы как по имени, так и по местоположению, привел к большой путанице. URI имеет две специализации, известные как URL и URN.
URL - это специализация URI, которая определяет сетевое местоположение определенного ресурса. В отличие от URN, URL-адрес определяет способ получения ресурса. Мы используем URL-адреса каждый день в форме http://stackoverflow.com и т. Д. Но URL-адрес не обязательно должен быть HTTP-URL, это может быть ftp://example.com
и т. Д.
Хотя термины URI и URL-адреса строго определены, многие используют термины для других целей, для которых они не определены.
Давайте возьмем Apache для примера. Если с сервера Apache запрашивается http://example.com/foo , у вас будут установлены следующие переменные среды:
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 возникли из-за необходимости идентифицировать ресурсы в сети и другие интернет-ресурсы, такие как электронные почтовые ящики, единообразно и согласованно. Таким образом, можно ввести новый тип виджета: URI для идентификации ресурсов виджета или использовать tel: URI, чтобы веб-ссылки вызывали телефонные звонки при вызове.
Некоторые URI предоставляют информацию для определения местоположения ресурса (например, имя хоста DNS и путь на этом компьютере), а некоторые используются как чистые имена ресурсов. URL зарезервирован для идентификаторов , которые являются локаторы ресурсов , в том числе «HTTP» URL , такие как http://stackoverflow.com , который идентифицирует веб - страницу , на данном пути на хосте. Другой пример - это URL-адреса mailto, например mailto: fred@mail.org. , который идентифицирует почтовый ящик по указанному адресу.
URN - это URI, которые используются как чистые имена ресурсов, а не как локаторы. Например, URI: mid: 0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com - это URN, который идентифицирует сообщение электронной почты, содержащее его, в своем поле «Message-Id». URI служит для того, чтобы отличить это сообщение от любого другого сообщения электронной почты. Но он не предоставляет адрес сообщения в любом магазине.
Чтобы ответить на этот вопрос, я опираюсь на ответ, который я изменил на другой вопрос . Хороший пример URI - это способ определения ресурса Amazon S3. Давайте принимать:
s3://www-example-com/index.html
[инжир. 1]
который я создал как кешированную копию
http://www.example.com/index.html
[инжир. 2]
в дата- центре Amazon S3-US-West-2 .
Даже если StackOverflow позволит мне гиперссылку на s3://
протокол схему , это не поможет вам найти ресурс. Потому что Идентифицирует на ресурс , рис. 1 является действительным URI. Это также действительный URN, поскольку Amazon требует, чтобы сегмент (их термин для authority
части URI) был уникальным для центров обработки данных. Это помогает найти его, но не указывает на центр обработки данных. Поэтому он не работает как URL.
Итак, чем же отличаются URI, URL и URN в этом случае?
ПРИМЕЧАНИЕ. RFC 3986 определяет URI какscheme://authority/path?query#fragment
Легко объяснить:
Предположим следующее
URI - это ваше имя
URL - это ваш адрес с вашим именем для связи с вами.
меня зовут лойола
Лойола это URI
мой адрес TN, Ченнаи 600001.
TN, Chennai 600 001, Loyola является URL
Надеюсь, вы понимаете,
Теперь давайте посмотрим на точный пример
http://www.google.com/fistpage.html
в приведенном выше примере вы можете общаться со страницей под названием firstpage.html ( URI ), используя следующий http://www.google.com/fistpage.html ( URL ).
Следовательно, URI является подмножеством URL, но не наоборот.
Унифицированный идентификатор ресурса (URI) - это строка символов, которая идентифицирует интернет-ресурс.
Наиболее распространенный URI - это унифицированный указатель ресурса (URL), который идентифицирует адрес интернет-домена. Другой, не очень распространенный тип URI - это универсальное имя ресурса (URN).
Я нашел:
Унифицированный идентификатор ресурса (URI) представляет собой нечто общее. Вы можете разделить URI / URI можно классифицировать как локаторы (унифицированные указатели ресурсов - URL), или как имена (унифицированное имя ресурса - URN), или и то, и другое. Таким образом, в основном, URN функционирует как имя человека, а URL отображает адрес этого человека. Короче говоря, URN определяет идентификатор элемента, а URL-адрес определяет метод его поиска, и, наконец, инкапсуляция этих двух понятий - это URI.
Лучшее (техническое) резюме ИМО это
IRI, URI, URL, URN и их отличия от Яна Мартина Кейла:
Каждый, кто имеет дело с семантической сетью, постоянно сталкивается с терминами IRI , URI. , URL и URN . Тем не менее, я часто замечаю, что существует некоторая путаница относительно их точного значения. И, конечно, другие тоже это заметили (см., Например, RFC3305 или поиск в Google). Честно говоря, я даже запутался в самом начале. Но на самом деле проблема не так сложна. Давайте посмотрим на определения упомянутых терминов, чтобы увидеть, в чем различия:
Унифицированный идентификатор ресурса представляет собой компактную последовательность символов , которая определяет абстрактный или физический ресурс. Набор символов ограничен US-ASCII, за исключением некоторых зарезервированных символов. Символы вне набора разрешенных символов могут быть представлены с использованием Percent-Encoding. URI может использоваться в качестве локатора, имени или обоих. Если URI является локатором, он описывает механизм первичного доступа ресурса. Если URI является именем, он идентифицирует ресурс, присваивая ему уникальное имя. Точные спецификации синтаксиса и семантики URI зависят от используемой схемы, которая определяется символами перед первым двоеточием. [RFC3986]
Uniform Resource Name является URI , в схеме урны предназначены для использования в качестве постоянного, независимые от расположения, идентификатор ресурса. Исторически термин также относится к любому URI. [RFC3986] URN состоит из идентификатора пространства имен (NID) и строки, специфичной для пространства имен (NSS): urn :: Синтаксис и семантика NSS специфичны для каждого NID. Помимо зарегистрированных NID, существует еще несколько NID, которые не прошли официальный процесс регистрации. [RFC2141]
Унифицированный указатель информационного ресурса является URI , который, в дополнение к идентификации ресурса, обеспечивает средство определения местоположения ресурса путем описания основного механизма доступа [RFC3986]. Поскольку нет точного определения URL с помощью набора схем, «URL - это полезная, но неформальная концепция», обычно ссылающаяся на подмножество URI, которые не содержат URN [RFC3305].
Интернационализированный идентификатор ресурса определяется аналогично с URI, но набор символов распространяется на Character Set Универсальный кодированный. Следовательно, он может содержать любые латинские и нелатинские символы, кроме зарезервированных символов. Вместо расширения определения 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. Однако мы должны избегать нового создания идентификаторов такого рода.