From 824201ced68e9dc69b2c2af618895a4f5039698a Mon Sep 17 00:00:00 2001 From: mirdono Date: Wed, 8 Jan 2025 20:56:53 +0100 Subject: [PATCH] feat: merge police zones 2025 - Migrations to create the necessary merger change events that represent the merger of several police zones into three new ones - Migration to update the status of the merged police zones to not active --- ...es--deactivate-merged-organisations.sparql | 25 +++++++ ...ren-borgloon-herstappe-heers-wellen.sparql | 60 ++++++++++++++++ ...echt-sint_gillis_waas-stekene-temse.sparql | 72 +++++++++++++++++++ ...2025-police-zones--vlaamse-ardennen.sparql | 61 ++++++++++++++++ 4 files changed, 218 insertions(+) create mode 100644 config/migrations-triggering-indexing/2025/20250108194417-mergers-2025-police-zones--deactivate-merged-organisations.sparql create mode 100644 config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108184654-mergers-2025-police-zones--tongeren-borgloon-herstappe-heers-wellen.sparql create mode 100644 config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108190240-mergers-2025-police-zones--beveren_kruibeke_zwijndrecht-sint_gillis_waas-stekene-temse.sparql create mode 100644 config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108193811-mergers-2025-police-zones--vlaamse-ardennen.sparql diff --git a/config/migrations-triggering-indexing/2025/20250108194417-mergers-2025-police-zones--deactivate-merged-organisations.sparql b/config/migrations-triggering-indexing/2025/20250108194417-mergers-2025-police-zones--deactivate-merged-organisations.sparql new file mode 100644 index 0000000..1edbc6f --- /dev/null +++ b/config/migrations-triggering-indexing/2025/20250108194417-mergers-2025-police-zones--deactivate-merged-organisations.sparql @@ -0,0 +1,25 @@ +PREFIX regorg: + +DELETE { + GRAPH { + ?s regorg:orgStatus ?activeStatus. + } +} INSERT { + GRAPH { + ?s regorg:orgStatus ?notActiveStatus. + } +} WHERE { + VALUES ?s { + + + + + + + + + + } + BIND ( AS ?notActiveStatus) + BIND ( AS ?activeStatus) +} diff --git a/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108184654-mergers-2025-police-zones--tongeren-borgloon-herstappe-heers-wellen.sparql b/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108184654-mergers-2025-police-zones--tongeren-borgloon-herstappe-heers-wellen.sparql new file mode 100644 index 0000000..5754b51 --- /dev/null +++ b/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108184654-mergers-2025-police-zones--tongeren-borgloon-herstappe-heers-wellen.sparql @@ -0,0 +1,60 @@ +PREFIX org: +PREFIX dct: +PREFIX ch: +PREFIX lblodOrg: +PREFIX ext: +PREFIX mu: + +INSERT { + GRAPH { + ?changeEvent a org:ChangeEvent; + mu:uuid ?uuidChangeEvent; + ch:typeWijziging ?mergerChangeEventType; + org:resultingOrganization ?resultingOrganisation; + dct:date "2025-01-01"^^xsd:date; + dct:description "Fusie tussen PZ Alken/Borgloon/Heers/Kortessem/Wellen (= 5379 PZ Kanton Borgloon) en PZ Tongeren/Herstappe (= 5380 PZ Tongeren/Herstappe) resulteert in PZ Tongeren-Borgloon/Herstappe/Heers/Wellen (= 5962 PZ Haspengouw)"; + org:originalOrganization ?firstNotActiveOriginal; + org:originalOrganization ?secondNotActiveOriginal; + lblodOrg:veranderingsgebeurtenisResultaat ?firstNotActiveChangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?secondNotActivechangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?resultingOrganisationChangeEventResult. + + ?firstNotActiveChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidFirstNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?firstNotActiveOriginal. + + ?secondNotActivechangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidSecondNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?secondNotActiveOriginal. + + ?resultingOrganisationChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidResultingOrganisationChangeEventResult; + lblodOrg:resulterendeStatus ?activeStatus; + ext:resultingOrganization ?resultingOrganisation. + } +} WHERE { + VALUES (?firstNotActiveOriginal ?secondNotActiveOriginal ?resultingOrganisation) { + ( # PZ Alken/Borgloon/Heers/Kortessem/Wellen + # PZ Tongeren/Herstappe + # PZ Tongeren-Borgloon/Herstappe/Heers/Wellen + ) + } + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), STR(?secondNotActiveOriginal), STR(?resultingOrganization))) AS ?uuidChangeEvent) . + BIND (IRI(CONCAT("http://data.lblod.info/id/veranderingsgebeurtenissen/", STR(?uuidChangeEvent))) AS ?changeEvent) . + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), "FirstNotActiveMergerChangeEventResult")) AS ?uuidFirstNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidFirstNotActiveChangeEventResult))) AS ?firstNotActiveChangeEventResult) . + + BIND (SHA256(CONCAT(STR(?secondNotActiveOriginal), "SecondNotActiveMergerChangeEventResult")) AS ?uuidSecondNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidSecondNotActiveChangeEventResult))) AS ?secondNotActivechangeEventResult) . + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), STR(?secondNotActiveOriginal), STR(?resultingOrganization), "fusieChangeEventActiveResult")) AS ?uuidResultingOrganisationChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidResultingOrganisationChangeEventResult))) AS ?resultingOrganisationChangeEventResult) . + + BIND ( AS ?mergerChangeEventType) + BIND ( AS ?notActiveStatus) + BIND ( AS ?activeStatus) +} diff --git a/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108190240-mergers-2025-police-zones--beveren_kruibeke_zwijndrecht-sint_gillis_waas-stekene-temse.sparql b/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108190240-mergers-2025-police-zones--beveren_kruibeke_zwijndrecht-sint_gillis_waas-stekene-temse.sparql new file mode 100644 index 0000000..e47aa44 --- /dev/null +++ b/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108190240-mergers-2025-police-zones--beveren_kruibeke_zwijndrecht-sint_gillis_waas-stekene-temse.sparql @@ -0,0 +1,72 @@ +PREFIX org: +PREFIX dct: +PREFIX ch: +PREFIX lblodOrg: +PREFIX ext: +PREFIX mu: + +# Add fusion change event +INSERT { + GRAPH { + ?changeEvent a org:ChangeEvent; + mu:uuid ?uuidChangeEvent; + ch:typeWijziging ?mergerChangeEventType; + org:resultingOrganization ?resultingOrganisation; + dct:date "2025-01-01"^^xsd:date; + dct:description "Fusie tussen PZ Zwijndrecht (= 5346 PZ Zwijndrecht) en PZ Kruibeke/Temse (= 5433 PZ Kruibeke/Temse) en PZ Beveren/Sint-Gillis-Waas/Stekene (= 5904 Waasland-Noord) resulteert in PZ Beveren-Kruibeke-Zwijndrecht/Sint-Gillis-Waas/Stekene/Temse (= 5964 PZ Scheldewaas)"; + org:originalOrganization ?firstNotActiveOriginal; + org:originalOrganization ?secondNotActiveOriginal; + org:originalOrganization ?thirdNotActiveOriginal; + lblodOrg:veranderingsgebeurtenisResultaat ?firstNotActiveChangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?secondNotActiveChangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?thirdNotActiveChangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?resultingOrganisationChangeEventResult. + + ?firstNotActiveChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidFirstNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?firstNotActiveOriginal. + + ?secondNotActiveChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidSecondNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?secondNotActiveOriginal. + + ?thirdNotActiveChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidThirdNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?thirdNotActiveOriginal. + + ?resultingOrganisationChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidResultingOrganisationChangeEventResult; + lblodOrg:resulterendeStatus ?activeStatus; + ext:resultingOrganization ?resultingOrganisation. + } +} WHERE { + VALUES (?firstNotActiveOriginal ?secondNotActiveOriginal ?thirdNotActiveOriginal ?resultingOrganisation) { + ( # PZ Zwijndrecht + # PZ Kruibeke/Temse + # PZ Beveren/Sint-Gillis-Waas/Stekene + # PZ Beveren-Kruibeke-Zwijndrecht/Sint-Gillis-Waas/Stekene/Temse + ) + } + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), STR(?secondNotActiveOriginal), STR(?resultingOrganization))) AS ?uuidChangeEvent) . + BIND (IRI(CONCAT("http://data.lblod.info/id/veranderingsgebeurtenissen/", STR(?uuidChangeEvent))) AS ?changeEvent) . + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), "FirstNotActiveMergerChangeEventResult")) AS ?uuidFirstNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidFirstNotActiveChangeEventResult))) AS ?firstNotActiveChangeEventResult) . + + BIND (SHA256(CONCAT(STR(?secondNotActiveOriginal), "SecondNotActiveMergerChangeEventResult")) AS ?uuidSecondNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidSecondNotActiveChangeEventResult))) AS ?secondNotActiveChangeEventResult) . + + BIND (SHA256(CONCAT(STR(?thirdNotActiveOriginal), "ThirdNotActiveMergerChangeEventResult")) AS ?uuidThirdNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidThirdNotActiveChangeEventResult))) AS ?thirdNotActiveChangeEventResult) . + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), STR(?secondNotActiveOriginal), STR(?thirdNotActiveOriginal), STR(?resultingOrganization), "MergerChangeEventResultActiveResult")) AS ?uuidResultingOrganisationChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidResultingOrganisationChangeEventResult))) AS ?resultingOrganisationChangeEventResult) . + + BIND ( AS ?mergerChangeEventType) + BIND ( AS ?notActiveStatus) + BIND ( AS ?activeStatus) +} diff --git a/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108193811-mergers-2025-police-zones--vlaamse-ardennen.sparql b/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108193811-mergers-2025-police-zones--vlaamse-ardennen.sparql new file mode 100644 index 0000000..234d223 --- /dev/null +++ b/config/migrations/2025/20250108184340-mergers-2025-police-zones/20250108193811-mergers-2025-police-zones--vlaamse-ardennen.sparql @@ -0,0 +1,61 @@ +PREFIX org: +PREFIX dct: +PREFIX ch: +PREFIX lblodOrg: +PREFIX ext: +PREFIX mu: + +# Add fusion change event +INSERT { + GRAPH { + ?changeEvent a org:ChangeEvent; + mu:uuid ?uuidChangeEvent; + ch:typeWijziging ?mergerChangeEventType; + org:resultingOrganization ?resultingOrganisation; + dct:date "2025-01-01"^^xsd:date; + dct:description "Fusie tussen PZ Kluisbergen/Kruisem/Oudenaarde/Wortegem-Petegem (= 5425 PZ Vlaamse Ardennen) en PZ Brakel/Horebeke/Maarkedal/Zwalm (= 5426 PZ Brakel) resulteert in PZ Vlaamse Ardennen (= 5915 PZ Vlaamse Ardennen)"; + org:originalOrganization ?firstNotActiveOriginal; + org:originalOrganization ?secondNotActiveOriginal; + lblodOrg:veranderingsgebeurtenisResultaat ?firstNotActiveChangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?secondNotActivechangeEventResult; + lblodOrg:veranderingsgebeurtenisResultaat ?resultingOrganisationChangeEventResult. + + ?firstNotActiveChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidFirstNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?firstNotActiveOriginal. + + ?secondNotActivechangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidSecondNotActiveChangeEventResult; + lblodOrg:resulterendeStatus ?notActiveStatus; + ext:resultingOrganization ?secondNotActiveOriginal. + + ?resultingOrganisationChangeEventResult a lblodOrg:VeranderingsgebeurtenisResultaat; + mu:uuid ?uuidResultingOrganisationChangeEventResult; + lblodOrg:resulterendeStatus ?activeStatus; + ext:resultingOrganization ?resultingOrganisation. + } +} WHERE { + VALUES (?firstNotActiveOriginal ?secondNotActiveOriginal ?resultingOrganisation) { + ( # PZ Kluisbergen/Kruisem/Oudenaarde/Wortegem-Petegem + # PZ Brakel/Horebeke/Maarkedal/Zwalm + # PZ Vlaamse Ardennen + ) + } + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), STR(?secondNotActiveOriginal), STR(?resultingOrganization))) AS ?uuidChangeEvent) . + BIND (IRI(CONCAT("http://data.lblod.info/id/veranderingsgebeurtenissen/", STR(?uuidChangeEvent))) AS ?changeEvent) . + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), "FirstNotActiveMergerChangeEventResult")) AS ?uuidFirstNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidFirstNotActiveChangeEventResult))) AS ?firstNotActiveChangeEventResult) . + + BIND (SHA256(CONCAT(STR(?secondNotActiveOriginal), "SecondNotActiveMergerChangeEventResult")) AS ?uuidSecondNotActiveChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidSecondNotActiveChangeEventResult))) AS ?secondNotActivechangeEventResult) . + + BIND (SHA256(CONCAT(STR(?firstNotActiveOriginal), STR(?secondNotActiveOriginal), STR(?resultingOrganization), "fusieChangeEventActiveResult")) AS ?uuidResultingOrganisationChangeEventResult) . + BIND (IRI(CONCAT("http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/", STR(?uuidResultingOrganisationChangeEventResult))) AS ?resultingOrganisationChangeEventResult) . + + BIND ( AS ?mergerChangeEventType) + BIND ( AS ?notActiveStatus) + BIND ( AS ?activeStatus) +}