Skip to content

lawref.schemas

Реестр нормативных схем базового пакета (WP-03 + DECISION-0006).

Решение по кодогенерации (WP-03, зафиксировано): типы пишутся руками в обеих реализациях, схемы служат контрактом через валидацию — кодогенераторы из JSON Schema 2020-12 не переваривают allOf/if-then legal-ir и дают непригодные типы. Addendum-схемы (ontology-package, kz-corpus-*) — вне скоупа (план WP-03).

SPEC §0.1: схемы нормативно определяют форму, prose — семантику.

Attributes

NameDescription
IR_SCHEMA_VERSIONSNo description.
NORMATIVE_SCHEMASNo description.
SCHEMA_BASE_URLNo description.
SCHEMA_DIRNo description.
VERDICT_CACHE_DIRNo description.

Functions

NameDescription
cached_validЕсть ли в кэше положительный вердикт для этих байтов под этой схемой.
fast_validatorСкомпилированный fastjsonschema-валидатор схемы либо None, если
loadЗагрузка схемы по имени с self-check-ом (Draft 2020-12).
registryRegistry for relative cross-schema references used by Core artifacts.
remember_validЗаписать положительный вердикт (атомарно; ошибки ввода-вывода молча).
schemas_fingerprintsha256 байтов всех нормативных схем и формата кэша — отпечаток вердикта.
validateСписок сообщений об ошибках; пустой — документ валиден.
validate_bytesvalidate с кэшем между запусками по байтам документа: raw — те
validatorNo description.

IR_SCHEMA_VERSIONSattributemodule attribute#

IR_SCHEMA_VERSIONS = (
  'law.core.ir/0.1',
  'law.core.ir/0.2',
  'law.core.ir/0.3',
  'law.core.ir/0.4',
  'law.core.ir/0.5'
)

NORMATIVE_SCHEMASattributemodule attribute#

NORMATIVE_SCHEMAS = {
  'concept-catalog-inputs': 'concept-catalog-inputs.schema.json',
  'concept-alignment-policy': 'concept-alignment-policy.schema.json',
  'concept-alignment-report': 'concept-alignment-report.schema.json',
  'concept-rule-alignment-policy': 'concept-rule-alignment-policy.schema.json',
  'concept-rule-alignment-report': 'concept-rule-alignment-report.schema.json',
  'import-ir': 'import-ir.schema.json',
  'import-mapping': 'import-mapping.schema.json',
  'import-package-policy': 'import-package-policy.schema.json',
  'import-package-plan': 'import-package-plan.schema.json',
  'import-bundle': 'import-bundle.schema.json',
  'import-report': 'import-report.schema.json',
  'import-recipe': 'import-recipe.schema.json',
  'native-records': 'native-records.schema.json',
  'native-modules': 'native-modules.schema.json',
  'import-diff': 'import-diff.schema.json',
  'native-dag': 'native-dag.schema.json',
  'import-inventory': 'import-inventory.schema.json',
  'import-coverage': 'import-coverage.schema.json',
  'import-adapter': 'import-adapter.schema.json',
  'legal-ir': 'legal-ir.schema.json',
  'evaluation': 'evaluation.schema.json',
  'calendar-dataset': 'calendar-dataset.schema.json',
  'package-manifest': 'package-manifest.schema.json',
  'package-info': 'package-info.schema.json',
  'package-passport': 'package-passport.schema.json',
  'case-export': 'case-export.schema.json',
  'profile': 'profile.schema.json',
  'profile-descriptor': 'profile-descriptor.schema.json',
  'package-report': 'package-report.schema.json',
  'package-benchmark': 'package-benchmark.schema.json',
  'lockfile': 'lockfile.schema.json',
  'diagnostic': 'diagnostic.schema.json',
  'editor-index': 'editor-index.schema.json',
  'editor-source-map': 'editor-source-map.schema.json',
  'law-expansion': 'law-expansion.schema.json',
  'conformance-descriptor': 'conformance-descriptor.schema.json',
  'review-approval': 'review-approval.schema.json',
  'feature-registry': 'feature-registry.schema.json',
  'parameter-dataset': 'parameter-dataset.schema.json',
  'decision-table': 'decision-table.schema.json',
  'external-snapshot': 'external-snapshot.schema.json',
  'counterfactual-input': 'counterfactual-input.schema.json',
  'counterfactual-result': 'counterfactual-result.schema.json',
  'query-result': 'query-result.schema.json',
  'query': 'query.schema.json',
  'focused-evaluation': 'focused-evaluation.schema.json',
  'business-requirements': 'business-requirements.schema.json',
  'evaluation-request': 'evaluation-request.schema.json',
  'screen-binding': 'screen-binding.schema.json',
  'change-set': 'change-set.schema.json',
  'change-dossier': 'change-dossier.schema.json',
  'population-bank': 'population-bank.schema.json',
  'population-binding': 'population-binding.schema.json',
  'population-materialization': 'population-materialization.schema.json',
  'population-impact-report': 'population-impact-report.schema.json',
  'package-descriptor': 'package-descriptor.schema.json',
  'package-questions': 'package-questions.schema.json'
}

SCHEMA_BASE_URLattributemodule attribute#

SCHEMA_BASE_URL = 'https://law.arxo.io/schema/'

SCHEMA_DIRattributemodule attribute#

SCHEMA_DIR = schema_dir()

VERDICT_CACHE_DIRattributemodule attribute#

VERDICT_CACHE_DIR = cache_dir() / 'schema-verdicts'

cached_validfunction#

def cached_valid(name: str, raw: bytes) -> bool

Есть ли в кэше положительный вердикт для этих байтов под этой схемой.

fast_validatorfunctioncached#

def fast_validator(name: str)

Скомпилированный fastjsonschema-валидатор схемы либо None, если зависимости нет или схема ему не по зубам (тогда только jsonschema).

loadfunctioncached#

def load(name: str) -> dict

Загрузка схемы по имени с self-check-ом (Draft 2020-12).

registryfunctioncached#

def registry() -> Registry

Registry for relative cross-schema references used by Core artifacts.

remember_validfunction#

def remember_valid(name: str, raw: bytes) -> None

Записать положительный вердикт (атомарно; ошибки ввода-вывода молча).

schemas_fingerprintfunctioncached#

def schemas_fingerprint() -> str

sha256 байтов всех нормативных схем и формата кэша — отпечаток вердикта.

validatefunction#

def validate(name: str, document: dict) -> list[str]

Список сообщений об ошибках; пустой — документ валиден.

Валидный документ (штатный путь: CLIR зависимостей при каждом ask, минуты jsonschema на КоАП) проверяется скомпилированным fastjsonschema — на порядок быстрее. Найденная им ошибка не отчитывается его словами: документ заново проходит jsonschema, чьи формулировки входят в конверты отказов и голдены; ответ тот же байт в байт.

validate_bytesfunction#

def validate_bytes(name: str, raw: bytes, document: dict) -> list[str]

validate с кэшем между запусками по байтам документа: raw — те самые байты, из которых разобран document.

validatorfunctioncached#

def validator(name: str) -> Draft202012Validator

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.