From 94ecc51678c78d449c719d26af1972226a0cabbe Mon Sep 17 00:00:00 2001 From: Claire Lovisa Date: Wed, 5 Oct 2022 09:43:28 +0200 Subject: [PATCH] Create and uniformize dates or organen before 2023 (#178) --- ...ormize-dates-or-organen-before-2023.sparql | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 config/migrations/2022/20221004164323-uniformize-dates-or-organen-before-2023.sparql diff --git a/config/migrations/2022/20221004164323-uniformize-dates-or-organen-before-2023.sparql b/config/migrations/2022/20221004164323-uniformize-dates-or-organen-before-2023.sparql new file mode 100644 index 0000000..778ef8c --- /dev/null +++ b/config/migrations/2022/20221004164323-uniformize-dates-or-organen-before-2023.sparql @@ -0,0 +1,113 @@ +# Part 1: set dates for 2020-2023 + +PREFIX mandaat: +PREFIX ere: +PREFIX besluit: +PREFIX generiek: + +DELETE { + GRAPH { + ?orgaanInTime mandaat:bindingStart ?start . + ?orgaanInTime mandaat:bindingEinde ?end . + } +} INSERT { + GRAPH { + ?orgaanInTime mandaat:bindingStart "2020-04-01T00:00:00"^^xsd:dateTime . + ?orgaanInTime mandaat:bindingEinde "2023-03-31T00:00:00"^^xsd:dateTime . + } +} WHERE { + ?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan . + + OPTIONAL { ?orgaanInTime mandaat:bindingStart ?start . } + OPTIONAL { ?orgaanInTime mandaat:bindingEinde ?end . } + + { + SELECT DISTINCT ?bestuursorgaan MAX(?end) as ?maxEnd WHERE { + GRAPH { + VALUES ?type { + ere:BestuurVanDeEredienst + ere:CentraalBestuurVanDeEredienst + } + + ?bestuurseenheid a ?type . + + FILTER NOT EXISTS { + ?bestuurseenheid . + } + + ?bestuursorgaan besluit:bestuurt ?bestuurseenheid . + + ?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan . + + OPTIONAL { ?orgaanInTime mandaat:bindingStart ?start . } + OPTIONAL { + ?orgaanInTime mandaat:bindingEinde ?end . + FILTER( ?end != "2026-03-31T00:00:00"^^xsd:dateTime ) + FILTER( ?end != "2029-03-31T00:00:00"^^xsd:dateTime ) + } + } + } + GROUP BY ?bestuursorgaan + ORDER BY ?maxEnd + } + + # If we have a maxEnd value from the subquery, we want the organ in time that has the same end value to update it + # If there is no maxEnd value, then we need the orgaan that has no end value set + FILTER( IF(bound(?maxEnd), ?maxEnd = ?end, !bound(?end)) ) +} + +; + +# Part 2: set dates for 2017-2020 + +DELETE { + GRAPH { + ?orgaanInTime mandaat:bindingStart ?start . + ?orgaanInTime mandaat:bindingEinde ?end . + } +} INSERT { + GRAPH { + ?orgaanInTime mandaat:bindingStart "2017-04-01T00:00:00"^^xsd:dateTime . + ?orgaanInTime mandaat:bindingEinde "2020-03-31T00:00:00"^^xsd:dateTime . + } +} WHERE { + ?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan . + + OPTIONAL { ?orgaanInTime mandaat:bindingStart ?start . } + OPTIONAL { ?orgaanInTime mandaat:bindingEinde ?end . } + + { + SELECT DISTINCT ?bestuursorgaan MAX(?end) as ?maxEnd WHERE { + GRAPH { + VALUES ?type { + ere:BestuurVanDeEredienst + ere:CentraalBestuurVanDeEredienst + } + + ?bestuurseenheid a ?type . + + FILTER NOT EXISTS { + ?bestuurseenheid . + } + + ?bestuursorgaan besluit:bestuurt ?bestuurseenheid . + + ?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan . + + OPTIONAL { ?orgaanInTime mandaat:bindingStart ?start . } + OPTIONAL { + ?orgaanInTime mandaat:bindingEinde ?end . + FILTER( ?end != "2023-03-31T00:00:00"^^xsd:dateTime ) + FILTER( ?end != "2026-03-31T00:00:00"^^xsd:dateTime ) + FILTER( ?end != "2029-03-31T00:00:00"^^xsd:dateTime ) + } + } + } + GROUP BY ?bestuursorgaan + ORDER BY ?maxEnd + } + + # If we have a maxEnd value from the subquery, we want the organ in time that has the same end value to update it + # If there is no maxEnd value, then we need the orgaan that has no end value set + FILTER( IF(bound(?maxEnd), ?maxEnd = ?end, !bound(?end)) ) +}