Распутывание URI, URL и URN

Автор статьи: Дэн Коннолли (dan connol)
Сайт Автора: stfw.ru
E-mail Автора: нет
Дата публикации: 15.03.2006

В области управления информацией существует устойчивое противоречие между постоянством и доступностью.
В области управления информацией существует устойчивое противоречие между постоянством и доступностью. Это противоречие привело к появлению отдельных технологий для унифицированных имен ресурсов (uniform resource names - urn) и унифицированных указателей информационных ресурсов (uniform resource locators - url). При этом универсальные идентификаторы ресурсов (uniform resource identifiers - uri) созданы для того, чтобы выполнять функции и постоянных имен, и доступных ресурсов. В предлагаемой ниже статье объясняется, как использовать современные стандарты uri с xml-технологиями, рассказывается об истории urn и url и дается прогноз развития противоречий между постоянством и доступностью.
Присвоение имен и проблема постоянства

Интернет включает три вида технологий: форматы данных, протоколы и указатели, которые связывают первые два элемента. Связь между такими форматами данных, как xml и html, достаточно очевидна, также как и между протоколами http и ftp. Но с указателями дело обстоит несколько сложнее.

Еще лет десять назад интернет-адреса были довольно загадочным предметом, а сегодня их можно видеть уже не только в web-браузерах, но и на визитках и в брошюрах, на рекламных щитах и автобусах и даже на футболках. Они известны под названием унифицированных указателей информационных ресурсов или url. Обычно они выглядят следующим образом: http://www.cisco.com/en/us/partners/index.html. Но как быть с более короткой формой, например, www.yahoo.com/sports? Является ли она также url? А ../noarch/config.xsd? Или guide/glossary#octothorpe?

Для того чтобы правильно использовать url в пространствах имен и схемах xml, а также в расширяемом языке преобразования стилей (extensible stylesheet language transformations - xslt), нужно знать некоторые правила. Но семейство спецификаций xml оперирует такими понятиями, как uri и urn. Чем же они отличаются от url? Этот вопрос имеет довольно долгую историю.

В 1990 г. пионер компьютерных сетей и гипертекста Дуглас Энгелбарт (douglas engelbart) среди прочих требований к открытой системе гипердокументов называл и необходимость того, чтобы "каждый объект, на который кто-либо захочет или должен будет сослаться, имел однозначный адрес". Тим Бёнез-Ли (tim berners-lee), изобретатель интернета, в 1991 г. указывал в своем конструкторском документе о присвоении имен: "Синтаксис имени, по которому документ или его часть (якорь) могут быть найдены в любой точке мира, - это, вероятно, наиболее важный аспект проектирования и стандартизации в открытых гипертекстовых системах".

В предлагаемой статье обсуждаются современное положение дел в технологии присвоения имен и стандартизации для интернета, а также некоторые вопросы истории и эволюции терминологии. В заключении приводится обзор перспектив в области присвоения имен в сфере управления информацией.
Стандарт uri

Документ rfc3986, "Универсальный идентификатор ресурсов (uri): общий синтаксис" - это стандарт интернета. Так называемая серия "Запросы на комментарии" (request for comments - rfc) - это известная серия архивных документов, которая является основой процесса разработки стандартов в Проблемной группе проектирования internet (internet engineering task force - ietf). Только несколько из тысяч документов rfc, такие как протокол управления передачей (transmission control protocol - tcp) и почтовый формат (rfc821) и протокол (rfc822) интернета получили полный статус стандартов интернета. rfc3986 получил этот статус в январе 2005 г.

Согласно стандарту uri, первый из вышеприведенных примеров - http://www.cisco.com/en/us/partners/index.html является настоящим uri и включает несколько составляющих его частей:
имя схемы (http);
имя домена (www.cisco.com);
путь (/en/us/partners/index.html).

Непротиворечивый процесс ietf управляет схемами. Официальный реестр схем uri Агентства по выделению имен и уникальных параметров протоколов internet (internet assigned numbers authority - iana) включает как общеизвестные схемы, такие как http, https и mailto, так и множество других, менее знакомых широкому кругу пользователей.

uri-путь выглядит как типичный путь доступа к файлу. uri унаследовали левую косую черту (a/b/c) из традиций unix, поскольку в конце 1980-х годов, когда они разрабатывались, в интернете преобладала культура unix, а не pc. Тогда существовало несколько распространенных представлений для доступа к удаленным файлам. Одно из них - это ange-ftp, расширение emacs для редактирования удаленных файлов. Оно сводило воедино имена хост-узла и пользователя с путем доступа к файлу, и в результате получалась конструкция такого типа: /[email protected]:~mblack/. Синтаксис uri, разработанный для интернета, использовал двойную левую косую черту для перекрестного обращения к машинам (это унаследовано из диалекта apollo domain unix). Помимо этого, он ввел в обращение синтаксис схем для того, чтобы можно было унифицировать соглашения о присвоении имен из любого количества различных протоколов. Вот несколько примеров:
mailto:mbox@domain
ftp://host/file
http://domain/path.

Второй пример во введении, www.yahoo.com/sports, на самом деле не является настоящим uri. Это удобное сокращение для http://www.yahoo.com/sports. Такой формат поддерживается пользовательскими интерфейсами распространенных web-браузеров. Но если схема xslt записана следующим образом:

,

то она не будет работать, как ожидается, если только это выражение не является обращением к файлу в директории exslt.org, находящейся рядом с таблицей стилей xslt. Атрибут href в xslt означает uri-ссылку, которая может быть абсолютной или относительной. Если uri-ссылка начинается со схемы и двоеточия, то она является абсолютной, в противном случае - относительной. Относительная uri-ссылка очень похожа на путь доступа к файлу. Например, ../noarch/config.xsd - это относительная uri-ссылка.
Международные идентификаторы ресурсов

Сказать, что атрибут href в html означает uri-ссылку, - это несколько упростить ситуацию. uri и uri-ссылки создаются из ограниченного набора символов ascii, а html является более интернациональным образованием. Запрос на комментарии, который последовал за запросом rfc3986, - это запрос rfc3987 "Международные идентификаторы ресурсов (iri)" (internationalized resource identifiers (iris) (см. раздел Ресурсы). Эта спецификация не является единственной в процессе разработки ietf-стандартов, в отличие от своей предшественницы, но данная технология уже достаточно зрелая и широко используется. iri очень похожи на uri с тем исключением, что в них может использоваться весь набор символов unicode, а не только ascii. Для каждого iri существует соответствующая кодировка в формате uri на тот случай, если идентификатор нужно будет использовать в протоколе (например, http), который может работать только с uri.
xml:base перекрывает базовый uri

Обычно ссылка uri является относительной для любого документа, в котором она найдена. Если, например, просматривается документ с базовым uri http://exslt.org/math/min/math.min.template.xsl, и в нем обнаруживается uri-ссылка ../../random/random.xml, то она приведет к документу с адресом http://exslt.org/random/random.xml. В формате html есть возможность вынести базовый элемент в заголовок документа, чтобы перекрыть базовый uri. Базовая спецификация xml (xml base) (см. раздел Ресурсы) обеспечивает эквивалентную форму в xml.

Рассмотрим документ, доступ к которому может быть осуществлен двумя путями: file:/my/doc или http://my.domain/doc. Если доступ выполняется через файловую систему, то ссылки типа #part2 расширяются до формата file:/my/doc#part2. В случае доступа через http данная ссылка расширится до формата http://my.domain/doc#part2. Но в схеме описания ресурсов (resource description framework - rdf) расширенная форма не должна изменяться для того, чтобы обеспечить выполнение ряда задач. Спецификация xml base облегчает выполнение расширения (см. Листинг 1).
Листинг 1. Расширенная форма в rdf

xmlns="&owl;"
xmlns:owl="&owl;"
xml:base="http://www.w3.org/2002/07/owl"
xmlns:rdf="&rdf;"
xmlns:rdfs="&rdfs;"
>

В этом примере ссылка #nothing расширяется до http://www.w3.org/2002/07/owl#nothing независимо от места нахождения документа.

Теперь перейдем к url и urn.
url и urn

uri разработаны таким образом, чтобы выполнять функции и имени, и адреса. После того, как они поступили в ietf для стандартизации, их стали именовать унифицированными указателями информационных ресурсов (uniform resource locators); одновременно началась работа над разработкой унифицированных имен ресурсов (uniform resource names).

Для имен и ресурсов интернет-хостов существуют отдельные стандарты. Синтаксис имен хостов такой же, как и имен доменов (например, zork1.example.edu). Эти имена связаны с адресами типа 192.168.300.21 с помощью протокола системы имен домена (domain name system - dns). Такая непрямая связь позволяет именам оставаться стабильными, когда хосты перемещаются в сети и их нумерация изменяется.

Случайные неработающие ссылки в интернете приводят к тому, что web-адреса становятся больше похожими на указатели, а не на имена, поэтому в сообществе ietf возникли различные предложения:
uri: запрос rfc1630, выпущенный в июне 1994 г., был назван "Универсальные идентификаторы ресурсов в www: единый синтаксис для выражения имен и адресов объектов в сети, используемый во Всемирной сети Интернет" (universal resource identifiers in www: a unifying syntax for the expression of names and addresses of objects on the network as used in the world-wide web) (см. раздел Ресурсы). Это был информационный запрос, т.е. он не получил общего одобрения it-сообщества;
url: запрос rfc1738, выпущенный в декабре 1994 г., был назван "Унифицированные указатели информационных ресурсов" (uniform resource locators) (см. раздел Ресурсы). Это был предлагаемый стандарт, т.е. он являлся результатом согласований, хотя еще и не был в достаточной степени проверенным и зрелым, чтобы стать стандартом для всего интернета;
urn: запрос rfc1737, выпущенный в декабре 1994 г., был назван "Функциональные требования для унифицированных имен ресурсов" (functional requirements for uniform resource names) (см. раздел Ресурсы).

В 1997 г. за запросом rfc1737 последовал предлагаемый стандарт rfc2141 - "Синтаксис urn", который описывал спецификацию еще одной схемы - urn, в дополнение к уже существовавшим http:, ftp: и другим.

Окончательный стандарт uri rfc3986 объясняет различие между этими понятиями в секции 1.1.3 - "uri, url и urn":

uri может далее рассматриваться как указатель, имя или и то, и другое. Термин "унифицированный указатель информационных ресурсов" (url) относится к подмножеству uri, которые, помимо идентификации ресурса, указывают способ его нахождения путем описания основных механизмов доступа к нему (т.е. его "положение" в сети). Термин "унифицированное имя ресурса" (urn) исторически использовался как для uri в пределах схемы urn (запрос rfc2141), которые должны оставаться уникальными в мировом масштабе и оставаться стабильными, даже если ресурс прекращает существование или становится недоступным, так и для любых других uri со свойствами имени.

Отдельная схема не обязательно должна рассматриваться только как "имя" или "указатель". Конкретные uri из любой схемы могут иметь характеристики как имен, так и указателей, или обоих этих понятий. Часто это зависит от постоянства и тщательности в распределении идентификаторов полномочным органом по присвоению имен, а не от качества схемы. В будущих спецификациях и связанных с ними документах должен использоваться общий термин uri, а не более узкие понятия url и urn (запрос rfc3305).
Постоянство на практике

Между постоянством и доступностью существует естественное противоречие. Предположим, на каком-то хосте, связанном с интернетом, есть некий файл. Самый простой способ сделать этот файл доступным - подключить к хосту web-сервер и предоставить пользователю uri, который состоит из имени хоста и файла (например, http://dhcp324.coolisp.net/drafts/freelunch.wsdl). Такая схема будет отлично работать, пока не закончится срок лицензии протокола динамической конфигурации хоста (dynamic host configuration protocol - dhcp), не изменится провайдер или файл не будет перемещен в другую директорию. А если сервис станет популярным и за пользование им будут взимать плату? Чем менее достаточную информацию содержит имя, тем ниже его шансы уцелеть при изменениях.

Но хорошее постоянное имя, подобное http://xyzpdq.org/2005/ls434, не так легко поддерживать. Необходимо зарегистрировать домен, осуществлять отображение ("мэппирование") имени домена на адрес хоста и либо держать в памяти, что ls434 - это файл с описанием предложений ланча, либо сделать таблицу отображения файлов на web-сервере.

Проект purl и система идентификации цифровых объектов (digital object identifier - doi) (см. раздел Ресурсы) представляют другие подходы к проблеме постоянства. Постоянный url (persistent url - purl) - это обыкновенный http uri домена, который обеспечивается серьезной поддержкой его постоянства. Например, домен purl.org поддерживается Центром интерактивной компьютерной библиотеки (online computer library center - oclc) - всемирным библиотечным кооперативом. Любой может подать заявление о выделении адреса и управлять своим собственным набором purl. Желающий помещает свои материалы на обыкновенный web-сервер, а затем связывает его со своим purl путем перенаправления с помощью http. Перенаправление от purl на менее постоянные http uri во многом похоже на аналогичный процесс, обеспечиваемый dns. Разница состоит в том, что в этом случае и источник, и место назначения перенаправления относятся к одной и той же категории. Любой purl, например, http://purl.org/net/dajobe/, может использоваться как обыкновенный http uri. И что еще более важно, те люди, с которыми необходимо установить сообщение, также могут использовать его как обыкновенный http uri; при этом не требуется никаких подключаемых программ или расширений.

Система doi использует свою собственную схему, например, doi:10.123/456. web-браузеры могут быть приспособлены к поддержке этой схемы с помощью подключаемой программы. Фонд doi обеспечивает стандарты, регистрацию и услуги по перенаправлению http, подобно тому, как это делают провайдеры purl, например, oclc. Хотя Фонд doi поддерживает специальное имя для каждого doi в форме http://dx.doi.org/10.123/456, в руководстве по doi (см. раздел Ресурсы) утверждается, что эта система имеет "существенные недостатки по сравнению с подключаемой программой распознавателя". Но с точки зрения автора статьи, гораздо более существенный недостаток - это необходимость поддержки двух разных имен для каждого объекта.
Творческие проблемы в управлении информацией

Несмотря на противоречие между постоянством и доступностью, хороший uri имеет оба качества и функционирует и как постоянное имя, и как доступный ресурс. Таким образом, url - это просто более практичный uri.

Сторонники схемы urn: утверждают, что данное противоречие нельзя устранить в рамках http и dns. Проблемные области, безусловно, существуют, но с этими вопросами сталкивается любой web-мастер, и постепенно вырабатываются принципы управления информацией, которые помогают справляться с ними. Мир постоянно меняется, и чтобы успевать за этими изменениями, необходимо работать.

В большинстве случаев иерархическая природа системы присвоения имен dns достаточно удобна, но это приводит к концентрации большого количества энергии в одном месте и вызывает существенные управленческие проблемы. Системы соединения равноправных узлов, такие как распределенные равнодозированные таблицы (хэш-таблицы - hash tables), могут решить некоторые вопросы централизации, свойственные dns, но никто не знает, к каким проблемам управления может привести их использование. Различные передовые разработки показывают, как новые протоколы могут использоваться для обслуживания уже имеющихся имен типа http://..., повышая ценность существующей сети гипермедиа. Эти технологии кажутся более перспективными, чем разработка новых схем для любых действий, отдаленно напоминающих операции http типа get/put/post/delete (доставить/поместить/вывесить/убрать). По прогнозу автора статьи, современная передовая практика в управлении информацией, а также дальнейшее улучшение протоколов обеспечат продолжительное существование uri на основе http и dns.
Ресурсы
Дуглас Энгелбарт (douglas engelbart). 1990. Совместимость областей знаний и система открытых гипердокументов. Обзор исследований возможностей совместной работы с помощью компьютеров (computer-supported cooperative work - cscw). (knowledge-domain interoperability and an open hyperdocument system).
Присвоение имен документам (document naming). Тим Бёнез-Ли (tim berners-lee). Вопросы проектирования (design issues). Серия, начатая в 1991 г. и продолжающаяся по сегодняшний день.
Проблемная группа проектирования internet (internet engineering task force - ietf). Запросы на комментарии, изданные ietf и обсуждаемые в настоящей статье:
rfc1630 - Универсальные идентификаторы ресурсов в www (rfc1630 -- "universal resource identifiers in www");
rfc1737 - Функциональные требования для унифицированных имен ресурсов (rfc1737 -- "functional requirements for uniform resource names");
rfc1738 - Унифицированные указатели информационных ресурсов (rfc1738 -- "uniform resource locators"). Версия гипертекста может быть найдена на сайте w3c;
rfc2141 - Синтаксис urn (rfc2141 -- "urn syntax");
rfc3305 - Отчет специальной совместной группы w3c и ietf по планированию uri: uri, url и urn (rfc3305 -- "report from the joint w3c/ietf uri planning interest group: uris, urls, and urns");
rfc3986 - Базовый синтаксис унифицированных указателей информационных ресурсов (rfc3986 -- "uniform resource identifier (uri): generic syntax"). Также доступна версия гипертекста Роя Филдина (roy fielding);
rfc3987 - Международные указатели информационных ресурсов (rfc3987 -- "internationalized resource identifiers - iris)".
Агентство по выделению имен и уникальных параметров протоколов internet (internet assigned numbers authority - iana) и его официальный список схем uri.
Сайт проекта purl и его страница часто задаваемых вопросов.
Система doi (the doi system) и глава из "Руководства по doi", посвященная разрешающей способности.
Разделы сайта w3c, посвященные xml-схемам, пространству имен xml и базовой спецификации xml.
Статья Уши Оджбуджи (uche ogbuji) "Принципы xml-дизайна: осторожность при использовании пространства имен xml" (principles of xml design: use xml namespaces with care) (апрель 2004 г.) и его обзор xml-стандартов (январь 2004 г.).
Дополнительные xml-ресурсы на сайте ibm.
Литература по xml (developer bookstore).
Информация о том, как стать Сертифицированным разработчиком ibm в области xml и других смежных технологий (ibm certified developer in xml and related technologies)


Список похожих статей