diff --git a/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327162800-merge-organen.sparql b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327162800-merge-organen.sparql new file mode 100644 index 0000000..46b8e86 --- /dev/null +++ b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327162800-merge-organen.sparql @@ -0,0 +1,42 @@ +# We have two bestuursorganen of the same classification for 2 bestuurseenheden. +# Then need to be merged, as we should only have one orgaan (not in time) per classification. + +PREFIX mandaat: +PREFIX ere: +PREFIX besluit: +PREFIX generiek: + +DELETE { + GRAPH { + ?otherBestuursorgaan ?potherBestuursorgaan ?ootherBestuursorgaan . + ?s ?p ?otherBestuursorgaan . + } +} INSERT { + GRAPH { + ?s ?p ?bestuursorgaan . + } +} WHERE { + GRAPH { + VALUES ?type { + ere:BestuurVanDeEredienst + ere:CentraalBestuurVanDeEredienst + } + + ?bestuurseenheid a ?type . + + FILTER NOT EXISTS { + ?bestuurseenheid . + } + + ?bestuursorgaan besluit:bestuurt ?bestuurseenheid ; + ?classif . + + ?otherBestuursorgaan besluit:bestuurt ?bestuurseenheid ; + ?classif ; + ?potherBestuursorgaan ?ootherBestuursorgaan . + + ?s ?p ?otherBestuursorgaan . + + FILTER (str(?bestuursorgaan) > str(?otherBestuursorgaan)) + } +} \ No newline at end of file diff --git a/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327162900-create-missing-organen-in-time-2023-2026.sparql b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327162900-create-missing-organen-in-time-2023-2026.sparql new file mode 100644 index 0000000..8de3be5 --- /dev/null +++ b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327162900-create-missing-organen-in-time-2023-2026.sparql @@ -0,0 +1,46 @@ +PREFIX mandaat: +PREFIX ere: +PREFIX besluit: +PREFIX generiek: +PREFIX mu: + +INSERT { + GRAPH { + ?orgaanInTime a besluit:Bestuursorgaan ; + mu:uuid ?uuidOrgaanInTime ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ ; + generiek:isTijdspecialisatieVan ?bestuursorgaan . + } +} +WHERE { + GRAPH { + VALUES ?type { + ere:BestuurVanDeEredienst + ere:CentraalBestuurVanDeEredienst + } + + ?bestuurseenheid a ?type . + + FILTER NOT EXISTS { + ?bestuurseenheid . + } + + ?bestuursorgaan besluit:bestuurt ?bestuurseenheid . + + FILTER NOT EXISTS { + ?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan . + ?missingOrgaanInTime mandaat:bindingStart ?start . + FILTER CONTAINS(STR(?start), "2023") + } + + FILTER NOT EXISTS { + ?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan . + ?missingOrgaanInTime mandaat:bindingEinde ?end . + FILTER CONTAINS(STR(?end), "2026") + } + } + + BIND(MD5(CONCAT(?bestuurseenheid, ?bestuursorgaan, "2023-2026")) as ?uuidOrgaanInTime) + BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime) +} diff --git a/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327163000-create-missing-positions-central-worship-services-2023-2026.sparql b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327163000-create-missing-positions-central-worship-services-2023-2026.sparql new file mode 100644 index 0000000..9ae2b54 --- /dev/null +++ b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327163000-create-missing-positions-central-worship-services-2023-2026.sparql @@ -0,0 +1,152 @@ +# Add missing mandates to central worship services + +## 2023 - 2026 + +PREFIX ere: +PREFIX besluit: +PREFIX org: +PREFIX mandaat: +PREFIX generiek: +PREFIX mu: + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?expert . + + ?expert a mandaat:Mandaat ; + mu:uuid ?uuidExpert ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:CentraalBestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?expert . + ?expert org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Expert 2023-2026")) as ?uuidExpert) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidExpert)) AS ?expert) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?vertegenwoordiger . + + ?vertegenwoordiger a mandaat:Mandaat ; + mu:uuid ?uuidVertegenwoordiger ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:CentraalBestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?vertegenwoordiger . + ?vertegenwoordiger org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Vertegenwoordiger 2023-2026")) as ?uuidVertegenwoordiger) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVertegenwoordiger)) AS ?vertegenwoordiger) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?secretaris . + + ?secretaris a mandaat:Mandaat ; + mu:uuid ?uuidSecretaris ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:CentraalBestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?secretaris . + ?secretaris org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2023-2026")) as ?uuidSecretaris) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?voorzitter . + + ?voorzitter a mandaat:Mandaat ; + mu:uuid ?uuidVoorzitter ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:CentraalBestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?voorzitter . + ?voorzitter org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2023-2026")) as ?uuidVoorzitter) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?bestuurslid . + + ?bestuurslid a mandaat:Mandaat ; + mu:uuid ?uuidBestuurslid ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:CentraalBestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?worshipService . + } + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?bestuurslid . + ?bestuurslid org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Bestuurslid 2023-2026")) as ?uuidBestuurslid) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslid)) AS ?bestuurslid) +} diff --git a/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327163000-create-missing-positions-worship-services-2023-2026.sparql b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327163000-create-missing-positions-worship-services-2023-2026.sparql new file mode 100644 index 0000000..dc80b96 --- /dev/null +++ b/config/migrations/2023/20230327162700-prepare-change-legislation-period/20230327163000-create-missing-positions-worship-services-2023-2026.sparql @@ -0,0 +1,186 @@ +# Add missing mandates to worship services for period 2023-2026 + +PREFIX ere: +PREFIX besluit: +PREFIX org: +PREFIX mandaat: +PREFIX generiek: +PREFIX mu: + +## Case LidVanRechtswege : shared mandate for all the organen in time + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?lidVanRechtswege . + + ?lidVanRechtswege a mandaat:Mandaat ; + mu:uuid ?uuidLidVanRechtswege ; + org:role . + } +} WHERE { + GRAPH { + VALUES (?start ?end) { + ("2023-04-01T00:00:00"^^ "2026-03-31T00:00:00"^^) + } + + ?worshipService a ere:BestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart ?start ; + mandaat:bindingEinde ?end . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?lidVanRechtswege . + ?lidVanRechtswege org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Rechtswege")) as ?uuidLidVanRechtswege) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidLidVanRechtswege)) AS ?lidVanRechtswege) +} + +## Case Bestuursleden, small or big half : 2023 is the beggining of a KH + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?bestuurslidGH . + + ?bestuurslidGH a mandaat:Mandaat ; + mu:uuid ?uuidBestuurslidGH ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:BestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?bestuurslidGH . + ?bestuurslidGH org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidGH 2020-2026")) as ?uuidBestuurslidGH) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslidGH)) AS ?bestuurslidGH) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?bestuurslidKH . + + ?bestuurslidKH a mandaat:Mandaat ; + mu:uuid ?uuidBestuurslidKH ; + org:role . + } +} WHERE { + GRAPH { + VALUES (?start ?end) { + ("2023-04-01T00:00:00"^^ "2026-03-31T00:00:00"^^) + } + + ?worshipService a ere:BestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart ?start ; + mandaat:bindingEinde ?end . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?bestuurslidKH . + ?bestuurslidKH org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidKH 2023-2029")) as ?uuidBestuurslidKH) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslidKH)) AS ?bestuurslidKH) +} + +; + +## Other cases are simpler, one mandate is linked to only one orgaan in time. Creating them when missing. + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?voorzitter . + + ?voorzitter a mandaat:Mandaat ; + mu:uuid ?uuidVoorzitter ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:BestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?voorzitter . + ?voorzitter org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2023-2026")) as ?uuidVoorzitter) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?secretaris . + + ?secretaris a mandaat:Mandaat ; + mu:uuid ?uuidSecretaris ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:BestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?secretaris . + ?secretaris org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2023-2026")) as ?uuidSecretaris) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris) +} + +; + +INSERT { + GRAPH { + ?orgaanInTime org:hasPost ?penningmeester . + + ?penningmeester a mandaat:Mandaat ; + mu:uuid ?uuidPenningmeester ; + org:role . + } +} WHERE { + GRAPH { + ?worshipService a ere:BestuurVanDeEredienst . + ?orgaan besluit:bestuurt ?worshipService . + ?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ; + mandaat:bindingStart "2023-04-01T00:00:00"^^ ; + mandaat:bindingEinde "2026-03-31T00:00:00"^^ . + + FILTER NOT EXISTS { + ?orgaanInTime org:hasPost ?penningmeester . + ?penningmeester org:role . + } + } + + BIND(MD5(CONCAT(?worshipService, ?orgaan, "Penningmeester 2023-2026")) as ?uuidPenningmeester) + BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidPenningmeester)) AS ?penningmeester) +} diff --git a/config/migrations/2023/20230331095346-from-imam-in-rang-to-waarneemende.sparql b/config/migrations/2023/20230331095346-from-imam-in-rang-to-waarneemende.sparql new file mode 100644 index 0000000..c7e71c1 --- /dev/null +++ b/config/migrations/2023/20230331095346-from-imam-in-rang-to-waarneemende.sparql @@ -0,0 +1,24 @@ +delete { + graph { + ?position ?function. + } +} + +insert { + graph { + ?position . + } +} +where { + graph { + ?position ?function. + ?worshipService ?position; + ?worshipStatus. + + filter (?function in (, + , + ) + && ?worshipStatus = ) + } + +} diff --git a/docker-compose.yml b/docker-compose.yml index 3444fa0..f5a9922 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -218,6 +218,9 @@ services: - ./config/jobs-controller/:/config/ construct-administrative-unit-relationships: image: lblod/construct-administrative-unit-relationships-service:0.1.1 + environment: + START_DATE_WORSHIP_GOVERNING_BODY: "2023-04-01T00:00:00" + END_DATE_WORSHIP_GOVERNING_BODY: "2026-03-31T00:00:00" links: - db:database restart: always @@ -230,7 +233,7 @@ services: # DELTA GENERAL ################################################################################ delta-producer-dump-file-publisher: - image: lblod/delta-producer-dump-file-publisher:0.9.0 + image: lblod/delta-producer-dump-file-publisher:0.9.1 volumes: - ./config/delta-producer/dump-file-publisher:/config - ./data/files:/share