Skip to content

OB extraction — 7-stage plan

De OB-ingest staat momenteel op SRU-metadata-only: titles + Dublin Core in canonical.documents, geen body, geen bijlagen, geen LVBB-cross-link. Voor BOPA-toetsing, retrieval over tekst, en versie-chains heb je meer nodig. Het 7-stage plan in project_ob_extraction.md (memory, 2026-05-01) beschrijft hoe.

OB-structuur — drie lagen

Layer 1 — Publication wrapper (welk "blad"):

  • stb- Staatsblad · stcrt- Staatscourant · trb- Tractatenblad
  • gmb- Gemeenteblad · prb- Provincieblad · wsb- Waterschapsblad · bgr- Blad GR
  • blg- Standalone bijlage (first-class object, citable from many bekendmakingen)

Layer 2 — Publication regime (twee coexistierende XML schemas):

  • OP-XML (legacy, pre-2024 + non-Ow): XSDs op repository.officiele-overheidspublicaties.nl/Schema/OP/. Body = <officiele-publicatie><lichaam> met <bijlage>, <illustratie>, <externe-verwijzing>, <intern-verwijzing>, <eli:related>, <dcterms:isReferencedBy>.
  • STOP-IMOP (Omgevingswet, 2024-01-01+): Roots <data:OfficielePublicatie> (besluit) en <tekst:RegelingCompact> (regeling). Bijlagen als <tekst:Bijlage> blocks. References via data:TekstReferentie (typed AKN / JCI / URI), IntIoRef (intra-pub), ExtIoRef (cross-pub AKN). Mutations: data:RegelingMutatie.

Layer 3 — "Real document" location varies by document type:

Doc type"Echte document" leeft in
OmgevingsplanLVBB regeling expression (al ingest via DSO)
OmgevingsvisieBijlage in OB of LVBB
Beleidsregel / verordening (non-Ow)Body van bekendmaking + CVDR
Bestemmingsplan (pre-Ow)DSO/IMRO-infrastructuur (ruimtelijkeplannen.nl, IMRO ID)
Vergunning / projectbesluitBekendmaking-body zelf

Bijlage anatomie

Elke publicatie levert manifest.xml lijstend de resources (mime, role, href onder zoek.officielebekendmakingen.nl/{pub-id}/{filename}). Format-mix: PDF ~90% (soms scan-only, OCR nodig), GML voor werkingsgebieden (DSO handelt deze al af voor Ow-plannen), GeoTIFF, SVG-illustraties, occasional XLSX/DOCX.

Failure-modes:

  • Name-only refs (pre-2018) — geen URL, alleen bestandsnaam
  • Cross-system bijlagen op ruimtelijkeplannen.nl — buiten OB
  • Regeling-bijlagen versioned vs besluit-bijlagen one-shot — verschillende lifecycle

De zeven stages

StageDoelBelangrijkste tabellen / code
0SRU schema-completeness — OfficielePublicaties-connection + w.* / cd.* field-parsing aan KoopSruClient. Inclusief bekendmakingBetreffendePlan.KoopSruClient.ts, SruService.ts
1Body-fetch — metadata.xml + body XML + manifest.xml; cold storage.cold.bekendmaking_raw, cold.bekendmaking_manifest, cold.bekendmaking_body
2Body-parsing — dual OP-XML + STOP-IMOP, unified write-target.canonical.bekendmaking_references reference-graph
3Bijlage-discovery + acquisition. PDF / GML / SVG / DOCX format-dispatch. Standalone blg- krijgen eigen rij + reference-rijen.Object store + parent_document_id op canonical.documents
4OCR voor scan-only PDFs. Recommend: Tesseract first, paid OCR opt-in voor BOPA-critical.extraction_confidence flag
5LVBB regeling-resolution (Ow-only). Cross-link naar bestaande DSO dso_artikel, never re-ingest.canonical.bekendmaking_regeling_links
6Pre-Ow IMRO-resolution. Wire version_of across bekendmaking↔bestemmingsplan boundary.extends bestaande IMRO chain

Twaalf open beslissings-punten

Per de research-memo, samengevat:

  • Cold storage shape: raw + parsed.
  • Manifest fetch policy: always.
  • Blob store: object store keyed by sha256, niet BYTEA.
  • OCR: Tesseract default; paid opt-in voor BOPA-critical.
  • Pipeline shape: twee parsers, één schema.
  • LVBB: cross-link, geen re-ingest.
  • Standalone blg-: eigen rij + reference-rijen.
  • Pre-Ow bestemmingsplan-bijlagen: laat aan DSO/IMRO.
  • Versioning: bijlage_kind kolom.
  • Taxonomie v1 interactie: parent krijgt bekendmaking primary + onderliggende instrument secondary; bijlage krijgt het instrument als primary.
  • Crawl rate: 5 req/s + backoff.
  • Deferred: signed-PDF verification, geo tile pyramid, citation-graph beyond hop-1, image-bijlage symbol recognition.

Hoe te gebruiken bij beslissingen

  • Wanneer een feature document-content nodig heeft buiten metadata (BOPA toetsing, retrieval over text, version chains), check welke stage(s) eerst gedaan moeten worden; paper niet over met regex op titels.
  • Voor Ow-plannen: het "echte document" is de regeling-expressie in DSO/LVBB — canonical.dso_artikel-rijen zijn al er, de join vanuit bekendmaking is wat ontbreekt.
  • Voor pre-Ow-plannen: IMRO is het thuis — zelfde pattern, andere infrastructuur.
  • De 7-stage split is gated by clear handoffs — implementeer Stage N vóór Stage N+1; geen overslaan.
  • Companion van taxonomy v1 (issue #4114): zodra OB-extractie landt, krijgt elk recovered document four-axis-tagging via taxonomy's pattern matcher.

Onderliggende docs

  • project_ob_extraction.md (memory) — origineel research draft v0
  • docs/handoffs/2026-05-01-... — vroege FRBR-context
  • KOOP STOP standaard: https://koop.gitlab.io/STOP/standaard/index.html
  • OP XSDs: https://repository.officiele-overheidspublicaties.nl/Schema/OP/

Intern handboek — niet voor externe publicatie