Compare commits

...

116 Commits

Author SHA1 Message Date
Damon
f5f9884f4f Release v1.41.1 2026-08-06 16:23:37 +02:00
Damon
19052da1b0 Fix frontend version reference in docker-compose.yml and changelog
Post-rebase cleanup: docker-compose.yml still pointed at frontend 1.40.4
instead of the actual release version 1.40.4-1.
2026-08-06 11:36:12 +02:00
wolfez
6887ee4451 update changelog 2026-08-06 11:31:48 +02:00
wolfderechter
a3e7e43237 Merge pull request #614 from lblod/chore/cleanup-local-involvement-herne
[OP-3858]: add migration to cleanup local involvement herne
2026-08-06 11:31:48 +02:00
Sam Van Campenhout
4f8cc570b4 Merge pull request #612 from lblod/add-site-type-pz-wijkkantoor
Add a new "Wijkkantoor" site type
2026-08-06 11:31:48 +02:00
wolfez
f4cec2cf57 add migration to cleanup local involvement herne 2026-08-06 11:31:48 +02:00
felix
22d449fad9 Merge branch 'master' into development 2026-08-06 11:31:48 +02:00
Damon
ec2482c8ce bump frontend 2026-08-06 11:31:48 +02:00
Sam Van Campenhout
bfc15d7dc4 Add a new "Wijkkantoor" site type 2026-08-06 11:31:46 +02:00
cecemel
47307103e9 Merge pull request #613 from lblod/chore/health-checks
Chore/health checks
2026-08-06 11:31:08 +02:00
Damon
c74ced18a9 Merge branch 'master' into chore/health-checks 2026-08-06 11:31:06 +02:00
Damon
81a2c5bcbc changelog edit 2026-08-06 11:29:43 +02:00
Damon Kennes
71cb867edb Merge pull request #608 from lblod/OP-3817-inhoudelijk-thema
Op 3817 inhoudelijk thema
2026-08-06 11:28:51 +02:00
Damon
2810ae60a5 Merge branch 'development' into OP-3817-inhoudelijk-thema
# Conflicts:
#	CHANGELOG.md
#	docker-compose.yml
2026-08-06 11:28:50 +02:00
NikiDeVisscher
b81d1319ed Merge pull request #607 from lblod/feature/werkingsgebied-filter
[OP-3812]: Operation area filter
2026-08-06 11:27:41 +02:00
Damon
ee2830a10f OP-3817: changelog + frontend bump 2026-08-06 11:27:41 +02:00
NikiDeVisscher
c8c33d2c5b Bump frontend 2026-08-06 11:27:41 +02:00
Damon
8753301534 OP-3817: final codelist + remove order 2026-08-06 11:27:41 +02:00
Damon
d52c5d899e Merge branch 'development' into OP-3817-inhoudelijk-thema 2026-08-06 11:27:41 +02:00
Damon
8fb620bf7b OP-3817: added inhoudelijk thema with placeholder values 2026-08-06 11:27:41 +02:00
Damon
15a372325d Merge branch 'development' into feature/werkingsgebied-filter 2026-08-06 11:27:39 +02:00
NikiDeVisscher
edcb91433c Add to changelog 2026-08-06 11:26:45 +02:00
Damon Kennes
adf006744c Merge pull request #606 from lblod/OP-3810-eredienst-in-oprichting-lifecyle
Op 3810 eredienst in oprichting lifecyle
2026-08-06 11:25:26 +02:00
NikiDeVisscher
76a5741996 Operation area filter 2026-08-06 11:25:26 +02:00
Damon
930241fcf3 OP-3810: changelog edit 2026-08-06 11:25:24 +02:00
Damon
39b6faa310 bump frontend + feature flag to make legal form editable 2026-08-06 11:23:08 +02:00
Damon
7a6a6ef192 OP-3810: cleanup migration to keep currently active orgaan + remove mandates from removed organen 2026-08-06 11:23:08 +02:00
Damon
504e3d491a changelog 2026-08-06 11:23:08 +02:00
Damon
a75adb7681 OP-3810: added migration to handle in oprichting erediensten + changelog edit 2026-08-06 11:23:08 +02:00
Damon
63a524a0ba Merge branch 'development' into OP-3810-eredienst-in-oprichting-lifecyle 2026-08-06 11:23:08 +02:00
Damon
15e33d39e2 OP-3810: edit dispatcher config 2026-08-06 11:23:08 +02:00
Damon
ec60003754 Merge pull request #604 from lblod/bezoekadres-site-type
[OP-3818] Add a new `Bezoekadres` site type to the codelist
2026-08-06 11:23:04 +02:00
Damon Kennes
bb4529cf82 Merge pull request #603 from lblod/feature/juridische-vorm
Added juridische vorm + change-event
2026-08-06 11:22:18 +02:00
Sam Van Campenhout
9d6a14a81f Add a new Bezoekadres site type to the codelist 2026-08-06 11:22:16 +02:00
Damon
0ba4f16031 changelog edit frontend 2026-08-06 11:20:34 +02:00
Damon
ba26d24042 frontend bump 2026-08-06 11:20:30 +02:00
Damon
272f877281 edit changelog 2026-08-06 11:19:02 +02:00
Damon
8d44366829 changed order predicate to sh:order 2026-08-06 11:16:42 +02:00
Boris De Vloed
f821710ea7 Revert "Added orgs"
This reverts commit 3ced194b73.
2026-08-06 11:16:42 +02:00
Damon
36484c851b Merge branch 'development' into feature/juridische-vorm 2026-08-06 11:16:42 +02:00
Damon
7501ce4d4d changed implementation to concept resource 2026-08-06 11:16:42 +02:00
Boris De Vloed
7fc1ea1c29 Added orgs 2026-08-06 11:16:42 +02:00
Damon
d3751b2352 added ordering to legal forms 2026-08-06 11:16:42 +02:00
Damon
44fe1866ba switch to code:Rechtsvormtype for legal form + added 3 more legal form codes 2026-08-06 11:16:42 +02:00
Damon
7e84e9092e Added juridische vorm + change-event 2026-08-06 11:16:42 +02:00
felix
f0d0af671e Release v1.41.0 2026-07-31 10:56:39 +02:00
felix
9ed70419aa Added health checks 2026-07-31 10:54:24 +02:00
NikiDeVisscher
e2a23bb07b Added link-adressenregister-uri-service 2026-06-08 11:51:37 +02:00
Sam Van Campenhout
7adbe9fd4f Release v1.40.0 2026-06-02 21:19:24 +02:00
Sam Van Campenhout
863d7182f9 Update frontend to v1.37.0
99e0ca2261/CHANGELOG.md (v1370-2026-05-27)
2026-05-27 16:55:17 +02:00
Damon
38b7297a3a DL-7346: bump login 2026-05-08 15:46:47 +02:00
Damon Kennes
8976b9f5d5 Merge pull request #602 from lblod/OP-3790-move-AGB-BRUGGE-to-correct-graph
Op 3790 move agb brugge to correct graph
2026-05-05 10:45:17 +02:00
Damon
9483da5572 OP-3790: changelog edit 2026-05-05 10:44:41 +02:00
Damon
0a655ddcae Merge branch 'development' into OP-3790-move-AGB-BRUGGE-to-correct-graph
# Conflicts:
#	CHANGELOG.md
2026-05-04 16:48:41 +02:00
Damon Kennes
1b053e26b6 Merge pull request #600 from lblod/OP-3784-query-missing-address-uri
Op 3784 query missing address uri
2026-05-04 16:05:56 +02:00
Damon
7735ee88aa Merge branch 'development' into OP-3784-query-missing-address-uri
# Conflicts:
#	CHANGELOG.md
#	config/reports/index.js
2026-05-04 16:05:32 +02:00
Damon Kennes
6987375abe Merge pull request #598 from lblod/OP-3774-new-query-organizations-in-frontend
OP-3774: added new query/report for organizations shown in frontend
2026-05-04 16:04:23 +02:00
Damon
d4d5ceed31 OP-3790: moved AGB BRUGGE to the correct graph so it shows up in the frontend 2026-05-04 16:03:35 +02:00
Damon
d95b331c99 OP-3774: filePrefix edit 2026-05-04 13:59:34 +02:00
Damon
bec67cf7eb OP-3784: edit organizations-no-address-report 2026-05-04 13:57:23 +02:00
Damon
38291891f6 Merge branch 'development' into OP-3774-new-query-organizations-in-frontend
# Conflicts:
#	CHANGELOG.md
2026-05-04 13:45:42 +02:00
Damon
a79d080eb4 OP-3774: fix to query 2026-05-04 13:43:54 +02:00
Damon
6f53b2e8af Merge branch 'development' into OP-3784-query-missing-address-uri 2026-04-29 09:31:37 +02:00
Damon
3d7c704f76 OP-3784: added query to check missing addressregister URI's 2026-04-29 09:31:16 +02:00
Boris De Vloed
ac5492430e bumped construct organization relationship 2026-04-28 14:16:15 +02:00
Boris De Vloed
935e649ef2 Merge pull request #596 from lblod/feat/worship-election-period-2026
Add governing bodies in time
2026-04-27 09:34:03 +02:00
Boris De Vloed
5dfadf5046 Merge branch 'development' into feat/worship-election-period-2026 2026-04-27 09:33:34 +02:00
Damon
6f43ca2848 Release v1.39.1 2026-04-24 11:38:14 +02:00
wolfderechter
e4d6e1f2a7 Merge pull request #597 from lblod/feature/cleanup-local-involvements-sint-laureins
[OP-3775]: cleanup local involvement of sint laureins
2026-04-24 10:20:14 +02:00
wolfderechter
1d51182bc5 Merge branch 'development' into feature/cleanup-local-involvements-sint-laureins 2026-04-24 10:20:04 +02:00
Damon Kennes
008b382ddc Merge pull request #599 from lblod/DL-6575-sparql-parser
DL-6575: added sparql-parser + edit changelog
2026-04-24 10:12:57 +02:00
Damon
b9654a33db DL-6575: bump resource 2026-04-24 09:22:19 +02:00
Damon
0de3869c4f DL-6575: added sparql-parser + edit changelog 2026-04-23 16:22:11 +02:00
wolfderechter
0c37112fd2 Update config/migrations/2026/20260421133705-delete-local-involvement-sint-laureins.sparql
Co-authored-by: Damon Kennes <damonkennes@gmail.com>
2026-04-22 14:55:36 +02:00
wolfderechter
118eb4c1fa Update config/migrations/2026/20260421133705-delete-local-involvement-sint-laureins.sparql
Co-authored-by: Damon Kennes <damonkennes@gmail.com>
2026-04-22 14:55:29 +02:00
Damon
5b2a1b1ac6 OP-3774: added new query/report for organizations shown in frontend 2026-04-22 10:17:03 +02:00
wolfez
c5a0326ab6 update changelog 2026-04-22 09:31:12 +02:00
wolfez
2b027a4829 add migration to cleanup local involvements of sint-laureins 2026-04-22 09:31:01 +02:00
Boris De Vloed
9cdd931af3 add ticket nrs 2026-04-21 12:13:30 +02:00
Boris De Vloed
9c3d8d5db2 add governing bodies in time 2026-04-21 11:56:52 +02:00
Niels V
71d6ee5ed4 update CHANGELOG 2026-04-17 14:43:29 +02:00
Niels V
70cff61d79 disable sparql endpoint 2026-04-17 14:42:40 +02:00
Niels V
265c25d942 don't allow read for cleanup 2026-04-17 14:40:05 +02:00
Boris De Vloed
0cb5a4729a Merge pull request #595 from lblod/feature/vlaams-gewest
Feature/vlaams gewest
2026-04-17 14:16:29 +02:00
Boris De Vloed
b554787ab0 add Vlaams Gewest links from communes, provinces , regions and districts 2026-04-17 10:29:12 +02:00
Boris De Vloed
51b35b04f9 Add Vlaams Gewest werkingsgebied 2026-04-17 10:28:10 +02:00
Damon Kennes
81c8266bd4 Merge pull request #594 from lblod/OP-3760-Query-list-change-events-of-organisations-in-Dashboard
OP-3760: added change-events-report
2026-04-17 10:15:06 +02:00
Damon
e24c6eece6 Merge branch 'development' into OP-3760-Query-list-change-events-of-organisations-in-Dashboard
# Conflicts:
#	CHANGELOG.md
2026-04-17 10:14:38 +02:00
Damon Kennes
0ad97119df Merge pull request #593 from lblod/OP-3758-Add-column-to-query-organizations-in-Dashboard
OP-3758: updated organizations-report query + fix to dev migration
2026-04-17 10:13:38 +02:00
Damon
d455f47c9f OP-3760: changelog edit 2026-04-17 10:12:47 +02:00
cecemel
7581b12c25 Merge pull request #591 from lblod/fix/add-missing-concept-labels
Add EredienstBeroepen and TypeBetrokkenheid labels
2026-04-15 17:04:18 +02:00
cecemel
48b74c546e Merge branch 'development' into fix/add-missing-concept-labels 2026-04-15 17:04:07 +02:00
felix
ce4abe4d27 Update deploy notes 2026-04-15 17:02:17 +02:00
felix
e1bb06ba2c Bump maintainer 1.4.3 2026-04-15 16:57:19 +02:00
Damon
0274737c84 OP-3760: added change-events-report 2026-04-15 16:57:09 +02:00
felix
bfd10583bf Added migration to add the beroepen and typebetrokkenheid in concept 2026-04-15 16:54:17 +02:00
Damon
c63b0659eb OP-3758: updated organizations-report query + fix to dev migration 2026-04-15 16:31:51 +02:00
cecemel
b8e2bb3186 Merge pull request #592 from lblod/chore/cleanup-local-involvement-oud-heverlee
[OP-3757]: cleanup local involvement of oud heverlee
2026-04-15 16:05:50 +02:00
wolfderechter
fb75ba1738 Merge branch 'development' into chore/cleanup-local-involvement-oud-heverlee 2026-04-15 12:57:29 +02:00
wolfez
bd935ce795 add migration to cleanup local involvement of oud heverlee 2026-04-15 12:53:12 +02:00
Damon Kennes
fe3957382e Merge pull request #590 from lblod/OP-3766-add-strekking-to-query
OP-3766: added updated bestuurseenheden query to report
2026-04-13 10:51:29 +02:00
Damon
c50d077435 Merge branch 'development' into OP-3766-add-strekking-to-query
# Conflicts:
#	CHANGELOG.md
2026-04-13 10:50:10 +02:00
Damon
5eaae75cc3 OP-3766: camelCase + changelog edit 2026-04-13 10:48:09 +02:00
Damon
334adafbba OP-3765: bump to kbo-data-sync 2026-04-09 17:19:35 +02:00
Boris De Vloed
2109ff77fc Add EredienstBeroepen and TypeBetrokkenheid labels 2026-04-09 16:15:29 +02:00
Damon
3b333f13a6 OP-3766: added updated bestuurseenheden query to report 2026-04-09 11:19:39 +02:00
felix
6912cec711 Release v1.39.0 2026-04-02 18:09:06 +02:00
cecemel
efb5760925 Merge pull request #589 from lblod/feature/OP-3761-query-org-data
Added reports: Query organisations: organisational data
2026-04-02 18:02:57 +02:00
felix
00ddb35f40 Added reports 2026-04-02 17:37:24 +02:00
Elena Poelman
227f093ebe Merge pull request #582 from lblod/fix/setup-vendors-sync-docs
Adjust setup-vendors-sync steps in readme to allow initial sync
2026-03-20 15:19:02 +01:00
felix
9daccc7736 Update CHANGELOG.md 2026-03-02 15:37:13 +01:00
felix
b25514e580 bugfix report: primary -> Primary 2026-03-02 15:35:24 +01:00
cecemel
789cbd5703 Merge pull request #588 from lblod/feature/add-reports-contact-details-ABB-KBO
Feature/add reports contact details abb kbo
2026-03-02 15:29:02 +01:00
felix
c174bfaa03 Update CHANGELOG.md 2026-03-02 15:28:01 +01:00
felix
b2e6c0edd0 Added reports: KBO and organisation detail.
See also: OP-3738
2026-03-02 15:26:58 +01:00
fe789ce33f slightly adjust setup-vendors-sync steps in readme to allow initial sync 2026-01-05 13:07:47 +01:00
47 changed files with 5248 additions and 408 deletions

View File

@@ -1,4 +1,111 @@
# Changelog
## Unreleased
- Derive an organization's reference region(s) from its werkingsgebied; bump scope-of-operation to 0.2.0 [OP-3799]
- Frontend [v1.40.1], [v1.40.0], [v1.39.0] ,[v1.38.0]
- 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]
- Werkingsgebied (dct:spatial) for private OCMW associations [OP-3832]
### Deploy notes
```
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 delta-producer-publication-graph-maintainer
scripts/reset-elastic.sh
drc restart migrations frontend db resource cache
# reindex elastic search:
/bin/bash scripts/reset-elastic.sh
drc restart migrations search
drc up -d frontend
```
## v1.41.1
- Added service to link addresses to addressregister uris [OP-3795]
- Site type changes [OP-3818]
- Added Juridische vorm [OP-3816] [OP-3820]
- Frontend [v1.40.4-1]
- bump construct-organization-relationships [OP-3810]
- "In Oprichting" bestuursorgaan lifecycle [OP-3810]
- Added "werkingsgebied" filter [OP-3812]
- Inhoudelijk thema [OP-3817]
- Add a new "Wijkkantoor" site type [OP-3837]
- cleanup local involvement herne [OP-3858]
### Deploy notes
```
drc up -d link-adressenregister-uri frontend construct-organization-relationships
drc restart resource migrations dispatcher
```
```
drc restart migrations
drc restart cache resource
```
```
drc restart migrations frontend db resource cache
# reindex elastic search:
/bin/bash scripts/reset-elastic.sh
```
## v1.41.0
- added explicit healtchecks [DL-7466]
### Deploy notes
```
drc restart dispatcher
```
## v1.40.0
- Query to check missing address URI's [OP-3784]
- Create new query 'organisations shown in OP frontend' in Dashboard [OP-3774]
- Moved AGB BRUGGE to correct graph [OP-3790]
- Bump acm-login service [DL-7346]
- Frontend [v1.37.0](https://github.com/lblod/frontend-organization-portal/blob/99e0ca22617d17cbc8a23dfa2f6d31691fed90b9/CHANGELOG.md#v1370-2026-05-27)
### Deploy notes
```
drc restart report-generation
drc restart migrations
scripts/reset-elastic.sh
drc up -d login login-dashboard frontend
```
## 1.39.1 (2026-04-24)
- OP-3771: Adds labels for: EredienstBeroepen and TypeBetrokkenheid
- Bump to kbo-data-sync [OP-3765]
- Added administrativeUnits report with strekking [OP-3766]
- Cleanup local involvement for oud heverlee [OP-3757]
- Add column to query organizations in Dashboard [OP-3758]
- Query list change events of organisations in Dashboard [OP-3760]
- Disable SPARQL endpoint
- Prepare worship election period: backfill missing 2026-2029 governing bodies + mandates, seed fresh 2029-2032 period, and clean up `hhttp://` Secretaris typo from the 2022 central-worship migrations and bumped construct-organization-relationships to 1.1.1[OP-3776] and [DL-7294]
- Cleanup local involvements for Sint Laureins [OP-3775]
- sparql-parser [DL-6575]
### Deploy notes
```
drc pull kbo-data-sync db resource && drc up -d kbo-data-sync db resource
drc restart report-generation
drc restart migrations && drc logs -ft --tail=200 migrations
drc up -d delta-producer-publication-graph-maintainer
drc restart dispatcher
```
## 1.39.0 (2026-04-02)
- Add KBO organizations report to report generation service [OP-3738]
- Add organizations detail report (addresses and contact info) to report generation service [OP-3738]
- Query organisations: organisational data [OP-3761]
### Deploy notes
```
drc restart report-generation
```
## 1.38.4 (2026-02-26)
### Backend
@@ -47,7 +154,7 @@ drc pull report-generation; drc up -d report-generation
### Deploy instructions
#### For error-alert and deliver-email-service
Per environment a specfic configuration for the email service similar to loket config.
Per environment a specfic configuration for the email service similar to loket config.
Ask colleague for specfic credentials.
```
@@ -56,13 +163,13 @@ Ask colleague for specfic credentials.
EMAIL_PROTOCOL: "smtp"
#WELL_KNOWN_SERVICE: "smtp"
EMAIL_HOST: "Fill in Email host adress"
EMAIL_ADDRESS: "Fill in email"
EMAIL_ADDRESS: "Fill in email"
EMAIL_PASSWORD: "Fill in email password"
EMAIL_PORT: "Fill in port"
SECURE_CONNECTION: "true"
EMAIL_CRON_PATTERN: "*/1 * * * *"
restart: "no"
error-alert:
environment:
EMAIL_FROM: "Fill in email adress of sender
@@ -79,7 +186,7 @@ drc up -d error-alert deliver-email-service frontend
### General
- [OP-3590]: OP is now master of "aantal houders" of mandates
- [OP-3699]: Update aantal houders for some mandates Hasselt and Antwerp
- [OP-3680]: Indicate whether a worship service is a customer of ReligioPoint or Loket voor Lokale Besturen
- [OP-3680]: Indicate whether a worship service is a customer of ReligioPoint or Loket voor Lokale Besturen
- Bump frontend to v1.36.2 [OP-3623] [OP-3681] [OP-3703] [OP-2712]
### Deploy instructions

View File

@@ -187,19 +187,22 @@ Update `docker-compose.override.yml` to:
vendor-management-consumer:
environment:
DCR_SYNC_BASE_URL: "https://dev.loket.lblod.info/" # or another endpoint
DCR_DISABLE_INITIAL_SYNC: "true"
BATCH_SIZE: "500"
DCR_SECRET_KEY: "<key>>" # fill in key for selected endpoint
DCR_SYNC_LOGIN_ENDPOINT: "https://dev.loket.lblod.info/sync/vendor-management/login" # login for selected endpoint
DCR_DISABLE_DELTA_INGEST: "false"
DCR_DISABLE_INITIAL_SYNC: "false"
```
Then:
```
drc up -d migrations
drc up -d db vendor-management-consumer
```
Finally, put the stack back up.
# Wait until success of the previous step
Finally, put the stack back up and reindex elasticsearch:
```
drc up -d
sh scripts/reset-elastic.sh
```
### Setting up the delta-producers related services

View File

@@ -1,311 +0,0 @@
alias Acl.Accessibility.Always, as: AlwaysAccessible
alias Acl.GraphSpec.Constraint.Resource, as: ResourceConstraint
alias Acl.GraphSpec.Constraint.ResourceFormat, as: ResourceFormatConstraint
alias Acl.Accessibility.ByQuery, as: AccessByQuery
alias Acl.GraphSpec, as: GraphSpec
alias Acl.GroupSpec, as: GroupSpec
alias Acl.GroupSpec.GraphCleanup, as: GraphCleanup
defmodule Acl.UserGroups.Config do
@error_type [
"https://docs.oasis-open-projects.org/oslc-op/core/v3.0/os/core-vocab.html#Error"
]
@worship_type [
"http://data.lblod.info/vocabularies/erediensten/EredienstMandataris",
"http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"http://data.lblod.info/vocabularies/erediensten/EredienstBestuurseenheid",
"http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
"http://data.lblod.info/vocabularies/erediensten/VoorwaardenBedienaar",
"http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
"http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
"http://data.lblod.info/vocabularies/erediensten/VerbondenJuridischeStructuren",
"http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
"http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan"
]
@public_type [
"http://www.w3.org/ns/org#Role",
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
"http://xmlns.com/foaf/0.1/Person",
"http://xmlns.com/foaf/0.1/OnlineAccount",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject",
"http://www.w3.org/ns/dcat#Dataset",
"http://www.w3.org/ns/dcat#Distribution",
"http://www.w3.org/ns/dcat#Catalog",
"http://mu.semte.ch/vocabularies/ext/GeslachtCode",
"http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode",
"http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
"http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode",
"http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
"http://lblod.data.gift/vocabularies/organisatie/MandatarisStatusCode",
"http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
"http://mu.semte.ch/vocabularies/ext/GeregistreerdeOrganisatieClassificatieCode",
"http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
"http://www.w3.org/2004/02/skos/core#ConceptScheme",
"http://lblod.data.gift/vocabularies/organisatie/BedienaarFinancieringCode",
"http://www.w3.org/2004/02/skos/core#Concept",
"http://publications.europa.eu/ontology/euvoc#Country",
"http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
"http://lblod.data.gift/vocabularies/organisatie/HelftVerkiezing",
"http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
"http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
"http://lblod.data.gift/vocabularies/organisatie/VoorwaardenBedienaarCriterium",
"http://lblod.data.gift/vocabularies/organisatie/BedienaarCriteriumBewijsstuk",
"http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
"http://lblod.data.gift/vocabularies/organisatie/Rechtsvormtype",
"http://www.w3.org/ns/prov#Location"
]
@org_type [
"http://purl.org/dc/terms/Agent",
"http://www.w3.org/ns/org#Organization",
"http://www.w3.org/ns/regorg#RegisteredOrganization",
"http://data.vlaanderen.be/ns/besluit#Besluit",
"https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit",
"http://www.w3.org/ns/org#Site",
"http://www.w3.org/ns/locn#Address",
"http://www.w3.org/ns/person#Person",
"http://schema.org/ContactPoint",
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
"http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
"http://www.w3.org/ns/adms#Identifier",
"https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
"http://data.vlaanderen.be/ns/mandaat#Mandaat",
"http://data.vlaanderen.be/ns/mandaat#Mandataris",
"http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
"http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie",
"http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat",
"http://www.w3.org/ns/org#Post",
"http://www.w3.org/ns/org#ChangeEvent",
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie",
"http://mu.semte.ch/vocabularies/ext/KboOrganisatie",
"http://www.w3.org/ns/org#Membership",
"http://www.w3.org/2006/time#ProperInterval",
]
@shared_protected_type [
"http://xmlns.com/foaf/0.1/Image",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
]
@vendor_type [
"http://mu.semte.ch/vocabularies/ext/Vendor"
]
defp access_by_role(group_string) do
%AccessByQuery{
# vars: ["session_group","session_role"], todo we might have to create multiple graph depending on role
vars: [],
query: sparql_query_for_access_role(group_string)
}
end
defp sparql_query_for_access_role(group_string) do
"PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT distinct ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"#{group_string}\" )
}"
end
defp can_access_dashboard() do
%AccessByQuery{
vars: [],
query: "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
SELECT DISTINCT ?session WHERE {
VALUES ?session { <SESSION_ID> }
?session ext:sessionRole \"LoketLB-AdminDashboardOrganisatiePortaalGebruiker\" .
}"
}
end
def user_groups do
[
%GroupSpec{
name: "acmidm-lezer",
useage: [:read],
access: access_by_role("ABBOrganisatiePortaalGebruiker-lezer"),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/administrative-unit",
constraint: %ResourceConstraint{
resource_types: @org_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
%GroupSpec{
name: "acmidm-editeerder",
useage: [:read, :write, :read_for_write],
access: access_by_role("ABBOrganisatiePortaalGebruiker-editeerder"),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/administrative-unit",
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
%GroupSpec{
name: "acmidm-beheerder",
useage: [:read, :write, :read_for_write],
access: access_by_role("ABBOrganisatiePortaalGebruiker-beheerder"),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/administrative-unit",
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
%GroupSpec{
name: "acmidm-worship-lezer",
useage: [:read],
access: access_by_role("ABBOrganisatiePortaalErediensten-lezer"),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/worship-service",
constraint: %ResourceConstraint{
resource_types: @org_type ++ @worship_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
%GroupSpec{
name: "acmidm-worship-editeerder",
useage: [:read, :write, :read_for_write],
access: access_by_role("ABBOrganisatiePortaalErediensten-editeerder"),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/worship-service",
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type ++ @worship_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
%GroupSpec{
name: "acmidm-worship-beheerder",
useage: [:read, :write, :read_for_write],
access: access_by_role("ABBOrganisatiePortaalErediensten-beheerder"),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/worship-service",
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type ++ @worship_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
%GroupSpec{
name: "public",
useage: [:read],
access: %AlwaysAccessible{},
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/public",
constraint: %ResourceConstraint{
resource_types: @public_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/shared",
constraint: %ResourceConstraint{
resource_types: @shared_protected_type ++ @org_type
}
}
]
},
# // Dashboard admin
%GroupSpec{
name: "o-admin-rwf",
useage: [:read, :write, :read_for_write],
access: can_access_dashboard(),
graphs: [
%GraphSpec{
graph: "http://mu.semte.ch/graphs/reports",
constraint: %ResourceConstraint{
resource_types: [
"http://lblod.data.gift/vocabularies/reporting/Report",
"http://open-services.net/ns/core#Error",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#DataContainer",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
]
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/system/jobs",
constraint: %ResourceConstraint{
resource_types: [
"http://vocab.deri.ie/cogs#Job",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#DataContainer",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
]
}
},
# OP stores jobs in multiple graphs, so we configure both until they are merged into one graph
%GraphSpec{
graph: "http://mu.semte.ch/graphs/jobs",
constraint: %ResourceConstraint{
resource_types: [
"http://vocab.deri.ie/cogs#Job",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#DataContainer",
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
]
}
}
]
},
# // CLEANUP
#
%GraphCleanup{
originating_graph: "http://mu.semte.ch/application",
useage: [:read, :write],
name: "clean"
}
]
end
end

View File

@@ -0,0 +1,369 @@
;;;;;;;;;;;;;;;;;;;
;;; delta messenger
(in-package :delta-messenger)
(add-delta-logger)
(add-delta-messenger "http://deltanotifier/")
;;;;;;;;;;;;;;;;;
;;; configuration
(in-package :client)
(setf *log-sparql-query-roundtrip* t)
(setf *backend* "http://triplestore:8890/sparql")
(in-package :server)
(setf *log-incoming-requests-p* nil)
;;;;;;;;;;;;;;;;;
;;; access rights
(in-package :acl)
(defparameter *access-specifications* nil
"All known ACCESS specifications.")
(defparameter *graphs* nil
"All known GRAPH-SPECIFICATION instances.")
(defparameter *rights* nil
"All known GRANT instances connecting ACCESS-SPECIFICATION to GRAPH.")
;; Prefixes used in the constraints below (not in the SPARQL queries)
(define-prefixes
:org "http://www.w3.org/ns/org#"
:locn "http://www.w3.org/ns/locn#"
:schema "http://schema.org/"
:regorg "http://www.w3.org/ns/regorg#"
:person "http://www.w3.org/ns/person#"
:adms "http://www.w3.org/ns/adms#"
:prov "http://www.w3.org/ns/prov#"
:generiek "https://data.vlaanderen.be/ns/generiek#"
:mandaat "http://data.vlaanderen.be/ns/mandaat#"
:besluit "http://data.vlaanderen.be/ns/besluit#"
:lblodlg "http://data.lblod.info/vocabularies/leidinggevenden/"
:dc_terms "http://purl.org/dc/terms/"
:foaf "http://xmlns.com/foaf/0.1/"
:skos "http://www.w3.org/2004/02/skos/core#"
:euvoc "http://publications.europa.eu/ontology/euvoc#"
:ere "http://data.lblod.info/vocabularies/erediensten/"
:ch "http://data.lblod.info/vocabularies/contacthub/"
:code "http://lblod.data.gift/vocabularies/organisatie/"
:ext "http://mu.semte.ch/vocabularies/ext/"
:time "http://www.w3.org/2006/time#"
:oasis "https://docs.oasis-open-projects.org/oslc-op/core/v3.0/os/core-vocab.html#"
:nfo "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#"
:dcat "http://www.w3.org/ns/dcat#"
:besluitvorming "https://data.vlaanderen.be/ns/besluitvorming#"
:reporting "http://lblod.data.gift/vocabularies/reporting/"
:oslc "http://open-services.net/ns/core#"
:cogs "http://vocab.deri.ie/cogs#"
)
(type-cache::add-type-for-prefix "http://mu.semte.ch/sessions/" "http://mu.semte.ch/vocabularies/session/Session")
(define-graph acmidm-lezer ("http://mu.semte.ch/graphs/administrative-unit")
("dc_terms:Agent" -> _)
("org:Organization" -> _)
("regorg:RegisteredOrganization" -> _)
("besluit:Besluit" -> _)
("besluitvorming:Beslissingsactiviteit" -> _)
("org:Site" -> _)
("locn:Address" -> _)
("person:Person" -> _)
("schema:ContactPoint" -> _)
("besluit:Bestuurseenheid" -> _)
("besluit:Bestuursorgaan" -> _)
("adms:Identifier" -> _)
("generiek:GestructureerdeIdentificator" -> _)
("mandaat:Mandaat" -> _)
("mandaat:Mandataris" -> _)
("lblodlg:Functionaris" -> _)
("lblodlg:Bestuursfunctie" -> _)
("code:VeranderingsgebeurtenisResultaat" -> _)
("org:Post" -> _)
("org:ChangeEvent" -> _)
("ch:AgentInPositie" -> _)
("ext:KboOrganisatie" -> _)
("org:Membership" -> _)
("time:ProperInterval" -> _))
(define-graph acmidm-vendor ("http://mu.semte.ch/graphs/vendor-management-data")
("ext:Vendor" -> _))
(define-graph acmidm-editeerder ("http://mu.semte.ch/graphs/administrative-unit")
("oasis:Error" -> _)
("dc_terms:Agent" -> _)
("org:Organization" -> _)
("regorg:RegisteredOrganization" -> _)
("besluit:Besluit" -> _)
("besluitvorming:Beslissingsactiviteit" -> _)
("org:Site" -> _)
("locn:Address" -> _)
("person:Person" -> _)
("schema:ContactPoint" -> _)
("besluit:Bestuurseenheid" -> _)
("besluit:Bestuursorgaan" -> _)
("adms:Identifier" -> _)
("generiek:GestructureerdeIdentificator" -> _)
("mandaat:Mandaat" -> _)
("mandaat:Mandataris" -> _)
("lblodlg:Functionaris" -> _)
("lblodlg:Bestuursfunctie" -> _)
("code:VeranderingsgebeurtenisResultaat" -> _)
("org:Post" -> _)
("org:ChangeEvent" -> _)
("ch:AgentInPositie" -> _)
("ext:KboOrganisatie" -> _)
("org:Membership" -> _)
("time:ProperInterval" -> _))
(define-graph acmidm-worship-lezer ("http://mu.semte.ch/graphs/worship-service")
("ere:EredienstMandataris" -> _)
("ere:BestuurVanDeEredienst" -> _)
("ere:EredienstBestuurseenheid" -> _)
("ere:RolBedienaar" -> _)
("ere:VoorwaardenBedienaar" -> _)
("ere:PositieBedienaar" -> _)
("ere:BetrokkenLokaleBesturen" -> _)
("ere:VerbondenJuridischeStructuren" -> _)
("ere:CentraalBestuurVanDeEredienst" -> _)
("ere:RepresentatiefOrgaan" -> _)
("dc_terms:Agent" -> _)
("org:Organization" -> _)
("regorg:RegisteredOrganization" -> _)
("besluit:Besluit" -> _)
("besluitvorming:Beslissingsactiviteit" -> _)
("org:Site" -> _)
("locn:Address" -> _)
("person:Person" -> _)
("schema:ContactPoint" -> _)
("besluit:Bestuurseenheid" -> _)
("besluit:Bestuursorgaan" -> _)
("adms:Identifier" -> _)
("generiek:GestructureerdeIdentificator" -> _)
("mandaat:Mandaat" -> _)
("mandaat:Mandataris" -> _)
("lblodlg:Functionaris" -> _)
("lblodlg:Bestuursfunctie" -> _)
("code:VeranderingsgebeurtenisResultaat" -> _)
("org:Post" -> _)
("org:ChangeEvent" -> _)
("ch:AgentInPositie" -> _)
("ext:KboOrganisatie" -> _)
("org:Membership" -> _)
("time:ProperInterval" -> _))
(define-graph acmidm-worship-editeerder ("http://mu.semte.ch/graphs/worship-service")
("oasis:Error" -> _)
("ere:EredienstMandataris" -> _)
("ere:BestuurVanDeEredienst" -> _)
("ere:EredienstBestuurseenheid" -> _)
("ere:RolBedienaar" -> _)
("ere:VoorwaardenBedienaar" -> _)
("ere:PositieBedienaar" -> _)
("ere:BetrokkenLokaleBesturen" -> _)
("ere:VerbondenJuridischeStructuren" -> _)
("ere:CentraalBestuurVanDeEredienst" -> _)
("ere:RepresentatiefOrgaan" -> _)
("dc_terms:Agent" -> _)
("org:Organization" -> _)
("regorg:RegisteredOrganization" -> _)
("besluit:Besluit" -> _)
("besluitvorming:Beslissingsactiviteit" -> _)
("org:Site" -> _)
("locn:Address" -> _)
("person:Person" -> _)
("schema:ContactPoint" -> _)
("besluit:Bestuurseenheid" -> _)
("besluit:Bestuursorgaan" -> _)
("adms:Identifier" -> _)
("generiek:GestructureerdeIdentificator" -> _)
("mandaat:Mandaat" -> _)
("mandaat:Mandataris" -> _)
("lblodlg:Functionaris" -> _)
("lblodlg:Bestuursfunctie" -> _)
("code:VeranderingsgebeurtenisResultaat" -> _)
("org:Post" -> _)
("org:ChangeEvent" -> _)
("ch:AgentInPositie" -> _)
("ext:KboOrganisatie" -> _)
("org:Membership" -> _)
("time:ProperInterval" -> _))
(define-graph public ("http://mu.semte.ch/graphs/public")
("org:Role" -> _)
("besluit:Bestuurseenheid" -> _)
("foaf:Person" -> _)
("foaf:OnlineAccount" -> _)
("nfo:FileDataObject" -> _)
("dcat:Dataset" -> _)
("dcat:Distribution" -> _)
("dcat:Catalog" -> _)
("ext:GeslachtCode" -> _)
("lblodlg:FunctionarisStatusCode" -> _)
("code:OrganisatieStatusCode" -> _)
("code:BestuursfunctieCode" -> _)
("code:BestuursorgaanClassificatieCode" -> _)
("code:MandatarisStatusCode" -> _)
("code:BestuurseenheidClassificatieCode" -> _)
("ext:GeregistreerdeOrganisatieClassificatieCode" -> _)
("code:TypeEredienst" -> _)
("skos:ConceptScheme" -> _)
("code:BedienaarFinancieringCode" -> _)
("skos:Concept" -> _)
("euvoc:Country" -> _)
("code:TypeVestiging" -> _)
("code:HelftVerkiezing" -> _)
("code:Veranderingsgebeurtenis" -> _)
("code:TypeBetrokkenheid" -> _)
("code:VoorwaardenBedienaarCriterium" -> _)
("code:BedienaarCriteriumBewijsstuk" -> _)
("code:EredienstBeroepen" -> _)
("code:Rechtsvormtype" -> _)
("prov:Location" -> _)
("code:inhoudelijkThema" -> _))
(define-graph shared ("http://mu.semte.ch/graphs/shared")
("foaf:Image" -> _)
("nfo:FileDataObject" -> _)
("dc_terms:Agent" -> _)
("org:Organization" -> _)
("regorg:RegisteredOrganization" -> _)
("besluit:Besluit" -> _)
("besluitvorming:Beslissingsactiviteit" -> _)
("org:Site" -> _)
("locn:Address" -> _)
("person:Person" -> _)
("schema:ContactPoint" -> _)
("besluit:Bestuurseenheid" -> _)
("besluit:Bestuursorgaan" -> _)
("adms:Identifier" -> _)
("generiek:GestructureerdeIdentificator" -> _)
("mandaat:Mandaat" -> _)
("mandaat:Mandataris" -> _)
("lblodlg:Functionaris" -> _)
("lblodlg:Bestuursfunctie" -> _)
("code:VeranderingsgebeurtenisResultaat" -> _)
("org:Post" -> _)
("org:ChangeEvent" -> _)
("ch:AgentInPositie" -> _)
("ext:KboOrganisatie" -> _)
("org:Membership" -> _)
("time:ProperInterval" -> _))
(define-graph reports ("http://mu.semte.ch/graphs/reports")
("reporting:Report" -> _)
("oslc:Error" -> _)
("nfo:DataContainer" -> _)
("nfo:FileDataObject" -> _))
(define-graph system-jobs ("http://mu.semte.ch/graphs/system/jobs")
("cogs:Job" -> _)
("nfo:DataContainer" -> _)
("nfo:FileDataObject" -> _))
(define-graph jobs ("http://mu.semte.ch/graphs/jobs")
("cogs:Job" -> _)
("nfo:DataContainer" -> _)
("nfo:FileDataObject" -> _))
(supply-allowed-group "public")
(supply-allowed-group "o-admin-rwf"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
SELECT DISTINCT ?session WHERE {
<SESSION_ID> ext:sessionRole \"LoketLB-AdminDashboardOrganisatiePortaalGebruiker\" .
}")
(supply-allowed-group "ABBOrganisatiePortaalGebruiker-lezer"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT DISTINCT ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"ABBOrganisatiePortaalGebruiker-lezer\" )
}")
(supply-allowed-group "ABBOrganisatiePortaalGebruiker-editeerder"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT DISTINCT ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"ABBOrganisatiePortaalGebruiker-editeerder\" )
}")
(supply-allowed-group "ABBOrganisatiePortaalGebruiker-beheerder"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT DISTINCT ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"ABBOrganisatiePortaalGebruiker-beheerder\" )
}")
(supply-allowed-group "ABBOrganisatiePortaalErediensten-lezer"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT DISTINCT ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"ABBOrganisatiePortaalErediensten-lezer\" )
}")
(supply-allowed-group "ABBOrganisatiePortaalErediensten-editeerder"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT DISTINCT ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"ABBOrganisatiePortaalErediensten-editeerder\" )
}")
(supply-allowed-group "ABBOrganisatiePortaalErediensten-beheerder"
:parameters ()
:query "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
SELECT DISTINCT ?session_group ?session_role WHERE {
<SESSION_ID> ext:sessionGroup/mu:uuid ?session_group;
ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"ABBOrganisatiePortaalErediensten-beheerder\" )
}")
(grant (read)
:to-graph (acmidm-lezer acmidm-vendor)
:for-allowed-group "ABBOrganisatiePortaalGebruiker-lezer")
(grant (read write)
:to-graph (acmidm-editeerder acmidm-vendor)
:for-allowed-group "ABBOrganisatiePortaalGebruiker-editeerder")
(grant (read write)
:to-graph (acmidm-editeerder acmidm-vendor)
:for-allowed-group "ABBOrganisatiePortaalGebruiker-beheerder")
(grant (read)
:to-graph (acmidm-worship-lezer acmidm-vendor)
:for-allowed-group "ABBOrganisatiePortaalErediensten-lezer")
(grant (read write)
:to-graph (acmidm-worship-editeerder acmidm-vendor)
:for-allowed-group "ABBOrganisatiePortaalErediensten-editeerder")
(grant (read write)
:to-graph (acmidm-worship-editeerder acmidm-vendor)
:for-allowed-group "ABBOrganisatiePortaalErediensten-beheerder")
(grant (read)
:to-graph (public shared)
:for-allowed-group "public")
(grant (read write)
:to-graph (reports jobs system-jobs)
:for-allowed-group "o-admin-rwf")

View File

@@ -1,5 +0,0 @@
defmodule Delta.Config do
def targets do
[ "http://deltanotifier" ]
end
end

View File

@@ -525,6 +525,32 @@
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
{
"type": "http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
"graphsFilter": [
"http://mu.semte.ch/graphs/public"
],
"pathToConceptScheme": [
"http://www.w3.org/2004/02/skos/core#inScheme"
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
{
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
"graphsFilter": [
"http://mu.semte.ch/graphs/public"
],
"pathToConceptScheme": [
"http://www.w3.org/2004/02/skos/core#inScheme"
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
{
"type": "http://data.vlaanderen.be/ns/mandaat#Mandaat",
"graphsFilter": [

View File

@@ -1,6 +1,5 @@
DELETE {
GRAPH ?g {
?s a <http://www.w3.org/ns/org#Organization>.
?s <http://www.w3.org/ns/regorg#orgStatus> ?status.
}
}

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
@@ -503,8 +503,16 @@ defmodule Dispatcher do
# sparql endpoint
###############################################################
post "/sparql/*path", %{layer: :api_services, accept: %{sparql_json: true}} do
forward(conn, path, "http://db:8890/sparql/")
# post "/sparql/*path", %{layer: :api_services, accept: %{sparql_json: true}} do
# forward(conn, path, "http://db:8890/sparql/")
# end
#################################################################
# Health checks
#################################################################
get "/health/accounts", %{layer: :api} do
Proxy.forward(conn, [], "http://resource/accounts/")
end
###############################################################

View File

@@ -0,0 +1,35 @@
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/betrokkenLokaleBesturen/a648cf4f6e94d3ea0b0ed32b73b75dd9> ?p ?o.
}
}
;
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/bestuurseenheden/c648ea5d12626ee3364a02debb223908a71e68f53d69a7a7136585b58a083e77> <http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur> <http://data.lblod.info/id/betrokkenLokaleBesturen/a648cf4f6e94d3ea0b0ed32b73b75dd9>.
}
}
;
DELETE {
GRAPH ?g {
?localInvolvementOudHeverlee <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> ?percentage.
}
}
INSERT {
GRAPH ?g {
?localInvolvementOudHeverlee <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> 100.
}
}
WHERE {
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?g)
GRAPH ?g {
?localInvolvementOudHeverlee <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> ?percentage.
}
VALUES ?localInvolvementOudHeverlee {
<http://data.lblod.info/id/betrokkenLokaleBesturen/3c8696890fb0bb865a798923acf58dcf>
}
}

View File

@@ -0,0 +1,12 @@
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
?s <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
}
} WHERE {
VALUES ?type {
<http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen>
<http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid>
}
?s a ?type .
}

View File

@@ -0,0 +1,25 @@
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
?vlaamsGewest a prov:Location ;
mu:uuid ?uuid ;
rdfs:label "Vlaams Gewest" ;
ext:werkingsgebiedNiveau "Gewest" ;
skos:exactMatch <http://vocab.belgif.be/auth/refnis2025/2000> ,
<http://vocab.belgif.be/auth/refnis2019/2000> .
}
} WHERE {
BIND(SHA256(CONCAT("Werkingsgebied for Vlaams Gewest")) AS ?uuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/werkingsgebieden/", STR(?uuid))) AS ?vlaamsGewest)
FILTER NOT EXISTS {
GRAPH <http://mu.semte.ch/graphs/public> {
?existing ext:werkingsgebiedNiveau "Gewest" ;
rdfs:label "Vlaams Gewest" .
}
}
}

View File

@@ -0,0 +1,85 @@
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
# 1) Link the 5 Flemish province werkingsgebieden themselves to Vlaams Gewest
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
?provWg geo:sfWithin ?vlaamsGewest .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/public> {
?vlaamsGewest a prov:Location ;
ext:werkingsgebiedNiveau "Gewest" ;
rdfs:label "Vlaams Gewest" .
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?province a besluit:Bestuurseenheid ;
org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?province besluit:werkingsgebied ?provWg .
}
FILTER NOT EXISTS {
GRAPH <http://mu.semte.ch/graphs/public> {
?provWg geo:sfWithin ?vlaamsGewest .
}
}
} ;
# 2) Link Flemish municipality werkingsgebieden to Vlaams Gewest
# Selector: any Gemeente-level location whose sfWithin is a werkingsgebied
# belonging to a Bestuurseenheid classified as Provincie (i.e. a Flemish province).
# Brussels has no provinces, and there are no Waals-Gewest provinces in OP,
# so "classified as Provincie" == "Flemish province".
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
?munWg geo:sfWithin ?vlaamsGewest .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/public> {
?vlaamsGewest a prov:Location ;
ext:werkingsgebiedNiveau "Gewest" ;
rdfs:label "Vlaams Gewest" .
?munWg a prov:Location ;
ext:werkingsgebiedNiveau "Gemeente" ;
geo:sfWithin ?provWg .
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?province a besluit:Bestuurseenheid ;
org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?province besluit:werkingsgebied ?provWg .
}
FILTER NOT EXISTS {
GRAPH <http://mu.semte.ch/graphs/public> {
?munWg geo:sfWithin ?vlaamsGewest .
}
}
} ;
# 3) Link all District and Referentieregio werkingsgebieden to Vlaams Gewest
# All districts and referentieregios in the data are Flemish by scope;
# no further filtering required.
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
?wg geo:sfWithin ?vlaamsGewest .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/public> {
?vlaamsGewest a prov:Location ;
ext:werkingsgebiedNiveau "Gewest" ;
rdfs:label "Vlaams Gewest" .
?wg a prov:Location ; ext:werkingsgebiedNiveau ?niveau .
VALUES ?niveau { "District" "Referentieregio" }
}
FILTER NOT EXISTS {
GRAPH <http://mu.semte.ch/graphs/public> {
?wg geo:sfWithin ?vlaamsGewest .
}
}
}

View File

@@ -0,0 +1,48 @@
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 mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime a besluit:Bestuursorgaan ;
mu:uuid ?uuidOrgaanInTime ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime ;
generiek:isTijdspecialisatieVan ?bestuursorgaan .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
VALUES ?type {
ere:BestuurVanDeEredienst
ere:CentraalBestuurVanDeEredienst
}
?bestuurseenheid a ?type .
FILTER NOT EXISTS {
?bestuurseenheid regorg:orgStatus <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
}
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
FILTER NOT EXISTS {
?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
?missingOrgaanInTime mandaat:bindingStart ?start .
FILTER CONTAINS(STR(?start), "2026")
}
FILTER NOT EXISTS {
?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
?missingOrgaanInTime mandaat:bindingEinde ?end .
FILTER CONTAINS(STR(?end), "2029")
}
}
BIND(MD5(CONCAT(?bestuurseenheid, ?bestuursorgaan, "2026-2029")) as ?uuidOrgaanInTime)
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime)
}

View File

@@ -0,0 +1,187 @@
# Add missing mandates to worship services for period 2026-2029
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
## Case LidVanRechtswege : shared mandate for all the organen in time
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?lidVanRechtswege .
?lidVanRechtswege a mandaat:Mandaat ;
mu:uuid ?uuidLidVanRechtswege ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5972fccd87f864c4ec06bfbd20b5008b> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
VALUES (?start ?end) {
("2026-04-01T00:00:00"^^xsd:dateTime "2029-03-31T00:00:00"^^xsd:dateTime)
}
?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 <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5972fccd87f864c4ec06bfbd20b5008b> .
}
}
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 : 2026 is the beginning of a GH
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?bestuurslidGH .
?bestuurslidGH a mandaat:Mandaat ;
mu:uuid ?uuidBestuurslidGH ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/a8b5509b-f86b-48f8-94d6-fe463a9b77e3> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?bestuurslidGH .
?bestuurslidGH org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/a8b5509b-f86b-48f8-94d6-fe463a9b77e3> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidGH 2026-2032")) as ?uuidBestuurslidGH)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslidGH)) AS ?bestuurslidGH)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?bestuurslidKH .
?bestuurslidKH a mandaat:Mandaat ;
mu:uuid ?uuidBestuurslidKH ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
VALUES (?start ?end) {
("2026-04-01T00:00:00"^^xsd:dateTime "2029-03-31T00:00:00"^^xsd:dateTime)
}
?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 <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
}
}
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 <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter a mandaat:Mandaat ;
mu:uuid ?uuidVoorzitter ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2026-2029")) as ?uuidVoorzitter)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?secretaris .
?secretaris a mandaat:Mandaat ;
mu:uuid ?uuidSecretaris ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?secretaris .
?secretaris org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2026-2029")) as ?uuidSecretaris)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?penningmeester .
?penningmeester a mandaat:Mandaat ;
mu:uuid ?uuidPenningmeester ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?penningmeester .
?penningmeester org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Penningmeester 2026-2029")) as ?uuidPenningmeester)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidPenningmeester)) AS ?penningmeester)
}

View File

@@ -0,0 +1,154 @@
# Add missing mandates to central worship services
## 2026 - 2029
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?expert .
?expert a mandaat:Mandaat ;
mu:uuid ?uuidExpert ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/8c91c321ad477c4fc372ee36358d3ed4> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?expert .
?expert org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/8c91c321ad477c4fc372ee36358d3ed4> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Expert 2026-2029")) as ?uuidExpert)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidExpert)) AS ?expert)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?vertegenwoordiger .
?vertegenwoordiger a mandaat:Mandaat ;
mu:uuid ?uuidVertegenwoordiger ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/6e26e94ea4b127eeb850fb6debe07271> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?vertegenwoordiger .
?vertegenwoordiger org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/6e26e94ea4b127eeb850fb6debe07271> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Vertegenwoordiger 2026-2029")) as ?uuidVertegenwoordiger)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVertegenwoordiger)) AS ?vertegenwoordiger)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?secretaris .
?secretaris a mandaat:Mandaat ;
mu:uuid ?uuidSecretaris ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?secretaris .
?secretaris org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2026-2029")) as ?uuidSecretaris)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter a mandaat:Mandaat ;
mu:uuid ?uuidVoorzitter ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5960262f753661cf84329f3afa9f7df7> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5960262f753661cf84329f3afa9f7df7> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2026-2029")) as ?uuidVoorzitter)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?bestuurslid .
?bestuurslid a mandaat:Mandaat ;
mu:uuid ?uuidBestuurslid ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/f848fa3cc2c5fb7c581a116866293925> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2026-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2029-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?worshipService regorg:orgStatus <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
}
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?bestuurslid .
?bestuurslid org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/f848fa3cc2c5fb7c581a116866293925> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Bestuurslid 2026-2029")) as ?uuidBestuurslid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslid)) AS ?bestuurslid)
}

View File

@@ -0,0 +1,19 @@
# Cleanup leftover `hhttp://` malformed Secretaris org:role triples introduced by
# the 2022 migrations `20220929092641-create-central-worship-organen-2023-2026.sparql`
# and `20220929104939-create-central-worship-organen-2026-2029.sparql` (line 31).
#
# By this point migration C (20260420100300) has already inserted the correct
# Secretaris `org:role` triple on the same mandate IRI, so removing the malformed
# one leaves each central-worship Secretaris mandate with exactly one valid role.
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s org:role <hhttp://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s org:role <hhttp://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
}
}

View File

@@ -0,0 +1,48 @@
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 mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime a besluit:Bestuursorgaan ;
mu:uuid ?uuidOrgaanInTime ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime ;
generiek:isTijdspecialisatieVan ?bestuursorgaan .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
VALUES ?type {
ere:BestuurVanDeEredienst
ere:CentraalBestuurVanDeEredienst
}
?bestuurseenheid a ?type .
FILTER NOT EXISTS {
?bestuurseenheid regorg:orgStatus <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
}
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
FILTER NOT EXISTS {
?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
?missingOrgaanInTime mandaat:bindingStart ?start .
FILTER CONTAINS(STR(?start), "2029")
}
FILTER NOT EXISTS {
?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
?missingOrgaanInTime mandaat:bindingEinde ?end .
FILTER CONTAINS(STR(?end), "2032")
}
}
BIND(MD5(CONCAT(?bestuurseenheid, ?bestuursorgaan, "2029-2032")) as ?uuidOrgaanInTime)
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime)
}

View File

@@ -0,0 +1,187 @@
# Create mandates for worship services for period 2029-2032
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
## Case LidVanRechtswege : shared mandate for all the organen in time
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?lidVanRechtswege .
?lidVanRechtswege a mandaat:Mandaat ;
mu:uuid ?uuidLidVanRechtswege ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5972fccd87f864c4ec06bfbd20b5008b> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
VALUES (?start ?end) {
("2029-04-01T00:00:00"^^xsd:dateTime "2032-03-31T00:00:00"^^xsd:dateTime)
}
?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 <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5972fccd87f864c4ec06bfbd20b5008b> .
}
}
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 : 2029 is the beginning of a KH (cycle 2029-2035); GH continues its 2026-2032 cycle.
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?bestuurslidGH .
?bestuurslidGH a mandaat:Mandaat ;
mu:uuid ?uuidBestuurslidGH ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/a8b5509b-f86b-48f8-94d6-fe463a9b77e3> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?bestuurslidGH .
?bestuurslidGH org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/a8b5509b-f86b-48f8-94d6-fe463a9b77e3> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidGH 2026-2032")) as ?uuidBestuurslidGH)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslidGH)) AS ?bestuurslidGH)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?bestuurslidKH .
?bestuurslidKH a mandaat:Mandaat ;
mu:uuid ?uuidBestuurslidKH ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
VALUES (?start ?end) {
("2029-04-01T00:00:00"^^xsd:dateTime "2032-03-31T00:00:00"^^xsd:dateTime)
}
?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 <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidKH 2029-2035")) 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 <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter a mandaat:Mandaat ;
mu:uuid ?uuidVoorzitter ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2029-2032")) as ?uuidVoorzitter)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?secretaris .
?secretaris a mandaat:Mandaat ;
mu:uuid ?uuidSecretaris ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?secretaris .
?secretaris org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2029-2032")) as ?uuidSecretaris)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?penningmeester .
?penningmeester a mandaat:Mandaat ;
mu:uuid ?uuidPenningmeester ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:BestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?penningmeester .
?penningmeester org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Penningmeester 2029-2032")) as ?uuidPenningmeester)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidPenningmeester)) AS ?penningmeester)
}

View File

@@ -0,0 +1,154 @@
# Create mandates for central worship services
## 2029 - 2032
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?expert .
?expert a mandaat:Mandaat ;
mu:uuid ?uuidExpert ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/8c91c321ad477c4fc372ee36358d3ed4> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?expert .
?expert org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/8c91c321ad477c4fc372ee36358d3ed4> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Expert 2029-2032")) as ?uuidExpert)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidExpert)) AS ?expert)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?vertegenwoordiger .
?vertegenwoordiger a mandaat:Mandaat ;
mu:uuid ?uuidVertegenwoordiger ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/6e26e94ea4b127eeb850fb6debe07271> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?vertegenwoordiger .
?vertegenwoordiger org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/6e26e94ea4b127eeb850fb6debe07271> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Vertegenwoordiger 2029-2032")) as ?uuidVertegenwoordiger)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVertegenwoordiger)) AS ?vertegenwoordiger)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?secretaris .
?secretaris a mandaat:Mandaat ;
mu:uuid ?uuidSecretaris ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?secretaris .
?secretaris org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2029-2032")) as ?uuidSecretaris)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter a mandaat:Mandaat ;
mu:uuid ?uuidVoorzitter ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5960262f753661cf84329f3afa9f7df7> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?voorzitter .
?voorzitter org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5960262f753661cf84329f3afa9f7df7> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2029-2032")) as ?uuidVoorzitter)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter)
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?orgaanInTime org:hasPost ?bestuurslid .
?bestuurslid a mandaat:Mandaat ;
mu:uuid ?uuidBestuurslid ;
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/f848fa3cc2c5fb7c581a116866293925> .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?worshipService a ere:CentraalBestuurVanDeEredienst .
?orgaan besluit:bestuurt ?worshipService .
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
mandaat:bindingStart "2029-04-01T00:00:00"^^xsd:dateTime ;
mandaat:bindingEinde "2032-03-31T00:00:00"^^xsd:dateTime .
FILTER NOT EXISTS {
?worshipService regorg:orgStatus <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
}
FILTER NOT EXISTS {
?orgaanInTime org:hasPost ?bestuurslid .
?bestuurslid org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/f848fa3cc2c5fb7c581a116866293925> .
}
}
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Bestuurslid 2029-2032")) as ?uuidBestuurslid)
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslid)) AS ?bestuurslid)
}

View File

@@ -0,0 +1,51 @@
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/betrokkenLokaleBesturen/912bd10fb40c208e9b6e2a20af23fc80> ?p ?o.
}
}
;
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/bestuurseenheden/e971816acb021c37576835e6a96922442628956fd029d885fd849c9f07414469> <http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur> <http://data.lblod.info/id/betrokkenLokaleBesturen/912bd10fb40c208e9b6e2a20af23fc80>.
}
}
;
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/betrokkenLokaleBesturen/4495dfe049edadb53a29379426ab1c50> ?p ?o.
}
}
;
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/bestuurseenheden/d3000e1841d968dd70d4534bf216699d830d146ccc1f88b902b0793caad9daf2> <http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur> <http://data.lblod.info/id/betrokkenLokaleBesturen/4495dfe049edadb53a29379426ab1c50>.
}
}
;
DELETE {
GRAPH ?g {
?localInvolvementSintLaureins <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> ?percentage.
}
}
INSERT {
GRAPH ?g {
?localInvolvementSintLaureins <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> 100.
}
}
WHERE {
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?g)
GRAPH ?g {
?localInvolvementSintLaureins <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> ?percentage.
}
VALUES ?localInvolvementSintLaureins {
<http://data.lblod.info/id/betrokkenLokaleBesturen/479bf2ff79dc2af870f371f5d86b08bc>
}
}

View File

@@ -0,0 +1,39 @@
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
DELETE {
GRAPH <http://mu.semte.ch/application> {
?s ?p ?o
}
} INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?s ?p ?o
}
} WHERE {
GRAPH <http://mu.semte.ch/application> {
VALUES ?s {
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a>
<http://data.lblod.info/id/identificatoren/2aa74846-a99d-423b-8c9e-b2a344b39f2a>
<http://data.lblod.info/id/gestructureerdeIdentificatoren/0edd4e8e-44b6-4e86-8717-cda144f91ebb>
<http://data.lblod.info/id/vestigingen/29faec77-652a-4d8e-afbb-635b141b13f0>
<http://data.lblod.info/id/contact-punten/bc66afca-f8cf-4e4d-b038-500906e9ffa9>
<http://data.lblod.info/id/contact-punten/1d1da2b5-8f38-41b6-a81d-5bfa72e7d7db>
<http://data.lblod.info/id/adressen/2d6c327a-cf81-43a6-8536-17602781fb2f>
}
?s ?p ?o.
}
}
;
INSERT DATA {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a> a dcterms:Agent ;
regorg:legalName "AGB BRUGGE" ;
besluit:werkingsgebied <http://data.lblod.info/id/werkingsgebieden/e1a7aa197d1fa117ad5fdc30dee57cf95974c149ed0f319237bb8fb1355d911e> .
<http://data.lblod.info/id/adressen/2d6c327a-cf81-43a6-8536-17602781fb2f> adres:adresIsGelegenIn <http://data.lblod.info/id/werkingsgebieden/9c503a712d448bc8b89c1f8802c207e30bd192bc8da3bf22509a547949a45301> .
}
}

View File

@@ -0,0 +1 @@
http://mu.semte.ch/graphs/public

View File

@@ -0,0 +1,214 @@
@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 code: <http://lblod.data.gift/vocabularies/organisatie/> .
@prefix conceptscheme: <http://data.vlaanderen.be/id/conceptscheme/> .
@prefix concept: <http://lblod.data.gift/concepts/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
# Concept Scheme for Legal Forms
conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af
rdf:type skos:ConceptScheme ;
mu:uuid "c3ff1a7f-c091-484d-8785-c8a5740573af" ;
skos:prefLabel "Juridische vorm" .
# Legal Form Codes
concept:4a55b679-e4c7-4014-a0b8-3d6762e0225f
rdf:type skos:Concept ;
mu:uuid "4a55b679-e4c7-4014-a0b8-3d6762e0225f" ;
skos:prefLabel "Stad / gemeente" ;
sh:order 1 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:e87b0707-1f9c-4577-8918-023e60974d2f
rdf:type skos:Concept ;
mu:uuid "e87b0707-1f9c-4577-8918-023e60974d2f" ;
skos:prefLabel "Openbaar centrum voor maatschappelijk welzijn" ;
sh:order 2 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:fa7b4356-6e67-4d3a-9256-72922a12227a
rdf:type skos:Concept ;
mu:uuid "fa7b4356-6e67-4d3a-9256-72922a12227a" ;
skos:prefLabel "Provinciale overheid" ;
sh:order 3 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:37e78d58-ab28-4047-8d23-4f2c09707c22
rdf:type skos:Concept ;
mu:uuid "37e78d58-ab28-4047-8d23-4f2c09707c22" ;
skos:prefLabel "Autonoom gemeentebedrijf" ;
sh:order 4 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:5a015434-4917-4124-a8ad-7f80d5300952
rdf:type skos:Concept ;
mu:uuid "5a015434-4917-4124-a8ad-7f80d5300952" ;
skos:prefLabel "Autonoom provinciebedrijf" ;
sh:order 5 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:107b192a-44e4-4d4b-aba7-e41aa6cc7f69
rdf:type skos:Concept ;
mu:uuid "107b192a-44e4-4d4b-aba7-e41aa6cc7f69" ;
skos:prefLabel "Projectvereniging" ;
sh:order 6 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:960f8bb1-ea5d-40d7-bbf4-dbc0794afd26
rdf:type skos:Concept ;
mu:uuid "960f8bb1-ea5d-40d7-bbf4-dbc0794afd26" ;
skos:prefLabel "Dienstverlenende vereniging (Vlaams Gewest)" ;
sh:order 7 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:574a4cfb-7958-463a-9f4c-d9c4b250847c
rdf:type skos:Concept ;
mu:uuid "574a4cfb-7958-463a-9f4c-d9c4b250847c" ;
skos:prefLabel "Opdrachthoudende vereniging (Vlaams Gewest)" ;
sh:order 8 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:c28b64ce-bb6c-4f8f-b03f-51dc09ae6748
rdf:type skos:Concept ;
mu:uuid "c28b64ce-bb6c-4f8f-b03f-51dc09ae6748" ;
skos:prefLabel "Lokale politiezone" ;
sh:order 9 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:75b075c8-1076-4ea3-9bc3-366f6cf866f4
rdf:type skos:Concept ;
mu:uuid "75b075c8-1076-4ea3-9bc3-366f6cf866f4" ;
skos:prefLabel "Hulpverleningszone" ;
sh:order 10 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:dbdd09f3-55b1-48bc-ac51-2c87f951860a
rdf:type skos:Concept ;
mu:uuid "dbdd09f3-55b1-48bc-ac51-2c87f951860a" ;
skos:prefLabel "Vereniging zonder winstoogmerk" ;
sh:order 11 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:925fbdb3-4693-4dcf-b75e-0a98985b1785
rdf:type skos:Concept ;
mu:uuid "925fbdb3-4693-4dcf-b75e-0a98985b1785" ;
skos:prefLabel "Internationale vereniging zonder winstoogmerk" ;
sh:order 12 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:f25de736-bbc3-4e73-b401-5ee0b277f5f8
rdf:type skos:Concept ;
mu:uuid "f25de736-bbc3-4e73-b401-5ee0b277f5f8" ;
skos:prefLabel "Private stichting" ;
sh:order 13 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:9f578b10-255a-4403-ab4c-5d4415c30a0a
rdf:type skos:Concept ;
mu:uuid "9f578b10-255a-4403-ab4c-5d4415c30a0a" ;
skos:prefLabel "Stichting van openbaar nut" ;
sh:order 14 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:30fb3516-fc48-453b-b1f6-a571d149ca3a
rdf:type skos:Concept ;
mu:uuid "30fb3516-fc48-453b-b1f6-a571d149ca3a" ;
skos:prefLabel "Maatschap" ;
sh:order 15 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:7e31d057-fde3-47f3-ad89-3efd9e22ab08
rdf:type skos:Concept ;
mu:uuid "7e31d057-fde3-47f3-ad89-3efd9e22ab08" ;
skos:prefLabel "Vennootschap onder firma" ;
sh:order 16 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:cab6c3f9-aeee-48f0-88eb-c404310870ad
rdf:type skos:Concept ;
mu:uuid "cab6c3f9-aeee-48f0-88eb-c404310870ad" ;
skos:prefLabel "Commanditaire vennootschap" ;
sh:order 17 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:8aa6149a-0916-42ed-a907-f760c0720527
rdf:type skos:Concept ;
mu:uuid "8aa6149a-0916-42ed-a907-f760c0720527" ;
skos:prefLabel "Besloten Vennootschap" ;
sh:order 18 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:e85bdc30-a69f-48f2-bc08-d32b640b1730
rdf:type skos:Concept ;
mu:uuid "e85bdc30-a69f-48f2-bc08-d32b640b1730" ;
skos:prefLabel "Naamloze vennootschap" ;
sh:order 19 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:f35352d5-9454-4561-916a-f5f6459bc92b
rdf:type skos:Concept ;
mu:uuid "f35352d5-9454-4561-916a-f5f6459bc92b" ;
skos:prefLabel "Coöperatieve vennootschap" ;
sh:order 20 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:205d4e7b-d6cc-4534-8336-7fae98dc139e
rdf:type skos:Concept ;
mu:uuid "205d4e7b-d6cc-4534-8336-7fae98dc139e" ;
skos:prefLabel "Organisme voor de Financiering van Pensioenen" ;
sh:order 21 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:b4f2c3d5-8a7e-4f1b-9c2d-3e5f6a7b8c9d
rdf:type skos:Concept ;
mu:uuid "b4f2c3d5-8a7e-4f1b-9c2d-3e5f6a7b8c9d" ;
skos:prefLabel "Autonome verzorgingsinstelling" ;
sh:order 22 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:c7d8e9f0-1a2b-4c5d-6e7f-8a9b0c1d2e3f
rdf:type skos:Concept ;
mu:uuid "c7d8e9f0-1a2b-4c5d-6e7f-8a9b0c1d2e3f" ;
skos:prefLabel "Welzijnsvereniging" ;
sh:order 23 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:d1e2f3a4-5b6c-7d8e-9f0a-1b2c3d4e5f6a
rdf:type skos:Concept ;
mu:uuid "d1e2f3a4-5b6c-7d8e-9f0a-1b2c3d4e5f6a" ;
skos:prefLabel "Geen rechtspersoonlijkheid" ;
sh:order 24 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .
concept:aa2590a0-b6de-4cba-982c-27d70553b17e
rdf:type skos:Concept ;
mu:uuid "aa2590a0-b6de-4cba-982c-27d70553b17e" ;
skos:prefLabel "Andere" ;
sh:order 25 ;
skos:topConceptOf conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af ;
skos:inScheme conceptscheme:c3ff1a7f-c091-484d-8785-c8a5740573af .

View File

@@ -0,0 +1,11 @@
INSERT DATA {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://lblod.data.gift/concepts/8a4f3c2d-9e1b-4f5a-b7c3-6d8e9f0a1b2c>
a <http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis> ;
<http://mu.semte.ch/vocabularies/core/uuid> "8a4f3c2d-9e1b-4f5a-b7c3-6d8e9f0a1b2c" ;
<http://www.w3.org/2004/02/skos/core#prefLabel> "Wijziging juridische vorm" ;
<http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
<http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> ;
<http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> .
}
}

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

@@ -0,0 +1 @@
http://mu.semte.ch/graphs/public

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
http://mu.semte.ch/graphs/public

View File

@@ -0,0 +1,236 @@
@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 code: <http://lblod.data.gift/vocabularies/organisatie/> .
@prefix conceptscheme: <http://data.vlaanderen.be/id/conceptscheme/> .
@prefix concept: <http://lblod.data.gift/concepts/> .
# Concept Scheme for Content Themes (Inhoudelijk Thema)
conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d
rdf:type skos:ConceptScheme ;
mu:uuid "b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d" ;
skos:prefLabel "Inhoudelijk thema" .
concept:54663344-b7c9-497d-aa9e-6c723ba2f1ec
rdf:type skos:Concept ;
mu:uuid "54663344-b7c9-497d-aa9e-6c723ba2f1ec" ;
skos:prefLabel "Afval en/of recyclage" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:0585facf-2194-48a6-b45f-30f629d33b0b
rdf:type skos:Concept ;
mu:uuid "0585facf-2194-48a6-b45f-30f629d33b0b" ;
skos:prefLabel "Crematorium en/of lijkbezorging" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:fab150c6-6956-4f41-8d59-56b4365ec5c9
rdf:type skos:Concept ;
mu:uuid "fab150c6-6956-4f41-8d59-56b4365ec5c9" ;
skos:prefLabel "Dierenwelzijn" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:ba00f1e9-d133-42cb-9dcf-834780ad63e4
rdf:type skos:Concept ;
mu:uuid "ba00f1e9-d133-42cb-9dcf-834780ad63e4" ;
skos:prefLabel "Distributie: elektriciteit, gas, stoom en/of gekoelde lucht" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:4119f9e8-4a50-4ed3-be61-6077b23598ca
rdf:type skos:Concept ;
mu:uuid "4119f9e8-4a50-4ed3-be61-6077b23598ca" ;
skos:prefLabel "Distributie: water" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:b747a46c-85d4-47f4-9085-7ceb15c30b8d
rdf:type skos:Concept ;
mu:uuid "b747a46c-85d4-47f4-9085-7ceb15c30b8d" ;
skos:prefLabel "Diversiteit, inburgering en/of integratie" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:5d8f09bc-8f65-4904-972a-940d5f2ed498
rdf:type skos:Concept ;
mu:uuid "5d8f09bc-8f65-4904-972a-940d5f2ed498" ;
skos:prefLabel "Economie, sociale economie en/of werk" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:a9952a91-7c41-4a5e-a735-082008ed64be
rdf:type skos:Concept ;
mu:uuid "a9952a91-7c41-4a5e-a735-082008ed64be" ;
skos:prefLabel "Erfgoed: cultureel" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:b9a95aa5-6bf6-4c26-b67b-4ac46b600f4d
rdf:type skos:Concept ;
mu:uuid "b9a95aa5-6bf6-4c26-b67b-4ac46b600f4d" ;
skos:prefLabel "Erfgoed: onroerend" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:fb0540e4-9776-41a8-b551-eb738216b79f
rdf:type skos:Concept ;
mu:uuid "fb0540e4-9776-41a8-b551-eb738216b79f" ;
skos:prefLabel "Facilitaire, administratieve en/of ondersteunende diensten" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:1081a013-2db6-4680-a9da-7b5d09698f40
rdf:type skos:Concept ;
mu:uuid "1081a013-2db6-4680-a9da-7b5d09698f40" ;
skos:prefLabel "Financiële activiteiten, financiering en/of verzekeringen" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:d177a63f-442e-4f50-a17f-54f23de9b69d
rdf:type skos:Concept ;
mu:uuid "d177a63f-442e-4f50-a17f-54f23de9b69d" ;
skos:prefLabel "Jeugdhulp en gezinsbeleid" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:0021dbec-fad2-4fc0-af31-b84944f56a09
rdf:type skos:Concept ;
mu:uuid "0021dbec-fad2-4fc0-af31-b84944f56a09" ;
skos:prefLabel "Mobiliteit" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:ddf03efb-81d1-4bb7-8ab8-45dc37aafffa
rdf:type skos:Concept ;
mu:uuid "ddf03efb-81d1-4bb7-8ab8-45dc37aafffa" ;
skos:prefLabel "Natuur, milieu, klimaat, landschap en/of duurzaamheid" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:dfe85927-ef24-48b5-bb6c-99360619ee65
rdf:type skos:Concept ;
mu:uuid "dfe85927-ef24-48b5-bb6c-99360619ee65" ;
skos:prefLabel "Onderwijs en/of vorming" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:04141320-99c5-41c3-ab42-576ab235376d
rdf:type skos:Concept ;
mu:uuid "04141320-99c5-41c3-ab42-576ab235376d" ;
skos:prefLabel "Personeel" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:9edf7528-4a58-4065-afc6-00f60b01cd7b
rdf:type skos:Concept ;
mu:uuid "9edf7528-4a58-4065-afc6-00f60b01cd7b" ;
skos:prefLabel "Riolering, afvalwaterbeheer en/of watersanering" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:50ddf4c7-623e-420b-8016-e953bd76c109
rdf:type skos:Concept ;
mu:uuid "50ddf4c7-623e-420b-8016-e953bd76c109" ;
skos:prefLabel "Ruimtelijke ordening" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:ab2f029e-ee42-452f-bcd7-416f391ef5f2
rdf:type skos:Concept ;
mu:uuid "ab2f029e-ee42-452f-bcd7-416f391ef5f2" ;
skos:prefLabel "Streekontwikkeling" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:e848b2cd-2348-4214-bf08-686ca04a864e
rdf:type skos:Concept ;
mu:uuid "e848b2cd-2348-4214-bf08-686ca04a864e" ;
skos:prefLabel "Telecommunicatie en/of informatica (ICT)" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:0e2c7608-e990-4854-b58a-b3c1b8dc7752
rdf:type skos:Concept ;
mu:uuid "0e2c7608-e990-4854-b58a-b3c1b8dc7752" ;
skos:prefLabel "Veiligheid" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:0230dfa4-d12b-4186-b7b0-4676e387a310
rdf:type skos:Concept ;
mu:uuid "0230dfa4-d12b-4186-b7b0-4676e387a310" ;
skos:prefLabel "Vrijetijdsbeleid: cultuur" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:7ddb59f5-d49b-4797-a7de-f6ababcf4c75
rdf:type skos:Concept ;
mu:uuid "7ddb59f5-d49b-4797-a7de-f6ababcf4c75" ;
skos:prefLabel "Vrijetijdsbeleid: jeugd" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:8044deef-36ad-4383-92e1-ddcea08ef783
rdf:type skos:Concept ;
mu:uuid "8044deef-36ad-4383-92e1-ddcea08ef783" ;
skos:prefLabel "Vrijetijdsbeleid: sport" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:2375ec2b-5c8f-45b8-bec3-82ba925dd6bf
rdf:type skos:Concept ;
mu:uuid "2375ec2b-5c8f-45b8-bec3-82ba925dd6bf" ;
skos:prefLabel "Vrijetijdsbeleid: toerisme" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:ac13b275-7e88-4601-b752-93860b737151
rdf:type skos:Concept ;
mu:uuid "ac13b275-7e88-4601-b752-93860b737151" ;
skos:prefLabel "Welzijn" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:ff690be5-fc55-4378-a504-9d9fabfd4a5f
rdf:type skos:Concept ;
mu:uuid "ff690be5-fc55-4378-a504-9d9fabfd4a5f" ;
skos:prefLabel "Wonen: algemeen wonen" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:9ec2080c-4657-4b9f-86b8-2ff5336b6760
rdf:type skos:Concept ;
mu:uuid "9ec2080c-4657-4b9f-86b8-2ff5336b6760" ;
skos:prefLabel "Wonen: sociaal wonen" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:938e3951-3ac9-4577-8144-1f0d65aa98f8
rdf:type skos:Concept ;
mu:uuid "938e3951-3ac9-4577-8144-1f0d65aa98f8" ;
skos:prefLabel "Zorg: eerstelijnszorg" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:a9d85267-5890-40e8-b764-562c239fbc0c
rdf:type skos:Concept ;
mu:uuid "a9d85267-5890-40e8-b764-562c239fbc0c" ;
skos:prefLabel "Zorg: geestelijke gezondheidszorg" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:14bf90d1-b1ba-43e3-a215-2e0fb66d7503
rdf:type skos:Concept ;
mu:uuid "14bf90d1-b1ba-43e3-a215-2e0fb66d7503" ;
skos:prefLabel "Zorg: woonzorg" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .
concept:1416c735-b31d-4499-86e4-d301ba67ef55
rdf:type skos:Concept ;
mu:uuid "1416c735-b31d-4499-86e4-d301ba67ef55" ;
skos:prefLabel "Zorg: ziekenhuizen (inclusief psychiatrische ziekenhuizen en revalidatieziekenhuizen)" ;
skos:topConceptOf conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d ;
skos:inScheme conceptscheme:b8a2c4d6-e9f1-4a3b-8c5d-7e2f9a1b3c4d .

View File

@@ -0,0 +1,10 @@
INSERT DATA {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://lblod.data.gift/concepts/eeaf623d-9629-4de3-9c37-2dbb132b13d8> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://lblod.data.gift/vocabularies/organisatie/TypeVestiging> .
<http://lblod.data.gift/concepts/eeaf623d-9629-4de3-9c37-2dbb132b13d8> <http://www.w3.org/2004/02/skos/core#prefLabel> "Wijkkantoor" .
<http://lblod.data.gift/concepts/eeaf623d-9629-4de3-9c37-2dbb132b13d8> <http://mu.semte.ch/vocabularies/core/uuid> "eeaf623d-9629-4de3-9c37-2dbb132b13d8" .
<http://lblod.data.gift/concepts/eeaf623d-9629-4de3-9c37-2dbb132b13d8> <http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/f8319ccf40fc2a1697edc5cf7e03018f> .
<http://lblod.data.gift/concepts/eeaf623d-9629-4de3-9c37-2dbb132b13d8> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/f8319ccf40fc2a1697edc5cf7e03018f> .
<http://lblod.data.gift/concepts/eeaf623d-9629-4de3-9c37-2dbb132b13d8> <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,35 @@
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/betrokkenLokaleBesturen/6187e2d787cc954587dd7dce215e96b5> ?p ?o.
}
}
;
DELETE WHERE {
graph <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/bestuurseenheden/73840d393bd94828f0903e8357c7f328d4bf4b8fbd63adbfa443e784f056a589> <http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur> <http://data.lblod.info/id/betrokkenLokaleBesturen/6187e2d787cc954587dd7dce215e96b5>.
}
}
;
DELETE {
GRAPH ?g {
?localInvolvementPajottegem <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> ?percentage.
}
}
INSERT {
GRAPH ?g {
?localInvolvementPajottegem <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> 100.
}
}
WHERE {
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?g)
GRAPH ?g {
?localInvolvementPajottegem <http://data.lblod.info/vocabularies/erediensten/financieringspercentage> ?percentage.
}
VALUES ?localInvolvementPajottegem {
<http://data.lblod.info/id/betrokkenLokaleBesturen/58bfe3f61f5a661383a5db8502994210>
}
}

View File

@@ -0,0 +1,187 @@
import { generateReportFromData, batchedQuery } from "../helpers.js";
import { PREFIXES } from "./utils";
export default {
cronPattern: "0 00 1 * * *",
name: "administrativeUnits",
execute: async () => {
const reportData = {
title: "administrative units",
description: "List of the administrative units",
filePrefix: "exports/administrative-units",
};
console.log("Generating administrative units report");
const queryString = `
${PREFIXES}
SELECT DISTINCT
?Bestuurseenheid
?Classificatie
?Status
?KBO_nr
?OVO_nr
?Sharepoint_id
?NIS_code
?Regio
?Provincie
?Straat
?Huisnummer
?Busnummer
?Postcode
?Gemeente
(STR(?GrensoverschrijdendBoolean) AS ?Grensoverschrijdend)
?TypeEredienst
?BestuurseenheidURI
?Stekking
{
VALUES ?type {
besluit:Bestuurseenheid
ere:BestuurVanDeEredienst
org:Organization
ere:EredienstBestuurseenheid
ere:CentraalBestuurVanDeEredienst
}
?BestuurseenheidURI
a ?type.
OPTIONAL { ?BestuurseenheidURI skos:prefLabel ?Bestuurseenheid . }
OPTIONAL { ?BestuurseenheidURI org:classification/skos:prefLabel ?Classificatie. }
OPTIONAL {
?BestuurseenheidURI besluit:werkingsgebied ?werkingsgebiedURI.
?werkingsgebiedURI rdfs:label ?werkingsgebied.
OPTIONAL {
?werkingsgebiedURI geo:sfWithin ?regionURI.
?regionURI
ext:werkingsgebiedNiveau "Referentieregio"@nl;
rdfs:label ?langRegio.
}
OPTIONAL {
?werkingsgebiedURI skos:exactMatch ?nisArea.
?nisArea skos:inScheme ?NISCodeScheme;
skos:notation ?NIS_code.
FILTER (?NISCodeScheme IN ( <http://vocab.belgif.be/auth/refnis2019>, <http://vocab.belgif.be/auth/refnis2025>))
}
}
OPTIONAL {
?BestuurseenheidURI org:hasPrimarySite/organisatie:bestaatUit ?address .
?address adres:gemeentenaam ?Gemeente .
?municipalityRegio a besluit:Bestuurseenheid ;
skos:prefLabel ?Gemeente ;
org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> ;
besluit:werkingsgebied ?werkingsgebiedRegioURI.
?werkingsgebiedRegioURI geo:sfWithin ?regioViaAddressURI.
?regioViaAddressURI
ext:werkingsgebiedNiveau "Referentieregio"@nl;
rdfs:label ?langRegioViaAddress.
}
BIND(IF(BOUND(?langRegio) && strlen(?langRegio)>0, str(?langRegio), str(?langRegioViaAddress)) AS ?Regio)
OPTIONAL { ?BestuurseenheidURI regorg:orgStatus/skos:prefLabel ?Status. }
OPTIONAL { ?BestuurseenheidURI ere:typeEredienst ?typeEredienstUri.
OPTIONAL { ?typeEredienstUri skos:prefLabel ?TypeEredienst. }
}
OPTIONAL { ?BestuurseenheidURI ere:grensoverschrijdend ?GrensoverschrijdendBoolean. }
OPTIONAL { ?BestuurseenheidURI org:hasPrimarySite/organisatie:bestaatUit ?address .
OPTIONAL { ?address locn:thoroughfare ?Straat }
OPTIONAL { ?address adres:Adresvoorstelling.huisnummer ?Huisnummer . }
OPTIONAL { ?address adres:Adresvoorstelling.busnummer ?Busnummer . }
OPTIONAL { ?address locn:postCode ?Postcode . }
OPTIONAL { ?address adres:gemeentenaam ?Gemeente . }
OPTIONAL { ?address locn:adminUnitL2 ?Provincie . }
OPTIONAL { ?address adres:land ?Land . }
}
OPTIONAL {
?BestuurseenheidURI adms:identifier ?kbo_identifier .
?kbo_identifier
skos:notation ?kbo_notation;
generiek:gestructureerdeIdentificator/generiek:lokaleIdentificator ?KBO_nr.
FILTER (str(?kbo_notation) = "KBO nummer")
}
OPTIONAL {
?BestuurseenheidURI adms:identifier ?ovo_identifier .
?ovo_identifier
skos:notation ?ovo_notation;
generiek:gestructureerdeIdentificator/generiek:lokaleIdentificator ?OVO_nr.
FILTER (str(?ovo_notation) = "OVO-nummer")
}
OPTIONAL {
?BestuurseenheidURI adms:identifier ?sp_identifier .
?sp_identifier
skos:notation ?sp_notation;
generiek:gestructureerdeIdentificator/generiek:lokaleIdentificator ?Sharepoint_id.
FILTER (str(?sp_notation) = "SharePoint identificator")
}
OPTIONAL {
?changeEvent org:resultingOrganization ?BestuurseenheidURI;
ch:typeWijziging <http://lblod.data.gift/concepts/e4c3d1ef-a34d-43b0-a18c-f4e60e2c8af3>.
<http://lblod.data.gift/concepts/e4c3d1ef-a34d-43b0-a18c-f4e60e2c8af3> skos:prefLabel ?stadsTitel
}
OPTIONAL { ?BestuurseenheidURI ere:denominatie ?Stekking. }
} ORDER BY DESC(?Classificatie) ?Bestuurseenheid
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
Bestuurseenheid: getSafeValue(row, "Bestuurseenheid"),
Classificatie: getSafeValue(row, "Classificatie"),
Status: getSafeValue(row, "Status"),
KBO_nr: getSafeValue(row, "KBO_nr"),
OVO_nr: getSafeValue(row, "OVO_nr"),
Sharepoint_id: getSafeValue(row, "Sharepoint_id"),
NIS_code: getSafeValue(row, "NIS_code"),
Regio: getSafeValue(row, "Regio"),
Provincie: getSafeValue(row, "Provincie"),
Straat: getSafeValue(row, "Straat"),
Huisnummer: getSafeValue(row, "Huisnummer"),
Busnummer: getSafeValue(row, "Busnummer"),
Postcode: getSafeValue(row, "Postcode"),
Gemeente: getSafeValue(row, "Gemeente"),
Grensoverschrijdend: getSafeValue(row, "Grensoverschrijdend"),
TypeEredienst: getSafeValue(row, "TypeEredienst"),
BestuurseenheidURI: getSafeValue(row, "BestuurseenheidURI"),
Stekking: getSafeValue(row, "Stekking"),
}));
await generateReportFromData(
data,
[
"Bestuurseenheid",
"Classificatie",
"Status",
"KBO_nr",
"OVO_nr",
"Sharepoint_id",
"NIS_code",
"Regio",
"Provincie",
"Straat",
"Huisnummer",
"Busnummer",
"Postcode",
"Gemeente",
"Grensoverschrijdend",
"TypeEredienst",
"BestuurseenheidURI",
"Stekking",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -0,0 +1,135 @@
import {generateReportFromData, batchedQuery} from "../helpers.js";
import {PREFIXES} from "./utils";
export default {
cronPattern: "0 00 3 * * *",
name: "changeEvents",
execute: async () => {
const reportData = {
title: "change events",
description:
"List of change events",
filePrefix: "exports/change-events",
};
console.log("Generating change events report");
const queryString = `
${PREFIXES}
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX regorg: <http://www.w3.org/ns/regorg#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX m8g: <http://data.europa.eu/m8g/>
PREFIX eli: <http://data.europa.eu/eli/ontology#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX dossier: <https://data.vlaanderen.be/ns/dossier#>
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
SELECT DISTINCT
?organisatie
?organisatieLabel
?classificatieLabel
?statusLabel
?resulterendeOrganisatie
?resulterendeOrganisatieLabel
?resulterendeClassificatieLabel
?resulterendeStatusLabel
?veranderingsgebeurtenisTypeLabel
?beschrijving
?linkNaarBesluit
?datumMinisterieelBesluit
?datumPublicatieBS
?datumVeranderingsgebeurtenis
WHERE {
{
SELECT DISTINCT ?organisatie ?organisatieLabel ?veranderingsgebeurtenis
WHERE {
?organisatie a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
skos:prefLabel ?organisatieLabel .
?veranderingsgebeurtenis a org:ChangeEvent ;
org:originalOrganization ?organisatie .
}
}
OPTIONAL { ?organisatie org:classification/skos:prefLabel ?classificatieLabel . }
OPTIONAL { ?organisatie regorg:orgStatus/skos:prefLabel ?statusLabel . }
OPTIONAL {
?veranderingsgebeurtenis org:resultingOrganization ?resulterendeOrganisatie .
OPTIONAL { ?resulterendeOrganisatie skos:prefLabel ?resulterendeOrganisatieLabel . }
OPTIONAL { ?resulterendeOrganisatie org:classification/skos:prefLabel ?resulterendeClassificatieLabel . }
OPTIONAL { ?resulterendeOrganisatie regorg:orgStatus/skos:prefLabel ?resulterendeStatusLabel . }
}
OPTIONAL { ?veranderingsgebeurtenis ch:typeWijziging/skos:prefLabel ?veranderingsgebeurtenisTypeLabel . }
OPTIONAL { ?veranderingsgebeurtenis dct:description ?beschrijving . }
OPTIONAL { ?veranderingsgebeurtenis dct:date ?datumVeranderingsgebeurtenis . }
OPTIONAL {
?veranderingsgebeurtenis m8g:hasFormalFramework ?besluit .
OPTIONAL { ?besluit foaf:page ?linkNaarBesluit . }
OPTIONAL { ?besluit eli:date_publication ?datumPublicatieBS . }
OPTIONAL {
?beslissingsactiviteit prov:generated ?besluit ;
dossier:Activiteit.einddatum ?datumMinisterieelBesluit .
}
}
}
ORDER BY ?organisatieLabel ?datumVeranderingsgebeurtenis
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
organisatie: getSafeValue(row, "organisatie"),
organisatieLabel: getSafeValue(row, "organisatieLabel"),
classificatieLabel: getSafeValue(row, "classificatieLabel"),
statusLabel: getSafeValue(row, "statusLabel"),
resulterendeOrganisatie: getSafeValue(row, "resulterendeOrganisatie"),
resulterendeOrganisatieLabel: getSafeValue(row, "resulterendeOrganisatieLabel"),
resulterendeClassificatieLabel: getSafeValue(row, "resulterendeClassificatieLabel"),
resulterendeStatusLabel: getSafeValue(row, "resulterendeStatusLabel"),
veranderingsgebeurtenisTypeLabel: getSafeValue(row, "veranderingsgebeurtenisTypeLabel"),
beschrijving: getSafeValue(row, "beschrijving"),
linkNaarBesluit: getSafeValue(row, "linkNaarBesluit"),
datumMinisterieelBesluit: getSafeValue(row, "datumMinisterieelBesluit"),
datumPublicatieBS: getSafeValue(row, "datumPublicatieBS"),
datumVeranderingsgebeurtenis: getSafeValue(row, "datumVeranderingsgebeurtenis"),
}));
await generateReportFromData(
data,
[
"organisatie",
"organisatieLabel",
"classificatieLabel",
"statusLabel",
"resulterendeOrganisatie",
"resulterendeOrganisatieLabel",
"resulterendeClassificatieLabel",
"resulterendeStatusLabel",
"veranderingsgebeurtenisTypeLabel",
"beschrijving",
"linkNaarBesluit",
"datumMinisterieelBesluit",
"datumPublicatieBS",
"datumVeranderingsgebeurtenis",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -1,7 +1,21 @@
import OrganizationsReport from './organizations-report'
import RelatedOrganizationsReport from './related-organizations-report'
import KboOrganizationsReport from './kbo-organizations-report'
import OrganizationsDetailReport from './organizations-detail-report'
import OrganizationsPlatformReport from './organizations-platform-report'
import AdministrativeUnitsReport from "./administrative-units-report";
import ChangeEventsReport from "./change-events-report";
import OrganizationsNoAddressReport from "./organizations-no-address-report";
import OrganizationsInFrontendReport from "./organizations-in-frontend-report";
export default [
OrganizationsReport,
RelatedOrganizationsReport,
KboOrganizationsReport,
OrganizationsDetailReport,
OrganizationsPlatformReport,
AdministrativeUnitsReport,
ChangeEventsReport,
OrganizationsNoAddressReport,
OrganizationsInFrontendReport,
];

View File

@@ -0,0 +1,108 @@
import { generateReportFromData, batchedQuery } from "../helpers.js";
import { PREFIXES } from "./utils";
export default {
cronPattern: "0 00 4 * * *",
name: "kboOrganizations",
execute: async () => {
const reportData = {
title: "kbo organizations",
description: "List of KBO Organizations with contact information",
filePrefix: "exports/kbo-organizations",
};
console.log("Generating KBO organizations report");
const queryString = `
${PREFIXES}
SELECT DISTINCT
?org
?org_legal_name
?org_classification_label
?org_status_label
?org_kbo_number
?org_contact_point
?org_full_address
?org_email
?org_telephone
?website
WHERE {
?org <http://purl.org/dc/terms/source> <https://economie.fgov.be/> .
?org a <http://mu.semte.ch/vocabularies/ext/KboOrganisatie> .
OPTIONAL { ?org regorg:legalName ?org_legal_name . }
OPTIONAL {
?org <http://mu.semte.ch/vocabularies/ext/rechtsvorm> ?org_classification_label .
}
OPTIONAL {
?org regorg:orgStatus ?org_status .
?org_status skos:prefLabel ?org_status_label .
}
OPTIONAL {
?org adms:identifier ?identifier .
?identifier skos:notation "KBO nummer" ;
generiek:gestructureerdeIdentificator ?id1 .
?id1 generiek:lokaleIdentificator ?org_kbo_number .
}
OPTIONAL {
?org schema:contactPoint ?org_contact_point .
OPTIONAL {
?org_contact_point locn:address ?org_address .
?org_address locn:fullAddress ?org_full_address .
}
OPTIONAL { ?org_contact_point schema:email ?org_email . }
OPTIONAL { ?org_contact_point schema:telephone ?org_telephone . }
OPTIONAL { ?org_contact_point foaf:page ?website . }
}
}
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
org: getSafeValue(row, "org"),
org_legal_name: getSafeValue(row, "org_legal_name"),
org_classification_label: getSafeValue(row, "org_classification_label"),
org_status_label: getSafeValue(row, "org_status_label"),
org_kbo_number: getSafeValue(row, "org_kbo_number"),
org_contact_point: getSafeValue(row, "org_contact_point"),
org_full_address: getSafeValue(row, "org_full_address"),
org_email: getSafeValue(row, "org_email"),
org_telephone: getSafeValue(row, "org_telephone"),
website: getSafeValue(row, "website"),
}));
await generateReportFromData(
data,
[
"org",
"org_legal_name",
"org_classification_label",
"org_status_label",
"org_kbo_number",
"org_contact_point",
"org_full_address",
"org_email",
"org_telephone",
"website",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -0,0 +1,147 @@
import { generateReportFromData, batchedQuery } from "../helpers.js";
import { PREFIXES } from "./utils";
export default {
cronPattern: "0 00 4 * * *",
name: "organizationsDetail",
execute: async () => {
const reportData = {
title: "organizations detail",
description:
"List of Organizations with address and contact information",
filePrefix: "exports/organizations-detail",
};
console.log("Generating organizations detail report");
const queryString = `
${PREFIXES}
SELECT DISTINCT ?org
?org_pref_label ?org_classification_label ?org_status_label ?org_kbo_number
?primary_email
?website
?primary_telephone
?secondary_telephone
?full_address
?land
?gemeente
?straat
?huisnummer
?busnummer
?postcode
?province
WHERE {
?org a org:Organization .
OPTIONAL { ?org regorg:legalName ?org_legal_name . }
OPTIONAL { ?org skos:prefLabel ?org_pref_label . }
OPTIONAL {
?org org:classification ?org_classification .
?org_classification skos:prefLabel ?org_classification_label .
}
OPTIONAL {
?org regorg:orgStatus ?org_status .
?org_status skos:prefLabel ?org_status_label .
}
OPTIONAL {
?org adms:identifier ?identifier .
?identifier skos:notation "KBO nummer" ;
generiek:gestructureerdeIdentificator ?id1 .
?id1 generiek:lokaleIdentificator ?org_kbo_number .
}
OPTIONAL {
?org org:hasPrimarySite ?org_site .
?org_site organisatie:bestaatUit ?org_address .
?org_site org:siteAddress ?org_contact_point .
OPTIONAL {
?org_contact_point schema:email ?primary_email .
?org_contact_point schema:contactType "Primary" .
}
OPTIONAL {
?org_contact_point schema:telephone ?primary_telephone .
?org_contact_point schema:contactType "Primary" .
}
OPTIONAL {
?org_contact_point schema:telephone ?secondary_telephone .
?org_contact_point schema:contactType "Secondary" .
}
OPTIONAL {
?org_contact_point foaf:page ?website .
?org_contact_point schema:contactType "Primary" .
}
OPTIONAL { ?org_contact_point schema:contactType ?contact_type . }
OPTIONAL { ?org_address locn:fullAddress ?full_address . }
OPTIONAL { ?org_address adres:land ?land . }
OPTIONAL { ?org_address adres:gemeentenaam ?gemeente . }
OPTIONAL { ?org_address locn:thoroughfare ?straat . }
OPTIONAL { ?org_address adres:Adresvoorstelling.huisnummer ?huisnummer . }
OPTIONAL { ?org_address adres:Adresvoorstelling.busnummer ?busnummer . }
OPTIONAL { ?org_address locn:postCode ?postcode . }
OPTIONAL { ?org_address locn:adminUnitL2 ?province . }
}
}
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
org: getSafeValue(row, "org"),
org_pref_label: getSafeValue(row, "org_pref_label"),
org_classification_label: getSafeValue(row, "org_classification_label"),
org_status_label: getSafeValue(row, "org_status_label"),
org_kbo_number: getSafeValue(row, "org_kbo_number"),
primary_email: getSafeValue(row, "primary_email"),
website: getSafeValue(row, "website"),
primary_telephone: getSafeValue(row, "primary_telephone"),
secondary_telephone: getSafeValue(row, "secondary_telephone"),
full_address: getSafeValue(row, "full_address"),
land: getSafeValue(row, "land"),
gemeente: getSafeValue(row, "gemeente"),
straat: getSafeValue(row, "straat"),
huisnummer: getSafeValue(row, "huisnummer"),
busnummer: getSafeValue(row, "busnummer"),
postcode: getSafeValue(row, "postcode"),
province: getSafeValue(row, "province"),
}));
await generateReportFromData(
data,
[
"org",
"org_pref_label",
"org_classification_label",
"org_status_label",
"org_kbo_number",
"primary_email",
"website",
"primary_telephone",
"secondary_telephone",
"full_address",
"land",
"gemeente",
"straat",
"huisnummer",
"busnummer",
"postcode",
"province",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -0,0 +1,102 @@
import { generateReportFromData, batchedQuery } from "../helpers.js";
import { PREFIXES } from "./utils";
export default {
cronPattern: "0 00 23 * * *",
name: "organizationsInFrontend",
execute: async () => {
const reportData = {
title: "organisations in frontend",
description: "List of the Organisations shown in the frontend",
filePrefix: "exports/organizations-in-frontend",
};
console.log("Generating organizations in frontend report");
const queryString = `
${PREFIXES}
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX adms: <http://www.w3.org/ns/adms#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX geosparql: <http://www.opengis.net/ont/geosparql#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT DISTINCT
?bestuur
?label
?classification
?typeEredienst
?provincie
?status
WHERE {
?bestuur a org:Organization .
OPTIONAL {
?bestuur <http://www.w3.org/ns/org#hasPrimarySite> ?site.
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?address.
?address <http://www.w3.org/ns/locn#adminUnitL2> ?provincie.
}
OPTIONAL {?bestuur <http://data.lblod.info/vocabularies/erediensten/typeEredienst> ?typeEredienst.}
OPTIONAL {?bestuur skos:prefLabel ?label}
OPTIONAL {
?bestuur <http://www.w3.org/ns/org#classification> ?org_classification .
?org_classification skos:prefLabel ?classification.
}
OPTIONAL {
?bestuur <http://www.w3.org/ns/regorg#orgStatus> ?org_status.
?org_status skos:prefLabel ?status.
}
FILTER(
NOT EXISTS {
?bestuur org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>.
}
||
EXISTS {
?bestuur besluit:werkingsgebied ?werkingsgebied .
?werkingsgebied geosparql:sfWithin ?parent .
}
)
FILTER(
NOT EXISTS {
?bestuur org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/52cc9d8d-1c9a-4d92-9936-da9d4a622ec4>.
}
)
}
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
bestuur: getSafeValue(row, "bestuur"),
label: getSafeValue(row, "label"),
classification: getSafeValue(row, "classification"),
typeEredienst: getSafeValue(row, "typeEredienst"),
provincie: getSafeValue(row, "provincie"),
status: getSafeValue(row, "status"),
}));
await generateReportFromData(
data,
[
"bestuur",
"label",
"classification",
"typeEredienst",
"provincie",
"status",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -0,0 +1,98 @@
import { generateReportFromData, batchedQuery } from "../helpers.js";
import { PREFIXES } from "./utils";
export default {
cronPattern: "0 00 23 * * *",
name: "organizationsNoAddressregister",
execute: async () => {
const reportData = {
title: "missing address URI's",
description: "List of Organizations with addresses that have no address URI",
filePrefix: "exports/organizations-no-addressregister",
};
console.log("Generating organizations no addressregister report");
const queryString = `
${PREFIXES}
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX adms: <http://www.w3.org/ns/adms#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT
?bestuur
?label
?classification
?status
?street
?number
?bus
?postal
?location
WHERE {
?bestuur a org:Organization .
OPTIONAL {
?bestuur <http://www.w3.org/ns/org#hasPrimarySite> ?site .
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?address .
OPTIONAL{?address <https://data.vlaanderen.be/ns/adres#verwijstNaar> ?adressenregister .}
OPTIONAL{?address <http://www.w3.org/ns/locn#thoroughfare> ?street . }
OPTIONAL{?address <https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer> ?number . }
OPTIONAL{?address <https://data.vlaanderen.be/ns/adres#Adresvoorstelling.busnummer> ?bus . }
OPTIONAL{?address <http://www.w3.org/ns/locn#postCode> ?postal . }
OPTIONAL{?address <https://data.vlaanderen.be/ns/adres#gemeentenaam> ?location . }
}
OPTIONAL {?bestuur skos:prefLabel ?label}
OPTIONAL {
?bestuur <http://www.w3.org/ns/org#classification> ?org_classification .
?org_classification skos:prefLabel ?classification .
}
OPTIONAL {
?bestuur <http://www.w3.org/ns/regorg#orgStatus> ?org_status .
?org_status skos:prefLabel ?status .
}
FILTER(!BOUND(?adressenregister))
}
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
bestuur: getSafeValue(row, "bestuur"),
label: getSafeValue(row, "label"),
classification: getSafeValue(row, "classification"),
status: getSafeValue(row, "status"),
street: getSafeValue(row, "street"),
number: getSafeValue(row, "number"),
bus: getSafeValue(row, "bus"),
postal: getSafeValue(row, "postal"),
location: getSafeValue(row, "location"),
}));
await generateReportFromData(
data,
[
"bestuur",
"label",
"classification",
"status",
"street",
"number",
"bus",
"postal",
"location",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -0,0 +1,123 @@
import { generateReportFromData, batchedQuery } from "../helpers.js";
import { PREFIXES } from "./utils";
export default {
cronPattern: "0 00 2 * * *",
name: "organizationsPlatform",
execute: async () => {
const reportData = {
title: "organizations platform",
description: "List of Organizations with digital platform information",
filePrefix: "exports/organizations-platform",
};
console.log("Generating organizations platform report");
const queryString = `
${PREFIXES}
PREFIX muAccount: <http://mu.semte.ch/vocabularies/account/>
SELECT
?org
?org_pref_label
?org_classification_label
?org_status_label
?org_legal_name
?org_alt_label
?org_werkingsgebied_label
?org_ovo_number
?org_kbo_number
(COALESCE(?platforms, "Loket voor Lokale Besturen") AS ?org_digitaal_platform)
WHERE {
?org a org:Organization .
OPTIONAL { ?org skos:prefLabel ?org_pref_label }
OPTIONAL { ?org skos:altLabel ?org_alt_label }
OPTIONAL {
?org regorg:legalName ?org_legal_name .
}
OPTIONAL {
?org org:classification ?org_classification .
?org_classification skos:prefLabel ?org_classification_label .
}
OPTIONAL {
?org regorg:orgStatus ?org_status .
?org_status skos:prefLabel ?org_status_label .
}
OPTIONAL {
?org besluit:werkingsgebied ?org_werkingsgebied .
?org_werkingsgebied rdfs:label ?org_werkingsgebied_label .
}
OPTIONAL {
?org adms:identifier ?identifier1 .
?identifier1 skos:notation "KBO nummer" ;
generiek:gestructureerdeIdentificator ?id1 .
?id1 generiek:lokaleIdentificator ?org_kbo_number .
}
OPTIONAL {
?org adms:identifier ?identifier2 .
?identifier2 skos:notation "OVO-nummer" ;
generiek:gestructureerdeIdentificator ?id2 .
?id2 generiek:lokaleIdentificator ?org_ovo_number .
}
OPTIONAL {
SELECT ?org (GROUP_CONCAT(DISTINCT ?digitaal_platform; separator=", ") AS ?platforms)
WHERE {
?vendor a ext:Vendor ;
muAccount:canActOnBehalfOf ?org ;
foaf:name ?digitaal_platform .
}
GROUP BY ?org
}
}
`;
const queryResponse = await batchedQuery(queryString);
const data = queryResponse.results.bindings.map((row) => ({
"URI organisatie": getSafeValue(row, "org"),
"label naam": getSafeValue(row, "org_pref_label"),
"label classificatie": getSafeValue(row, "org_classification_label"),
"label status": getSafeValue(row, "org_status_label"),
"label juridische naam": getSafeValue(row, "org_legal_name"),
"label alternatieve naam": getSafeValue(row, "org_alt_label"),
"label werkingsgebied": getSafeValue(row, "org_werkingsgebied_label"),
"label OVO nummer": getSafeValue(row, "org_ovo_number"),
"label KBO nummer": getSafeValue(row, "org_kbo_number"),
"label digitaal platform": getSafeValue(row, "org_digitaal_platform"),
}));
await generateReportFromData(
data,
[
"URI organisatie",
"label naam",
"label classificatie",
"label status",
"label juridische naam",
"label alternatieve naam",
"label werkingsgebied",
"label OVO nummer",
"label KBO nummer",
"label digitaal platform",
],
reportData,
);
},
};
function getSafeValue(entry, property) {
return entry[property] ? wrapInQuote(entry[property].value) : null;
}
// Some values might contain commas; wrapping them in escapes quotes doesn't disrupt the columns.
function wrapInQuote(value) {
return `\"${value}\"`;
}

View File

@@ -6,93 +6,68 @@ export default {
name: "organizations",
execute: async () => {
const reportData = {
title: "organizations",
description: "List of the Organizations",
title: "organisations in database",
description: "List of the Organisations in the database",
filePrefix: "exports/organizations",
};
console.log("Generating organizations report");
const queryStringPart1 = `
const queryString = `
${PREFIXES}
SELECT DISTINCT ?bestuur ?label ?classification ?typeEredienst
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX adms: <http://www.w3.org/ns/adms#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT
?bestuur
?label
?classification
?typeEredienst
?provincie
?status
WHERE {
GRAPH ?g {
?bestuur a org:Organization .
OPTIONAL { ?bestuur skos:prefLabel ?label. }
}
OPTIONAL {
?bestuur org:classification ?classificationUri .
?classificationUri skos:prefLabel ?classification.
}
OPTIONAL {
?bestuur ere:typeEredienst ?typeEredienstUri.
?typeEredienstUri skos:prefLabel ?typeEredienst.
}
FILTER (?g IN ( <http://mu.semte.ch/graphs/administrative-unit>, <http://mu.semte.ch/graphs/worship-service>, <http://mu.semte.ch/graphs/shared>))
}
`;
const queryResponsePart1 = await batchedQuery(queryStringPart1);
const dataPart1 = queryResponsePart1.results.bindings.reduce((acc, row) => {
acc[getSafeValue(row, "bestuur")] = {
bestuur: getSafeValue(row, "bestuur"),
label: getSafeValue(row, "label"),
classification: getSafeValue(row, "classification"),
typeEredienst: getSafeValue(row, "typeEredienst"),
};
return acc;
}, {});
const queryStringPart2 = `
${PREFIXES}
SELECT DISTINCT ?bestuur ?provincie
WHERE {
GRAPH ?g {
?bestuur a org:Organization .
}
OPTIONAL {
GRAPH ?h {
?bestuur org:hasPrimarySite ?primarySite.
?bestuur a org:Organization .
OPTIONAL {
?primarySite organisatie:bestaatUit ?sa.
OPTIONAL { ?sa locn:adminUnitL2 ?provincie. }
?bestuur <http://www.w3.org/ns/org#hasPrimarySite> ?site.
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?address.
?address <http://www.w3.org/ns/locn#adminUnitL2> ?provincie
}
}
FILTER (?h IN ( <http://mu.semte.ch/graphs/administrative-unit>, <http://mu.semte.ch/graphs/worship-service> ))
}
FILTER (?g IN ( <http://mu.semte.ch/graphs/administrative-unit>, <http://mu.semte.ch/graphs/worship-service>, <http://mu.semte.ch/graphs/shared>))
OPTIONAL {?bestuur <http://data.lblod.info/vocabularies/erediensten/typeEredienst> ?typeEredienst.}
OPTIONAL {?bestuur skos:prefLabel ?label}
OPTIONAL {
?bestuur <http://www.w3.org/ns/org#classification> ?org_classification .
?org_classification skos:prefLabel ?classification
}
OPTIONAL {
?bestuur <http://www.w3.org/ns/regorg#orgStatus> ?org_status.
?org_status skos:prefLabel ?status.
}
}
`;
const queryResponsePart2 = await batchedQuery(queryStringPart2);
const dataPart2 = queryResponsePart2.results.bindings.reduce((acc, row) => {
let dataPart = {
bestuur: getSafeValue(row, "bestuur"),
provincie: getSafeValue(row, "provincie"),
};
const queryResponse = await batchedQuery(queryString);
acc[getSafeValue(row, "bestuur")] = Object.assign(
dataPart,
dataPart1[getSafeValue(row, "bestuur")],
);
return acc;
}, {});
const data = queryResponse.results.bindings.map((row) => ({
"bestuur": getSafeValue(row, "bestuur"),
"label": getSafeValue(row, "label"),
"classification": getSafeValue(row, "classification"),
"typeEredienst": getSafeValue(row, "typeEredienst"),
"provincie": getSafeValue(row, "provincie"),
"status": getSafeValue(row, "status"),
}));
await generateReportFromData(
Object.values(dataPart2),
["bestuur", "label", "classification", "typeEredienst", "provincie"],
reportData,
data,
[
"bestuur",
"label",
"classification",
"typeEredienst",
"provincie",
"status",
],
reportData,
);
},
};

View File

@@ -26,4 +26,5 @@ export const PREFIXES = `
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
`;

View File

@@ -67,6 +67,11 @@
"target": "organization-status-codes",
"cardinality": "one"
},
"resulting-legal-form": {
"predicate": "code:resulterendeRechtsvorm",
"target": "concepts",
"cardinality": "one"
},
"result-from": {
"predicate": "code:veranderingsgebeurtenisResultaat",
"target": "change-events",

View File

@@ -31,7 +31,8 @@
"geo": "http://www.opengis.net/ont/geosparql#",
"nacebel": "http://data.gift/vocabularies/nace-bel/",
"time": "http://www.w3.org/2006/time#",
"muAccount": "http://mu.semte.ch/vocabularies/account/"
"muAccount": "http://mu.semte.ch/vocabularies/account/",
"sh": "http://www.w3.org/ns/shacl#"
},
"resources": {
"agents": {
@@ -404,6 +405,16 @@
"target": "organization-classification-codes",
"cardinality": "one"
},
"legal-form": {
"predicate": "organisatie:rechtsvorm",
"target": "concepts",
"cardinality": "one"
},
"content-themes": {
"predicate": "code:inhoudelijkThema",
"target": "concepts",
"cardinality": "many"
},
"identifiers": {
"predicate": "adms:identifier",
"target": "identifiers",
@@ -938,10 +949,32 @@
"alt-label": {
"type": "string",
"predicate": "skos:altLabel"
},
"order": {
"type": "number",
"predicate": "sh:order"
}
},
"relationships": {
"in-scheme": {
"predicate": "skos:inScheme",
"target": "concept-schemes",
"cardinality": "one"
}
},
"new-resource-base": "http://lblod.data.gift/concepts/"
},
"concept-schemes": {
"class": "skos:ConceptScheme",
"attributes": {
"label": {
"type": "string",
"predicate": "skos:prefLabel"
}
},
"features": ["include-uri"],
"new-resource-base": "http://data.vlaanderen.be/id/conceptscheme/"
},
"organization-status-codes": {
"class": "code:OrganisatieStatusCode",
"attributes": {

View File

@@ -693,6 +693,10 @@
"http://www.w3.org/ns/adms#identifier",
"https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator",
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
],
"operation_area": [
"http://data.vlaanderen.be/ns/besluit#werkingsgebied",
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
"mappings": {
@@ -795,6 +799,15 @@
"normalizer": "identifier_normalizer"
}
}
},
"operation_area": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
}
}
}

View File

@@ -97,6 +97,8 @@ services:
BASE_URL: "http://localhost/ldes/"
kbo-data-sync:
restart: "no"
link-adressenregister-uri:
restart: "no"
error-alert:
environment:
EMAIL_FROM: 'test@example.com'

View File

@@ -33,8 +33,9 @@ services:
restart: always
logging: *default-logging
db:
image: semtech/mu-authorization:feature-service-roam-r1.1
image: semtech/sparql-parser:0.0.15
environment:
LISP_DYNAMIC_SPACE_SIZE: 8192
MU_SPARQL_ENDPOINT: "http://triplestore:8890/sparql"
LOG_OUTGOING_SPARQL_QUERIES: "true"
LOG_INCOMING_SPARQL_QUERIES: "true"
@@ -45,6 +46,7 @@ services:
QUERY_MAX_EXECUTION_TIME: "300000"
volumes:
- ./config/authorization:/config
- ./data/authorization:/data
labels:
- "logging=true"
restart: always
@@ -89,9 +91,10 @@ services:
restart: always
logging: *default-logging
resource:
image: semtech/mu-cl-resources:1.24.0
image: semtech/mu-cl-resources:1.27.2
environment:
CACHE_CLEAR_PATH: "http://cache/.mu/clear-keys"
LISP_DYNAMIC_SPACE_SIZE: "8192" # 1GB by default, increase to 8GB on systems with a lot of data
links:
- db:database
volumes:
@@ -140,7 +143,7 @@ services:
restart: always
logging: *default-logging
login:
image: lblod/acmidm-login-service:0.12.0
image: lblod/acmidm-login-service:0.12.1.rc-2
environment:
MU_APPLICATION_AUTH_USERID_CLAIM: "vo_id"
MU_APPLICATION_GRAPH: "http://mu.semte.ch/graphs/contacthub/accounts"
@@ -156,7 +159,7 @@ services:
links:
- db:database
login-dashboard:
image: lblod/acmidm-login-service:0.12.0
image: lblod/acmidm-login-service:0.12.1.rc-2
environment:
LOG_SINK_URL: "http://sink"
MU_APPLICATION_AUTH_ROLE_CLAIM: "abb_organisatieportaal_rol_2d"
@@ -212,11 +215,12 @@ services:
restart: always
logging: *default-logging
frontend:
image: lblod/frontend-organization-portal:1.36.5
image: lblod/frontend-organization-portal:1.40.4-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"
@@ -304,7 +308,7 @@ services:
restart: always
logging: *default-logging
construct-organization-relationships:
image: lblod/construct-organization-relationships-service:1.0.3
image: lblod/construct-organization-relationships-service:1.1.3
links:
- db:database
labels:
@@ -344,13 +348,21 @@ services:
restart: always
logging: *default-logging
kbo-data-sync:
image: lblod/sync-wegwijs-organization-service:2.0.4
image: lblod/sync-wegwijs-organization-service:2.0.5
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
link-adressenregister-uri:
image: lblod/link-adressenregister-uri-service:0.1.1
environment:
MU_SPARQL_ENDPOINT: "http://triplestore:8890/sparql"
MU_SPARQL_UPDATEPOINT: "http://triplestore:8890/sparql"
CRON_SCHEDULE: "0 0 * * *"
restart: always
logging: *default-logging
################################################################################
# DELTA GENERAL
@@ -389,7 +401,7 @@ services:
restart: always
logging: *default-logging
delta-producer-publication-graph-maintainer:
image: lblod/delta-producer-publication-graph-maintainer:1.2.2
image: lblod/delta-producer-publication-graph-maintainer:1.4.3
environment:
MAX_BODY_SIZE: "50mb"
PRETTY_PRINT_DIFF_JSON: "true"