Выработка механизмов присвоения постоянных идентификаторов (URI) для ОСД: различия между версиями

Материал из Открытое правительство
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
(Новая страница: «== Определение ресурса и присвоение URI == '''Вводные сведения''' Рекомендаций по присвоению…»)
 
(Полностью удалено содержимое страницы)
 
Строка 1: Строка 1:
== Определение ресурса и присвоение URI ==
 
  
'''Вводные сведения'''
 
 
Рекомендаций по присвоению URI в LOGD было издано достаточно много.
 
 
Вот этот документ Еврокомиссии [http://philarcher.org/diary/2013/uripersistence/] даже содержит обзор ряда других. Однако далеко не всех: в частности, потому что многие были изданы позже, или не выражали согласия с отдельными положениями документа, или и то, и другое.
 
 
Далее перечислю принципы присвоения URI, призванные предостеречь от слепого следования практикам достаточно распространенным, но все же вряд ли наилучшим.
 
 
'''Принцип первый'''
 
 
Не следует перегружать URI семантикой.
 
 
Довольно часто любят перегружать URI следующим:
 
 
- сведениями о провенансе — в частности, о некоем «датасете», к которому URI «принадлежит»;
 
- подробными сведениями таксономического характера.
 
 
Возможно, эти антипаттерны пришли из мира REST API, или, может быть, они действительно имеют смысл при определенных способах доступа к данным. Однако при доступе посредством SPARQL подробные таксономические сведения точно не нужны. Для выражения провенанса есть свои средства.
 
 
Сказанное не отменяет того, что элементарные таксономические сведения, обеспечивающие элементарную человекочитаемость, в URI должны присутствовать, равно как и некий совсем базовый провенанс в виде о чем-то говорящего домена.
 
 
'''Принцип второй'''
 
 
Следует избегать использования «/» в качестве условно-разделительного знака.
 
 
Использование «/» приведет к необходимости либо потом без конца экранировать этот «/» в сокращенных префиксных формах (например, писать ''fssp:agency\/03000''), либо заводить массу префиксов и в них путаться (''fssp_agency:'', ''fssp_person:'' и пр.).
 
 
Вот пример [https://stackoverflow.com/a/35657702/7879193] того, как гражданин UK, разбирающийся в технологиях, запутался в URI, составленных с нарушением этого принципа.
 
 
'''Принцип третий'''
 
 
URI должен быть в домене того, кто может его наиболее полно дереференсировать (отобразить информацию при обращении по идентичному URL). То есть, например, URI, соответствующий отделу судебных приставов, должен находиться в домене Федеральной службы судебных приставов.
 
 
Да, это до известной степени противоречит принципу «do not state ownership». Однако, к сожалению, домены ФОИВ — самое надежное, что у нас сейчас есть.
 
 
- Типовая ситуация смены домена ФОИВ решается использованием нами дополнительной прослойки в виде идентификаторов w3id.org [http://w3id.org/].
 
- Типовая ситуация расформирования ФОИВ — до известной степени тоже, но кроме того, URI должны быть переносимыми между доменами. В ряде случаев при расформировании ведомства и передаче полномочий действительно правильнее говорить об образовании новых сущностей.
 
 
Распространенной практикой является соответствие домена некоему сектору общественной жизни, являющемуся сферой государственного регулирования. К сожалению, здесь есть ряд проблем.
 
 
1. Такая секторизация — тоже разновидность владения. Не очень понятно, допустим, куда отнести военные прокуратуры: в jus или в bellum.
 
2. Головного домена под эти секторные поддомены у нас все равно нет. Если бы и был, это означало бы централизацию, что в отечественных условиях имеет всем известные последствия. Даже если выносить отечественные условия за скобки, децентрализованность и распределенность лежат в основе идеологии Semantic Web.
 
 
Я бы предложил заведение таких секторных доменов отложить до начала работы над Всероссийским графом знаний (другая задача в нашем плане).
 
 
От принципов секторности и «do not state ownership» в силу причин, примерно совпадающих с описанными, отказались, например, США, Канада и отчасти Нидерланды [http://www.pilod.nl/wiki/Bestand:D1-2013-09-19_Towards_a_NL_URI_Strategy.pdf] (документ по ссылке вообще хорош).
 
 
'''Схема именования'''
 
 
Исходя из сказанного выше, вырисовывается схема именования, поясняемая приводимыми ниже гипотетическими URI. Или IRI, но поддержка IRI популярным программным обеспечением, да даже и стандартами, достаточно ограничена.
 
 
- http://нси.фоив.рф/школа_780036 [http://нси.фоив.рф/школа_780036]
 
- http://ref.foiv.gov.ru/school_780036 [http://ref.foiv.gov.ru/school_780036]
 
- http://lod.foiv.gov.ru/school_780036 [http://lod.foiv.gov.ru/school_780036]
 
 
Таким образом, URI будет состоять из следующих фрагментов:
 
 
- http:// — протокол. Здесь мы будем принуждены выбирать схему, принятую владельцами целевых доменов (у кого-то это http, у кого-то https). Для справки: Тим Бернерс-Ли был против [https://www.w3.org/DesignIssues/Security-NotTheS.html] https. Вообще, имеется дискуссия об использовании https в Semantic Web (1 [https://www.w3.org/blog/2016/05/https-and-the-semantic-weblinked-data/], 2 [https://pdfs.semanticscholar.org/7ab8/12ba3d0e8f3ff7dc5170cee37d2ccb441e09.pdf], 3 [http://www.unicse.org/publications/2010/november/Making%20secure%20Semantic%20Web.pdf], 4 [https://lists.w3.org/Archives/Public/semantic-web/2017Jul/thread.html#msg42]).
 
- нси, ref или lod — поддомен, поддерживать который мы намерены обязать ФОИВы. Первые два варианта названия поддомена хороши при понятном ФОИВ позиционировании LOGD как некоей всероссийской справочной.
 
- foiv.gov.ru [http://foiv.gov.ru/] или foiv.ru [http://foiv.ru/] — домен ФОИВа.
 
- school — типа объекта, лучше максимально конкретный. В целях переносимости URI желательно, чтобы в различных доменах не встречалось одинаковых обозначений типа объекта.
 
_ — условно-разделительный знак.
 
- 780036 — естественный уникальный ключ, в данном случае образованный конкатенацией условного номера региона и номера школы, дополненного слева нулями.
 
 
Дополнительно, по-видимому, захочется различать метатипы (как минимум индивиды, свойства, классы).
 
 
Значит, URI принимает следующий вид:
 
 
http://lod.foiv.gov.ru/resource/school_780036
 
Вместо /resource может быть ''class/'', ''property/'' или ''dataset/''.
 
 
'''Ограничение предлагаемой схемы'''
 
 
Схема может оказаться не вполне применима в следующих случаях:
 
 
- для URI классов и свойств в данных с развитым TBox;
 
- для разного рода «показателей» (в статистике, публикуемой с использованием RDF Data Cube, сюда же отношу всевозможные финансовые данные);
 
- при публикации URI, которые в силу каких-либо причин заведомо не будут «индивидуально дереференсируемыми», здесь лучше использовать «#», а не «/».
 
- при публикации LOGD регионами.
 
 
В последнем случае, мне кажется, вполне возможно ограничиться использованием федеральных URI, никаких собственных реестров чего бы то ни было у регионов нет. У муниципалитетов, быть может, есть, но вряд ли у них есть технические возможности для публикации LOGD. Регион мог бы публиковать муниципальные данные, но тут нужна инвентаризация: а стоит ли оно того?
 
 
'''Персистентность'''
 
 
В качестве обертки над URI в доменах ФОИВ предлагается использовать URI из w3id.org [http://w3id.org/].
 
 
В этом домене будут расположены «абстрактные» «неизменные» URI, в доменах ФОИВ — «изменчивые» «конкретные».
 
 
Средствами веб-сервера Apache при обращении к абстрактным URI будет производиться перенаправление на конкретные.
 
 
Соответствие конкретных URI абстрактным прописывается в конфигурационных файлах Apache, изменения вносятся через GitHub. Вот заготовка pull request'a:
 
[https://github.com/ssskralin/w3id.org/blob/logd.ru/logd/ru/.htaccess]
 
 
По правилам из этого файла будет производиться перенаправление, например, с [https://w3id.org/logd/ru/fssp.ru/resource/agency_03000 на http://linkeddata.fssprus.ru/resource/agency_03000].
 
 
Чтобы не создавать массу папок с закомментированными правилами, создал одну корневую и все правила прописал в ней. Хочется, чтобы в папке logd потом появились подпапки us, kz и пр. Но если такое желание покажется кому-то слишком амбициозным, можно изменить w3id.org/logd/ru [w3id.org/logd/ru] на w3id.org/logd.ru [w3id.org/logd.ru].
 
 
На будущее можно прописать в этом файле «секторные» поддомены, пока что, например, поддоменами linkeddata.ru [http://linkeddata.ru/].
 
 
На всякий случай: вот [https://github.com/UKGovLD/URI-patterns-core/blob/master/URI%20Patterns.md#annex-i-datagovuk-active-sector-inventory] список тематических поддоменов в data.gov.uk [http://data.gov.uk/]. Вообще, эта вторая версия их методических рекомендаций разумнее первой.
 
 
'''Заключение'''
 
 
Для окончательного решения требуется зафиксировать некоторые архитектурные моменты. Например:
 
 
- будут ли ФОИВ сами публиковать LOGD;
 
- будет ли существовать централизованный ресурс.
 

Текущая версия от 17:52, 13 апреля 2018