ungovr.providers.sgit.ai / What you get when you reach a law
What you get when you reach a law
The rabbit hole works right up to the law. Entity → jurisdiction → instrument all resolve. Then it stops: there is no text, no PDF, no markdown, no graph — and for every sub-national jurisdiction, no detail document that can be addressed at all.
Prose from the government-graph vault dkeclt5r @ obj-cas-imm-760fee6127a2, 9 September 2026. Every row below was fetched in this session and hashed; the requests are in the retrieval log. Nothing here is read from their documentation. When the vault moves ahead, this page is behind — and says so rather than guessing.
The short answer
| You want | UnGovr gives you | State |
|---|---|---|
| The law's text — md, html, txt, pdf, docx | Nothing. No format carries the instrument itself | absent |
| A structured summary of it | 31–34 JSON fields: deadlines, residency, fees, exemptions, appeals, penalties | rich |
| A link to the actual source | law_url + primary_source_url + typed secondary_sources[] | good |
| Provision-level identifiers you could cite as nodes | Only inside exemptions[].code — and only on some of them | partial |
| A semantic graph — nodes, edges, ontology | Nothing. The only "graph" in their whole OpenAPI is GeoJSON | absent |
| The same for a sub-national jurisdiction | 404. 254 of 398 laws have no reachable detail document | broken |
JSON, and only JSON
Every response is application/json. There is no other representation and asking for one changes nothing: verified 9 Sep 2026
GET /v1/laws/records/ad.md 404 GET /v1/laws/records/ad.jsonld 404 GET /v1/laws/records/ad.pdf 404 GET /v1/laws/records/ad.ttl 404
Content negotiation is not ignored quietly — it is ignored identically. Accept: text/markdown, Accept: application/ld+json and no Accept header at all return the same document with the same sha256, b06492bfb34b9572…, 6,749 bytes. That is not a header saying JSON; that is the same bytes three times.
What the summary actually holds — and it is a lot
Andorra's Law 33/2021 comes back as 34 top-level fields. Not the statute: a research summary of it, with real structure. verified 9 Sep 2026
exemptions[] — 14 entries, each with a code, a name, a description and whether it is discretionary. appeal_process[] — the tiers, the body, the deadline in days, a contact URL. submission_methods[], required_elements[], fee_structure{}, penalties{} split three ways, response_deadline_notes, residency_required, private_right_of_action.
This is genuinely good data, and it is the part worth saying plainly: somebody read 398 statutes in dozens of languages and normalised them. The gap below is not a complaint about that work.
The provenance link is there, and it works
This is the half of the question that has a happy answer. 392 of the 398 laws carry a URL to the instrument at its official publisher — portaljuridicandorra.ad, boe.es, lexfind.ch, saij.gob.ar — across 339 distinct hosts. measured 9 Sep 2026
secondary_sources[] adds typed extras (government, reference, …) and rti_rating_url links the external rating that scored it. So the hop out to the real source exists and is well made. **What does not exist is the hop back *in*** — you leave for a PDF on a government site and the graph ends there.
Provision-level identifiers: one field, some of the time
exemptions[].code carries values like art11-a … art11-m, art12. That is a real article-and-subparagraph anchor — the raw material of a provision node.
But it is the only field that does it, and it does not always. Across a deterministic sample of ten jurisdictions, 58 exemptions carried 34 article-shaped codes — 59%. measured 9 Sep 2026 Everywhere else, article references live in prose: "Article 15 provides that consultation of public information is free." Readable by a person, not addressable by a graph.
The sub-national half is unreachable
This is the finding that matters most for anything jurisdictional. 254 of the 398 records laws are sub-national, and their jurisdiction values carry a slash — us/ms, br/minas-gerais, au/nt, pk/sindh. The detail route is a single path segment, so none of them can be addressed.
| Sample | Detail endpoint |
|---|---|
26 national jurisdictions (ad, ca, fi, bj, vu, …) | 26 of 26 returned 200 |
24 sub-national jurisdictions (us/ms, au/nt, ar/v, …) | 24 of 24 returned 404 |
Raw, percent-encoded and dash-substituted forms all 404. verified 9 Sep 2026 They are not missing from the corpus — they are in the index, with name, citation, source URL, response days and RTI rating. It is the 30-odd-field document that cannot be reached.
Why this is the expensive one. Sub-national is where the jurisdictional variation lives, and it is exactly what a standards graph needs. The dev pack's whole argument turns on Colorado, California and New York City being addressable bodies in named places. Their AI-law crosswalks point at those three; their records-law detail does not resolve for any of them.
Ontology: a controlled vocabulary, not a graph
The closest thing in the whole API is the AI-law corpus's vocab.json: 4 verdicts, 6 contexts, 6 crawl-policy fields, 22 field definitions and 17 enums, with a JSON Schema at ungovr.ai-laws/2. verified 9 Sep 2026
That is a real controlled vocabulary — every enum value defined in prose, which is more than most publishers manage. It is not an ontology and not a graph: no classes, no properties with domains and ranges, no relations between terms, no SKOS, no OWL, no RDF, no JSON-LD. A flat dictionary of fields and their permitted values.
The schema document is public; the data behind it is not — it is key-gated and its licence states "No license is conveyed by receipt of this file." Which is why this site describes its shape and stores none of it.
So: could we help? Yes, and this is the shape of it
They have done the expensive half. Finding, reading and normalising 398 records laws across 205 countries and 2,915 AI-law instruments is the part that does not automate. Nobody else has that corpus.
What is missing is the part this estate has already built twice. The Regulation Graph parsed the EU AI Act from official Formex XML into 1,523 nodes hash-verified to source bytes. The EU AI Act current text carries a sha256 per provision, rolling to a root hash. Both are the same operation this corpus needs and does not have: instrument → provisions → citable nodes.
| They supply | We supply | The result |
|---|---|---|
| The instrument, found and summarised, with its publisher URL | Parsing it into provisions with a hash each | A provision you can cite as a node |
| 254 sub-national jurisdictions, identified and slugged | The anchor node that binds a body to a place | An obligation with a subject |
| A controlled vocabulary of 22 fields and 17 enums | Edges with named inverses | A vocabulary you can traverse |
None of this needs their corpus to be redistributed, which matters because part of it cannot be. The graph can carry the anchor, the hash and the link, and leave the text where its licence requires it to stay.
The design is written down: the security-standards dev pack, and specifically file 03, which now has this page's findings as its evidence rather than an assumption.
What this page does not claim
Nothing here is a defect report. The API does exactly what its OpenAPI says it does; none of the gaps above is a broken promise, and the sub-national 404 is the only one that looks like an oversight rather than a scope decision.
It is one snapshot. Every figure was fetched on 9 September 2026 and hashed; the corpus rebuilds nightly. The retrieval log carries every request, including the 404s, because a probe that failed is the evidence for half of this page.
We have not asked them. All of this is read off the live API. Whether provision-level structure or a sub-national detail route is planned, refused or simply not yet built is a conversation nobody has had — and handback item 5 is that somebody should.