Распутывание URI, URL и URN |
||||
---|---|---|---|---|
В области управления информацией существует устойчивое противоречие между
постоянством и доступностью. Интернет включает три вида технологий: форматы данных, протоколы и указатели, которые связывают первые два элемента. Связь между такими форматами данных, как 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 г. указывал в своем конструкторском документе о присвоении имен: "Синтаксис имени, по которому документ или его часть (якорь) могут быть найдены в любой точке мира, - это, вероятно, наиболее важный аспект проектирования и стандартизации в открытых гипертекстовых системах". В предлагаемой статье обсуждаются современное положение дел в технологии
присвоения имен и стандартизации для интернета, а также некоторые вопросы
истории и эволюции терминологии. В заключении приводится обзор перспектив в
области присвоения имен в сфере управления информацией. Документ 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 и включает
несколько составляющих его частей: Непротиворечивый процесс 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). Помимо этого, он ввел в обращение
синтаксис схем для того, чтобы можно было унифицировать соглашения о присвоении
имен из любого количества различных протоколов. Вот несколько примеров:
Второй пример во введении, 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. Обычно ссылка 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). xmlns="&owl;" В этом примере ссылка #nothing расширяется до http://www.w3.org/2002/07/owl#nothing независимо от места нахождения документа. Теперь перейдем к url и urn. uri разработаны таким образом, чтобы выполнять функции и имени, и адреса. После того, как они поступили в ietf для стандартизации, их стали именовать унифицированными указателями информационных ресурсов (uniform resource locators); одновременно началась работа над разработкой унифицированных имен ресурсов (uniform resource names). Для имен и ресурсов интернет-хостов существуют отдельные стандарты. Синтаксис имен хостов такой же, как и имен доменов (например, zork1.example.edu). Эти имена связаны с адресами типа 192.168.300.21 с помощью протокола системы имен домена (domain name system - dns). Такая непрямая связь позволяет именам оставаться стабильными, когда хосты перемещаются в сети и их нумерация изменяется. Случайные неработающие ссылки в интернете приводят к тому, что web-адреса
становятся больше похожими на указатели, а не на имена, поэтому в сообществе
ietf возникли различные предложения: В 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.
|