BWB XML-parser: formele wetten #6

Closed
opened 2026-03-29 08:41:51 +02:00 by coornhert · 4 comments
Owner

Beschrijving

Bouw een parser die BWB toestand-XML (schema versie 2015-2) omzet naar Markdown + YAML frontmatter voor formele wetten.

Scope

  • Parsing van <wetgeving> root element
  • Hoofdstukken, afdelingen, paragrafen, artikelen, leden
  • YAML frontmatter generatie (titel, BWB-ID, type, datums, status)
  • Correcte Markdown-nesting van artikelstructuur

Edge cases

  • Tabellen in wettekst
  • Wiskundige formules
  • Bijlagen
  • Verwijzingen naar andere regelingen
  • Vervallen artikelen binnen geldende wet

Technische keuzes

  • lxml voor XML-parsing (XPath/XSLT)
  • Output: Markdown bestanden in de PRD-gedefinieerde mappenstructuur

Blocked by

  • #1 (BWB basisset aanvragen bij KOOP)
## Beschrijving Bouw een parser die BWB toestand-XML (schema versie 2015-2) omzet naar Markdown + YAML frontmatter voor formele wetten. ## Scope - Parsing van `<wetgeving>` root element - Hoofdstukken, afdelingen, paragrafen, artikelen, leden - YAML frontmatter generatie (titel, BWB-ID, type, datums, status) - Correcte Markdown-nesting van artikelstructuur ## Edge cases - Tabellen in wettekst - Wiskundige formules - Bijlagen - Verwijzingen naar andere regelingen - Vervallen artikelen binnen geldende wet ## Technische keuzes - `lxml` voor XML-parsing (XPath/XSLT) - Output: Markdown bestanden in de PRD-gedefinieerde mappenstructuur ## Blocked by - #1 (BWB basisset aanvragen bij KOOP)
coornhert added this to the Fase 1 — Data Foundation milestone 2026-03-29 08:41:51 +02:00
coornhert added the
type:feature
component:pipeline
labels 2026-03-29 08:41:51 +02:00
Author
Owner

Update: Niet langer geblokkeerd door #3. BWB data is publiek beschikbaar via de repository () en SRU-interface. Kan direct gestart worden.

**Update:** Niet langer geblokkeerd door #3. BWB data is publiek beschikbaar via de repository () en SRU-interface. Kan direct gestart worden.
Author
Owner

BWB Data-toegang gevalideerd (2026-03-29)

SRU-endpoint (publiek, geen authenticatie):

https://zoekservice.overheid.nl/sru/Search?operation=searchRetrieve&version=1.2&x-connection=BWB&query=dcterms.type==wet&maximumRecords=100

Geeft 23.971 wetten terug met metadata (titel, type, ministerie, datum) en download-URLs.

Repository (publiek, directe download):

https://repository.officiele-overheidspublicaties.nl/bwb/{BWBR_ID}/{DATE}/xml/{BWBR_ID}_{DATE}.xml

Metadata (WTI):

https://repository.officiele-overheidspublicaties.nl/bwb/{BWBR_ID}/{BWBR_ID}.WTI

Beide endpoints getest en werkend. De Stelselwet uit 1821 is succesvol gedownload (88 KB XML).

Aanbevolen aanpak:

  1. Download BWBIDLIST.zip voor de volledige lijst van BWB-IDs
  2. Loop per regeling door de SRU voor metadata
  3. Download XML per regeling via de repository
  4. Parse naar Markdown met lxml
## BWB Data-toegang gevalideerd (2026-03-29) **SRU-endpoint** (publiek, geen authenticatie): ``` https://zoekservice.overheid.nl/sru/Search?operation=searchRetrieve&version=1.2&x-connection=BWB&query=dcterms.type==wet&maximumRecords=100 ``` Geeft **23.971 wetten** terug met metadata (titel, type, ministerie, datum) en download-URLs. **Repository** (publiek, directe download): ``` https://repository.officiele-overheidspublicaties.nl/bwb/{BWBR_ID}/{DATE}/xml/{BWBR_ID}_{DATE}.xml ``` **Metadata (WTI):** ``` https://repository.officiele-overheidspublicaties.nl/bwb/{BWBR_ID}/{BWBR_ID}.WTI ``` Beide endpoints getest en werkend. De Stelselwet uit 1821 is succesvol gedownload (88 KB XML). **Aanbevolen aanpak:** 1. Download BWBIDLIST.zip voor de volledige lijst van BWB-IDs 2. Loop per regeling door de SRU voor metadata 3. Download XML per regeling via de repository 4. Parse naar Markdown met lxml
Author
Owner

Pipeline v0.1 werkend

Drie nieuwe modules:

  • sru_client.py — SRU catalogus crawler
  • downloader.py — XML downloader met caching
  • runner.py — Pipeline orchestratie met CLI

Test: 28 wetten geparsed

python -m wetgit.pipeline.runner --output /tmp/wetgit-rijk --type wet --limit 500

500 SRU records → 27 unieke wetten → 28 Markdown bestanden (incl. cached), 0 failures.

Mappenstructuur

wet/
├── grondwet/BWBR0001840/README.md
├── wetboek-van-strafrecht/BWBR0001854/README.md
├── wetboek-van-burgerlijke-rechtsvordering/BWBR0001827/README.md
└── ...

Nog te doen voor volledige Fase 1

  • Alle ~24.000 wetten verwerken (grotere SRU crawl)
  • Alle types verwerken (niet alleen wet)
  • Resultaat committen naar wetgit/rijk repo
  • Dagelijkse sync (issue #9)
  • Index.json (issue #10)
## Pipeline v0.1 werkend Drie nieuwe modules: - `sru_client.py` — SRU catalogus crawler - `downloader.py` — XML downloader met caching - `runner.py` — Pipeline orchestratie met CLI ### Test: 28 wetten geparsed ``` python -m wetgit.pipeline.runner --output /tmp/wetgit-rijk --type wet --limit 500 ``` 500 SRU records → 27 unieke wetten → 28 Markdown bestanden (incl. cached), 0 failures. ### Mappenstructuur ``` wet/ ├── grondwet/BWBR0001840/README.md ├── wetboek-van-strafrecht/BWBR0001854/README.md ├── wetboek-van-burgerlijke-rechtsvordering/BWBR0001827/README.md └── ... ``` ### Nog te doen voor volledige Fase 1 - [ ] Alle ~24.000 wetten verwerken (grotere SRU crawl) - [ ] Alle types verwerken (niet alleen `wet`) - [ ] Resultaat committen naar wetgit/rijk repo - [ ] Dagelijkse sync (issue #9) - [ ] Index.json (issue #10)
Author
Owner

Pipeline voltooid — volledige rijksregelgeving geparsed

Metric Waarde
SRU records verwerkt 110.531
Unieke regelingen 40.566
Succesvol geparsed 40.566
Failed 0
Markdown output 576 MB
XML cache 3.5 GB
Regels Markdown 7.862.416

Per type

Type Aantal
Ministeriële regeling 21.167
ZBO 4.605
Verdrag 3.678
AMvB 3.631
Wet 3.179
PBO 2.564
KB 883
Circulaire 591
Beleidsregel 150
Rijkswet 118

Data is gepusht naar wetgit/rijk repo.

## Pipeline voltooid — volledige rijksregelgeving geparsed | Metric | Waarde | |---|---:| | SRU records verwerkt | 110.531 | | Unieke regelingen | 40.566 | | Succesvol geparsed | 40.566 | | Failed | **0** | | Markdown output | 576 MB | | XML cache | 3.5 GB | | Regels Markdown | 7.862.416 | ### Per type | Type | Aantal | |---|---:| | Ministeriële regeling | 21.167 | | ZBO | 4.605 | | Verdrag | 3.678 | | AMvB | 3.631 | | Wet | 3.179 | | PBO | 2.564 | | KB | 883 | | Circulaire | 591 | | Beleidsregel | 150 | | Rijkswet | 118 | Data is gepusht naar `wetgit/rijk` repo.
Sign in to join this conversation.
No description provided.