Метрики качества
Метрика полезна, если по ней видно, что чинить. Для этого считают несколько долей. У каждой доли три записи: что стоит в знаменателе, какое значение считается заполненным и на какую дату посчитано. Число наборов в подвале сайта этих записей не имеет.
Из чего состоит доля
Знаменатель — наборы из названного списка: вся выгрузка, каждый 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 меняют и запускают команду несколько раз.
Три запуска в тот день:
| Сдвиг | Организаций | Явная лицензия | Открытый формат | Карточка менялась за год |
|---|---|---|---|---|
| 0 | 75 | 67 | 18 | 200 |
| 8000 | 14 | 3 | 57 | 200 |
| 16000 | 1 | 0 | 200 | 200 |
Все числа — из 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 на платформе тестирования Еврокомиссии |
| Описания слоёв и сервисы соответствуют INSPIRE | INSPIRE Reference Validator: центральный экземпляр Еврокомиссия закрыла 1 апреля 2026 года, код и наборы тестов открыты, валидатор разворачивают у себя на ETF |
| Разметка schema.org на странице набора читается | Schema Markup Validator и проверка расширенных результатов Google |
| Запись научного репозитория похожа на FAIR | F-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 — нет. Сегодня тот же вопрос задают ряду, который и сейчас кому-то нужен по расписанию: бюджет, курс, еженедельный оперативный набор. Портал, на котором такой ряд обновляется в обещанный день, жив независимо от счётчика наборов.
Источники
- Методика MQA — страница от 6 октября 2026 года; раздел методики в отчёте каталога от 12 октября 2026 года: четыре измерения FAIR, веса 1 / 0,5 / 0,25, шкала 0–7,5, проверка ссылки кодом 2xx, SHACL в балл не входит
- Валидатор DCAT-AP, F-UJI — адреса открывались 14 октября 2026 года; INSPIRE Reference Validator — объявление JRC о закрытии центрального экземпляра, 1 апреля 2026 года, ETF и исполняемые наборы тестов для своей установки
- Schema Markup Validator, разметка Dataset в документации Google
- Action API CKAN 2.12
- API data.gov.gr и open.canada.ca, 14 октября 2026 года: срезы по 200 наборов, сортировка по дате создания карточки и по идентификатору
- И. Бегтин, Telegram: полная выгрузка data.gov.ru, 02.02.2022; сравнение объёмов порталов, 14.02.2022; показатель «500 наборов», 21.03.2025; data.mos.ru по инерции, 17.01.2022; статус порталов весной 2022 года, 05.05.2022; данные о COVID-19 как признак живого портала, 15.12.2021, и data.go.th, 17.07.2022
- Полнота метаданных, самоаудит, методики и рейтинги, антипаттерны