В процессе работы над проектом для открытых данных пришлось изучить множество государственных источников данных. Это и федеральные порталы и муниципальные ресурсы. Вот наиболее известные источники открытых данных:
У всех этих ресурсов одни и те же болезни. Вот они:
- Невалидность данных.
- Разрозненность данных и отсутствие стандартов.
- Отсутствие единого механизма поиска.
- Отсутствие API для доступа к данным.
Этого достаточно чтобы отбить желание пользоваться ими и данными размещенными на них.
Теперь подробнее по каждому пункту и что с этим делать.
Невалидность данных
Из статистики по документам data.gov.ru видно что большая часть данных размещены в CSV-формате:
И это огромная проблема. Дело в том что большая часть CSV-файлов имеют невалидный формат. В CSV легко допустить ошибку, а если пользователь не разбирается в стандарте, то вероятность ошибки близка к 100%. И так, какие ошибки встречаются чаще всего:
1 место — лишние кавычки. Это бич всех CSV данных. Неправильная кавычка может сломать весь документ.
Пример: Реестр лицензий на фармацевтическую деятельность Новгородской области первая же строка:
"Фармацевтическая деятельность","ООО ГЕЛИОС"",...
2 место — разное количество колонок в строках данных.
Пример: государственный реестр лекарственных средств
regnumber,regdate,enddate,cancellationdate,nameregcertificate,country,tradename,internationalname,formrelease,stages,barcodes,normativedocumentation,pharmacotherapeuticgroup
П N009886,28.04.2011,,,,"ООО ""Валеант""",Россия,Бронхинол,,~,,"Производство готовой лекарственной формы,Херкель Б.В., Nobelweg 6, 3899 BN Zeewolde, the Netherlands, Нидерланды
",,"П N009886-280411,2011,Бронхинол;
",отхаркивающее средство растительного происхождения
Сопоставляем заголовок и данные, получаем:
regnumber = П N009886
regdate = 28.04.2011
enddate =
cancellationdate =
nameregcertificate =
country = ООО "Валеант"
tradename = Россия
internationalname = Бронхинол
...
80% CSV-файлов приходится править перед использованием. Это не большая проблема для небольших и редко меняющихся наборов данных. Но если набор в сотню тысяч строк и обновляется раз в неделю, то это большая проблема.
Отсюда возникает вопрос, зачем использовать CSV?
Разрозненность данных и отсутствие стандартов
Каждая служба публикует данные в произвольном виде.
Например это заголовки колонки из CSV-файла перечня карантинных зон:
"Название карантинного организма",
"Административный район",
"Площадь в пределах установленной карантинной фитосанитарной зоны (га)",
"№ и дата приказа об установлении карантинной фитосанитарной зоны Представление в орган исполнительной власти субъекта РФ (№ и дата письма)",
"Представление в орган исполнительной власти субъекта РФ (№ и дата письма)",
"Решение органа исполнительной власти субъекта РФ о наложении карантина (№ и дата)",
"Территориальное управление"
Геокоординаты могут быть представлены в виде 2 колонок, в одной колонке через запяую или в GeoJSON.
А вот несколько вариантов представления списков:
"№ 223од от 02.09.2010 № 277од от 29.09.2011 № 136од от 14.10.2009 № 556од от 02.10.2013 № 452од от 19.10.2012"
"4 номера: 3 апартамента, 9 люксов, 2 однокомнатных двухместных улучшенных, 4 одноместных, 37 двухместных номеров"
"OVDPhone": [
{ "PhoneOVD": "(495) 601-05-36" },
{ "PhoneOVD": "(495) 601-05-37" }
]
Ко всему прочему данные разбросаны по разным ресурсам:
- https://www.magnitogorsk.ru/opendata — Магнитогорск
- http://opendata.cheladmin.ru — Челябинск
- https://minvr.ru/opendata — Владивосток
- http://data.ekburg.ru — Екатеринбург
Как узнать что это официальные сайты? И почему бы не публиковать данные в одном месте?
Отсутствие единого механизма поиска
Из-за разрозненности данных, нет возможности осуществить поиск по всем государственным источникам открытых данных. Видимо не хватает национального поисковика по открытым данным…
Отсутствие API для доступа к данным
Чтобы использовать данные в своем проекте их нужно скачать. И в дальнейшем самому отслеживать их изменение и актуализировать. Это сопряжено со значительными сложностями для больших наборов данных.
Избежать этих сложностей можно если не скачивать данные, а использовать их через API. Для этого API должен предоставлять такую функциональность, которой было бы достаточно для выполнения любой задачи по работе с данными.
Того API который есть у некоторых ресурсов (например data.mos.ru) не достаточно для полноценной работы с данными. Плюс они не достаточно надежы для использования в реальных проектах.
Все это приводит к тому что открытые данные есть, но судя по количеству скачиваний на data.gov.ru ими пользуются единицы.
Чтобы раскрыть весь потенциал открытых данных они должны быть доступны в максимально удобном для использования виде. Чтобы сразу начать ими пользоваться, а не тратить время на приведение их к корректному виду.
Как можно исправить ситуацию
ИМХО, ресурс аналогичный GitHub но для данных дал бы сильный толчок в развитии открытым данным.
Да, есть например data.world, но он пока не имеет всей той функциональности которая сделала бы его GitHub'ом для данных. Какими характеристиками должен обладать ресурс:
- Визуализация — возможность визуализировать данные так как хочет автор и пользователи, а не так как это сделает система.
- Стандартизованность — возможность задать структуру данных, отклонение от которой выдаст ошибку и не позволит загрузить данные.
- API и интеграция — богатый API и возможность интеграции с различными источниками данных.
- Социальность — обсуждение, оценка и рецензирование данных сообществом.
- Международность — данные не должны размещаться на серверах в какой-то одной стране, чтобы избежать их блокирования со стороны государства.
Уверен что в скором времени такой ресурс появится и открытые данные займут значимое место в жизни каждого человека.