Введение

OCLC разработала схему постоянных идентификаторов. Постоянный унифицированный локатор ресурсов (PURL) — это унифицированный локатор ресурсов (URL), то есть унифицированный идентификатор ресурсов, основанный на местоположении (URI), который используется для перенаправления к местоположению запрашиваемого веб-ресурса. PURL перенаправляют HTTP-клиенты, используя коды состояния HTTP. Первоначально PURL можно было узнать по тому, что они размещались на purl.org или других доменных именах, содержащих "purl". Ранее многие из этих других хостов использовали производные от оригинального программного обеспечения системы OCLC PURL. Однако со временем концепция PURL стала общепринятой и использовалась для обозначения любого сервиса перенаправления (называемого PURL-резолвером), который:
имеет "корневой URL" в качестве ссылки на резолвер (например, http://myPurlResolver.example);
предоставляет средства для своего пользовательского сообщества, чтобы добавлять новые имена в корневой URL (например, http://myPurlResolver.example/name22);
предоставляет средства для связывания каждого имени с его URL (для перенаправления) и обновления этого URL перенаправления;
обеспечивает постоянство (например, по договору) корневого URL и сервисов PURL-резолвера. PURL используются для организации процесса разрешения URL, тем самым решая проблему временных URI в схемах URI, основанных на местоположении, таких как HTTP. Технически, разрешение строки в PURL аналогично разрешению URL SEF. Остальная часть этой статьи посвящена системе PURL, разработанной и реализованной OCLC (Центром онлайн-компьютерных библиотек).

История

Концепция PURL была разработана Стюартом Вайбелем и Эриком Юлом в OCLC в 1995 году. Система PURL была реализована с использованием форка предварительной версии 1.0 Apache HTTP Server. Программное обеспечение было модернизировано и расширено в 2007 году компанией Zepheira по контракту с OCLC, а официальный веб-сайт был перенесен на http://purlz.org (буква 'Z' была взята из названия Zepheira и использовалась для отличия сайта с открытым исходным кодом PURL от PURL-резолвера, управляемого OCLC). Номера версий PURL могут показаться запутанными. OCLC выпустила версии 1 и 2 дерева исходного кода на основе Apache, первоначально в 1999 году под лицензией OCLC Research Public License 1.0, а затем под лицензией OCLC Research Public License 2.0 (http://opensource.org/licenses/oclc2). Zepheira выпустила PURLz 1.0 в 2007 году под лицензией Apache, версия 2.0. PURLz 2.0 была выпущена в бета-тестировании в 2010 году, но релиз так и не был завершен. Проект Callimachus начал использовать PURL с момента выпуска версии 1.0 в 2012 году. Старейший PURL HTTP-резолвер принадлежал и управлялся OCLC с 1995 по сентябрь 2016 года и был доступен по адресам purl.oclc.org, purl.org, purl.net и purl.com. Другие известные PURL-резолверы включают в себя правительственную типографию США (http://purl.fdlp.gov), которая работает в рамках Федеральной программы депозитарных библиотек и функционирует с 1997 года. Концепция PURL используется в w3id.org, что может привести к замене старых сервисов и технологий PURL. 27 сентября 2016 года OCLC объявила о сотрудничестве с Internet Archive, в результате которого сервис резолвера и его административный интерфейс были переданы Internet Archive. Сервис поддерживается на новом программном обеспечении, отличном от всех предыдущих реализаций. Передача позволила возобновить управление определениями PURL, которые были отключены в сервисе, размещенном OCLC, на несколько месяцев. Сервис, размещенный на серверах Internet Archive, поддерживает доступ через purl.org, purl.net, purl.info и purl.com. OCLC теперь перенаправляет DNS-запросы для purl.oclc.org на purl.org.

Принципы работы

Концепция PURL позволяет осуществлять обобщенную курацию URL-адресов HTTP URI во Всемирной паутине. PURL предоставляют третьим сторонам контроль как над разрешением URL-адресов, так и над предоставлением метаданных ресурсов. URL – это просто адрес ресурса во Всемирной паутине. Постоянный URL – это адрес во Всемирной паутине, который вызывает перенаправление на другой веб-ресурс. Если веб-ресурс меняет местоположение (и, следовательно, URL), PURL, указывающий на него, может быть обновлен. Пользователь PURL всегда использует один и тот же веб-адрес, даже если ресурс, о котором идет речь, мог быть перемещен. PURL могут использоваться издателями для управления своим информационным пространством или пользователями сети для управления своим; служба PURL независима от издателя информации. Таким образом, сервисы PURL позволяют управлять целостностью гиперссылок. Целостность гиперссылок является компромиссом при проектировании Всемирной паутины, но может быть частично восстановлена, позволяя пользователям ресурсов или третьим сторонам влиять на то, где и как разрешается URL. Простой PURL работает, отвечая на HTTP GET-запрос, возвращая ответ типа 302 (эквивалент кода состояния HTTP 302, означающий «Найдено»). Ответ содержит HTTP-заголовок «Location», значение которого является URL, который клиент должен впоследствии запросить посредством нового HTTP GET-запроса. PURL реализуют одну из форм постоянного идентификатора для виртуальных ресурсов. Другие схемы постоянных идентификаторов включают в себя идентификаторы цифровых объектов (DOI), идентификаторы наук о жизни (LSID) и INFO URI. Все схемы постоянной идентификации предоставляют уникальные идентификаторы для (возможно, изменяющихся) виртуальных ресурсов, но не все схемы предоставляют возможности курации. Курация виртуальных ресурсов определяется как «активное участие специалистов по информации в управлении, включая сохранение, цифровых данных для будущего использования». PURL подвергались критике за необходимость разрешения URL, что привязывает PURL к сетевому местоположению. Сетевые местоположения имеют ряд уязвимостей, таких как регистрация системы доменных имен и зависимость от хоста. Невозможность разрешить PURL может привести к неоднозначному состоянию: не будет ясно, не удалось ли разрешить PURL из-за сетевого сбоя или потому, что он не существует. Сами PURL являются допустимыми URL-адресами, поэтому их компоненты должны соответствовать спецификации URL. Часть схемы сообщает компьютерной программе, например веб-браузеру, какой протокол использовать при разрешении адреса. Схема, используемая для PURL, обычно HTTP. Часть хоста указывает, к какому серверу PURL следует подключаться. Следующая часть, домен PURL, аналогична пути к ресурсу в URL. Домен – это иерархическое информационное пространство, которое разделяет PURL и позволяет PURL иметь разных администраторов. Один или несколько назначенных администраторов могут управлять каждым доменом PURL. Наконец, имя PURL – это имя самого PURL. Домен и имя вместе составляют «id» PURL.

Сравнение с постоянной ссылкой

Как постоянная ссылка, так и PURL используются в качестве постоянного или устойчивого URL и перенаправляют на местоположение запрашиваемого веб-ресурса. По сути, они одинаковы. Их различия заключаются в доменном имени и масштабе времени: постоянная ссылка обычно не изменяет домен URL-адреса и предназначена для сохранения на протяжении многих лет, а доменное имя PURL может изменяться независимо и предназначено для сохранения на протяжении десятилетий.

Перенаправление фрагментов URL

Услуга PURL включает в себя концепцию, известную как частичное перенаправление. Если запрос не соответствует PURL точно, запрашиваемый URL-адрес проверяется, чтобы определить, соответствует ли какая-либо смежная начальная часть строки PURL зарегистрированному PURL. Если это так, происходит перенаправление с добавлением остатка запрашиваемого URL к целевому URL. Например, рассмотрим PURL с URL-адресом http//purl.org/some/path/ и целевым URL-адресом http://example.com/another/path/. Попытка выполнить операцию HTTP GET по URL http//purl.org/some/path/and/some/more/data приведет к частичному перенаправлению на http://example.com/another/path/and/some/more/data. Концепция частичного перенаправления позволяет обращаться к иерархиям веб-ресурсов через PURL, не требуя от каждого ресурса собственного PURL. Одного PURL достаточно для того, чтобы служить узлом верхнего уровня для иерархии на одном целевом сервере. Новая служба PURL использует тип "partial" для обозначения PURL, выполняющего частичное перенаправление. Частичные перенаправления на уровне пути URL не нарушают общепринятых интерпретаций спецификации HTTP 1.1. Однако обработка фрагментов URL при перенаправлениях не была стандартизирована, и единого мнения пока не достигнуто. Идентификаторы фрагментов указывают на более конкретную информацию в ресурсе и обозначаются после символа # в URI. Частичное перенаправление в присутствии идентификатора фрагмента является проблематичным, поскольку возможны две противоречивые интерпретации. Если фрагмент прикреплен к PURL типа "partial", неясно, должна ли служба PURL считать, что фрагмент имеет значение для целевого URL, или отбросить его, предполагая, что ресурс с измененным местоположением мог также изменить содержимое, тем самым делая ранее определенные фрагменты недействительными. Бос предложил сохранять фрагменты и передавать их в целевые URL во время HTTP-перенаправлений, приводящих к ответам 300 (Multiple Choice), 301 (Moved Permanently), 302 (Found) или 303 (See Other), если только целевой URL уже не содержит идентификатор фрагмента. Если идентификатор фрагмента уже присутствует в целевом URL, любой фрагмент в исходном URL должен быть проигнорирован. Предложение Боса не прошло процедуру стандартизации в IETF и было отклонено без дальнейшей работы. Дубост и другие возродили предложения Боса в примечании W3C (не стандарт, а руководство в отсутствие стандарта). Разработчики веб-клиентов, таких как браузеры, "в основном" не следуют рекомендациям Боса. Начиная с серии PURLz 1.0, служба PURL реализует частичные перенаправления, включая идентификаторы фрагментов, путем добавления фрагментов к целевым URL в попытке соответствовать требованиям и избежать проблемного и непоследовательного поведения поставщиков браузеров.