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 do the same thing: they create, interpret, or allocate obligations. Obligation-First makes the obligation the unit of comparison — across jurisdictions, across instruments, across time. Three datasets bind to v0.1: PubLedge, EveryAILaw, AI Incident Law.
What's in v0.1
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
| Role | Term | gist binding | What it is |
|---|---|---|---|
| Authority | of:Authority | gist:Organization | The party with interpretive or regulatory power. Recursive: every Authority's right traces to an Instrument. |
| Container | of:Instrument | gist:Agreement / gist:Specification | The artifact with binding force — a law, agreement, or ruling. |
| Secondary | of:Term | gist:ContractTerm | A clause within an Instrument. |
| Primary | of:Obligation | deontic quartet* | What the Term creates: Requirement, Restriction, Permission, or Reparation. |
*Aligned with LegalRuleML 1.0 §5.3 deontic operators.
The proceeding strand
| Role | Term | gist binding | What it is |
|---|---|---|---|
| Matter | of:Proceeding | gist:Event | The legal matter — case, action, or enforcement docket. |
| Asserted | of:Allegation | gist:Statement | Asserted but unverified facts. Not authoritative until decided. |
| Decided | of:Determination | gist:Determination | An Authority's ruling. Resolves Allegations and anchors to Obligations. |
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 to v0.1
Adopters bind via JSON-LD @context. The IRI prefix is permanent: it will redirect through w3id.org/of/v1/ once v0.1 freezes. JSON Schemas validate every entity.
JSON-LD context
{
"@context": "https://obligationfirst.org/v1/",
"@type": "of:Instrument",
"@id": "https://everyailaw.com/instrument/co-sb24-205",
"title": "Colorado AI Act",
"issuedBy": "https://everyailaw.com/authority/us-co-general-assembly",
"hasTerm": [
"https://everyailaw.com/term/co-sb24-205-1703-duty-of-care"
]
}
Reference the canonical context. Add repo-local extensions in a second context object.
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
Schema-conformant adopters (Level 2) validate every record. Three current adopters target Level 2 for v0.1.
Three steps to bind a dataset
- Reference the canonical
@context— set@context: "https://obligationfirst.org/v1/"on every record. Repo-local extensions go in a second context object. - Validate against the JSON Schemas — run every record through the schema for its
@type. Schema-conformant adopters (Level 2) pass validation for every published record. - Cite obligationfirst.org as the canonical reference — adopter sites and documentation should link back. The IRI prefix is permanent.
Conformance levels
| Level | Bar | Required |
|---|---|---|
| L1 | IRI-only | @id and @type use canonical of: IRIs. @context references this domain. |
| L2 | Schema-conformant (recommended) | L1 plus every record validates against the appropriate schema/*.schema.json. |
| L3 | Crosswalk-conformant | L2 plus identifier round-trip with at least one of Akoma Ntoso, ELI, or ECLI where the source jurisdiction publishes one. |
Adopters
Three projects bind to v0.1. Adoption order — smallest binding effort first — lets earlier adopters validate the schema for later ones.
PubLedge
Open recordkeeping protocol for joint interpretations — JIAs, RMAs, no-action letters.
v0.1 binding plannedEveryAILaw
AI law and obligation tracker. First adopter — smallest lift, validates the schema.
v0.1 binding firstAI Incident Law
Public-record corpus of AI-related cases. Exercises the proceeding strand.
v0.1 binding plannedWorked examples
The repo includes three real-world records round-tripped through v0.1. Each tests a different part of the schema.
Moffatt v. Air Canada
Tribunal claim. Two Allegations, one Determination, common-law anchoring. Tests the proceeding strand.
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.
Utah OAIP JIA
Joint interpretation between Utah OAIP and a regulated party. Tests PubLedge round-trip; binding is purely additive.