Map the world by obligation, not by text.

An open upper schema for laws, cases, and joint interpretations. Bound to Semantic Arts gist. Aligned with LegalRuleML.

Statutes, cases, and agreements all create, interpret, or allocate obligations. Obligation-First makes the obligation the unit of comparison across jurisdictions, instruments, and time. EveryAILaw, PubLedge, and AI Incident Law have published v0.6 projections validated against the released contract.

What's in the current draft (v0.6)

A small, opinionated upper schema. The spine is lifted from PubLedge; the proceeding strand is the new contribution. Together they cover three domains in one schema.

Obligation as unit

The schema models normative content by what it requires, not what it says. Two laws with the same Obligation are commensurable even when their texts differ.

Bound to gist

Every entity binds to a Semantic Arts gist class. Authority wraps gist:Organization. Determination is gist:Determination. No new upper ontology.

Three-domain bridge

Statutes, cases, and joint interpretations ride one schema. A Determination can anchor to an EveryAILaw Term from a PubLedge JIA's Obligation.

The four-role spine

RoleTermgist bindingWhat it is
Authorityof:Authoritygist:OrganizationAn organization exercising an evidenced legal, administrative, adjudicative, enforcement, or standards role. Unsupported bases are omitted.
Containerof:Instrumentgist:Agreement / gist:SpecificationThe artifact with binding force — a law, agreement, or ruling.
Secondaryof:Termgist:Specification; contractual Terms may also assert gist:ContractTermA clause or provision within an Instrument.
Primaryof:Obligationexplicit unclassified state or deontic quartet*A source-grounded normative position. Unknown classification never silently defaults to Requirement.

*Aligned with LegalRuleML 1.0 §5.3 deontic operators.

The proceeding strand

RoleTermgist bindingWhat it is
Matterof:Proceedingof:LegalProceeding over gist:EventThe legal matter — case, action, or enforcement docket.
Assertedof:Allegationgist:Content + gist:Intention (when intent-bearing)Asserted but unverified facts. Not authoritative until decided.
Decidedof:Determinationgist:DeterminationAn Authority's ruling. Resolves Allegations and anchors to Obligations.

The category layer

RoleTermgist bindingWhat it is
Conceptof:ObligationCategorygist:CategoryA jurisdiction-neutral duty concept — human oversight, incident reporting. What makes a Colorado transparency duty comparable to a Utah one.

A Category is deliberately not a duty: no jurisdiction, no duty holder, no created_by, and nobody can comply with one. Obligations join categories through gist:isCategorizedBy; skos:exactMatch remains concept-to-concept only. A ruling that concerns a concept generally rather than one statute's version of it anchors the Category.

The alleged-vs-determined distinction is core. An "event" in a legal matter is alleged until determined; post-ruling, the disposition could go either way. Modeling that as a status flag forces premature classification. Three distinct entity types preserve epistemic honesty: an Allegation is what was asserted; a Determination is what was decided; a Proceeding accumulates both over its lifetime.

Bind your dataset (current draft: v0.6)

Adopters bind via JSON-LD @context. obligationfirst.org/v1/ is the live resolution target; w3id.org/of/v1/ is the planned permanent vocabulary prefix. Legacy v0.5 shapes remain schema-valid, while projections using v0.6 vocabulary migrate deterministically and declare obligation-first >=0.6.0 <0.7.0.

JSON-LD context

{
  "@context": "https://obligationfirst.org/v1/context.jsonld",
  "@type": "of:Instrument",
  "@id": "https://obligationfirst.org/v1/examples/colorado-sb24-205/instrument/sb24-205",
  "title": "Colorado AI Act",
  "issuedBy": ["https://obligationfirst.org/v1/examples/colorado-sb24-205/authority/general-assembly"],
  "jurisdiction": { "@type": "of:Jurisdiction", "territorial_scope": ["us-co"] },
  "hasTerm": [
    "https://obligationfirst.org/v1/examples/colorado-sb24-205/term/sb24-205-duty-of-care"
  ],
  "describesSameEntityAs": [
    "https://everyailaw.com/instrument/colorado-sb24-205.json"
  ]
}

The @id is adopter-local, opaque, and permanent. Jurisdiction describes legal competence with explicit territorial scope. A weaker record-correspondence link avoids unsafe OWL identity merging.

JSON Schema validation

# Each entity has a schema at /v1/schema/

curl https://obligationfirst.org/v1/schema/instrument.schema.json
curl https://obligationfirst.org/v1/schema/term.schema.json
curl https://obligationfirst.org/v1/schema/obligation.schema.json
curl https://obligationfirst.org/v1/schema/proceeding.schema.json

# Validate with any JSON Schema 2020-12 validator

Level 2 adopters validate every record, inverse and relation constraints, lifecycle coherence, naming-profile fidelity, and parity across all emitted surfaces.

Three steps to bind a dataset

  1. Reference the canonical @context — set @context: "https://obligationfirst.org/v1/context.jsonld" on every record. Repo-local extensions go in a second context object.
  2. Validate shape and graph contracts — run every record through the schema for its Obligation-First @type, validate graph coherence and every emitted surface, and publish a .well-known naming profile.
  3. Cite obligationfirst.org as the canonical reference — adopter sites and documentation should link back. The IRI prefix is permanent.

Assistant-assisted setup

For assistant-assisted repository work, start with the GuideCheck artifact at /.well-known/assistant-guide.txt. Verify it with GuideCheck or another conformant verifier before the assistant acts. The Level 4 sidecar manifest is published at /.well-known/assistant-guide-manifest.txt. Conformance verifies form and provenance, not safety.

Conformance levels

LevelBarRequired
L1IRI-only@id and @type use canonical of: IRIs. @context references this domain.
L2Schema-and-graph-conformant (recommended)L1 plus record shape, graph coherence, publication-surface parity, validator identity, a published naming profile, and typed legal competence where supported.
L3Crosswalk-conformantL2 plus every crosswalk the adopter's naming profile declares is present on every applicable record. Recommended baseline is the crosswalk matrix: Wikidata (SHOULD for authorities), ELI (MUST for instruments where issued), ECLI / neutral citation for cases, urn:lex (MAY), Akoma Ntoso, EuroVoc.

Adopters

Three PAICE legal projects publish v0.6 projections. Obligation-First is their shared semantic, validation, provenance, and identifier contract, and the combined graph passes the released federation gate.

PubLedge

Open recordkeeping protocol for joint interpretations — JIAs, RMAs, no-action letters.

binding live

EveryAILaw

AI law and obligation tracker. Publishes statutory and regulatory obligation records.

binding live

AI Incident Law

Public-record corpus of AI-related cases. Exercises the proceeding strand.

binding live

Worked examples

The repo includes four real-world record sets round-tripped through the current draft. Each tests a different part of the schema.

Flag of Canada

Moffatt v. Air Canada

BC tribunal claim. Two Allegations, one Determination, common-law anchoring. Tests the proceeding strand.

Flag of Colorado

Colorado SB 24-205

Three layers in one example: enacted statute (spine), federally-stayed enforcement (proceeding strand), SB26-189 ADMT replacement bill (second Instrument). Stress test of the schema against a contested, multi-layered situation.

Flag of Utah

Utah OAIP JIA

Joint interpretation between Utah OAIP and a regulated party. Tests PubLedge round-trip; binding is purely additive.

Flag of the European Union

EU AI Act Article 50

The source-hierarchy collapse: regulation article, recital, and non-binding Commission guideline all ride one schema as Terms. Interpretation is anchors, never override. Tests cross-layer EU normative structure.