Перейти к основному содержимому

Метрики качества

Метрика полезна, если по ней видно, что чинить. Для этого считают несколько долей. У каждой доли три записи: что стоит в знаменателе, какое значение считается заполненным и на какую дату посчитано. Число наборов в подвале сайта этих записей не имеет.

Из чего состоит доля​

Знаменатель — наборы из названного списка: вся выгрузка, каждый N-й набор или страница API с указанным сдвигом. Долю считают от числа наборов в этом списке. Тридцать карточек разных издателей ловят типичную дыру. Как их взять и куда записать, — в главе о самоаудите.

«Заполнено» бывает трёх степеней. В отчёте пишут, какую считали. Иначе две доли с одним названием нельзя поставить рядом.

СтепеньЧто прошлоЧто ещё может быть пустым по смыслу
Поле непустоев лицензии что-то стоитзначение «не указана»: это тоже строка
Значение из спискалицензия из известных, формат из справочникапериод «1900–2099», описание, скопированное из названия
Значение правдивопериод похож на данные, ссылка открывает файлэто смотрят на нескольких карточках глазами

Первая степень даёт высокую долю там, где пустое поле заменили заглушкой. Вторая ловит заглушку, если она в списке запрещённых значений. Третью автоматическая проверка почти не закрывает: валидатор профиля и MQA смотрят, что поле есть. На data.gouv.fr встроенная оценка засчитывает лицензию «не указана», на data.gov.gr период-заглушка стоит почти у всех наборов выборки и уходит в выгрузку DCAT. Оба разбора — в главе о полноте метаданных.

Одна страница API — не выборка​

Портал на CKAN отдаёт карточки страницами. Страница часто оказывается одной партией сбора, а не срезом каталога. 14 октября 2026 года API data.gov.gr показывал 22 765 наборов. За время проверок счётчик сдвигался на одну-две карточки. Команда ниже берёт 200 наборов, упорядоченных по дате создания карточки, и считает четыре числа: сколько организаций на странице, у скольких явную лицензию, у скольких хотя бы один файл из короткого списка форматов и у скольких карточка менялась после 14 октября 2025 года.

Явная лицензия здесь — вторая степень: поле license_id непустое и это не notspecified и не none. Код other-open («какая-то другая открытая лицензия») команда засчитывает. Более строгая проверка смотрит, есть ли у лицензии ссылка на текст. Короткий список форматов — CSV, JSON, XML, GeoJSON, GeoPackage, Parquet. Команда читает подпись формата, а не байты: ZIP и XLSX в список не входят, даже если внутри лежит таблица. Для геопортала список другой. Когда файл вообще пригоден программе — в главе о форматах.

PORTAL=https://data.gov.gr
START=0
CUTOFF=2025-10-14
curl -s "$PORTAL/api/3/action/package_search?rows=200&start=$START&sort=metadata_created%20asc" \
| jq --arg cut "$CUTOFF" '.result.results as $r | ($r | length) as $n | {
datasets: $n,
organizations: ([$r[].organization.name] | unique | length),
explicit_license: ([$r[] | select((.license_id // "" | ascii_downcase) as $l
| $l != "" and $l != "notspecified" and $l != "none")] | length),
open_format: ([$r[] | select(any(.resources[];
(.format // "" | ascii_upcase | gsub("\\."; "")) as $f
| ["CSV","JSON","XML","GEOJSON","GPKG","PARQUET"] | index($f)))] | length),
card_modified_since_cutoff: ([$r[] | select((.metadata_modified // "") > $cut)] | length)
}'

CUTOFF — дата год назад от дня проверки. Её подставляют свою. START меняют и запускают команду несколько раз.

Три запуска в тот день:

СдвигОрганизацийЯвная лицензияОткрытый форматКарточка менялась за год
0756718200
800014357200
1600010200200

Все числа — из 200. На второй странице 14 организаций, и 165 наборов из 200 пришли одним сбором data-apdkritis: карточки созданы 14 марта 2026 года. Третья страница — одна организация keratsini-drapetsona, все 200 карточек созданы 22 мая 2026 года, источник сбора называется gis-keratsini-drapetsona-wms-only. Поле формата при этом попало в короткий список у всех 200, а явной лицензии нет ни у одной. Доля «открытый формат 100%» описывает эту партию, а не портал.

Сортировка по идентификатору перемешивает издателей. Три страницы по 200, сдвиги 0, 8000 и 16000: организаций 70, 80 и 76, явная лицензия у 39, 41 и 36, открытый формат у 116, 110 и 115. Разброс меньше, но это всё ещё три страницы, а не перепись 22 765 наборов. Крупные издатели занимают на каждой странице заметную долю. Для отчёта берут каждый N-й набор, как в самоаудите, и пишут правило отбора.

В тот же день API open.canada.ca показывал 48 083 набора. Три страницы по идентификатору, по 200 карточек: явная лицензия у всех 200, открытый формат — у 88, 83 и 92. Лицензия на этих страницах уже не отличает каталог от самого себя. Смотреть стоит долю, которая ещё может провалиться.

Дата в команде тоже легко врёт. Поле metadata_modified за последний год заполнено у всех 200 карточек во всех трёх греческих срезах, включая партию одного муниципалитета. По этому полю портал выглядит полностью свежим. У набора dedo карточка в metadata_created датирована 17 ноября 2025 года, а у файла в поле created стоит 15 июня 2018 года. После переноса портала дата рождения карточки — дата переноса. Свежесть данных смотрят по дате файла или по обещанной периодичности. Как портал сам считает срок следующего файла, на примере HDX, — в главе о хороших практиках.

При повторном запуске граница страницы может сдвинуться на карточку: в каталог продолжают добавлять наборы. В отчёт пишут дату, сдвиг и сортировку.

Что считать​

Для городского и ведомственного портала хватает пяти чисел. Их пишут на страницу итога из главы о самоаудите.

ЧислоКак считатьКогда это уже очередь
Явная лицензиядоля наборов, где лицензия — ссылка на известный текст, а не пустое поле и не «не указана»меньше половины выборки
Живой файлдоля наборов, где ссылка открыла файлзаметная доля ведёт на страницу сайта или не отвечает
Открытый форматдоля наборов с хотя бы одним файлом из записанного вами спискасписок не записан, и долю нельзя повторить
Свежесть файладоля наборов, у которых дата файла укладывается в обещанную частотудата есть только у карточки
Общая выгрузкада или нет: все описания открываются без входавыгрузки нет. Это не доля, а порог

Пороги «хорошо» и «плохо» задают под свою задачу. Лицензия меньше чем у половины выборки уже очередь на исправление, а не повод спорить о весах.

Рядом с этими пятью держат отдельный список, его в ту же долю не смешивают.

Что ещёЧто записываютЧего число не видит
Полнота остальных полейиздатель, контакт, период, территория — каждое своей долей и своей степенью «заполнено»скопированный текст, если его не искали отдельно
Совместимостьпроходит ли выгрузка валидатор своего профиляправду в полях, которые формально на месте
Использованиескачивания, вызовы API, ссылки из статей — вместекачество файла. Большое число просмотров его не заменяет
Содержимоедоля коротких файлов и общий объёмэто другой уровень качества. Порядок — в проверке по существу

Единица в знаменателе зависит от типа. Для таблиц это набор, для каталога показателей — ряд, для геопортала — слой, для микроданных — исследование. Что считать по файлам у каждого типа, собрано в той же главе о самоаудите.

Чем считать​

Поля и ссылки считает программа. Совпадение описания с соседней карточкой и правдоподобие периода — глаза, на тех же тридцати карточках.

Адреса ниже отвечали 14 октября 2026 года.

Что проверяетИнструмент
Выгрузка соответствует DCAT-APвалидатор DCAT-AP на платформе тестирования Еврокомиссии
Описания слоёв и сервисы соответствуют INSPIREINSPIRE Reference Validator: центральный экземпляр Еврокомиссия закрыла 1 апреля 2026 года, код и наборы тестов открыты, валидатор разворачивают у себя на ETF
Разметка schema.org на странице набора читаетсяSchema Markup Validator и проверка расширенных результатов Google
Запись научного репозитория похожа на FAIRF-UJI — по идентификатору или адресу записи. Содержимое файла программа не читает
Карточки, которые забрал европейский порталMQA на data.europa.eu. Каталог, который туда ничего не отдаёт, балла не получает
Ссылки на файлы открываютсяпроверка адреса. Код ответа 200 ещё не значит, что по ссылке файл

Проверка ссылок отличает четыре исхода: файл открылся, сервер отказал, ответа нет, открылась страница сайта. 14 октября на дюжине ссылок с одной страницы open.canada.ca девять ответили успехом, одна — отказом 403, две не ответили за 15 секунд. На дюжине ссылок с data.gov.gr все двенадцать ответили успехом, и одна вела на HTML-раздел сайта. Это проверка приёма, а не доля по каталогу. Адрес на CKAN бывает путём от корня сайта, без https://. Проверка, которая требует полное имя сайта, посчитает живую ссылку пустой. Мягкая поломка, когда ссылка открывается и ведёт не на файл, разобрана у термина «битая ссылка» в глоссарии.

Как устроена формула MQA​

MQA — образец чужой формулы, а не обязательный балл своего портала. Как читать балл каталога и почему он покрывает только посчитанные описания, — в главе о методиках. Здесь — из чего складывается одно слагаемое. Текст ниже сверен с разделом методики в отчёте каталога от 12 октября 2026 года. Страница методики на сайте датирована 6 октября 2026 года.

Проверки подписаны четырьмя словами FAIR: находимость, доступность, совместимость, повторное использование. В прежней методике было пятое измерение, contextuality. В текущей его нет. Вес берётся из обязательности поля в DCAT-AP, а не из отдельного экзамена на FAIR: обязательное поле — 1, рекомендуемое — 0,5, необязательное — 0,25. У набора, способа получения и сервиса данных потолок один и тот же, 7,5. Балл каталога — среднее на той же шкале. Полосы на шкале: до 2,5 — достаточно, от 2,5 до 5 — хорошо, от 5 до 7,5 — отлично.

Большинство проверок устроены одинаково: свойство заполнено или нет. Заглушка такую проверку проходит. Живая ссылка — исключение, и оно слабее, чем кажется. Наличие адреса доступа с правильным видом URL весит 1. Проверка, что адрес отвечает, весит 0,25, даже когда само поле обязательное. В зачёт идёт только ответ с кодом 2xx на запрос заголовка. Файл при этом не скачивают. Перенаправление, которым порталы часто отдают файл, в зачёт не идёт.

Соответствие профилю SHACL в балл не входит. Его смотрит отдельный валидатор из таблицы выше. Содержимое файла, юридическую силу лицензии и правду в полях методика не проверяет.

Свою формулу можно собрать короче: вес по обязательности поля и проверка, что ссылка открыла файл. Повторять шкалу 7,5 незачем. Прежде чем ставить чужой балл в отчёт, формулу читают. Балл карточки на data.gouv.fr считает поле лицензии заполненным и тогда, когда в нём «не указана». Как устроен тот балл — в главе о хороших практиках.

Что легко подделать​

Число наборов. Его поднимают, режа один ряд на файлы. Каталог из 50 честных наборов полезнее каталога из 5 000 пустых карточек. Если число всё же нужно для отчёта, рядом ставят два других: долю коротких файлов и общий объём. Как их считать — в проверке по существу. Где проходит граница между нарезкой и отдельным объектом — в антипаттерне «Дробление ради счётчика».

Насколько счётчик расходится с объёмом, видно по одному снимку. 2 февраля 2022 года полная выгрузка data.gov.ru дала 26 490 наборов и 29 ГБ, в основном без сжатия. 6,8 ГБ из них — один слепок адресного реестра, не обновлявшийся с октября 2019 года. 3839 наборов, 14,5%, весили меньше килобайта. Сжатый архив того же снимка — 14 ГБ: в других главах это те же данные, уже упакованные. 14 февраля 2022 года у HDX при сопоставимом числе наборов, около 31 тысячи, скачанная часть — 6600 наборов, 21% — занимала 205 ГБ. Оценка всего каталога по этой части — 950–1000 ГБ, это оценка незаконченной загрузки. У data.gov.uk в той же загрузке одни CSV без сжатия занимали 222 ГБ, и это не весь портал. Что осталось на data.gov.ru после открытия в 2025 году — в главе о самоаудите.

Поэтому показатель «опубликовать N наборов» без перечня наборов ничего не меряет: такую цифру собирают за день из коротких таблиц. Осмысленная цель — список конкретных наборов, например наборов высокой ценности, и доля опубликованных из него.

Число просмотров главной страницы. Оно не видит тех, кто забирает выгрузку. Если основной вход — API, считают и его. Как не превратить статистику в годовую цифру ради цифры — в главе о прочих возможностях.

Балл за поле, которое формально на месте. Валидатор и MQA проверяют наличие. Они не проверяют, что в описании не скопирован текст соседнего набора и что период не заглушка. К автоматической оценке добавляют просмотр нескольких карточек.

Дата, которую двигает перенос или мониторинг. Правка карточки и повторная загрузка каталога обновляют metadata_modified, не обновляя строки. Раздел мониторинга может ставить «обновлено» набору из одной старой цифры. Так было на data.gov.uz. Разбор — в самоаудите, в разделе о том, где проход обманывает.

Признаки жизни​

Отдельная задача — понять, жив ли портал вообще. Для чужого каталога, на который собираетесь опираться, и для своего, если его давно никто не открывал, хватает пяти проверок. Их делают до полной выгрузки файлов.

  • дата последнего нового набора, и это не дата переноса портала: у старого файла дата в карточке может быть вчерашней;
  • дата последней новости или записи в журнале изменений;
  • есть ли ряды с обещанной частотой и совпадает ли дата файла с этой частотой;
  • доля ссылок, которые открывают файл, а не страницу;
  • не пропали ли разделы, которые были раньше: план публикации, статистика использования, запросы данных.

Когда весной 2022 года с data.gov.ru пропала страница статистики посещений, а план публикации data.mos.ru удалили ещё в 2020 году, это было заметнее любого рейтинга. Для государственных порталов 2020–2022 годов был простой исторический тест: публиковали ли они данные о COVID-19, пока те были нужны. Таиландский data.go.th обновлял такую статистику каждый день, российский data.gov.ru — нет. Сегодня тот же вопрос задают ряду, который и сейчас кому-то нужен по расписанию: бюджет, курс, еженедельный оперативный набор. Портал, на котором такой ряд обновляется в обещанный день, жив независимо от счётчика наборов.

Источники​