URI (идентификатор)
URI (унифицированный идентификатор ресурса, от англ. Uniform Resource Identifier), унифицированный идентификатор абстрактного или физического ресурса (веб-страницы, файла и т. п.) в сети. Под сетью здесь понимается не только сеть Интернет, но и, например, компьютерная сеть или даже файловая система.
Общие сведения
В компьютерных системах для получения ресурсов (документов, изображений и пр.) используются различные протоколы и системы. При этом обычно ресурсы представляют в виде объектов, обладающих в каком-либо виде именем, адресом или идентификатором. Такое представление приводит к необходимости определять различные пространства имён, в которых существуют конкретные объекты. Необходимость сохранять доступность ресурсов как для существующих, так и для будущих систем приводит к концепции универсального множества объектов и, соответственно, универсального множества имён и адресов во всех пространствах имён. Такое универсальное множество позволяет обращаться с именами из разных пространств имён одинаковым образом, несмотря на различные характеристики как самих имён, так и объектов, которые этими именами обладают.
Синтаксис URI разрабатывался таким образом, чтобы обеспечить следующие ключевые характеристики (Naming and Adressing: URIs, URLs, ...):
расширяемость – возможность добавлять новые схемы наименования;
полнота – возможность закодировать любую схему наименования;
пригодность для печатания – использование 7-битных символов ASCII, представляющих ограниченный набор латинских символов и знаков препинания, для того чтобы URI можно было передавать в аналоговом виде (например, на бумаге).
URI представляет собой строку, состоящую из следующих частей (Berners-Lee. 2005):
схема (англ. scheme) – схема обращения к ресурсу, определяющая метод доступа к нему (например, http);
источник (англ. authority) – необязательный иерархический элемент, задающий уполномоченный источник, управляющий пространством имён данного URI;
путь (англ. path) – данные, используемые для идентификации ресурса и представленные в иерархической форме;
запрос (англ. query) – необязательные данные, используемые для идентификации ресурса и представленные в неиерархической форме;
фрагмент (англ. fragment) – необязательные данные, позволяющие осуществить косвенную идентификацию вторичного ресурса по отношению к первичному.
В стандарте URI даётся регулярное выражение, позволяющее разбирать URI-адрес на составные части:
^ ( ( [ ^ : / ? # ] + ) : ) ? ( / / ( [ ^ / ? # ] * ) ) ? ( [ ^ ? # ] * ) ( \ ? ( [ ^ # ] * ) ) ? ( # ( . * ) ) ?
При этом URI может быть абсолютным, т. е. полностью идентифицирующим ресурс (например, https://bigenc.ru/), и относительным, т. е. идентифицирующим ресурс относительно пространства имён другого URI (например, ../../example.txt).
URI повсеместно используется для обеспечения доступа к ресурсам в сети Интернет в качестве гиперссылок, а также является частью модели данных RDF.
История развития
Идея URI была предложена британским учёным Т. Бернерсом-Ли. В 1991 г. он изложил свои идеи по наименованию гипертекстовых ссылок в сети Интернет, позволяющих получать доступ к ресурсам и абстрагироваться от реального физического расположения этих ресурсов (Document Naming). Эти идеи в июне 1994 г. были оформлены в первом рабочем предложении (англ. Request for Comments – RFC) по URI – RFC 1630 (Berners-Lee. 1994), причём в данном документе в расшифровке URI использовалось слово «универсальный» (англ. universal) вместо «унифицированный» (англ. uniform).
URI развивается Консорциумом Всемирной паутины; при этом новые схемы наименования должны регистрироваться организацией IANA (от англ. Internet Assigned Numbers Authority).
Последняя версия стандарта URI была принята в январе 2005 г.
Смежные понятия
URI включает в себя два подмножества:
URL – унифицированный указатель ресурса, не только идентифицирующий этот ресурс, но и определяющий местонахождение и способ обращения к ресурсу. В 2002 г. было рекомендовано использовать более широкий термин URI вместо термина URL, объявленного устаревшим (RFC 3305);
URN – единообразное название (имя) ресурса в виде постоянной строки, не включающей в себя указания на местонахождение и способ обращения к ресурсу.
Недостатки URI и альтернативы
Синтаксис URI имеет ограниченный набор латинских символов и знаков препинания, поэтому применять другие символы (например, кириллические) можно только с использованием механизма процентного кодирования: не входящие в стандартный набор символы будут иметь вид, аналогичный %D0. Для решения данной проблемы разработан стандарт IRI (англ. Internationalized Resource Identifier), описывающий интернационализированный идентификатор ресурса и позволяющий использовать в таких идентификаторах символы Юникода.
Возможной альтернативой URI являлся XRI (англ. Extensible Resource Identifier) – расширяемый идентификатор ресурса, обеспечивающий полную контекстную независимость идентификаторов. Однако разработка данного стандарта была прекращена в 2015 г. (OASIS).