Skip to content

Commit

Permalink
feat: mandates and functions for governing bodies legislature 2025
Browse files Browse the repository at this point in the history
For each of the governing bodies created by the migrations in the previous
commit, now add the corresponding mandates and functions.

Within a organisation some governing bodies share the same mandates. For
example, for municipalities the governing body "Burgemeester" and "College van
burgemeester en schepen" both refer to the SAME instance of mandates for
"Burgemeester" and "Aangewezen burgemeester".
To achieve this the some migrations contain a second `INSERT` clause in which
the other governing body that contains the necessary mandates is selected to be
able to determine the correct mandate URI. This only works on two conditions:
1. Migrations that depend on each must be executed in the correct order. For
   example, the migration inserting the mandates for "College van burgemeester
   en schepen" must be executed after that for "Burgemeester". The former will
   reuse mandates created by the latter.
2. The UUID for the shared mandates is calculated in exactly the same way in
   migrations that depend on each other.
  • Loading branch information
mirdono committed Sep 2, 2024
1 parent a647c7e commit 78ce1f7
Show file tree
Hide file tree
Showing 19 changed files with 705 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/4955bd72cd0e4eb895fdbfab08da0284> . # Burgemeester
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000013> # Burgemeester
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/7b038cc40bba10bec833ecfe6f15bc7a> # Aangewezen burgemeester

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000005> . # Gemeenteraad
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000012> # Voorzitter van de gemeenteraad
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000011> # Gemeenteraadslid

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000006> . # College van Burgemeester en Schepenen
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000014> # Schepen
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/59a90e03-4f22-4bb9-8c91-132618db4b38> # Toegevoegde schepen

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
;
# Link mandates shared with Burgemeester governing body
# !! Make sure the Burgemeester governing body and its mandates are !!
# !! already created, otherwise this will not work correctly. !!
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {

?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000006> . # College van Burgemeester en Schepenen

# Find the other governing body as it is needed to determine correct UUID and URI
?governingBody besluit:bestuurt ?organisation .

?governingBodyOther besluit:bestuurt ?organisation ;
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/4955bd72cd0e4eb895fdbfab08da0284> . # Burgemeester
?governingBodyInTimeOther a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBodyOther ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .
}
VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000013> # Burgemeester
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/7b038cc40bba10bec833ecfe6f15bc7a> # Aangewezen burgemeester

}

BIND(SHA256(CONCAT(STR(?governingBodyOther), STR(?governingBodyInTimeOther), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/53c0d8cd-f3a2-411d-bece-4bd83ae2bbc9> . # Voorzitter van het Bijzonder Comité voor de Sociale Dienst
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e00001a> # Voorzitter van het Bijzonder Comité voor de Sociale Dienst

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000007> . # Raad voor Maatschappelijk Welzijn
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000016> # Voorzitter van de Raad voor Maatschappelijk Welzijn
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000015> # Lid van de Raad voor Maatschappelijk Welzijn

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000008> . # Vast Bureau
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000018> # Voorzitter van het Vast bureau
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000017> # Lid van het Vast Bureau

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000009> . # Bijzonder Comité voor de Sociale Dienst
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000019> # Lid van het Bijzonder Comité voor de Sociale Dienst

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
;
# Link mandates shared with Voorzitter van het Bijzonder Comité voor de Sociale Dienst governing body
# !! Make sure the Voorzitter van het Bijzonder Comité voor de Sociale Dienst governing body and its mandates are !!
# !! already created, otherwise this will not work correctly. !!
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {

?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000009> . # Bijzonder Comité voor de Sociale Dienst

# Find the other governing body as it is needed to determine correct UUID and URI
?governingBody besluit:bestuurt ?organisation .

?governingBodyOther besluit:bestuurt ?organisation ;
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/53c0d8cd-f3a2-411d-bece-4bd83ae2bbc9> . # Voorzitter van het Bijzonder Comité voor de Sociale Dienst
?governingBodyInTimeOther a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBodyOther ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .
}
VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e00001a> # Voorzitter van het Bijzonder Comité voor de Sociale Dienst

}

BIND(SHA256(CONCAT(STR(?governingBodyOther), STR(?governingBodyInTimeOther), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e00000c> . # Provincieraad
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000027> # Voorzitter van de provincieraad
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e00001f> # Provincieraadslid

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/180a2fba-6ca9-4766-9b94-82006bb9c709> . # Gouverneur
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/d7c00cd1-baf1-4346-83c0-6796c0bedd85> # Gouverneur

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>

INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime org:hasPost ?mandate .

?mandate a mandaat:Mandaat , org:Post ;
mu:uuid ?mandateUuid ;
org:role ?mandateRole .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?governingBodyInTime a besluit:Bestuursorgaan ;
generiek:isTijdspecialisatieVan ?governingBody ;
mandaat:bindingStart "2025-01-01T00:00:00"^^xsd:dateTime .

?governingBody org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e00000d> . # Deputatie
}

VALUES ?mandateRole {
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ab0e9b8a3b2ca7c5e000020> # Gedeputeerde

}

BIND(SHA256(CONCAT(STR(?governingBody), STR(?governingBodyInTime), STR(?mandateRole), " 2025")) AS ?mandateUuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?mandateUuid)) AS ?mandate)
}
Loading

0 comments on commit 78ce1f7

Please sign in to comment.