Merge pull request #566 from lblod/feature/remove-duplicate-memberships

add duplicate memberships cleanup migration
This commit is contained in:
wolfderechter
2025-08-01 10:03:51 +02:00
committed by GitHub
3 changed files with 74 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ drc restart migrations; drc logs -ft --tail=200 migrations
- Fix query for organizations report [OP-3636]
- Bump report-generation-service to most recent version
- Write migration to harmonize date formats of change events [OP-3559]
- datafix: cleanup of duplicate memberships [OP-3634]
### Deploy notes
```
drc pull deltanotifier; drc up -d deltanotifier

View File

@@ -0,0 +1,40 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership org:organization ?ocmw ;
org:member ?municipality .
}
}
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership org:organization ?municipality ;
org:member ?ocmw .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
org:organization ?ocmw ;
org:member ?municipality ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
GRAPH ?graphMunicipality {
?municipality org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
}
GRAPH ?graphOCMW {
?ocmw org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> .
}
FILTER NOT EXISTS {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?correctMembership a org:Membership ;
org:organization ?municipality ;
org:member ?ocmw ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
}
}

View File

@@ -0,0 +1,33 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?duplicateMembership ?p ?o .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?duplicateMembership a org:Membership ;
org:organization ?ocmw ;
org:member ?municipality ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> ;
?p ?o .
# Find the other memberships with swapped organizations
?correctMembership a org:Membership ;
org:organization ?municipality ;
org:member ?ocmw ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?municipality org:classification ?municipalityClassification .
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?ocmw org:classification ?ocmwClassification .
}
FILTER(?municipalityClassification = <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>)
FILTER(?ocmwClassification = <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>)
}