Skip to main content

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 types — flint: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 lifecycle — flint: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 fields — plain_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 Ed25519 JWS signing and offline .odgs-bundle packages, see the Metric Provenance Enterprise Platform.

👉 Metric Provenance 3-Pillar Enterprise Suite


Licensed under the Apache License 2.0.

Metadata

Release files for odgs-flint-bridge 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for odgs-flint-bridge 0.4.2
File Size Uploaded Provenance Actions
odgs_flint_bridge-0.4.2.tar.gz 21.9 kB Without provenance Details for odgs_flint_bridge-0.4.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for odgs-flint-bridge 0.4.2
File Interpreter ABI Platform Actions
odgs_flint_bridge-0.4.2-py3-none-any.whl Python 3 none any Details for odgs_flint_bridge-0.4.2-py3-none-any.whl

Total release size: 37.8 kB

Release files / odgs_flint_bridge-0.4.2.tar.gz

Download URL odgs_flint_bridge-0.4.2.tar.gz
Size 21.9 kB
Tags Source
SHA-256 checksum
How to use checksums
92fd45ded89f0d207aba95dff2ea970120213f2f274e05d438c34256af3f70d3
BLAKE2b-256 checksum
How to use checksums
fc24050b8efacd13d2655c5a8dc2029ad30c5e533b264bac4dcfc27087ca217f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / odgs_flint_bridge-0.4.2-py3-none-any.whl

Download URL odgs_flint_bridge-0.4.2-py3-none-any.whl
Size 15.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c127865aebc9a4537ba17ea3012de9ab46bded0cda3b321f633dd442970591c5
BLAKE2b-256 checksum
How to use checksums
9ba0491d4ca228296989f81240a0f7e43a519d17f57233e6aba3a430160b3f8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for odgs-flint-bridge 0.4.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page