Merge branch 'development' into OP-3817-inhoudelijk-thema

This commit is contained in:
Damon
2026-07-13 13:41:35 +02:00
12 changed files with 270 additions and 5 deletions

View File

@@ -2,15 +2,31 @@
## Unreleased
- Added service to link addresses to addressregister uris [OP-3795]
- Derive an organization's reference region(s) from its werkingsgebied; bump scope-of-operation to 0.2.0 [OP-3799]
- Frontend [v1.38.0]
- Site type changes [OP-3818]
- Frontend [v1.40.1](https://github.com/lblod/frontend-organization-portal/blob/v1.40.1/CHANGELOG.md), [v1.40.0](https://github.com/lblod/frontend-organization-portal/blob/5d2147662f620d420f54b9624a12c42ca2ac964a/CHANGELOG.md#v1400-2026-07-06), [v1.39.0](https://github.com/lblod/frontend-organization-portal/blob/5d2147662f620d420f54b9624a12c42ca2ac964a/CHANGELOG.md#v1390-2026-06-25) ,[v1.38.0](https://github.com/lblod/frontend-organization-portal/blob/5d2147662f620d420f54b9624a12c42ca2ac964a/CHANGELOG.md#v1380-2026-06-12)
- Added Juridische vorm [OP-3816] [OP-3820]
- Add new organization types (interlokale vereniging, vervoerregioraad, zorgraad, bosgroep, woonmaatschappij); add werkingsgebied (dct:spatial) to registered organizations [OP-3828]
- Rename generic organization types to "Vereniging algemeen" / "Vennootschap algemeen" [OP-3828]
- bump construct-organization-relationships [OP-3810]
- "In Oprichting" bestuursorgaan lifecycle [OP-3810]
### Deploy notes
```
drc up -d link-adressenregister-uri
drc up -d link-adressenregister-uri frontend construct-organization-relationships
drc restart resource migrations dispatcher
```
```
drc restart migrations
drc up -d frontend scope-of-operation
drc restart cache resource
```
```
drc pull construct-organization-relationships && drc up -d construct-organization-relationships
drc restart migrations
drc restart resource cache
scripts/reset-elastic.sh
```
## v1.40.0

View File

@@ -386,7 +386,7 @@ defmodule Dispatcher do
layer: :api_services,
accept: %{json: true}
} do
forward(conn, path, "http://construct-organization-relationships/create-relationships/")
forward(conn, path, "http://construct-organization-relationships/")
end
post "/kbo-data-sync/*path", %{layer: :api_services, accept: %{json: true}} do

View File

@@ -0,0 +1,51 @@
# New organization classification codes (ticket: new org types).
# prefLabel = technically-correct org name; altLabel = colloquial werkingsgebied term.
# URIs under data.vlaanderen.be/id/concept/<Family>/<uuid> (to be published upstream) - matches existing codes.
# Each code is inScheme its family scheme AND the public-export scheme (10caf4a4) = the export switch.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix ext: <http://mu.semte.ch/vocabularies/ext/> .
@prefix code: <http://lblod.data.gift/vocabularies/organisatie/> .
@prefix scheme: <http://data.vlaanderen.be/id/conceptscheme/> .
# --- BestuurseenheidClassificatieCode (besluit:Bestuurseenheid) ---
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/3a2649ef-7345-4d3a-8709-f89fc9b44f58>
rdf:type ext:OrganizationClassificationCode , code:BestuurseenheidClassificatieCode ;
mu:uuid "3a2649ef-7345-4d3a-8709-f89fc9b44f58" ;
skos:prefLabel "Interlokale vereniging" ;
skos:topConceptOf scheme:BestuurseenheidClassificatieCode ;
skos:inScheme scheme:BestuurseenheidClassificatieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b2133b86-24f0-44f0-9d10-5b4c7f944a9d>
rdf:type ext:OrganizationClassificationCode , code:BestuurseenheidClassificatieCode ;
mu:uuid "b2133b86-24f0-44f0-9d10-5b4c7f944a9d" ;
skos:prefLabel "Vervoerregioraad" ;
skos:altLabel "Vervoerregio" ; # Modelled as the werkingsgebied of a Vervoerregioraad, but colloquially known as a Vervoerregio.
skos:topConceptOf scheme:BestuurseenheidClassificatieCode ;
skos:inScheme scheme:BestuurseenheidClassificatieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
# --- GeregistreerdeOrganisatieClassificatieCode (regorg:RegisteredOrganization) ---
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/8392b885-a875-4b0d-b6a2-b52e53bda454>
rdf:type ext:OrganizationClassificationCode , ext:GeregistreerdeOrganisatieClassificatieCode ;
mu:uuid "8392b885-a875-4b0d-b6a2-b52e53bda454" ;
skos:prefLabel "Zorgraad" ;
skos:altLabel "Eerstelijnszone" ; # Modelled as the werkingsgebied of a Zorgraad, but colloquially known as an Eerstelijnszone.
skos:topConceptOf scheme:GeregistreerdeOrganisatieClassificatieCode ;
skos:inScheme scheme:GeregistreerdeOrganisatieClassificatieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/b22948f9-e695-4f24-a530-b6bf3af3b37f>
rdf:type ext:OrganizationClassificationCode , ext:GeregistreerdeOrganisatieClassificatieCode ;
mu:uuid "b22948f9-e695-4f24-a530-b6bf3af3b37f" ;
skos:prefLabel "Bosgroep" ;
skos:topConceptOf scheme:GeregistreerdeOrganisatieClassificatieCode ;
skos:inScheme scheme:GeregistreerdeOrganisatieClassificatieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/f4e5bb57-1007-4397-828b-b34bbf1e760d>
rdf:type ext:OrganizationClassificationCode , ext:GeregistreerdeOrganisatieClassificatieCode ;
mu:uuid "f4e5bb57-1007-4397-828b-b34bbf1e760d" ;
skos:prefLabel "Woonmaatschappij" ;
skos:topConceptOf scheme:GeregistreerdeOrganisatieClassificatieCode ;
skos:inScheme scheme:GeregistreerdeOrganisatieClassificatieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .

View File

@@ -0,0 +1,35 @@
# Governing body (bestuursorgaan) + mandate (bestuursfunctie) codes for the Vervoerregioraad.
# The vervoerregioraad is itself the deliberative organ (no AV/RvB substructure); members + a
# (dual) voorzitter. URIs under data.vlaanderen.be (to be published), matching existing codes.
# NOTE (business to confirm): exact role set + the dual voorzitterschap (gemeente-vertegenwoordiger
# + Departement MOW) — modeled here as a single Voorzitter + Lid.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix ext: <http://mu.semte.ch/vocabularies/ext/> .
@prefix code: <http://lblod.data.gift/vocabularies/organisatie/> .
@prefix scheme: <http://data.vlaanderen.be/id/conceptscheme/> .
# --- Bestuursorgaan: the Vervoerregioraad itself ---
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/a04a5fb1-b79c-4b8d-a664-c5410d466d49>
rdf:type code:BestuursorgaanClassificatieCode , skos:Concept , ext:BestuursorgaanClassificatieCode ;
mu:uuid "a04a5fb1-b79c-4b8d-a664-c5410d466d49" ;
skos:prefLabel "Vervoerregioraad" ;
skos:inScheme <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
# --- Bestuursfunctie codes (mandate roles) applying to the Vervoerregioraad ---
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/540f3be6-73ed-4935-9de7-30997bab379c>
rdf:type code:BestuursfunctieCode ;
mu:uuid "540f3be6-73ed-4935-9de7-30997bab379c" ;
skos:prefLabel "Voorzitter van de vervoerregioraad" ;
ext:appliesTo <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/a04a5fb1-b79c-4b8d-a664-c5410d466d49> ;
skos:topConceptOf scheme:BestuursfunctieCode ;
skos:inScheme scheme:BestuursfunctieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/1093c55c-84d5-424b-980e-8b2ca32dc445>
rdf:type code:BestuursfunctieCode ;
mu:uuid "1093c55c-84d5-424b-980e-8b2ca32dc445" ;
skos:prefLabel "Lid van de vervoerregioraad" ;
ext:appliesTo <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/a04a5fb1-b79c-4b8d-a664-c5410d466d49> ;
skos:topConceptOf scheme:BestuursfunctieCode ;
skos:inScheme scheme:BestuursfunctieCode , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .

View File

@@ -0,0 +1,31 @@
DELETE {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/3e5c8e30-95a7-47b0-b0a4-210d5bd440a7> <http://www.w3.org/2004/02/skos/core#prefLabel> ?oldLabel.
}
}
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/3e5c8e30-95a7-47b0-b0a4-210d5bd440a7> <http://www.w3.org/2004/02/skos/core#prefLabel> "Vereniging algemeen".
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/3e5c8e30-95a7-47b0-b0a4-210d5bd440a7> <http://www.w3.org/2004/02/skos/core#prefLabel> ?oldLabel.
}
};
DELETE {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/b9ed22af-3661-4c3e-b07f-b641d80ebf61> <http://www.w3.org/2004/02/skos/core#prefLabel> ?oldLabel.
}
}
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/b9ed22af-3661-4c3e-b07f-b641d80ebf61> <http://www.w3.org/2004/02/skos/core#prefLabel> "Vennootschap algemeen".
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/b9ed22af-3661-4c3e-b07f-b641d80ebf61> <http://www.w3.org/2004/02/skos/core#prefLabel> ?oldLabel.
}
}

View File

@@ -0,0 +1,10 @@
INSERT DATA {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://lblod.data.gift/concepts/019ef8b6-ba27-7388-a5cc-faf74f357963> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://lblod.data.gift/vocabularies/organisatie/TypeVestiging> .
<http://lblod.data.gift/concepts/019ef8b6-ba27-7388-a5cc-faf74f357963> <http://www.w3.org/2004/02/skos/core#prefLabel> "Bezoekadres" .
<http://lblod.data.gift/concepts/019ef8b6-ba27-7388-a5cc-faf74f357963> <http://mu.semte.ch/vocabularies/core/uuid> "019ef8b6-ba27-7388-a5cc-faf74f357963" .
<http://lblod.data.gift/concepts/019ef8b6-ba27-7388-a5cc-faf74f357963> <http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/f8319ccf40fc2a1697edc5cf7e03018f> .
<http://lblod.data.gift/concepts/019ef8b6-ba27-7388-a5cc-faf74f357963> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/f8319ccf40fc2a1697edc5cf7e03018f> .
<http://lblod.data.gift/concepts/019ef8b6-ba27-7388-a5cc-faf74f357963> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
}
}

View File

@@ -0,0 +1,95 @@
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?otherOrgaanInTime ?p ?o .
?s ?p2 ?otherOrgaanInTime .
?mandate ?mp ?mo .
?ms ?mp2 ?mandate .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst ;
regorg:orgStatus <http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> .
?bestuursorgaan besluit:bestuurt ?worshipService .
{
SELECT ?bestuursorgaan (MAX(?start) AS ?keptStart) {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan ;
mandaat:bindingStart ?start .
FILTER(?start <= NOW())
}
}
GROUP BY ?bestuursorgaan
}
?keptOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan ;
mandaat:bindingStart ?keptStart .
?otherOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
FILTER(?otherOrgaanInTime != ?keptOrgaanInTime)
{ ?otherOrgaanInTime ?p ?o . }
UNION
{ ?s ?p2 ?otherOrgaanInTime . }
UNION
{ ?otherOrgaanInTime org:hasPost ?mandate . ?mandate ?mp ?mo . }
UNION
{ ?otherOrgaanInTime org:hasPost ?mandate . ?ms ?mp2 ?mandate . }
}
};
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?mandate ?p ?o .
?s ?p2 ?mandate .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst ;
regorg:orgStatus <http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> .
?bestuursorgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
?orgaanInTime org:hasPost ?mandate .
?mandate a mandaat:Mandaat ;
org:role ?role .
FILTER(?role NOT IN (
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43>,
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2>,
<http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002>
))
{ ?mandate ?p ?o . }
UNION
{ ?s ?p2 ?mandate . }
}
};
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime mandaat:bindingEinde ?endDate .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst ;
regorg:orgStatus <http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> .
?bestuursorgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
?orgaanInTime mandaat:bindingEinde ?endDate .
}
};

View File

@@ -532,6 +532,13 @@
"registered-organizations": {
"class": "regorg:RegisteredOrganization",
"super": ["organizations"],
"relationships": {
"scope": {
"predicate": "dc_terms:spatial",
"target": "locations",
"cardinality": "one"
}
},
"new-resource-base": "http://data.lblod.info/id/geregistreerdeOrganisaties/"
},
"organization-classification-codes": {
@@ -540,6 +547,10 @@
"label": {
"type": "string",
"predicate": "skos:prefLabel"
},
"alt-label": {
"type": "string",
"predicate": "skos:altLabel"
}
},
"new-resource-base": "http://data.vlaanderen.be/id/concept/OrganizationClassificationCode/"

View File

@@ -663,6 +663,10 @@
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"classification_alternative_name": [
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#altLabel"
],
"status": [
"http://www.w3.org/ns/regorg#orgStatus",
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -745,6 +749,15 @@
}
}
},
"classification_alternative_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"status": {
"type": "text",
"fields": {

View File

@@ -215,11 +215,12 @@ services:
restart: always
logging: *default-logging
frontend:
image: lblod/frontend-organization-portal:1.38.0
image: lblod/frontend-organization-portal:1.40.1
volumes:
- ./config/frontend/add-x-frame-options-header.conf:/config/add-x-frame-options.conf
environment:
EMBER_ENABLE_EDIT_CONTACT_DATA_FEATURE: "true"
EMBER_ENABLE_LEGAL_FORM_EDITABLE_FEATURE: "true"
EMBER_OAUTH_API_REDIRECT_URL: "https://organisaties.abb.lblod.info/authorization/callback"
EMBER_OAUTH_API_KEY: "677af572-2e2f-4e61-ad38-036723bb314c"
EMBER_OAUTH_API_BASE_URL: "https://authenticatie-ti.vlaanderen.be/op/v1/auth"
@@ -307,7 +308,7 @@ services:
restart: always
logging: *default-logging
construct-organization-relationships:
image: lblod/construct-organization-relationships-service:1.1.1
image: lblod/construct-organization-relationships-service:1.1.3
links:
- db:database
labels: