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 the live draft: PubLedge, EveryAILaw, AI Incident Law.
What's in the current draft (v0.4)
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:Content + gist:Intention (when intent-bearing) | 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 your dataset (current draft: v0.4)
Adopters bind via JSON-LD @context. obligationfirst.org/v1/ is the live resolution target; w3id.org/of/v1/ is the planned permanent vocabulary prefix and will redirect once the w3id PR is filed. JSON Schemas validate every entity. v0.1 bindings remain valid through v0.4 with no migration.
JSON-LD context
{
"@context": "https://obligationfirst.org/v1/",
"@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": "gist:Jurisdiction", "ref": "us-co" },
"hasTerm": [
"https://obligationfirst.org/v1/examples/colorado-sb24-205/term/sb24-205-duty-of-care"
],
"sameAs": [
"https://everyailaw.com/instrument/colorado-sb24-205.json"
]
}
The @id is adopter-local, opaque, and permanent — never a standard source IRI. Jurisdiction is a typed ISO 3166 field; the real EveryAILaw record rides as a sameAs crosswalk.
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; v0.1 records continue to validate against v0.4.
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, publish a.well-knownnaming profile (VoIDuriSpace/uriRegexPattern+ RFC 6570 template), and carryjurisdictionas a typed ISO 3166 field. - 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
| 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, a published .well-known naming profile (VoID uriSpace/uriRegexPattern + RFC 6570 template), and jurisdiction as a typed ISO 3166 field. |
| L3 | Crosswalk-conformant | L2 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 live Obligation-First bindings. v0.1 records remain valid through v0.4 with no migration. Obligation-First is the shared validation and identifier contract between AI laws, joint interpretations, and legal incident records.
PubLedge
Open recordkeeping protocol for joint interpretations — JIAs, RMAs, no-action letters.
binding liveEveryAILaw
AI law and obligation tracker. Publishes statutory and regulatory obligation records.
binding liveAI Incident Law
Public-record corpus of AI-related cases. Exercises the proceeding strand.
binding liveWorked examples
The repo includes four real-world record sets round-tripped through the current draft. Each tests a different part of the schema.
Moffatt v. Air Canada
BC 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.
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.