Скільки законів в Україні?
Це питання звучить просто, але насправді на нього неможливо відповісти одним числом. У реєстрі Верховної Ради — майже триста тисяч документів. Частина чинна. Частина втратила силу ще у 90-х. Частина — взагалі не "закони" в побутовому розумінні, а постанови, накази, укази, циркуляри. І в кожному документі — десятки версій під різні редакції.
Ми будуємо для Yustai пайплайн, який щоночі тягне ці дані з відкритих джерел Ради, фільтрує, нарізає та векторизує — і змушені на ці питання відповідати ребром. Цей пост — про те, як виглядає українське законодавство, коли дивитися на нього як на структуровані відкриті дані, і як ми вирішуємо, що з цього взагалі варто індексувати.
Що рахуємо: типи актів у реєстрі Ради
Рада публікує повний каталог документів CSV-файлом за адресою:
https://data.rada.gov.ua/ogd/zak/laws/data/csv/doc.txt
У файлі — кожен документ із полями: реєстраційний номер (nreg), назва, тип, статус, орган видання, дати. Файл у кодуванні cp1251, з роздільником-табом — типовий артефакт української держави початку 2000-х. Конвертуємо в UTF-8 ще на льоту.
Тип документа (поле doktype) — це число, і чисел цих чимало. Найважливіші для нас чотири:
| Код | Що це |
|---|---|
| 1 | Закон України |
| 21 | Кодекс України |
| 216 | Конституція України |
| 2 | Постанова (Кабміну або Верховної Ради) |
Усе інше — укази Президента, накази міністерств, інструкції, листи роз’яснення, рішення Конституційного Суду — це ще десяток типів. У внутрішній моделі ми зводимо їх у дві категорії: LAW (типи 1, 21, 216) і BYLAW (все підзаконне). Ця ж дихотомія керує тим, наскільки сильно ми довіряємо документу при формуванні відповіді.
Що значить "чинний": сім статусів і чому це важливо
У Ради є власний довідник статусів (stan.txt), і він має сім значень:
| Код | Статус |
|---|---|
| 0 | Невизначений |
| 1 | Втратив чинність |
| 2 | Набирає чинності |
| 3 | Дію зупинено |
| 4 | Дію відновлено |
| 5 | Діє |
| 6 | Не набрав чинності |
| 7 | Не застосовується на території України |
Для пошуку ми беремо тільки 5 — Діє. Усі інші — або історія, або ще не вступило в силу, або (для актів СРСР) скасовано законом про декомунізацію.
Що значить "тимчасовий": дати на рівні редакцій
Закони не лише з’являються та зникають — вони змінюються. Кодекс України про адміністративні правопорушення в редакції 2010 року і в редакції 2024-го — це формально один реєстраційний номер, але помітно різні правила гри.
У нашій схемі кожна редакція має дві дати:
valid_from— коли редакція набрала чинності,valid_to— коли її замінила наступна або документ втратив чинність.
valid_to IS NULL означає, що редакція актуальна. Коли з’являється нова редакція, ми не перезаписуємо стару — ми закриваємо її і створюємо нову з новим valid_from. Так само коли документ втрачає чинність цілком: усі його чинні редакції закриваються однією датою.
З цього випливає важлива річ для будь-якої системи, яка хоче давати юридичні відповіді: посилання повинно вказувати на конкретну редакцію, а не на "закон взагалі". Інакше ви ризикуєте показати редакцію 2018 року на питання, де користувачу принципово важлива редакція 2024-го. Це не теорія — це історії з реальних консультацій, де "та сама норма" по факту вже два роки як перетворилася на щось зовсім інше.
Класифікація: 1043 тематичні вузли
Окремо від статусів і типів Рада публікує класифікатор тематики — klasname.txt (назви) і klastree.txt (дерево). Це 1043 вузли, від найзагальніших ("Цивільне право") до доволі вузьких ("Договір страхування фінансових ризиків"). Кожен документ у картці (https://data.rada.gov.ua/laws/card/{nreg}.json, поле klasy) має нуль або більше прив’язок до цих вузлів.
Ми синхронізуємо це дерево в окрему таблицю й тримаємо junction-таблицю прив’язок документ↔класифікатор. На запит "знайди мені все по страхуванню" це дає можливість обмежити простір пошуку ще на етапі фільтрації, до того як вмикається векторний пошук. Окрім klasy, з тих самих ендпоінтів забираємо словник тем (temy.txt), теґів (tags.txt), термінів (term/names.txt, term/terms.txt).
Звідки беремо все це: повний список відкритих джерел
Підсумуємо. Усе, на чому стоїть пайплайн Yustai — публічно доступне:
| Що | Звідки |
|---|---|
| Повний каталог документів | https://data.rada.gov.ua/ogd/zak/laws/data/csv/doc.txt |
| Картка документа (метадані, klasy) | https://data.rada.gov.ua/laws/card/{nreg}.json |
| Класифікатор: назви | https://data.rada.gov.ua/ogd/zak/klasname.txt |
| Класифікатор: дерево | https://data.rada.gov.ua/ogd/zak/klastree.txt |
| Теми | https://data.rada.gov.ua/ogd/zak/temy.txt |
| Теґи | https://data.rada.gov.ua/ogd/zak/tags.txt |
| Відношення між документами | https://data.rada.gov.ua/ogd/zak/vidnosh.txt |
| Терміни (назви, визначення, прив’язки) | https://data.rada.gov.ua/ogd/zak/term/names.txt, term/terms.txt, term/docs.txt |
| Довідник статусів | https://data.rada.gov.ua/ogd/zak/stan.txt |
| Загальний портал відкритих даних | https://data.gov.ua/ |
Усе у вільному доступі, без реєстрації, без ключів API. Здебільшого — у кодуванні cp1251, з табами як роздільником, що додає трохи спорту, але загалом ці дані вражаюче добре структуровані як для державних реєстрів.
І все ж: скільки законів?
Тепер можна відповісти не прикидкою, а цифрами. Ось що дає свіжий doc.txt станом на 20 серпня 2026 року:
| Фільтр | Кількість |
|---|---|
| Усього записів у каталозі | 294 045 |
| Зі статусом "Діє" (будь-який тип документа) | 121 723 |
| Закони, кодекси, Конституція (типи 1, 21, 216) — за всю історію | 8 306 |
| Закони, кодекси, Конституція зі статусом "Діє" | 6 801 |
| Для порівняння: чинні постанови (тип 2) | 35 989 |
Тобто чинних законів у строгому сенсі — 6 801: Конституція, кодекси і звичайні закони. І навіть тут реєстр підкидає нюанс: записів із типом "кодекс" серед чинних — 24, але Кодекс України про адміністративні правопорушення живе в реєстрі трьома записами (основний плюс два історичні, на які колись розбили його давні редакції), тож фактично чинних кодексів — 22.
Тому коли наступного разу почуєте в новинах "в Україні діє сто тисяч законів" — питайте, що саме малося на увазі. Якщо закони в строгому сенсі — їх зараз близько семи тисяч. Якщо будь-який чинний документ у реєстрі — понад сто двадцять тисяч. Бо ця нібито проста цифра — насправді результат вибору фільтрів, який мав би бути явним. Ми у відкритих даних маємо все, щоб ці фільтри показувати — і Yustai намагається бути системою, в якій вони видимі за замовчуванням.