Skip to main content

Institutional Bridge: Compiling TNO FLINT (Regels als Code) into ODGS Executable Rules.

Project description

ODGS FLINT Bridge

License ODGS PyPI Python

The ODGS FLINT Bridge is an open-source institutional connector that translates TNO FLINT (Formal Language for the Interpretation of Normative Texts) Linked Data into ODGS Executable Enforcement Rules.

It bridges the semantic legal ontology layer with the ODGS enforcement engine — connecting "Rules as Code" (Regels als Code) ecosystems to live data pipelines.

See it in action

Watch the FLINT bridge compile a GDPR Article 33 norm and enforce it

A GDPR Article 33 breach-notification norm is compiled into a real ES256-signed rule pack; a 30-hour notice is APPROVED, a 118-hour notice is HARD_STOP-blocked — real engine, real Ed25519 audit seal.


Install

pip install odgs-flint-bridge

CLI

After install, the odgs-flint command is available:

# Compile a FLINT JSON-LD file and print the rule
odgs-flint sample_flint.json

# Compile and save to a file
odgs-flint sample_flint.json --output my_rule.json

# Compact output (no indentation)
odgs-flint sample_flint.json --compact

On file save, the CLI prints a summary:

Rule written to my_rule.json
  semantic_hash:  a3f8c2d1...
  urn:            urn:odgs:rule:flint:zorgtoeslag_art5_p1
  effective_from: 2026-01-01   (if declared in flint:period)

Python API

from odgs_flint_bridge.parser import FlintParser
from odgs_flint_bridge.compiler import OdgsCompiler

# Load your FLINT JSON-LD payload
flint_payload = {
    "@type": "flint:Fact",
    "flint:identifier": "urn:flint:fact:zorgtoeslag:art5:p1",
    "flint:name": "Zorgtoeslag Threshold",
    "flint:sourceReference": "https://wetten.overheid.nl/BWBR0018988/",
    "flint:expression": {
        "flint:subject": "inkomen",
        "flint:operator": "LESS_THAN_OR_EQUAL",
        "flint:targetValue": 35000
    }
}

# Parse → Compile  (FlintParser.parse() auto-routes by @type)
parsed = FlintParser.parse(flint_payload)
rule = OdgsCompiler.compile_rule(parsed)

print(rule["semantic_hash"])  # SHA-256 of the source FLINT JSON-LD
print(rule["urn"])             # urn:odgs:rule:flint:zorgtoeslag_art5_p1

The compiled rule is ready to load directly into the ODGS enforcement engine:

from odgs.executive.interceptor import OdgsInterceptor

engine = OdgsInterceptor(rules=[rule])
engine.intercept("urn:odgs:custom:myprocess", {"inkomen": 40000})

What It Does

  1. Parses all six FLINT typesflint:Fact, flint:Duty, flint:Act, flint:Source, flint:Reference, flint:Violation from any TNO FLINT source (wetten.overheid.nl, Choppr, EUR-Lex, etc.)
  2. Computes semantic_hash — Auto-generates a SHA-256 of the verbatim source payload, logged on every enforcement event — a tamper-evident link from decision back to law.
  3. Extracts rule lifecycleflint:Duty payloads with a flint:period produce effective_from/effective_to bounds, enforced by the ODGS engine.
  4. Type-specific rule shapes — Each FLINT type compiles to the right ODGS severity: HARD_STOP for facts/duties/violations, ACT_CONSTRAINT for acts, METADATA_ONLY for sources, LOG_ONLY for references.
  5. Human-readable audit fieldsplain_english_description (from flint:description) and non_conformance_message (from flint:salvageClause) surface directly in S-Cert audit logs.

The Architecture

flowchart LR
    subgraph legislative["⚖️ Legislative Plane"]
        A["wetten.overheid.nl\nChoppr / TNO FLINT Tools"]
        B["FLINT JSON-LD\nflint:Fact · flint:Duty · flint:Act\nflint:Source · flint:Reference · flint:Violation"]
        A --> B
    end

    subgraph bridge["🔗 ODGS FLINT Bridge  ← you are here"]
        C["FlintParser\nDeserialise JSON-LD"]
        D["OdgsCompiler\nCompute semantic_hash\nExtract temporal bounds"]
        B --> C --> D
    end

    subgraph engine["⚙️ ODGS Enforcement Engine"]
        E["OdgsInterceptor\npip install odgs"]
        F["S-Cert Audit Log\nevent_id · semantic_hash\npayload_hash · verdict"]
        D --> E --> F
    end

    subgraph exec["🗄️ Live Data Pipeline"]
        G["Databricks"]
        H["Snowflake"]
        I["AI Agent / API"]
        E --> G & H & I
    end

    style legislative fill:#E8F4FD,stroke:#2196F3,color:#000
    style bridge     fill:#FFF3E0,stroke:#FF9800,color:#000
    style engine     fill:#E8F5E9,stroke:#4CAF50,color:#000
    style exec       fill:#F3E5F5,stroke:#9C27B0,color:#000

Enterprise

This package emits rules with semantic_hash: "auto-computed" — the SHA-256 is derived locally from the source payload. For Registry-attested hashing with sovereign Ed25519 signing (required for EU AI Act liability indemnification), upgrade to the Metric Provenance enterprise tier.

👉 Sovereign Registry & Enterprise Law Packs


Licensed under the Apache License 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odgs_flint_bridge-0.4.1.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odgs_flint_bridge-0.4.1-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file odgs_flint_bridge-0.4.1.tar.gz.

File metadata

  • Download URL: odgs_flint_bridge-0.4.1.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for odgs_flint_bridge-0.4.1.tar.gz
Algorithm Hash digest
SHA256 51fb78b8d303e2557da53b0f27b88ea2da38de56a30557ddf8cfc11a9b8c77d8
MD5 7d1251b9da91fa69b619282e2dcf1c1f
BLAKE2b-256 b28dd6ea9a9512447d1e5d05fd56a57892bc27f4ca7b7d8918cb190f627b9a07

See more details on using hashes here.

File details

Details for the file odgs_flint_bridge-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for odgs_flint_bridge-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e72ebd59b644a7deb57c85cef4a98a5a4bc300767a43cfb934ace95977529255
MD5 7fdd9fbc5db0575d2a85be0d127bba8b
BLAKE2b-256 70166da15479643727ac223f53bd27f702a72401f79318caf281efcca1ac88da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page