Compare commits
407 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20f010bd42 | ||
|
|
7bb08363e2 | ||
|
|
b66278aec5 | ||
|
|
b273a77923 | ||
|
|
f689f90e37 | ||
|
|
20bc051103 | ||
|
|
8f57a160e0 | ||
|
|
6f731813bb | ||
|
|
03635e4b12 | ||
|
|
741a7cae2c | ||
|
|
9ea9d90751 | ||
|
|
d8114bec4e | ||
|
|
a352683c6f | ||
|
|
d601d7f34e | ||
|
|
aab976bcc1 | ||
|
|
404a282a7d | ||
|
|
f79724132a | ||
|
|
0b8530db34 | ||
|
|
17d48100d7 | ||
|
|
c6baf82dff | ||
|
|
cde5b49654 | ||
|
|
7316df1ab2 | ||
|
|
300e088b6c | ||
|
|
43e7cb0dac | ||
|
|
e844c9f824 | ||
|
|
eb8790f40b | ||
|
|
e10c825f75 | ||
|
|
0553cd7d66 | ||
|
|
55cb772e92 | ||
|
|
83f247b051 | ||
|
|
950521f187 | ||
|
|
61b88fe602 | ||
|
|
dae66c97d3 | ||
|
|
647e17900a | ||
|
|
72b4eaa68a | ||
|
|
bbb0f7a373 | ||
|
|
bf41ad4ad2 | ||
|
|
d3899762a9 | ||
|
|
47c4dea630 | ||
|
|
140626a936 | ||
|
|
026ef435e1 | ||
|
|
20d4613400 | ||
|
|
b358278067 | ||
|
|
f7a637f0f4 | ||
|
|
eb99585a1d | ||
|
|
841ac47db6 | ||
|
|
3b812946e4 | ||
|
|
9972451d0e | ||
|
|
0faa8100c8 | ||
|
|
7834352617 | ||
|
|
261ba383b6 | ||
|
|
62769f855c | ||
|
|
5eca8a2e1d | ||
|
|
0e8885f4dd | ||
|
|
3bc47a7fb0 | ||
|
|
1698112a9d | ||
|
|
a001f6b9e4 | ||
|
|
dba1ada5e2 | ||
|
|
a6571eefa5 | ||
|
|
347844e341 | ||
|
|
aaf87ee32f | ||
|
|
631ba827ee | ||
|
|
19e3423202 | ||
|
|
8750fddb2d | ||
|
|
8a7eb8ede0 | ||
|
|
4ff40cb4e4 | ||
|
|
d53bd27369 | ||
|
|
90fa373254 | ||
|
|
d290187467 | ||
|
|
dd08a03faa | ||
|
|
79bae4fd3c | ||
|
|
6bf50bbbb7 | ||
|
|
038b72646c | ||
|
|
c570ab994e | ||
|
|
c9ba00fc23 | ||
|
|
c993a681d9 | ||
|
|
fc676dd30f | ||
|
|
54700d9832 | ||
|
|
ce0e267627 | ||
|
|
d0835a1b30 | ||
|
|
44e2de4f0b | ||
|
|
824201ced6 | ||
|
|
80ad432a5c | ||
|
|
9122c18f1e | ||
|
|
8143aac736 | ||
|
|
dde2e42696 | ||
|
|
0f1654e64c | ||
|
|
9ed42aa4f6 | ||
|
|
4e39d1eed4 | ||
|
|
885db51540 | ||
|
|
477c37320d | ||
|
|
dfec837bba | ||
|
|
806a870744 | ||
|
|
8e4c395a78 | ||
|
|
eb552c92c3 | ||
|
|
782940c270 | ||
|
|
b9db4d3c92 | ||
|
|
1b2f9d45ac | ||
|
|
925289a9dc | ||
|
|
adb54c3b5a | ||
|
|
2f37aaaefc | ||
|
|
ca92809cf5 | ||
|
|
4f8babb9ae | ||
|
|
644fbfaae3 | ||
|
|
9d5d11f922 | ||
|
|
13c862f689 | ||
|
|
1031b78ac7 | ||
|
|
03ad3c2089 | ||
|
|
f79d31e153 | ||
|
|
023114fcab | ||
|
|
ac0f5764df | ||
|
|
dc9d060d49 | ||
|
|
3eceefce12 | ||
|
|
f026723aee | ||
|
|
43b5f5e7eb | ||
|
|
41a497dc71 | ||
|
|
39226cdf24 | ||
|
|
9b3dd7201b | ||
|
|
5d20fee494 | ||
|
|
4e30c155ef | ||
|
|
7294052c75 | ||
|
|
ccac93121b | ||
|
|
58742fdf5e | ||
|
|
12efbcc9fd | ||
|
|
0426f0f35e | ||
|
|
04298db9e5 | ||
|
|
799999f051 | ||
|
|
8f8557d733 | ||
|
|
fc6b2d3b80 | ||
|
|
99f5c9fc91 | ||
|
|
3870dac1f8 | ||
|
|
08b0e29f20 | ||
|
|
76d7964e5c | ||
|
|
bc10af81f4 | ||
|
|
14a290b82f | ||
|
|
ba4a4aa5da | ||
|
|
b1cc9c7329 | ||
|
|
25588d13ac | ||
|
|
98ed3260ed | ||
|
|
5e0d47053d | ||
|
|
99dd506f8f | ||
|
|
b9695eb255 | ||
|
|
4389a743b6 | ||
|
|
e40d85b22c | ||
|
|
340937bc85 | ||
|
|
f08e2e3df0 | ||
|
|
77245adbaa | ||
|
|
cb0191f28b | ||
|
|
3f460ce329 | ||
|
|
6397ce2923 | ||
|
|
7e0a668573 | ||
|
|
b6dd8b4519 | ||
|
|
797d3a8d44 | ||
|
|
a98f860d3c | ||
|
|
162a6ff654 | ||
|
|
d3b40b88ea | ||
|
|
a7d6dcfb32 | ||
|
|
d4f9352c61 | ||
|
|
e182017bb0 | ||
|
|
0ba4a6f393 | ||
|
|
2e6dd74b72 | ||
|
|
1412a767ad | ||
|
|
e755d615fc | ||
|
|
974a966576 | ||
|
|
78ce1f7071 | ||
|
|
a647c7ea69 | ||
|
|
8c1538d45e | ||
|
|
48cefe143e | ||
|
|
296f18e41c | ||
|
|
51dce798bc | ||
|
|
63979c19ab | ||
|
|
5da229f198 | ||
|
|
da5c9fb35b | ||
|
|
53f8de39eb | ||
|
|
d570e94f22 | ||
|
|
c9af936b43 | ||
|
|
b9348a5076 | ||
|
|
429072dd18 | ||
|
|
fdd83c93bb | ||
|
|
e0d945f960 | ||
|
|
2478d1dc06 | ||
|
|
543ce252f8 | ||
|
|
bc98cf12f9 | ||
|
|
bfb02afcdf | ||
|
|
4602842e99 | ||
|
|
bbcc6928e7 | ||
|
|
399387e301 | ||
|
|
07687f5e35 | ||
|
|
11508cf310 | ||
|
|
43cf1fd323 | ||
|
|
a6b7321cf0 | ||
|
|
d88adeee15 | ||
|
|
155162eb45 | ||
|
|
592b728611 | ||
|
|
0ab1b278d5 | ||
|
|
f562d711f9 | ||
|
|
1420b1a3e8 | ||
|
|
b9fabc764f | ||
|
|
9db9d86609 | ||
|
|
826a9cdf08 | ||
|
|
d57eb0c20c | ||
|
|
e6111fffff | ||
|
|
cdb9bdb803 | ||
|
|
73492d0217 | ||
|
|
bc9e827703 | ||
|
|
800924db2e | ||
|
|
97361f7f48 | ||
|
|
5bbd9a9d69 | ||
|
|
4435c1d544 | ||
|
|
714994bc3c | ||
|
|
74a0c92b31 | ||
|
|
a9e9e761c0 | ||
|
|
e76f9c1a2e | ||
|
|
3938191666 | ||
|
|
681fa0ce0a | ||
|
|
b4b599d091 | ||
|
|
fd0a417ad1 | ||
|
|
cd2ee5bea3 | ||
|
|
a94bb7f7e2 | ||
|
|
b9be63f193 | ||
|
|
4b45093572 | ||
|
|
6c7e5428dc | ||
|
|
29f0b3e9a1 | ||
|
|
a3dff637e3 | ||
|
|
71b21e4716 | ||
|
|
d49ebea0bd | ||
|
|
d35b9fc3a1 | ||
|
|
80a503c132 | ||
|
|
a0400563da | ||
|
|
369a2ad483 | ||
|
|
50c03a2205 | ||
|
|
2c7fa2d69e | ||
|
|
66c3703f22 | ||
|
|
660c9b6848 | ||
|
|
bf77794d08 | ||
|
|
994c26b58d | ||
|
|
dd3cbc16e8 | ||
|
|
89435073c7 | ||
|
|
5ff3f5b121 | ||
|
|
288bf42aa3 | ||
|
|
178f5c17e6 | ||
|
|
d28cb221da | ||
|
|
8423d24230 | ||
|
|
842e9f7205 | ||
|
|
c562698edf | ||
|
|
a7708255f9 | ||
|
|
697fd814fc | ||
|
|
f30fcfda22 | ||
|
|
26d5a23a3c | ||
|
|
e7129dc41d | ||
|
|
b5b8df6610 | ||
|
|
0616d24ad0 | ||
|
|
94baeb539f | ||
|
|
007b0a35ee | ||
|
|
131ecd4f1e | ||
|
|
c260c5c3df | ||
|
|
723527fb62 | ||
|
|
fc4fcfddf8 | ||
|
|
449204a9d1 | ||
|
|
4252004fc2 | ||
|
|
730f99cf2b | ||
|
|
6223301f6f | ||
|
|
09d499fc01 | ||
|
|
6ef0386a2b | ||
|
|
4edfd3d08a | ||
|
|
410377d3e5 | ||
|
|
6305343672 | ||
|
|
1a0987afeb | ||
|
|
30504c9135 | ||
|
|
cdf6f8f75f | ||
|
|
976b2b02df | ||
|
|
95e737873a | ||
|
|
48b5a82fda | ||
|
|
3b6b6d6b21 | ||
|
|
4691a18407 | ||
|
|
43523ec37d | ||
|
|
f4bd10fa46 | ||
|
|
df5d249246 | ||
|
|
9e3f365ee3 | ||
|
|
41f5b74b8f | ||
|
|
188d7f0e18 | ||
|
|
3052bf8315 | ||
|
|
c34ff82125 | ||
|
|
c483546709 | ||
|
|
ce93e787e6 | ||
|
|
c0e802d1f3 | ||
|
|
0b1d8f3b12 | ||
|
|
1bf7b59905 | ||
|
|
02b0e825f1 | ||
|
|
d569d15360 | ||
|
|
64044b2ce0 | ||
|
|
c0fad917f1 | ||
|
|
857919804d | ||
|
|
a12293e460 | ||
|
|
0ad11a2289 | ||
|
|
ea83f49a0f | ||
|
|
27f240f25c | ||
|
|
ed28ca6983 | ||
|
|
6b89b32e99 | ||
|
|
c7650d6379 | ||
|
|
8e090ca872 | ||
|
|
2e4c0702a6 | ||
|
|
53c5bd1275 | ||
|
|
675a984cc4 | ||
|
|
dc842b7c6b | ||
|
|
e507c31a3d | ||
|
|
a966e25832 | ||
|
|
9367256717 | ||
|
|
aa6b9c803b | ||
|
|
0fd50697f6 | ||
|
|
a8607f9c1a | ||
|
|
e97e0d3477 | ||
|
|
8326d02d3c | ||
|
|
b9911887c2 | ||
|
|
8a1c6323c0 | ||
|
|
bff78b12d6 | ||
|
|
ec749c81dd | ||
|
|
aa7ce23a85 | ||
|
|
0592e10a8c | ||
|
|
c24f56c7cb | ||
|
|
69fa0b5d8b | ||
|
|
f07c1a561b | ||
|
|
954f72ef7e | ||
|
|
23e7ee7ff2 | ||
|
|
6e0e3cd8ea | ||
|
|
6c572992be | ||
|
|
402f7ffce3 | ||
|
|
51d7c53970 | ||
|
|
54f1d8932c | ||
|
|
a169184fca | ||
|
|
6ec4784a53 | ||
|
|
f5a23bc37b | ||
|
|
4e0ec40f51 | ||
|
|
d493c7601a | ||
|
|
23199fc896 | ||
|
|
125b281eac | ||
|
|
7901485e01 | ||
|
|
19f9d6f4e8 | ||
|
|
8755bbc432 | ||
|
|
b00983c580 | ||
|
|
0b3d1febdf | ||
|
|
d42986ff43 | ||
|
|
0e63fcc8b0 | ||
|
|
6c80037fb5 | ||
|
|
e985662313 | ||
|
|
9ed2cfa080 | ||
|
|
33a7d6eff6 | ||
|
|
7c625b3348 | ||
|
|
20bf82a36a | ||
|
|
37f071c065 | ||
|
|
2d79ec5852 | ||
|
|
04a749020e | ||
|
|
0d1b610dcf | ||
|
|
7bdc6519a9 | ||
|
|
84d59bb173 | ||
|
|
6513bfcfd5 | ||
|
|
0c09c0cb1b | ||
|
|
25a5adaf5e | ||
|
|
e80d231f35 | ||
|
|
7c7c6ffe60 | ||
|
|
fc6f5139c4 | ||
|
|
3f81847c94 | ||
|
|
5b38e70b61 | ||
|
|
21717dff0e | ||
|
|
c6bb94816d | ||
|
|
15f050aaff | ||
|
|
650ba77d6c | ||
|
|
b9e8d72f01 | ||
|
|
1b2268fc6a | ||
|
|
4e0a9170d9 | ||
|
|
3cc305982a | ||
|
|
d10465b73f | ||
|
|
36670ebfa4 | ||
|
|
1289f1d78a | ||
|
|
ead102d8c6 | ||
|
|
b7279d2640 | ||
|
|
e70c112f20 | ||
|
|
607844ae33 | ||
|
|
f518646c06 | ||
|
|
12d3ae6d10 | ||
|
|
9900b23eee | ||
|
|
4dc4bf84fa | ||
|
|
60ba1df934 | ||
|
|
1fc6a43e9c | ||
|
|
c5888b8f8d | ||
|
|
a8274a8925 | ||
|
|
cefdd9aaea | ||
|
|
108e29e4a1 | ||
|
|
52bb3b8d6b | ||
|
|
24e9659c3d | ||
|
|
b676c0a743 | ||
|
|
764cfb6f1c | ||
|
|
3bef65188c | ||
|
|
e414a9e086 | ||
|
|
8b001b93c8 | ||
|
|
97c1929346 | ||
|
|
a53f0d3f30 | ||
|
|
76784840a4 | ||
|
|
6fae30d245 | ||
|
|
11105113a9 | ||
|
|
0e85e069b1 | ||
|
|
e8061f6a0b | ||
|
|
65efd72683 | ||
|
|
70e79734df | ||
|
|
329e87f0eb | ||
|
|
663c975725 | ||
|
|
54e381bfad |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -19,6 +19,7 @@ docker-compose.override.yml
|
||||
.env
|
||||
|
||||
/config/migrations/private-data/*
|
||||
/config/migrations/local/*
|
||||
|
||||
/config/proxy/nginx.htpasswd
|
||||
|
||||
@@ -28,9 +29,11 @@ DS_STORE
|
||||
/config/proxy-https/cert.pem
|
||||
/config/proxy-https/key.pem
|
||||
|
||||
# Kalliope config files
|
||||
source.json
|
||||
out.json
|
||||
security.yml
|
||||
output.json
|
||||
security.json
|
||||
|
||||
config/proxy-https/proxy_ssl.conf
|
||||
/config/search/update-handler.store
|
||||
/config/search/dev/update-handler.store
|
||||
|
||||
223
CHANGELOG.md
Normal file
223
CHANGELOG.md
Normal file
@@ -0,0 +1,223 @@
|
||||
# Changelog
|
||||
## 1.29.2 (2025-02-17)
|
||||
### Data fix
|
||||
- restore bestrokken lokale besturen that have been accidentally flushed [OP-3546]
|
||||
## 1.29.1 (2025-02-14)
|
||||
### Backend
|
||||
- re-init `worship-services-sensitive-consumer` [OP-3483]
|
||||
### Deploy notes
|
||||
:warning: Ensure first loket did a full re-sync again of this delta-stream.
|
||||
```
|
||||
drc stop worship-services-main-info-consumer worship-services-private-info-consumer
|
||||
drc retart migrations
|
||||
```
|
||||
Update `docker-compose.override.yml` to remove the config of the consumers and replace it by:
|
||||
```
|
||||
worship-services-main-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
worship-services-private-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
```
|
||||
Then
|
||||
```
|
||||
drc up -d db mandatarissen-consumer leidinggevenden-consumer worship-services-main-info-consumer worship-services-private-info-consumer
|
||||
# Wait until success of the previous step
|
||||
```
|
||||
Then, update `docker-compose.override.yml` to:
|
||||
```
|
||||
worship-services-main-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
worship-services-private-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "database"
|
||||
DCR_REMAPPING_DATABASE: "database"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
```
|
||||
drc up -d
|
||||
sh scripts/reset-elastic.sh
|
||||
```
|
||||
|
||||
## 1.29.0 (2025-02-07)
|
||||
### Backend
|
||||
#### Consumer
|
||||
- Upgraded `mandatarissen-consumer` [OP-3510]
|
||||
- Upgraded `leidinggevenden-consumer` [OP-3533], [OP-3511]
|
||||
- Upgraded `worship-services-sensitive-consumer` [OP-3337]
|
||||
|
||||
### Deploy notes
|
||||
```
|
||||
drc down;
|
||||
```
|
||||
Update `docker-compose.override.yml` to remove the config of the consumers and replace it by:
|
||||
```
|
||||
mandatarissen-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
leidinggevenden-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
worship-services-main-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
worship-services-private-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
```
|
||||
Then:
|
||||
```
|
||||
drc up -d triplestore migrations
|
||||
drc up -d db mandatarissen-consumer leidinggevenden-consumer worship-services-main-info-consumer worship-services-private-info-consumer
|
||||
# Wait until success of the previous step
|
||||
```
|
||||
Then, update `docker-compose.override.yml` to:
|
||||
```
|
||||
mandatarissen-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
leidinggevenden-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # choose the correct endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
worship-services-main-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
worship-services-private-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "database"
|
||||
DCR_REMAPPING_DATABASE: "database"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
```
|
||||
drc up -d
|
||||
sh scripts/reset-elastic.sh
|
||||
```
|
||||
|
||||
## 1.28.5 (2025-01-23)
|
||||
### Frontend
|
||||
- Bump to [v1.28.3](https://github.com/lblod/frontend-organization-portal/releases/tag/v1.28.3)
|
||||
### Backend
|
||||
- Datafix: correct merger change events for worship organisations (OP-3534)
|
||||
- Avoid municipality filter to include partial matches (OP-3509)
|
||||
### Deploy notes
|
||||
- `drc restart migrations-triggering-indexing; drc logs -ft --tail=200 migrations-triggering-indexing`
|
||||
- `drc pull frontend; drc up -d frontend`
|
||||
- Perform a full re-index by executing `./scripts/reset-elastic.sh`
|
||||
|
||||
## 1.28.4 (2025-01-16)
|
||||
### Backend
|
||||
#### Data
|
||||
- Performance fix on 1.28.3 [DL-6377]
|
||||
### Deploy commands
|
||||
```
|
||||
drc restart migrations
|
||||
drc exec delta-producer-background-jobs-initiator curl -X POST http://localhost/public/healing-jobs # or wait for the healing to kick in
|
||||
```
|
||||
## 1.28.3 (2025-01-16)
|
||||
### Backend
|
||||
#### Data
|
||||
- Datafix. Fusiegemeentes had different bestuursfuncties attached to OCMW and Gemeente. [DL-6377]
|
||||
However, business-rule-wise, these bestuursfuncties are shared.
|
||||
### Deploy commands
|
||||
```
|
||||
drc restart migrations
|
||||
drc exec delta-producer-background-jobs-initiator curl -X POST http://localhost/public/healing-jobs # or wait for the healing to kick in
|
||||
```
|
||||
## 1.28.2 (2025-01-13)
|
||||
### Backend
|
||||
- Added "Opdrachthoudende vereniging met private deelname" in delta public (DL-6368)
|
||||
### Deploy commands
|
||||
```
|
||||
drc restart migrations
|
||||
drc exec delta-producer-background-jobs-initiator curl -X POST http://localhost/public/healing-jobs # or wait for the healing to kick in
|
||||
```
|
||||
## 1.28.1 (2025-01-11)
|
||||
### Backend
|
||||
- Import 2025 NIS codes and update werkingsgebieden (OP-3342)
|
||||
- Add merger change events for merged police zones (OP-3454)
|
||||
- Delete local involvements for worship services (OP-3501, OP-3512)
|
||||
- Move link between new municipalities and province to shared graph (OP-3513, OP-3514)
|
||||
|
||||
### Deploy notes
|
||||
- Restart both migration services
|
||||
#### Docker commands
|
||||
- `drc restart migrations; drc logs -ft --tail=200 migrations`
|
||||
- `drc restart migrations-triggering-indexing; drc logs -ft --tail=200 migrations-triggering-indexing`
|
||||
|
||||
## 1.28.0 (2025-01-02)
|
||||
### Backend
|
||||
- Bump frontend to `v1.28.0`
|
||||
- Add end date for governing bodies for municipalities and OCMWs and update status (OP-3348)
|
||||
- Update municipality and province name in organisation's addresses (OP-3410)
|
||||
- Add merger change events for merged municipalities and OCMWs (OP-3412)
|
||||
- Updates names for merged municipalities and OCMWs (OP-3456)
|
||||
|
||||
### Deploy notes
|
||||
- Restart both migration services
|
||||
- Bump frontend
|
||||
#### Docker commands
|
||||
- `drc restart migrations; drc logs -ft --tail=200 migrations`
|
||||
- `drc restart migrations-triggering-indexing; drc logs -ft --tail=200 migrations-triggering-indexing`
|
||||
- `drc pull frontend; drc up -d frontend`
|
||||
139
README.md
139
README.md
@@ -11,6 +11,145 @@ Backend for the organization portal application, based on the mu.semte.ch micros
|
||||
|
||||
You can shut down using `docker-compose stop` and remove everything using `docker-compose rm`.
|
||||
|
||||
#### Setup consumers
|
||||
|
||||
The application depends on external data. You'll have to perform extra steps if you want this data to be available.
|
||||
These are multiple data sets, we'll try to be exhaustive on how to ingest these. Even though the procedures are similar.
|
||||
|
||||
#### Setup mandatarissen sync
|
||||
Note: this is assuming you have never ran this before.
|
||||
```
|
||||
drc down;
|
||||
```
|
||||
Update `docker-compose.override.yml` to:
|
||||
```
|
||||
mandatarissen-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore"
|
||||
DCR_REMAPPING_DATABASE: "triplestore"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
Then:
|
||||
```
|
||||
drc up -d migrations
|
||||
drc up -d db mandatarissen-consumer
|
||||
# Wait until success of the previous step
|
||||
```
|
||||
Then, update `docker-compose.override.yml` to:
|
||||
```
|
||||
mandatarissen-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
Finally, put the stack back up and reindex elasticsearch
|
||||
```
|
||||
drc up -d
|
||||
sh scripts/reset-elastic.sh
|
||||
```
|
||||
|
||||
#### Setup leidinggevenden sync (http://data.lblod.info/vocabularies/leidinggevenden/Functionaris)
|
||||
|
||||
Note: this is assuming you have never ran this before.
|
||||
```
|
||||
drc down;
|
||||
```
|
||||
Update `docker-compose.override.yml` to:
|
||||
```
|
||||
leidinggevenden-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_REMAPPING_DATABASE: "triplestore" # for the initial sync, we go directly to virtuoso
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
Then:
|
||||
```
|
||||
drc up -d migrations
|
||||
drc up -d db leidinggevenden-consumer
|
||||
# Wait until success of the previous step
|
||||
```
|
||||
Then, update `docker-compose.override.yml` to:
|
||||
```
|
||||
leidinggevenden-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # choose the correct endpoint
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
Finally, put the stack back up and reindex elasticsearch
|
||||
```
|
||||
drc up -d
|
||||
sh scripts/reset-elastic.sh
|
||||
```
|
||||
|
||||
#### Setup worship mandatees sync
|
||||
|
||||
Note: this is assuming you have never ran this before.
|
||||
```
|
||||
drc down;
|
||||
```
|
||||
Update `docker-compose.override.yml` to:
|
||||
```
|
||||
worship-services-main-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lokaalbestuur.vlaanderen.be/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore"
|
||||
DCR_REMAPPING_DATABASE: "triplestore"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
worship-services-private-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lokaalbestuur.vlaanderen.be/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "triplestore"
|
||||
DCR_REMAPPING_DATABASE: "triplestore"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
Then:
|
||||
```
|
||||
drc up -d migrations
|
||||
drc up -d db worship-services-main-info-consumer worship-services-private-info-consumer
|
||||
# Wait until success of the previous step
|
||||
```
|
||||
Then, update `docker-compose.override.yml` to:
|
||||
```
|
||||
worship-services-main-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lokaalbestuur.vlaanderen.be/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
worship-services-private-info-consumer:
|
||||
environment:
|
||||
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be" # or another endpoint
|
||||
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lokaalbestuur.vlaanderen.be/sync/worship-services-sensitive/login" # or another endpoint
|
||||
DCR_SECRET_KEY: "key-of-the-producer"
|
||||
DCR_LANDING_ZONE_DATABASE: "db"
|
||||
DCR_REMAPPING_DATABASE: "db"
|
||||
DCR_DISABLE_DELTA_INGEST: "false"
|
||||
DCR_DISABLE_INITIAL_SYNC: "false"
|
||||
```
|
||||
Finally, put the stack back up and reindex elasticsearch
|
||||
```
|
||||
drc up -d
|
||||
sh scripts/reset-elastic.sh
|
||||
```
|
||||
|
||||
### Setting up the delta-producers related services
|
||||
To make sure the app can share data, producers need to be set up. There is an intial sync, that is potentially very expensive, and must be started manually
|
||||
|
||||
@@ -40,6 +40,7 @@ defmodule Acl.UserGroups.Config do
|
||||
"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",
|
||||
@@ -76,7 +77,8 @@ defmodule Acl.UserGroups.Config do
|
||||
"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://data.lblod.info/vocabularies/contacthub/AgentInPositie",
|
||||
"http://mu.semte.ch/vocabularies/ext/KboOrganisatie",
|
||||
]
|
||||
|
||||
@shared_protected_type [
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
const BATCH_SIZE = parseInt(process.env.BATCH_SIZE) || 100;
|
||||
const BATCH_SIZE = parseInt(process.env.BATCH_SIZE) || 1000;
|
||||
const MU_CALL_SCOPE_ID_INITIAL_SYNC = process.env.MU_CALL_SCOPE_ID_INITIAL_SYNC || 'http://redpencil.data.gift/id/concept/muScope/deltas/consumer/initialSync';
|
||||
const BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES = process.env.BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES == 'true' ? true : false;
|
||||
const DIRECT_DATABASE_ENDPOINT = process.env.DIRECT_DATABASE_ENDPOINT || 'http://triplestore:8890/sparql';
|
||||
const DIRECT_DATABASE_ENDPOINT = process.env.DIRECT_DATABASE_ENDPOINT || 'http://virtuoso:8890/sparql';
|
||||
const MAX_DB_RETRY_ATTEMPTS = parseInt(process.env.MAX_DB_RETRY_ATTEMPTS || 5);
|
||||
const MAX_REASONING_RETRY_ATTEMPTS = parseInt(process.env.MAX_REASONING_RETRY_ATTEMPTS || 5);
|
||||
const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 1000);
|
||||
const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 100);
|
||||
const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
|
||||
const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
|
||||
|
||||
// Graphs
|
||||
const TARGET_GRAPH = process.env.TARGET_GRAPH || `http://mu.semte.ch/graphs/administrative-unit`;
|
||||
const LANDING_ZONE_GRAPH = process.env.DCR_LANDING_ZONE_GRAPH || `http://mu.semte.ch/graphs/landing-zone/leidinggevenden`;
|
||||
const LANDING_ZONE_GRAPH = process.env.DCR_LANDING_ZONE_GRAPH || `http://mu.semte.ch/graphs/landing-zone/clb-contact-data`;
|
||||
|
||||
// ENDPOINTS
|
||||
const LANDING_ZONE_DATABASE = process.env.DCR_LANDING_ZONE_DATABASE || 'db';
|
||||
const LANDING_ZONE_DATABASE = process.env.DCR_LANDING_ZONE_DATABASE || 'database';
|
||||
const LANDING_ZONE_DATABASE_ENDPOINT = process.env.DCR_LANDING_ZONE_DATABASE_ENDPOINT || `http://${LANDING_ZONE_DATABASE}:8890/sparql`;
|
||||
|
||||
module.exports = {
|
||||
@@ -27,6 +26,5 @@ module.exports = {
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
LANDING_ZONE_GRAPH,
|
||||
TARGET_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT
|
||||
};
|
||||
};
|
||||
268
config/clb-consumer/contact-data/delta-context-config.js
Normal file
268
config/clb-consumer/contact-data/delta-context-config.js
Normal file
@@ -0,0 +1,268 @@
|
||||
|
||||
const PREFIXES = `
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX lblodgeneriek: <https://data.lblod.info/vocabularies/generiek/>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>`
|
||||
|
||||
const contextConfig = {
|
||||
addTypes: {
|
||||
scope: 'all', // 'inserts, 'deletes', 'all' or none. To add rdf:type to subjects of inserts, deletes or both
|
||||
exhausitive: false, // true or false: find all types for a subject, even if one is already present in delta
|
||||
},
|
||||
contextQueries: [
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
subjectType: "org:Site"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
${subject} ext:goesInGraph ?graphOne.
|
||||
${subject} ext:goesInGraph ?graphTwo.
|
||||
${subject} ext:goesInGraph ?graphThree.
|
||||
${subject} ext:goesInGraph ?graphFour.
|
||||
} WHERE {
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnitOne org:hasPrimarySite ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnitTwo org:hasSite ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphTwo)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?adminUnitThree org:hasPrimarySite ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?graphThree)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?adminUnitFour org:hasSite ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?graphFour)
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
subjectType: "schema:ContactPoint"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
${subject} ext:goesInGraph ?graphOne.
|
||||
${subject} ext:goesInGraph ?graphTwo.
|
||||
} WHERE {
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?siteOne org:siteAddress ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?siteTwo org:siteAddress ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?graphTwo)
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
subjectType: "locn:Address"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
${subject} ext:goesInGraph ?graphOne.
|
||||
${subject} ext:goesInGraph ?graphTwo.
|
||||
} WHERE {
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?siteOne organisatie:bestaatUit ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?siteTwo organisatie:bestaatUit ${subject}.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?graphTwo)
|
||||
}
|
||||
}`
|
||||
},
|
||||
//Predicate triggers to solve out of order deltas
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
predicateValue: "org:hasSite"
|
||||
},
|
||||
//We assume that only administrative units are in the shared graph of OP due to the need of sharing the prefLabel with worships services
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
${subject} ext:goesInGraph ?graphOne.
|
||||
${subject} ext:goesInGraph ?graphTwo.
|
||||
?site ?pSite ?oSite.
|
||||
?contact ?pContact ?oContact.
|
||||
?address ?pAddress ?oAddress.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
} WHERE {
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
${subject} a ?type.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/shared> {
|
||||
${subject} a ?type.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
${subject} a ?type.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?graphTwo)
|
||||
}
|
||||
${subject} org:hasSite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
predicateValue: "org:hasPrimarySite"
|
||||
},
|
||||
//We assume that only administrative units are in the shared graph of OP due to the need of sharing the prefLabel with worships services
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
${subject} ext:goesInGraph ?graphOne.
|
||||
${subject} ext:goesInGraph ?graphTwo.
|
||||
?site ?pSite ?oSite.
|
||||
?contact ?pContact ?oContact.
|
||||
?address ?pAddress ?oAddress.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
} WHERE {
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
${subject} a ?type.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/shared> {
|
||||
${subject} a ?type.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/administrative-unit> AS ?graphOne)
|
||||
}
|
||||
OPTIONAL {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
${subject} a ?type.
|
||||
}
|
||||
BIND(<http://mu.semte.ch/graphs/worship-service> AS ?graphTwo)
|
||||
}
|
||||
${subject} org:hasPrimarySite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
predicateValue: "org:siteAddress"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?contact ?pContact ?oContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
} WHERE {
|
||||
${subject} org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
OPTIONAL {
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
predicateValue: "locn:address"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
} WHERE {
|
||||
${subject} locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
predicateValue: "organisatie:bestaatUit"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?address ?pAddress ?oAddress.
|
||||
} WHERE {
|
||||
${subject} organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}`
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
contextConfig,
|
||||
PREFIXES
|
||||
};
|
||||
104
config/clb-consumer/contact-data/delta-sync-dispatching.js
Normal file
104
config/clb-consumer/contact-data/delta-sync-dispatching.js
Normal file
@@ -0,0 +1,104 @@
|
||||
const {
|
||||
deleteFromPublicGraph,
|
||||
insertIntoPublicGraph,
|
||||
deleteFromSpecificGraphs,
|
||||
insertIntoSpecificGraphs
|
||||
} = require('./util');
|
||||
|
||||
const {
|
||||
LANDING_ZONE_GRAPH
|
||||
} = require('./config')
|
||||
|
||||
const publicTypes = [
|
||||
'<http://lblod.data.gift/vocabularies/organisatie/TypeVestiging>'
|
||||
]
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
* Note: <share://file/data> will be ADDED to it's own graph.
|
||||
* We take only care of adding them, not updating triples, this is a TODO
|
||||
* @param { mu, muAuthSudo } lib - The provided libraries from the host service.
|
||||
* @param { termObjectChangeSets: { deletes, inserts } } data - The fetched changes sets, which objects of serialized Terms
|
||||
* [ {
|
||||
* graph: "<http://foo>",
|
||||
* subject: "<http://bar>",
|
||||
* predicate: "<http://baz>",
|
||||
* object: "<http://boom>^^<http://datatype>"
|
||||
* }
|
||||
* ]
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
let { termObjectChangeSets, termObjectChangeSetsWithContext } = data;
|
||||
|
||||
// Both arrays are the same length, so we can zip them together for easier processing
|
||||
zippedChangeSets = termObjectChangeSets.map((o, i) => ({
|
||||
original: o,
|
||||
withContext: termObjectChangeSetsWithContext && termObjectChangeSetsWithContext[i]
|
||||
}));
|
||||
|
||||
console.log(`Received ${zippedChangeSets.length} change sets`)
|
||||
|
||||
for (let { original, withContext } of zippedChangeSets) {
|
||||
|
||||
const {public: insertsOnPublic, target: insertsOnGraphs} = separateBetweenTargetAndPublic(original.inserts, withContext.inserts)
|
||||
const {public: deletesOnPublic, target: deletesOnGraphs} = separateBetweenTargetAndPublic(original.deletes, withContext.deletes)
|
||||
|
||||
await deleteFromPublicGraph(lib, deletesOnPublic);
|
||||
await deleteFromSpecificGraphs(lib, deletesOnGraphs);
|
||||
await insertIntoPublicGraph(lib, insertsOnPublic);
|
||||
await insertIntoSpecificGraphs(lib, insertsOnGraphs);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function separateBetweenTargetAndPublic(changes, context) {
|
||||
const changesOnPublic = new Set();
|
||||
const changesOnGraphs = {};
|
||||
for(let change of changes) {
|
||||
const subject = change.subject;
|
||||
const contextTriples = context.filter((context) => context.subject === subject);
|
||||
const graphTriple = contextTriples.find(
|
||||
(context) => context.predicate === '<http://mu.semte.ch/vocabularies/ext/goesInGraph>'
|
||||
&& context.object !== `<${LANDING_ZONE_GRAPH}>`
|
||||
)
|
||||
const otherContextTriples = context.filter(
|
||||
(context) => context.predicate !== '<http://mu.semte.ch/vocabularies/ext/goesInGraph>'
|
||||
&& context.predicate !== '<http://mu.semte.ch/vocabularies/ext/contextDataGoesInGraph>'
|
||||
&& !(context.subject === subject && context.predicate === '<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>')
|
||||
);
|
||||
if(graphTriple) {
|
||||
const graph = graphTriple.object.slice(1,-1); // We have to slice it to remove the "<" and ">"
|
||||
if(change.object !== '') {
|
||||
if(!changesOnGraphs[graph]) {
|
||||
changesOnGraphs[graph] = new Set();
|
||||
}
|
||||
changesOnGraphs[graph].add(`${change.subject} ${change.predicate} ${change.object}.`)
|
||||
}
|
||||
for(let triple of otherContextTriples) {
|
||||
if(triple.object === '') continue;
|
||||
if(!changesOnGraphs[graph]) {
|
||||
changesOnGraphs[graph] = new Set();
|
||||
}
|
||||
changesOnGraphs[graph].add(`${triple.subject} ${triple.predicate} ${triple.object}.`)
|
||||
}
|
||||
}
|
||||
const typeTriple = contextTriples.find(
|
||||
(context) => context.subject === subject
|
||||
&& context.predicate === '<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>'
|
||||
);
|
||||
if(!typeTriple) continue;
|
||||
const type = typeTriple.object;
|
||||
if(publicTypes.includes(type)) {
|
||||
changesOnPublic.add(`${change.subject} ${change.predicate} ${change.object}.`)
|
||||
for(let triple of otherContextTriples) {
|
||||
changesOnPublic.add(`${triple.subject} ${triple.predicate} ${triple.object}.`)
|
||||
}
|
||||
}
|
||||
}
|
||||
return {public: changesOnPublic, target: changesOnGraphs}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
const { batchedDbUpdate, transformLandingZoneGraph } = require('./util');
|
||||
const { batchedDbUpdate, moveDataAfterInitialSync } = require('./util');
|
||||
const {
|
||||
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
DIRECT_DATABASE_ENDPOINT,
|
||||
@@ -7,9 +7,7 @@ const {
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
TARGET_GRAPH,
|
||||
LANDING_ZONE_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT
|
||||
} = require('./config');
|
||||
|
||||
const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT : process.env.MU_SPARQL_ENDPOINT;
|
||||
@@ -32,7 +30,7 @@ async function dispatch(lib, data) {
|
||||
const { termObjects } = data;
|
||||
|
||||
// Steps:
|
||||
// 1. Write the triples to the landing zone graph - withouth any mapping or filtering
|
||||
// 1. Write the triples to the landing zone graph - without any mapping or filtering
|
||||
// 2. One-time reasoning run with the full landing zone graph and write the results to the target graph (on-finish)
|
||||
|
||||
if (BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES) {
|
||||
@@ -48,7 +46,7 @@ async function dispatch(lib, data) {
|
||||
LANDING_ZONE_GRAPH,
|
||||
originalInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
LANDING_ZONE_DATABASE_ENDPOINT,
|
||||
endpoint,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
@@ -57,29 +55,15 @@ async function dispatch(lib, data) {
|
||||
}
|
||||
}
|
||||
|
||||
async function onFinishInitialIngest(lib) {
|
||||
const { muAuthSudo, fetch } = lib;
|
||||
async function onFinishInitialIngest(lib,data) {
|
||||
const { muAuthSudo } = lib;
|
||||
|
||||
console.log(`!! On-finish triggered !!`);
|
||||
|
||||
const transformedInsertTriples = await transformLandingZoneGraph(fetch, endpoint);
|
||||
|
||||
console.log(`Transformed ${transformedInsertTriples.length} triples`);
|
||||
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
transformedInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
endpoint,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
await moveDataAfterInitialSync(muAuthSudo.updateSudo, endpoint)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch,
|
||||
onFinishInitialIngest
|
||||
};
|
||||
};
|
||||
337
config/clb-consumer/contact-data/util.js
Normal file
337
config/clb-consumer/contact-data/util.js
Normal file
@@ -0,0 +1,337 @@
|
||||
const {
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
LANDING_ZONE_GRAPH,
|
||||
BATCH_SIZE,
|
||||
} = require('./config');
|
||||
|
||||
const prefixes = `
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX lblodgeneriek: <https://data.lblod.info/vocabularies/generiek/>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX ext:<http://mu.semte.ch/vocabularies/ext/>
|
||||
`
|
||||
|
||||
async function batchedDbUpdate(
|
||||
muUpdate,
|
||||
graph,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
batchSize,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
operation = 'INSERT'
|
||||
) {
|
||||
for (let i = 0; i < triples.length; i += batchSize) {
|
||||
console.log(`Inserting triples in batch: ${i}-${i + batchSize}`);
|
||||
|
||||
const batch = triples.slice(i, i + batchSize).join('\n');
|
||||
|
||||
const insertCall = async () => {
|
||||
await muUpdate(`
|
||||
${operation} DATA {
|
||||
GRAPH <${graph}> {
|
||||
${batch}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(insertCall, 0, maxAttempts, sleepTimeOnFail);
|
||||
|
||||
console.log(`Sleeping before next query execution: ${sleepBetweenBatches}`);
|
||||
await new Promise(r => setTimeout(r, sleepBetweenBatches));
|
||||
}
|
||||
}
|
||||
|
||||
async function operationWithRetry(callback,
|
||||
attempt,
|
||||
maxAttempts,
|
||||
sleepTimeOnFail) {
|
||||
try {
|
||||
if (typeof callback === "function")
|
||||
return await callback();
|
||||
else // Catch error from promise - not how I would do it normally, but allows re use of existing code.
|
||||
return await callback;
|
||||
}
|
||||
catch (e) {
|
||||
console.log(`Operation failed for ${callback.toString()}, attempt: ${attempt} of ${maxAttempts}`);
|
||||
console.log(`Error: ${e}`);
|
||||
console.log(`Sleeping ${sleepTimeOnFail} ms`);
|
||||
|
||||
if (attempt >= maxAttempts) {
|
||||
console.log(`Max attempts reached for ${callback.toString()}, giving up`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
await new Promise(r => setTimeout(r, sleepTimeOnFail));
|
||||
return operationWithRetry(callback, ++attempt, maxAttempts, sleepTimeOnFail);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function insertIntoPublicGraph(lib, statements) {
|
||||
console.log(`Inserting ${statements.length} statements into public graph`);
|
||||
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
'http://mu.semte.ch/graphs/public',
|
||||
Array.from(statements),
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'INSERT');
|
||||
}
|
||||
|
||||
async function insertIntoSpecificGraphs(lib, statementsWithGraphs) {
|
||||
|
||||
for( let graph in statementsWithGraphs) {
|
||||
console.log(`Inserting ${statementsWithGraphs[graph].length} statements into ${graph} graph`);
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
graph,
|
||||
Array.from(statementsWithGraphs[graph]),
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'INSERT');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async function deleteFromPublicGraph(lib, statements) {
|
||||
console.log(`Deleting ${statements.length} statements from public graph`);
|
||||
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
'http://mu.semte.ch/graphs/public',
|
||||
Array.from(statements),
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'DELETE');
|
||||
}
|
||||
|
||||
async function deleteFromSpecificGraphs(lib, statementsWithGraphs) {
|
||||
|
||||
|
||||
for( let graph in statementsWithGraphs) {
|
||||
console.log(`Deleting ${statementsWithGraphs[graph].length} statements from ${graph} graph`);
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
graph,
|
||||
Array.from(statementsWithGraphs[graph]),
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'DELETE');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
async function moveDataAfterInitialSync(muUpdate, endpoint) {
|
||||
// Move primary sites admin units
|
||||
await muUpdate(`
|
||||
${prefixes}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit org:hasPrimarySite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
?contact ?pContact ?oContact.
|
||||
?address ?pAddress ?oAddress.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit a ?type.
|
||||
}
|
||||
GRAPH <${LANDING_ZONE_GRAPH}> {
|
||||
?adminUnit org:hasPrimarySite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}
|
||||
}
|
||||
}
|
||||
`, undefined, endpoint)
|
||||
|
||||
// Move sites administrative units
|
||||
await muUpdate(`
|
||||
${prefixes}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit org:hasSite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
?contact ?pContact ?oContact.
|
||||
?address ?pAddress ?oAddress.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit a ?type.
|
||||
}
|
||||
GRAPH <${LANDING_ZONE_GRAPH}> {
|
||||
?adminUnit org:hasSite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}
|
||||
}
|
||||
}
|
||||
`, undefined, endpoint)
|
||||
|
||||
// Move primary sites worships
|
||||
await muUpdate(`
|
||||
${prefixes}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?adminUnit org:hasPrimarySite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
?contact ?pContact ?oContact.
|
||||
?address ?pAddress ?oAddress.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?adminUnit a ?type.
|
||||
}
|
||||
GRAPH <${LANDING_ZONE_GRAPH}> {
|
||||
?adminUnit org:hasPrimarySite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}
|
||||
}
|
||||
}
|
||||
`, undefined, endpoint)
|
||||
|
||||
// Move sites worships
|
||||
await muUpdate(`
|
||||
${prefixes}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?adminUnit org:hasSite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
?contact ?pContact ?oContact.
|
||||
?address ?pAddress ?oAddress.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?adminUnit a ?type.
|
||||
}
|
||||
GRAPH <${LANDING_ZONE_GRAPH}> {
|
||||
?adminUnit org:hasSite ?site.
|
||||
?site ?pSite ?oSite.
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
?contact locn:address ?addressContact.
|
||||
?addressContact ?pAddressContact ?oAddressContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site org:siteAddress ?contact.
|
||||
?contact ?pContact ?oContact.
|
||||
}
|
||||
UNION
|
||||
{
|
||||
?site organisatie:bestaatUit ?address.
|
||||
?address ?pAddress ?oAddress.
|
||||
}
|
||||
}
|
||||
}
|
||||
`, undefined, endpoint)
|
||||
|
||||
// Move sites worships
|
||||
await muUpdate(`
|
||||
${prefixes}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/public> {
|
||||
?type a <http://lblod.data.gift/vocabularies/organisatie/TypeVestiging>.
|
||||
?type ?a ?b.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <${LANDING_ZONE_GRAPH}> {
|
||||
?type a <http://lblod.data.gift/vocabularies/organisatie/TypeVestiging>.
|
||||
?type ?a ?b.
|
||||
}
|
||||
}
|
||||
`, undefined, endpoint)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
batchedDbUpdate,
|
||||
moveDataAfterInitialSync,
|
||||
insertIntoPublicGraph,
|
||||
deleteFromPublicGraph,
|
||||
insertIntoSpecificGraphs,
|
||||
deleteFromSpecificGraphs,
|
||||
};
|
||||
42
config/delta-producer/background-job-initiator/config.json
Normal file
42
config/delta-producer/background-job-initiator/config.json
Normal file
@@ -0,0 +1,42 @@
|
||||
[
|
||||
{
|
||||
"name": "organizations",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"dumpFileCreationJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations",
|
||||
"cronPatternDumpJob": "42 * * * *",
|
||||
"cronPatternHealingJob": "0 0 4 * * *",
|
||||
"startInitialSync": true
|
||||
},
|
||||
{
|
||||
"name": "public",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"dumpFileCreationJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/public",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public",
|
||||
"cronPatternDumpJob": "11 */4 * * *",
|
||||
"cronPatternHealingJob": "0 0 4 * * *",
|
||||
"startInitialSync": true
|
||||
},
|
||||
{
|
||||
"name": "organizations-public-info",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"dumpFileCreationJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations-public-info",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations-public-info",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations-public-info",
|
||||
"cronPatternDumpJob": "27 */4 * * *",
|
||||
"cronPatternHealingJob": "0 0 4 * * *",
|
||||
"startInitialSync": true
|
||||
},
|
||||
{
|
||||
"name": "worship-posts",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"dumpFileCreationJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/worship-posts",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/worship-posts",
|
||||
"cronPatternDumpJob": "17 */4 * * *",
|
||||
"cronPatternHealingJob": "0 0 3 * * *",
|
||||
"startInitialSync": true
|
||||
}
|
||||
]
|
||||
@@ -3,7 +3,7 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
|
||||
"fileBaseName": "dump-organizations",
|
||||
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
|
||||
"targetFilesGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
|
||||
"cleanupOldDumps": true
|
||||
@@ -12,7 +12,7 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
|
||||
"fileBaseName": "dump-organizations",
|
||||
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
|
||||
"targetFilesGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
|
||||
"cleanupOldDumps": true
|
||||
@@ -39,7 +39,7 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/PublicCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/public",
|
||||
"fileBaseName": "dump-public",
|
||||
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
@@ -48,7 +48,7 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/PublicCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/public",
|
||||
"fileBaseName": "dump-public",
|
||||
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
@@ -57,7 +57,7 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/WorshipPostsCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/worship-posts",
|
||||
"fileBaseName": "dump-worship-posts",
|
||||
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
@@ -66,7 +66,7 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/WorshipPostsCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/worship-posts",
|
||||
"fileBaseName": "dump-worship-posts",
|
||||
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
"conceptScheme": "http://lblod.data.gift/concept-schemes/0d101f02-609d-4cde-bb07-639d874470c4",
|
||||
"export": [
|
||||
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
|
||||
"strictTypeExport": "true",
|
||||
@@ -13,10 +12,9 @@
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
@@ -40,10 +38,9 @@
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
@@ -72,13 +69,12 @@
|
||||
"http://www.opengis.net/ont/geosparql#sfWithin",
|
||||
"http://www.w3.org/2002/07/owl#sameAs",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
@@ -98,7 +94,38 @@
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
"http://www.w3.org/ns/adms#identifier"
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/regorg#RegisteredOrganization",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/administrative-unit"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.vlaanderen.be/ns/besluit#werkingsgebied",
|
||||
"http://www.opengis.net/ont/geosparql#sfWithin",
|
||||
"http://www.w3.org/2002/07/owl#sameAs",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"https://data.lblod.info/vocabularies/generiek/geplandeEindDatum",
|
||||
"http://www.w3.org/ns/org#purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -126,59 +153,6 @@
|
||||
"http://data.lblod.info/vocabularies/erediensten/functie"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/org#Site",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service",
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/ns/org#siteAddress",
|
||||
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
|
||||
"http://data.lblod.info/vocabularies/erediensten/vestigingstype"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/locn#Address",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service",
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer",
|
||||
"https://data.vlaanderen.be/ns/adres#Adresvoorstelling.busnummer",
|
||||
"http://www.w3.org/ns/locn#thoroughfare",
|
||||
"http://www.w3.org/ns/locn#postCode",
|
||||
"https://data.vlaanderen.be/ns/adres#gemeentenaam",
|
||||
"http://www.w3.org/ns/locn#adminUnitL2",
|
||||
"https://data.vlaanderen.be/ns/adres#land",
|
||||
"http://www.w3.org/ns/locn#fullAddress",
|
||||
"https://data.vlaanderen.be/ns/adres#verwijstNaar",
|
||||
"http://purl.org/dc/terms/source"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://schema.org/ContactPoint",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service",
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/ns/locn#address",
|
||||
"http://xmlns.com/foaf/0.1/page",
|
||||
"http://schema.org/faxNumber",
|
||||
"http://schema.org/contactType",
|
||||
"http://xmlns.com/foaf/0.1/page",
|
||||
"http://schema.org/email",
|
||||
"http://schema.org/telephone"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/adms#Identifier",
|
||||
"graphsFilter": [
|
||||
@@ -194,9 +168,7 @@
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/adms#Identifier",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/worship-service"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#notation",
|
||||
@@ -218,9 +190,7 @@
|
||||
},
|
||||
{
|
||||
"type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/worship-service"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
|
||||
@@ -229,6 +199,14 @@
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/public"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://mu.semte.ch/vocabularies/ext/RepresentatiefOrgaanClassificatieCode",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
@@ -256,9 +234,7 @@
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/public"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
@@ -266,9 +242,7 @@
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/public"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
@@ -296,9 +270,7 @@
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/public"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
@@ -306,9 +278,7 @@
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/public"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
@@ -316,9 +286,7 @@
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/public"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
@@ -351,12 +319,8 @@
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/2004/02/skos/core#Concept",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"pathToConceptScheme": [
|
||||
"http://www.w3.org/2004/02/skos/core#inScheme"
|
||||
],
|
||||
"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/ns/org#role",
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
"http://schema.org/email",
|
||||
"http://schema.org/faxNumber",
|
||||
"http://schema.org/telephone",
|
||||
"http://xmlns.com/foaf/0.1/page",
|
||||
"http://www.w3.org/ns/locn#address"
|
||||
]
|
||||
},
|
||||
@@ -126,6 +127,7 @@
|
||||
],
|
||||
"properties": [
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
@@ -154,6 +156,7 @@
|
||||
],
|
||||
"properties": [
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
@@ -170,6 +173,41 @@
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/worship-service",
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur",
|
||||
"http://data.lblod.info/vocabularies/erediensten/denominatie",
|
||||
"http://data.lblod.info/vocabularies/erediensten/grensoverschrijdend",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
"http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
|
||||
"http://data.vlaanderen.be/ns/besluit#werkingsgebied",
|
||||
"http://www.opengis.net/ont/geosparql#sfWithin",
|
||||
"http://www.w3.org/2002/07/owl#sameAs",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"https://data.lblod.info/vocabularies/generiek/geplandeEindDatum",
|
||||
"http://www.w3.org/ns/org#purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
|
||||
"strictTypeExport": "true",
|
||||
@@ -179,6 +217,7 @@
|
||||
],
|
||||
"properties": [
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
@@ -189,7 +228,36 @@
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst"
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
"http://www.w3.org/ns/org#classification"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/regorg#RegisteredOrganization",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.vlaanderen.be/ns/besluit#werkingsgebied",
|
||||
"http://www.opengis.net/ont/geosparql#sfWithin",
|
||||
"http://www.w3.org/2002/07/owl#sameAs",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"https://data.lblod.info/vocabularies/generiek/geplandeEindDatum",
|
||||
"http://www.w3.org/ns/org#purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -206,7 +274,8 @@
|
||||
"http://data.vlaanderen.be/ns/besluit#bestuurt",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
|
||||
"http://www.w3.org/ns/org#hasPost"
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -317,6 +386,18 @@
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/prov#Location",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared"
|
||||
],
|
||||
"properties": [
|
||||
"http://www.w3.org/2000/01/rdf-schema#label",
|
||||
"http://www.opengis.net/ont/geosparql#sfWithin",
|
||||
"http://mu.semte.ch/vocabularies/ext/werkingsgebiedNiveau",
|
||||
"http://www.w3.org/2004/02/skos/core#exactMatch"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
|
||||
"graphsFilter": [
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
@@ -46,6 +47,7 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
@@ -84,6 +86,7 @@
|
||||
"http://www.w3.org/2002/07/owl#sameAs",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
@@ -96,6 +99,53 @@
|
||||
"http://www.w3.org/ns/regorg#orgStatus"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"comment": "Bound to ABB only.",
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://purl.org/dc/terms/identifier",
|
||||
"http://www.w3.org/ns/org#classification"
|
||||
],
|
||||
"additionalFilter": "BIND(<http://data.lblod.info/id/bestuurseenheden/141d9d6b-54af-4d17-b313-8d1c30bc3f5b> as ?subject)"
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/regorg#RegisteredOrganization",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"pathToConceptScheme": [
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/2004/02/skos/core#inScheme"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.vlaanderen.be/ns/besluit#werkingsgebied",
|
||||
"http://www.opengis.net/ont/geosparql#sfWithin",
|
||||
"http://www.w3.org/2002/07/owl#sameAs",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/ns/adms#identifier",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"https://data.lblod.info/vocabularies/generiek/geplandeEindDatum",
|
||||
"http://www.w3.org/ns/org#purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
|
||||
"graphsFilter": [
|
||||
@@ -105,8 +155,11 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/adms#identifier"
|
||||
]
|
||||
},
|
||||
@@ -277,6 +330,16 @@
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://mu.semte.ch/vocabularies/ext/RepresentatiefOrgaanClassificatieCode",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
|
||||
"graphsFilter": [
|
||||
@@ -291,7 +354,8 @@
|
||||
"http://data.vlaanderen.be/ns/mandaat#bindingEinde",
|
||||
"http://data.vlaanderen.be/ns/mandaat#bindingStart",
|
||||
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
|
||||
"http://www.w3.org/ns/org#hasPost"
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie"
|
||||
],
|
||||
"additionalFilter": "?subject (<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan>/<http://www.w3.org/ns/org#classification>/<http://www.w3.org/2004/02/skos/core#inScheme>)|(<http://www.w3.org/ns/org#classification>/<http://www.w3.org/2004/02/skos/core#inScheme>) <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ."
|
||||
},
|
||||
@@ -420,6 +484,19 @@
|
||||
"http://www.w3.org/ns/org#role",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://mu.semte.ch/vocabularies/ext/GeregistreerdeOrganisatieClassificatieCode",
|
||||
"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"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"organizations": {
|
||||
"deltaInterval": 10000,
|
||||
"errorCreatorUri": "http://lblod.data.gift/services/delta-producer-publication-graph-maintainer-organizations",
|
||||
"exportConfigPath": "/config/organizations/export.json",
|
||||
"filesPath": "/organizations/files",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"publicationGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
|
||||
"publisherUri": "http://data.lblod.info/services/delta-production-json-diff-file-manager/organizations",
|
||||
"queuePollInterval": 3000,
|
||||
"relativeFilePath": "/deltas/organizations",
|
||||
"serveDeltaFiles": true,
|
||||
"skipMuAuthInitialSync": true,
|
||||
"skipMuAuthHealing": true,
|
||||
"useFileDiff": true,
|
||||
"healingInitialBatchSizeInsert": 1000,
|
||||
"useVirtuosoForExpensiveSelects": true,
|
||||
"errorGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"loginPath": "/organizations/login",
|
||||
"logOutgoingDelta": true
|
||||
},
|
||||
"public": {
|
||||
"deltaInterval": 10000,
|
||||
"errorCreatorUri": "http://lblod.data.gift/services/delta-producer-publication-graph-maintainer-public",
|
||||
"exportConfigPath": "/config/public/export.json",
|
||||
"filesPath": "/public/files",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"publicationGraph": "http://redpencil.data.gift/id/deltas/producer/public",
|
||||
"publisherUri": "http://data.lblod.info/services/delta-production-json-diff-file-manager/public",
|
||||
"queuePollInterval": 3000,
|
||||
"relativeFilePath": "/deltas/public",
|
||||
"serveDeltaFiles": true,
|
||||
"skipMuAuthInitialSync": true,
|
||||
"skipMuAuthHealing": true,
|
||||
"useFileDiff": true,
|
||||
"healingInitialBatchSizeInsert": 1000,
|
||||
"healingPatchPublicationGraphTaskOperation": 500,
|
||||
"useVirtuosoForExpensiveSelects": true,
|
||||
"errorGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"loginPath": "/public/login",
|
||||
"logOutgoingDelta": true
|
||||
},
|
||||
"organizations-public-info": {
|
||||
"deltaInterval": 10000,
|
||||
"errorCreatorUri": "http://lblod.data.gift/services/delta-producer-publication-graph-maintainer-organizations-public-info",
|
||||
"exportConfigPath": "/config/organizations-public-info/export.json",
|
||||
"filesPath": "/organizations-public-info/files",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations-public-info",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations-public-info",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"publicationGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-public-info",
|
||||
"publisherUri": "http://data.lblod.info/services/delta-production-json-diff-file-manager/organizations-public-info",
|
||||
"queuePollInterval": 3000,
|
||||
"relativeFilePath": "/deltas/organizations-public-info",
|
||||
"serveDeltaFiles": true,
|
||||
"skipMuAuthInitialSync": true,
|
||||
"skipMuAuthHealing": true,
|
||||
"useFileDiff": true,
|
||||
"healingInitialBatchSizeInsert": 1000,
|
||||
"healingPatchPublicationGraphTaskOperation": 500,
|
||||
"useVirtuosoForExpensiveSelects": true,
|
||||
"errorGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"loginPath": "/organizations-public-info/login",
|
||||
"logOutgoingDelta": true
|
||||
},
|
||||
"worship-posts": {
|
||||
"deltaInterval": 10000,
|
||||
"errorCreatorUri": "http://lblod.data.gift/services/delta-producer-publication-graph-maintainer-worship-posts",
|
||||
"exportConfigPath": "/config/worship-posts/export.json",
|
||||
"filesPath": "/worship-posts/files",
|
||||
"healingJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/worship-posts",
|
||||
"initialPublicationGraphSyncJobOperation": "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts",
|
||||
"jobsGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"publicationGraph": "http://redpencil.data.gift/id/deltas/producer/worship-posts",
|
||||
"publisherUri": "http://data.lblod.info/services/delta-production-json-diff-file-manager/worship-posts",
|
||||
"queuePollInterval": 3000,
|
||||
"relativeFilePath": "/deltas/worship-posts",
|
||||
"serveDeltaFiles": true,
|
||||
"skipMuAuthInitialSync": true,
|
||||
"skipMuAuthHealing": true,
|
||||
"useFileDiff": true,
|
||||
"healingInitialBatchSizeInsert": 1000,
|
||||
"healingPatchPublicationGraphTaskOperation": 500,
|
||||
"useVirtuosoForExpensiveSelects": true,
|
||||
"errorGraph": "http://mu.semte.ch/graphs/jobs",
|
||||
"loginPath": "/worship-posts/login",
|
||||
"logOutgoingDelta": true
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
@@ -42,6 +43,7 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
@@ -61,6 +63,7 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
@@ -121,12 +124,14 @@
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/ns/regorg#legalName",
|
||||
"http://www.w3.org/2004/02/skos/core#altLabel",
|
||||
"http://www.w3.org/ns/regorg#orgStatus",
|
||||
"http://www.w3.org/ns/org#hasPrimarySite",
|
||||
"http://www.w3.org/ns/org#hasSite",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/ns/adms#identifier"
|
||||
]
|
||||
},
|
||||
|
||||
@@ -33,7 +33,6 @@ export default [
|
||||
ignoreFromSelf: true
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
@@ -51,7 +50,6 @@ export default [
|
||||
ignoreFromSelf: true
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
@@ -69,7 +67,6 @@ export default [
|
||||
ignoreFromSelf: true
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
match: {
|
||||
predicate: {
|
||||
@@ -92,59 +89,7 @@ export default [
|
||||
match: {
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-pub-graph-maintainer-organizations/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: [
|
||||
"http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
|
||||
"http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-pub-graph-maintainer-organizations-public-info/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: [
|
||||
"http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
|
||||
"http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-pub-graph-maintainer-public/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: [
|
||||
"http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
|
||||
"http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
// anything
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-pub-graph-maintainer-worship-posts/delta',
|
||||
url: 'http://delta-producer-publication-graph-maintainer/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
|
||||
@@ -76,8 +76,12 @@ defmodule Dispatcher do
|
||||
Proxy.forward conn, path, "http://cache/organizations/"
|
||||
end
|
||||
|
||||
match "/registered-organizations/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://cache/registered-organizations/"
|
||||
end
|
||||
|
||||
match "/administrative-units/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://resource/administrative-units/"
|
||||
Proxy.forward conn, path, "http://cache/administrative-units/"
|
||||
end
|
||||
|
||||
match "/administrative-unit-classification-codes/*path", %{ accept: [:json], layer: :api} do
|
||||
@@ -88,12 +92,16 @@ defmodule Dispatcher do
|
||||
Proxy.forward conn, path, "http://cache/organization-classification-codes/"
|
||||
end
|
||||
|
||||
match "/registered-organization-classification-codes/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://cache/registered-organization-classification-codes/"
|
||||
end
|
||||
|
||||
match "/worship-administrative-units/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://resource/worship-administrative-units/"
|
||||
Proxy.forward conn, path, "http://cache/worship-administrative-units/"
|
||||
end
|
||||
|
||||
match "/worship-services/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://resource/worship-services/" # DISABLE CACHING FOR NOW (BUG OP-1404)
|
||||
Proxy.forward conn, path, "http://cache/worship-services/"
|
||||
end
|
||||
|
||||
match "/recognized-worship-types/*path", %{ accept: [:json], layer: :api} do
|
||||
@@ -101,7 +109,7 @@ defmodule Dispatcher do
|
||||
end
|
||||
|
||||
match "/central-worship-services/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://resource/central-worship-services/"
|
||||
Proxy.forward conn, path, "http://cache/central-worship-services/"
|
||||
end
|
||||
|
||||
match "/representative-bodies/*path", %{ accept: [:json], layer: :api} do
|
||||
@@ -117,7 +125,7 @@ defmodule Dispatcher do
|
||||
end
|
||||
|
||||
match "/local-involvements/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://resource/local-involvements/"
|
||||
Proxy.forward conn, path, "http://cache/local-involvements/"
|
||||
end
|
||||
|
||||
match "/identifiers/*path", %{ accept: [:json], layer: :api} do
|
||||
@@ -219,6 +227,11 @@ defmodule Dispatcher do
|
||||
Proxy.forward conn, path, "http://cache/decision-activities/"
|
||||
end
|
||||
|
||||
# There is currently no logic to invalidate the kboOrganization cache when wegwijse updates the content
|
||||
match "/kbo-organizations/*path", %{ accept: [:any], layer: :api} do
|
||||
Proxy.forward conn, path, "http://resource/kbo-organizations/"
|
||||
end
|
||||
|
||||
###############
|
||||
# LOGIN
|
||||
###############
|
||||
@@ -249,7 +262,6 @@ defmodule Dispatcher do
|
||||
###############################################################
|
||||
|
||||
match "/search/*path", %{ accept: %{ json: true }, layer: :api_services} do
|
||||
IO.puts("hey")
|
||||
Proxy.forward conn, path, "http://search/"
|
||||
end
|
||||
|
||||
@@ -305,12 +317,12 @@ defmodule Dispatcher do
|
||||
forward conn, path, "http://uri-info/"
|
||||
end
|
||||
|
||||
post "/create-administrative-unit-relationships/*path", %{ layer: :api_services, accept: %{ json: true } } do
|
||||
forward conn, path, "http://construct-administrative-unit-relationships/create-relationships/"
|
||||
post "/construct-organization-relationships/*path", %{ layer: :api_services, accept: %{ json: true } } do
|
||||
forward conn, path, "http://construct-organization-relationships/create-relationships/"
|
||||
end
|
||||
|
||||
post "/sync-ovo-number/*path", %{ layer: :api_services, accept: %{ json: true } } do
|
||||
forward conn, path, "http://sync-ovo-numbers/sync-from-kbo/"
|
||||
post "/kbo-data-sync/*path", %{ layer: :api_services, accept: %{ json: true } } do
|
||||
forward conn, path, "http://kbo-data-sync/sync-kbo-data/"
|
||||
end
|
||||
|
||||
get "/ldes/*path", %{ layer: :api_services } do
|
||||
@@ -354,7 +366,7 @@ defmodule Dispatcher do
|
||||
#################################################################
|
||||
|
||||
get "/sync/organizations/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-pub-graph-maintainer-organizations/files/"
|
||||
Proxy.forward conn, path, "http://delta-producer-publication-graph-maintainer/organizations/files/"
|
||||
end
|
||||
|
||||
#################################################################
|
||||
@@ -362,7 +374,7 @@ defmodule Dispatcher do
|
||||
#################################################################
|
||||
|
||||
get "/sync/organizations-public-info/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-pub-graph-maintainer-organizations-public-info/files/"
|
||||
Proxy.forward(conn, path, "http://delta-producer-publication-graph-maintainer/organizations-public-info/files/")
|
||||
end
|
||||
|
||||
#################################################################
|
||||
@@ -370,7 +382,7 @@ defmodule Dispatcher do
|
||||
#################################################################
|
||||
|
||||
get "/sync/public/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-pub-graph-maintainer-public/files/"
|
||||
Proxy.forward(conn, path, "http://delta-producer-publication-graph-maintainer/public/files/")
|
||||
end
|
||||
|
||||
#################################################################
|
||||
@@ -378,7 +390,7 @@ defmodule Dispatcher do
|
||||
#################################################################
|
||||
|
||||
get "/sync/worship-posts/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-pub-graph-maintainer-worship-posts/files/"
|
||||
Proxy.forward(conn, path, "http://delta-producer-publication-graph-maintainer/worship-posts/files/")
|
||||
end
|
||||
|
||||
#################################################################
|
||||
|
||||
6
config/kalliope/security-dev.json
Normal file
6
config/kalliope/security-dev.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"allowedIpAddresses": [],
|
||||
"authSource": "/config/source.json",
|
||||
"authOutput": "/config/output.json"
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
# disabled on dev
|
||||
application:
|
||||
security:
|
||||
enabled: false
|
||||
spring:
|
||||
autoconfigure:
|
||||
exclude:
|
||||
- org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
|
||||
- org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
|
||||
@@ -1,72 +0,0 @@
|
||||
|
||||
const PREFIXES = `
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>`
|
||||
|
||||
const contextConfig = {
|
||||
addTypes: {
|
||||
scope: 'all', // 'inserts, 'deletes', 'all' or none. To add rdf:type to subjects of inserts, deletes or both
|
||||
exhausitive: false, // true or false: find all types for a subject, even if one is already present in delta
|
||||
},
|
||||
contextQueries: [
|
||||
// Case Leidnggevenden
|
||||
// They can be triggered when being inserted or when their link to a bestuursfunctie is added
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
subjectType: "lblodlg:Functionaris"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?functionaris org:holds ?bestuursfunctie ;
|
||||
?p ?o .
|
||||
?orgaanInTime lblodlg:heeftBestuursfunctie ?bestuursfunctie ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/landing-zone/leidinggevenden> {
|
||||
VALUES ?functionaris { ${subject} }
|
||||
?functionaris org:holds ?bestuursfunctie ;
|
||||
?p ?o .
|
||||
?orgaanInTime lblodlg:heeftBestuursfunctie ?bestuursfunctie ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: {
|
||||
predicateValue: "org:holds"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?functionaris org:holds ?bestuursfunctie ;
|
||||
?p ?o .
|
||||
?orgaanInTime lblodlg:heeftBestuursfunctie ?bestuursfunctie ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/landing-zone/leidinggevenden> {
|
||||
VALUES ?functionaris { ${subject} }
|
||||
?functionaris org:holds ?bestuursfunctie ;
|
||||
?p ?o .
|
||||
?orgaanInTime lblodlg:heeftBestuursfunctie ?bestuursfunctie ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
}
|
||||
}`
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
contextConfig,
|
||||
PREFIXES
|
||||
};
|
||||
@@ -1,85 +0,0 @@
|
||||
const {
|
||||
transformStatements,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph,
|
||||
} = require('./util');
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
* Note: <share://file/data> will be ADDED to it's own graph.
|
||||
* We take only care of adding them, not updating triples, this is a TODO
|
||||
* @param { mu, muAuthSudo } lib - The provided libraries from the host service.
|
||||
* @param { termObjectChangeSets: { deletes, inserts } } data - The fetched changes sets, which objects of serialized Terms
|
||||
* [ {
|
||||
* graph: "<http://foo>",
|
||||
* subject: "<http://bar>",
|
||||
* predicate: "<http://baz>",
|
||||
* object: "<http://boom>^^<http://datatype>"
|
||||
* }
|
||||
* ]
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, fetch } = lib;
|
||||
let { termObjectChangeSets, termObjectChangeSetsWithContext } = data;
|
||||
|
||||
// Both arrays are the same length, so we can zip them together for easier processing
|
||||
zippedChangeSets = termObjectChangeSets.map((o, i) => ({
|
||||
original: o,
|
||||
withContext: termObjectChangeSetsWithContext[i]
|
||||
}));
|
||||
|
||||
console.log(`Received ${zippedChangeSets.length} change sets`)
|
||||
|
||||
for (let { original, withContext } of zippedChangeSets) {
|
||||
let originalDeletes, originalInserts, insertsWithContext, deletesWithContext;
|
||||
try {
|
||||
originalInserts = original.inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
originalDeletes = original.deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
} catch (e) {
|
||||
console.log(`Error while processing change set: ${e}`);
|
||||
console.log(`Original change set: ${JSON.stringify(original)}`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Extra context needed for mapping from DL to OP model and filtering based on type.
|
||||
try {
|
||||
insertsWithContext = withContext.inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
deletesWithContext = withContext.deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
} catch (e) {
|
||||
console.log(`Error while processing change set with context: ${e}`);
|
||||
console.log(`Change set with context: ${JSON.stringify(withContext)}`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (originalDeletes.length) {
|
||||
// Map deletes from DL to OP model
|
||||
const transformedDeletes = await transformStatements(fetch, deletesWithContext);
|
||||
|
||||
if (!transformedDeletes.length) {
|
||||
console.log(`Warn: Delete statements mapped to empty result.`);
|
||||
console.log(`Input: ${deletesWithContext}`);
|
||||
console.log(`Output: ${transformedDeletes}`);
|
||||
} else {
|
||||
await deleteFromTargetGraph(lib, transformedDeletes);
|
||||
}
|
||||
}
|
||||
|
||||
if (originalInserts.length) {
|
||||
// Map inserts from DL to OP model
|
||||
const transformedInserts = await transformStatements(fetch, insertsWithContext);
|
||||
|
||||
if (!transformedInserts.length) {
|
||||
console.log(`Warn: Insert statements mapped to empty result.`);
|
||||
console.log(`Input: ${insertsWithContext}`);
|
||||
console.log(`Output: ${transformedInserts}`);
|
||||
} else {
|
||||
await insertIntoTargetGraph(lib, transformedInserts);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
@@ -1,168 +0,0 @@
|
||||
const {
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
TARGET_GRAPH,
|
||||
LANDING_ZONE_GRAPH,
|
||||
BATCH_SIZE,
|
||||
} = require('./config');
|
||||
|
||||
async function batchedDbUpdate(
|
||||
muUpdate,
|
||||
graph,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
batchSize,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
operation = 'INSERT'
|
||||
) {
|
||||
|
||||
for (let i = 0; i < triples.length; i += batchSize) {
|
||||
console.log(`Inserting triples in batch: ${i}-${i + batchSize}`);
|
||||
|
||||
const batch = triples.slice(i, i + batchSize).join('\n');
|
||||
|
||||
const insertCall = async () => {
|
||||
await muUpdate(`
|
||||
${operation} DATA {
|
||||
GRAPH <${graph}> {
|
||||
${batch}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(insertCall, 0, maxAttempts, sleepTimeOnFail);
|
||||
|
||||
console.log(`Sleeping before next query execution: ${sleepBetweenBatches}`);
|
||||
await new Promise(r => setTimeout(r, sleepBetweenBatches));
|
||||
}
|
||||
}
|
||||
|
||||
async function operationWithRetry(callback,
|
||||
attempt,
|
||||
maxAttempts,
|
||||
sleepTimeOnFail) {
|
||||
try {
|
||||
if (typeof callback === "function")
|
||||
return await callback();
|
||||
else // Catch error from promise - not how I would do it normally, but allows re use of existing code.
|
||||
return await callback;
|
||||
}
|
||||
catch (e) {
|
||||
console.log(`Operation failed for ${callback.toString()}, attempt: ${attempt} of ${maxAttempts}`);
|
||||
console.log(`Error: ${e}`);
|
||||
console.log(`Sleeping ${sleepTimeOnFail} ms`);
|
||||
|
||||
if (attempt >= maxAttempts) {
|
||||
console.log(`Max attempts reached for ${callback.toString()}, giving up`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
await new Promise(r => setTimeout(r, sleepTimeOnFail));
|
||||
return operationWithRetry(callback, ++attempt, maxAttempts, sleepTimeOnFail);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits an array into two parts, a part that passes and a part that fails a predicate function.
|
||||
* Credits: https://github.com/benjay10
|
||||
* @public
|
||||
* @function partition
|
||||
* @param {Array} arr - Array to be partitioned
|
||||
* @param {Function} fn - Function that accepts single argument: an element of the array, and should return a truthy or falsy value.
|
||||
* @returns {Object} Object that contains keys passes and fails, each representing an array with elemets that pass or fail the predicate respectively
|
||||
*/
|
||||
function partition(arr, fn) {
|
||||
let passes = [], fails = [];
|
||||
arr.forEach((item) => (fn(item) ? passes : fails).push(item));
|
||||
return { passes, fails };
|
||||
}
|
||||
|
||||
/**
|
||||
* Send triples to reasoning service for conversion
|
||||
*
|
||||
*/
|
||||
async function transformTriples(fetch, triples, mapping) {
|
||||
return await operationWithRetry(mainConversion(fetch, triples, mapping), 0,
|
||||
MAX_REASONING_RETRY_ATTEMPTS, SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION);
|
||||
}
|
||||
|
||||
async function mainConversion(fetch, triples, mapping) {
|
||||
let formdata = new URLSearchParams();
|
||||
formdata.append("data", triples);
|
||||
|
||||
let requestOptions = {
|
||||
method: 'POST',
|
||||
body: formdata,
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}`, requestOptions)
|
||||
return await response.text();
|
||||
}
|
||||
|
||||
async function transformStatements(fetch, triples, mapping = 'main') {
|
||||
console.log(`Received ${JSON.stringify(triples)} to transform`);
|
||||
const transformedTriples = await transformTriples(fetch, triples.join('\n'), mapping);
|
||||
statements = transformedTriples ? transformedTriples.replace(/\n{2,}/g, '').split('\n') : [];
|
||||
console.log(`CONVERSION: FROM ${triples.length} triples to ${statements.length}`);
|
||||
return statements;
|
||||
}
|
||||
|
||||
async function deleteFromTargetGraph(lib, statements) {
|
||||
console.log(`Deleting ${statements.length} statements from target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'DELETE');
|
||||
}
|
||||
|
||||
async function insertIntoTargetGraph(lib, statements) {
|
||||
console.log(`Inserting ${statements.length} statements into target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'INSERT');
|
||||
}
|
||||
|
||||
async function transformLandingZoneGraph(fetch, endpoint, mapping = 'main') {
|
||||
console.log(`Transforming landing zone graph: ${LANDING_ZONE_GRAPH}`);
|
||||
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}?data=${encodeURIComponent(`${endpoint}?default-graph-uri=&query=CONSTRUCT+%7B%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D+WHERE+%7B%0D%0A+GRAPH+<${LANDING_ZONE_GRAPH}>+%7B%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D%0D%0A%7D&should-sponge=&format=text%2Fplain&timeout=0&run=+Run+Query`)}`);
|
||||
const text = await response.text();
|
||||
const statements = text.replace(/\n{2,}/g, '').split('\n');
|
||||
|
||||
return statements;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
batchedDbUpdate,
|
||||
partition,
|
||||
transformStatements,
|
||||
transformLandingZoneGraph,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
PREFIX schema: <http://schema.org/>
|
||||
|
||||
CONSTRUCT {
|
||||
?s schema:telephone ?cleanedPhoneNumber .
|
||||
} WHERE {
|
||||
?s schema:telephone ?phoneNumber .
|
||||
|
||||
# Remove all non digits
|
||||
BIND(REPLACE(?phoneNumber, """[^+\\d]""", "") AS ?scrapeResult)
|
||||
|
||||
# Replace leading 00 with +
|
||||
BIND(REPLACE(?scrapeResult, """^00""", "+") AS ?replacedZeroZero)
|
||||
|
||||
BIND(REPLACE(?replacedZeroZero, """^0""", "+32") AS ?defaultBe)
|
||||
|
||||
BIND(REPLACE(?defaultBe, """\\+320""", "+32") AS ?extendedDefaultBe)
|
||||
|
||||
BIND(REPLACE(?extendedDefaultBe, """^320""", "+32") AS ?finalResult)
|
||||
|
||||
BIND(IF(REGEX(?finalResult, """^\\+((32\\d{8})|(324\\d{8})|((?!32)\\d+))$"""), CONCAT("tel:", ?finalResult), ?phoneNumber) AS ?cleanedPhoneNumber)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s mandaat:einde ?endDateTime .
|
||||
} WHERE {
|
||||
?s mandaat:einde ?endDate .
|
||||
|
||||
BIND(SUBSTR(STR(?endDate), 1, 10) as ?endDateWithoutTimezone)
|
||||
BIND(STRDT(CONCAT(?endDateWithoutTimezone, 'T02:00:00'), xsd:dateTime) as ?endDateTime)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s mandaat:start ?startDateTime .
|
||||
} WHERE {
|
||||
?s mandaat:start ?startDate .
|
||||
|
||||
BIND(SUBSTR(STR(?startDate), 1, 10) as ?startDateWithoutTimezone)
|
||||
BIND(STRDT(CONCAT(?startDateWithoutTimezone, 'T02:00:00'), xsd:dateTime) as ?startDateTime)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s a dc_terms:Agent .
|
||||
} WHERE {
|
||||
?s a ?type .
|
||||
|
||||
VALUES ?type {
|
||||
lblodlg:Functionaris
|
||||
person:Person
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
|
||||
CONSTRUCT {
|
||||
?s a ch:AgentInPositie .
|
||||
} WHERE {
|
||||
?s a ?type .
|
||||
|
||||
VALUES ?type {
|
||||
lblodlg:Functionaris
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
CONSTRUCT {
|
||||
?o org:heldBy ?s.
|
||||
}
|
||||
WHERE {
|
||||
?s org:holds ?o.
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://www.w3.org/ns/locn#Address>;
|
||||
?p ?o.
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
CONSTRUCT {
|
||||
?s <http://schema.org/contactPoint> ?contactpoint.
|
||||
}
|
||||
WHERE {
|
||||
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie>.
|
||||
?s <http://schema.org/contactPoint> ?contactpoint.
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://schema.org/ContactPoint>;
|
||||
?p ?o.
|
||||
FILTER (?p NOT IN (<http://schema.org/telephone>))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris>;
|
||||
?p ?o.
|
||||
|
||||
FILTER (?p NOT IN (mandaat:start, mandaat:einde))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://www.w3.org/ns/person#Person>;
|
||||
?p ?o.
|
||||
|
||||
FILTER (?p IN (
|
||||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>,
|
||||
<http://xmlns.com/foaf/0.1/familyName>,
|
||||
<http://mu.semte.ch/vocabularies/core/uuid>
|
||||
))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
|
||||
|
||||
# First name: persoon:gebruikteVoornaam => foaf:givenName
|
||||
# Alternatieve voornaam: foaf:name => persoon:gebruikteVoornaam
|
||||
|
||||
# We do both in one query with an OPTIONAL because they need to happen simultaneously
|
||||
# not to end up in a loop
|
||||
|
||||
# Part 1
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:gebruikteVoornaam ?name .
|
||||
} WHERE {
|
||||
?s a person:Person;
|
||||
foaf:name ?name .
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
|
||||
|
||||
# First name: persoon:gebruikteVoornaam => foaf:givenName
|
||||
# Alternatieve voornaam: foaf:name => persoon:gebruikteVoornaam
|
||||
|
||||
# We do both in one query with an OPTIONAL because they need to happen simultaneously
|
||||
# not to end up in a loop
|
||||
|
||||
# Part 2
|
||||
|
||||
CONSTRUCT {
|
||||
?s foaf:givenName ?gebruikteVoornaam .
|
||||
} WHERE {
|
||||
?s a person:Person ;
|
||||
persoon_loket:gebruikteVoornaam ?gebruikteVoornaam .
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
const BATCH_SIZE = parseInt(process.env.BATCH_SIZE) || 100;
|
||||
const MU_CALL_SCOPE_ID_INITIAL_SYNC = process.env.MU_CALL_SCOPE_ID_INITIAL_SYNC || 'http://redpencil.data.gift/id/concept/muScope/deltas/consumer/initialSync';
|
||||
const BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES = process.env.BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES == 'true' ? true : false;
|
||||
const DIRECT_DATABASE_ENDPOINT = process.env.DIRECT_DATABASE_ENDPOINT || 'http://triplestore:8890/sparql';
|
||||
const MAX_DB_RETRY_ATTEMPTS = parseInt(process.env.MAX_DB_RETRY_ATTEMPTS || 5);
|
||||
const MAX_REASONING_RETRY_ATTEMPTS = parseInt(process.env.MAX_REASONING_RETRY_ATTEMPTS || 5);
|
||||
const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 1000);
|
||||
const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
|
||||
const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
|
||||
|
||||
// Graphs
|
||||
const TARGET_GRAPH = process.env.TARGET_GRAPH || `http://mu.semte.ch/graphs/administrative-unit`;
|
||||
const LANDING_ZONE_GRAPH = process.env.DCR_LANDING_ZONE_GRAPH || `http://mu.semte.ch/graphs/landing-zone/leidinggevenden`;
|
||||
|
||||
// ENDPOINTS
|
||||
const LANDING_ZONE_DATABASE = process.env.DCR_LANDING_ZONE_DATABASE || 'db';
|
||||
const LANDING_ZONE_DATABASE_ENDPOINT = process.env.DCR_LANDING_ZONE_DATABASE_ENDPOINT || `http://${LANDING_ZONE_DATABASE}:8890/sparql`;
|
||||
|
||||
module.exports = {
|
||||
BATCH_SIZE,
|
||||
MU_CALL_SCOPE_ID_INITIAL_SYNC,
|
||||
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
DIRECT_DATABASE_ENDPOINT,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
LANDING_ZONE_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT,
|
||||
TARGET_GRAPH
|
||||
};
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
|
||||
const PREFIXES = `
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>`
|
||||
|
||||
const contextConfig = {
|
||||
addTypes: {
|
||||
scope: 'all', // 'inserts, 'deletes', 'all' or none. To add rdf:type to subjects of inserts, deletes or both
|
||||
exhausitive: false, // true or false: find all types for a subject, even if one is already present in delta
|
||||
},
|
||||
contextQueries: [
|
||||
// Case Mandatarissen
|
||||
// They can be triggered when being inserted or when their link to a mandate is added
|
||||
{
|
||||
trigger: { // subjectType or predicateValue
|
||||
subjectType: "mandaat:Mandataris"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?mandataris org:holds ?mandate ;
|
||||
?p ?o .
|
||||
?orgaanInTime org:hasPost ?mandate ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/landing-zone/mandatarissen> {
|
||||
VALUES ?mandataris { ${subject} }
|
||||
?mandataris org:holds ?mandate ;
|
||||
?p ?o .
|
||||
?orgaanInTime org:hasPost ?mandate ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
}
|
||||
}`
|
||||
},
|
||||
{
|
||||
trigger: {
|
||||
predicateValue: "org:holds"
|
||||
},
|
||||
queryTemplate: (subject) => `
|
||||
${PREFIXES}
|
||||
CONSTRUCT {
|
||||
?mandataris org:holds ?mandate ;
|
||||
?p ?o .
|
||||
?orgaanInTime org:hasPost ?mandate ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/landing-zone/mandatarissen> {
|
||||
VALUES ?mandataris { ${subject} }
|
||||
?mandataris org:holds ?mandate ;
|
||||
?p ?o .
|
||||
?orgaanInTime org:hasPost ?mandate ;
|
||||
mandaat:isTijdspecialisatieVan ?orgaan .
|
||||
?orgaan besluit:bestuurt ?eenheid .
|
||||
?eenheid besluit:classificatie ?classification .
|
||||
}
|
||||
}`
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
contextConfig,
|
||||
PREFIXES
|
||||
};
|
||||
@@ -1,85 +0,0 @@
|
||||
const {
|
||||
transformStatements,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph,
|
||||
} = require('./util');
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
* Note: <share://file/data> will be ADDED to it's own graph.
|
||||
* We take only care of adding them, not updating triples, this is a TODO
|
||||
* @param { mu, muAuthSudo } lib - The provided libraries from the host service.
|
||||
* @param { termObjectChangeSets: { deletes, inserts } } data - The fetched changes sets, which objects of serialized Terms
|
||||
* [ {
|
||||
* graph: "<http://foo>",
|
||||
* subject: "<http://bar>",
|
||||
* predicate: "<http://baz>",
|
||||
* object: "<http://boom>^^<http://datatype>"
|
||||
* }
|
||||
* ]
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, fetch } = lib;
|
||||
let { termObjectChangeSets, termObjectChangeSetsWithContext } = data;
|
||||
|
||||
// Both arrays are the same length, so we can zip them together for easier processing
|
||||
zippedChangeSets = termObjectChangeSets.map((o, i) => ({
|
||||
original: o,
|
||||
withContext: termObjectChangeSetsWithContext[i]
|
||||
}));
|
||||
|
||||
console.log(`Received ${zippedChangeSets.length} change sets`)
|
||||
|
||||
for (let { original, withContext } of zippedChangeSets) {
|
||||
let originalDeletes, originalInserts, insertsWithContext, deletesWithContext;
|
||||
try {
|
||||
originalInserts = original.inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
originalDeletes = original.deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
} catch (e) {
|
||||
console.log(`Error while processing change set: ${e}`);
|
||||
console.log(`Original change set: ${JSON.stringify(original)}`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Extra context needed for mapping from DL to OP model and filtering based on type.
|
||||
try {
|
||||
insertsWithContext = withContext.inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
deletesWithContext = withContext.deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
} catch (e) {
|
||||
console.log(`Error while processing change set with context: ${e}`);
|
||||
console.log(`Change set with context: ${JSON.stringify(withContext)}`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (originalDeletes.length) {
|
||||
// Map deletes from DL to OP model
|
||||
const transformedDeletes = await transformStatements(fetch, deletesWithContext);
|
||||
|
||||
if (!transformedDeletes.length) {
|
||||
console.log(`Warn: Delete statements mapped to empty result.`);
|
||||
console.log(`Input: ${deletesWithContext}`);
|
||||
console.log(`Output: ${transformedDeletes}`);
|
||||
} else {
|
||||
await deleteFromTargetGraph(lib, transformedDeletes);
|
||||
}
|
||||
}
|
||||
|
||||
if (originalInserts.length) {
|
||||
// Map inserts from DL to OP model
|
||||
const transformedInserts = await transformStatements(fetch, insertsWithContext);
|
||||
|
||||
if (!transformedInserts.length) {
|
||||
console.log(`Warn: Insert statements mapped to empty result.`);
|
||||
console.log(`Input: ${insertsWithContext}`);
|
||||
console.log(`Output: ${transformedInserts}`);
|
||||
} else {
|
||||
await insertIntoTargetGraph(lib, transformedInserts);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
@@ -1,85 +0,0 @@
|
||||
const { batchedDbUpdate, transformLandingZoneGraph } = require('./util');
|
||||
const {
|
||||
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
DIRECT_DATABASE_ENDPOINT,
|
||||
MU_CALL_SCOPE_ID_INITIAL_SYNC,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
TARGET_GRAPH,
|
||||
LANDING_ZONE_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT
|
||||
} = require('./config');
|
||||
|
||||
const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT : process.env.MU_SPARQL_ENDPOINT;
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
* @param { mu, muAuthSudo } lib - The provided libraries from the host service.
|
||||
* @param { termObjects } data - The fetched quad information, which objects of serialized Terms
|
||||
* [ {
|
||||
* graph: "<http://foo>",
|
||||
* subject: "<http://bar>",
|
||||
* predicate: "<http://baz>",
|
||||
* object: "<http://boom>^^<http://datatype>"
|
||||
* }
|
||||
* ]
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, muAuthSudo } = lib;
|
||||
const { termObjects } = data;
|
||||
|
||||
// Steps:
|
||||
// 1. Write the triples to the landing zone graph - withouth any mapping or filtering
|
||||
// 2. One-time reasoning run with the full landing zone graph and write the results to the target graph (on-finish)
|
||||
|
||||
if (BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES) {
|
||||
console.warn(`Service configured to skip MU_AUTH!`);
|
||||
}
|
||||
console.log(`Using ${endpoint} to insert triples`);
|
||||
|
||||
if (termObjects.length) {
|
||||
const originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
LANDING_ZONE_GRAPH,
|
||||
originalInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
LANDING_ZONE_DATABASE_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async function onFinishInitialIngest(lib) {
|
||||
const { muAuthSudo, fetch } = lib;
|
||||
|
||||
console.log(`!! On-finish triggered !!`);
|
||||
|
||||
const transformedInsertTriples = await transformLandingZoneGraph(fetch, endpoint);
|
||||
|
||||
console.log(`Transformed ${transformedInsertTriples.length} triples`);
|
||||
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
transformedInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
endpoint,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch,
|
||||
onFinishInitialIngest
|
||||
};
|
||||
@@ -1,168 +0,0 @@
|
||||
const {
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
TARGET_GRAPH,
|
||||
LANDING_ZONE_GRAPH,
|
||||
BATCH_SIZE
|
||||
} = require('./config');
|
||||
|
||||
async function batchedDbUpdate(
|
||||
muUpdate,
|
||||
graph,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
batchSize,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
operation = 'INSERT'
|
||||
) {
|
||||
|
||||
for (let i = 0; i < triples.length; i += batchSize) {
|
||||
console.log(`Inserting triples in batch: ${i}-${i + batchSize}`);
|
||||
|
||||
const batch = triples.slice(i, i + batchSize).join('\n');
|
||||
|
||||
const insertCall = async () => {
|
||||
await muUpdate(`
|
||||
${operation} DATA {
|
||||
GRAPH <${graph}> {
|
||||
${batch}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(insertCall, 0, maxAttempts, sleepTimeOnFail);
|
||||
|
||||
console.log(`Sleeping before next query execution: ${sleepBetweenBatches}`);
|
||||
await new Promise(r => setTimeout(r, sleepBetweenBatches));
|
||||
}
|
||||
}
|
||||
|
||||
async function operationWithRetry(callback,
|
||||
attempt,
|
||||
maxAttempts,
|
||||
sleepTimeOnFail) {
|
||||
try {
|
||||
if (typeof callback === "function")
|
||||
return await callback();
|
||||
else // Catch error from promise - not how I would do it normally, but allows re use of existing code.
|
||||
return await callback;
|
||||
}
|
||||
catch (e) {
|
||||
console.log(`Operation failed for ${callback.toString()}, attempt: ${attempt} of ${maxAttempts}`);
|
||||
console.log(`Error: ${e}`);
|
||||
console.log(`Sleeping ${sleepTimeOnFail} ms`);
|
||||
|
||||
if (attempt >= maxAttempts) {
|
||||
console.log(`Max attempts reached for ${callback.toString()}, giving up`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
await new Promise(r => setTimeout(r, sleepTimeOnFail));
|
||||
return operationWithRetry(callback, ++attempt, maxAttempts, sleepTimeOnFail);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits an array into two parts, a part that passes and a part that fails a predicate function.
|
||||
* Credits: https://github.com/benjay10
|
||||
* @public
|
||||
* @function partition
|
||||
* @param {Array} arr - Array to be partitioned
|
||||
* @param {Function} fn - Function that accepts single argument: an element of the array, and should return a truthy or falsy value.
|
||||
* @returns {Object} Object that contains keys passes and fails, each representing an array with elemets that pass or fail the predicate respectively
|
||||
*/
|
||||
function partition(arr, fn) {
|
||||
let passes = [], fails = [];
|
||||
arr.forEach((item) => (fn(item) ? passes : fails).push(item));
|
||||
return { passes, fails };
|
||||
}
|
||||
|
||||
/**
|
||||
* Send triples to reasoning service for conversion
|
||||
*
|
||||
*/
|
||||
async function transformTriples(fetch, triples, mapping) {
|
||||
return await operationWithRetry(mainConversion(fetch, triples, mapping), 0,
|
||||
MAX_REASONING_RETRY_ATTEMPTS, SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION);
|
||||
}
|
||||
|
||||
async function mainConversion(fetch, triples, mapping) {
|
||||
let formdata = new URLSearchParams();
|
||||
formdata.append("data", triples);
|
||||
|
||||
let requestOptions = {
|
||||
method: 'POST',
|
||||
body: formdata,
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}`, requestOptions)
|
||||
return await response.text();
|
||||
}
|
||||
|
||||
async function transformStatements(fetch, triples, mapping = 'main') {
|
||||
console.log(`Received ${JSON.stringify(triples)} to transform`);
|
||||
const transformedTriples = await transformTriples(fetch, triples.join('\n'), mapping);
|
||||
statements = transformedTriples ? transformedTriples.replace(/\n{2,}/g, '').split('\n') : [];
|
||||
console.log(`CONVERSION: FROM ${triples.length} triples to ${statements.length}`);
|
||||
return statements;
|
||||
}
|
||||
|
||||
async function deleteFromTargetGraph(lib, statements) {
|
||||
console.log(`Deleting ${statements.length} statements from target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'DELETE');
|
||||
}
|
||||
|
||||
async function insertIntoTargetGraph(lib, statements) {
|
||||
console.log(`Inserting ${statements.length} statements into target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'INSERT');
|
||||
}
|
||||
|
||||
async function transformLandingZoneGraph(fetch, endpoint, mapping = 'main') {
|
||||
console.log(`Transforming landing zone graph: ${LANDING_ZONE_GRAPH}`);
|
||||
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}?data=${encodeURIComponent(`${endpoint}?default-graph-uri=&query=CONSTRUCT+%7B%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D+WHERE+%7B%0D%0A+GRAPH+<${LANDING_ZONE_GRAPH}>+%7B%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D%0D%0A%7D&should-sponge=&format=text%2Fplain&timeout=0&run=+Run+Query`)}`);
|
||||
const text = await response.text();
|
||||
const statements = text.replace(/\n{2,}/g, '').split('\n');
|
||||
|
||||
return statements;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
batchedDbUpdate,
|
||||
partition,
|
||||
transformStatements,
|
||||
transformLandingZoneGraph,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s mandaat:einde ?endDateTime .
|
||||
} WHERE {
|
||||
?s mandaat:einde ?endDate .
|
||||
|
||||
BIND(SUBSTR(STR(?endDate), 1, 10) as ?endDateWithoutTimezone)
|
||||
BIND(STRDT(CONCAT(?endDateWithoutTimezone, 'T02:00:00'), xsd:dateTime) as ?endDateTime)
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s mandaat:start ?startDateTime .
|
||||
} WHERE {
|
||||
?s mandaat:start ?startDate .
|
||||
|
||||
BIND(SUBSTR(STR(?startDate), 1, 10) as ?startDateWithoutTimezone)
|
||||
BIND(STRDT(CONCAT(?startDateWithoutTimezone, 'T02:00:00'), xsd:dateTime) as ?startDateTime)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s a dc_terms:Agent .
|
||||
} WHERE {
|
||||
?s a ?type .
|
||||
|
||||
VALUES ?type {
|
||||
mandaat:Mandataris
|
||||
person:Person
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s a ch:AgentInPositie .
|
||||
} WHERE {
|
||||
?s a ?type .
|
||||
VALUES ?type {
|
||||
mandaat:Mandataris
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
CONSTRUCT {
|
||||
?o org:heldBy ?s.
|
||||
}
|
||||
WHERE {
|
||||
?s org:holds ?o.
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris>;
|
||||
<http://www.w3.org/ns/org#holds> ?mandate;
|
||||
?p ?o.
|
||||
|
||||
?orgaanInTime <http://www.w3.org/ns/org#hasPost> ?mandate ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#isTijdspecialisatieVan> ?orgaan .
|
||||
|
||||
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
|
||||
?bestuur <http://data.vlaanderen.be/ns/besluit#classificatie> ?classification .
|
||||
|
||||
|
||||
FILTER(?classification IN (
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000>,
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>,
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>,
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000003>
|
||||
))
|
||||
|
||||
FILTER (?p NOT IN (mandaat:start, mandaat:einde))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://www.w3.org/ns/person#Person>;
|
||||
?p ?o.
|
||||
|
||||
FILTER (?p IN (
|
||||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>,
|
||||
<http://xmlns.com/foaf/0.1/familyName>,
|
||||
<http://mu.semte.ch/vocabularies/core/uuid>
|
||||
))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
|
||||
|
||||
# First name: persoon:gebruikteVoornaam => foaf:givenName
|
||||
# Alternatieve voornaam: foaf:name => persoon:gebruikteVoornaam
|
||||
|
||||
# We do both in one query with an OPTIONAL because they need to happen simultaneously
|
||||
# not to end up in a loop
|
||||
|
||||
# Part 1
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:gebruikteVoornaam ?name .
|
||||
} WHERE {
|
||||
?s a person:Person;
|
||||
foaf:name ?name .
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
|
||||
|
||||
# First name: persoon:gebruikteVoornaam => foaf:givenName
|
||||
# Alternatieve voornaam: foaf:name => persoon:gebruikteVoornaam
|
||||
|
||||
# We do both in one query with an OPTIONAL because they need to happen simultaneously
|
||||
# not to end up in a loop
|
||||
|
||||
# Part 2
|
||||
|
||||
CONSTRUCT {
|
||||
?s foaf:givenName ?gebruikteVoornaam .
|
||||
} WHERE {
|
||||
?s a person:Person ;
|
||||
persoon_loket:gebruikteVoornaam ?gebruikteVoornaam .
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
PREFIX schema: <http://schema.org/>
|
||||
|
||||
CONSTRUCT {
|
||||
?s schema:telephone ?cleanedPhoneNumber .
|
||||
} WHERE {
|
||||
?s schema:telephone ?phoneNumber .
|
||||
|
||||
# Remove all non digits
|
||||
BIND(REPLACE(?phoneNumber, """[^+\\d]""", "") AS ?scrapeResult)
|
||||
|
||||
# Replace leading 00 with +
|
||||
BIND(REPLACE(?scrapeResult, """^00""", "+") AS ?replacedZeroZero)
|
||||
|
||||
BIND(REPLACE(?replacedZeroZero, """^0""", "+32") AS ?defaultBe)
|
||||
|
||||
BIND(REPLACE(?defaultBe, """\\+320""", "+32") AS ?extendedDefaultBe)
|
||||
|
||||
BIND(REPLACE(?extendedDefaultBe, """^320""", "+32") AS ?finalResult)
|
||||
|
||||
BIND(IF(REGEX(?finalResult, """^\\+((32\\d{8})|(324\\d{8})|((?!32)\\d+))$"""), CONCAT("tel:", ?finalResult), ?phoneNumber) AS ?cleanedPhoneNumber)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s ch:eindedatum ?endDateTime .
|
||||
} WHERE {
|
||||
?s ch:eindedatum ?endDate .
|
||||
|
||||
BIND(STRDT(CONCAT(STR(?endDate), 'T02:00:00'), xsd:dateTime) as ?endDateTime)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s ch:startdatum ?startDateTime .
|
||||
} WHERE {
|
||||
?s ch:startdatum ?startDate .
|
||||
|
||||
BIND(STRDT(CONCAT(STR(?startDate), 'T02:00:00'), xsd:dateTime) as ?startDateTime)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s ere:geplandeEinddatumAanstelling ?dateTime .
|
||||
} WHERE {
|
||||
?s ere:geplandeEinddatumAanstelling ?date .
|
||||
|
||||
BIND(STRDT(CONCAT(STR(?date), 'T02:00:00'), xsd:dateTime) as ?dateTime)
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s a dc_terms:Agent .
|
||||
} WHERE {
|
||||
?s a ?type .
|
||||
|
||||
VALUES ?type {
|
||||
lblodlg:Functionaris
|
||||
mandaat:Mandataris
|
||||
ere:EredienstMandataris
|
||||
ere:RolBedienaar
|
||||
person:Person
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
|
||||
CONSTRUCT {
|
||||
?s a ch:AgentInPositie .
|
||||
} WHERE {
|
||||
?s a ?type .
|
||||
|
||||
VALUES ?type {
|
||||
lblodlg:Functionaris
|
||||
mandaat:Mandataris
|
||||
ere:EredienstMandataris
|
||||
ere:RolBedienaar
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
CONSTRUCT {
|
||||
?o org:holds ?s.
|
||||
}
|
||||
WHERE {
|
||||
?s org:heldBy ?o.
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
CONSTRUCT {
|
||||
?o org:heldBy ?s.
|
||||
}
|
||||
WHERE {
|
||||
?s org:holds ?o.
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://www.w3.org/ns/locn#Address>;
|
||||
?p ?o.
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
CONSTRUCT {
|
||||
?s <http://schema.org/contactPoint> ?contactpoint.
|
||||
}
|
||||
WHERE {
|
||||
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie>.
|
||||
?s <http://schema.org/contactPoint> ?contactpoint.
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://schema.org/ContactPoint>;
|
||||
?p ?o.
|
||||
|
||||
FILTER (?p NOT IN (<http://schema.org/telephone>))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://data.lblod.info/vocabularies/erediensten/EredienstMandataris>;
|
||||
?p ?o.
|
||||
|
||||
FILTER (?p NOT IN (ch:startdatum, ch:eindedatum, ere:geplandeEinddatumAanstelling))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://www.w3.org/ns/person#Person>;
|
||||
?p ?o.
|
||||
|
||||
FILTER (?p IN (
|
||||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>,
|
||||
<http://mu.semte.ch/vocabularies/core/uuid>,
|
||||
<http://xmlns.com/foaf/0.1/familyName>
|
||||
))
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://data.lblod.info/vocabularies/erediensten/RolBedienaar>;
|
||||
?p ?o.
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
|
||||
|
||||
# Alternatieve voornaam: foaf:name => persoon:gebruikteVoornaam
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:gebruikteVoornaam ?name .
|
||||
} WHERE {
|
||||
?s a person:Person ;
|
||||
foaf:name ?name .
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
|
||||
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
|
||||
|
||||
# First name: persoon:gebruikteVoornaam => foaf:givenName
|
||||
|
||||
CONSTRUCT {
|
||||
?s foaf:givenName ?gebruikteVoornaam .
|
||||
} WHERE {
|
||||
?s a person:Person ;
|
||||
persoon_loket:gebruikteVoornaam ?gebruikteVoornaam .
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
CONSTRUCT {
|
||||
?s ?p ?o.
|
||||
} WHERE {
|
||||
?s a <http://data.vlaanderen.be/ns/persoon#Geboorte>;
|
||||
?p ?o.
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?s ?p "" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# Map from http persoon to https persoon namespace
|
||||
|
||||
CONSTRUCT {
|
||||
?s a persoon:Geboorte
|
||||
} WHERE {
|
||||
?s a persoon_loket:Geboorte .
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# Map from http persoon to https persoon namespace
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:datum ?o .
|
||||
} WHERE {
|
||||
?s persoon_loket:datum ?o .
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# Map from http persoon to https persoon namespace
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:geslacht ?o .
|
||||
} WHERE {
|
||||
?s persoon_loket:geslacht ?o .
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# Map from http persoon to https persoon namespace
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:heeftGeboorte ?o .
|
||||
} WHERE {
|
||||
?s persoon_loket:heeftGeboorte ?o .
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# Map from http persoon to https persoon namespace
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:heeftNationaliteit ?o .
|
||||
} WHERE {
|
||||
?s persoon_loket:heeftNationaliteit ?o .
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# Map from http persoon to https persoon namespace
|
||||
|
||||
CONSTRUCT {
|
||||
?s persoon:registratie ?o .
|
||||
} WHERE {
|
||||
?s persoon_loket:registratie ?o .
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
CONSTRUCT {
|
||||
?identifier
|
||||
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
|
||||
skos:notation "Rijksregisternummer" .
|
||||
|
||||
?structuredIdentifier a generiek:GestructureerdeIdentificator ;
|
||||
mu:uuid ?uuid ;
|
||||
generiek:lokaleIdentificator ?notation .
|
||||
}
|
||||
WHERE {
|
||||
?identifier skos:notation ?notation.
|
||||
|
||||
BIND(MD5(CONCAT(STR(?identifier),"STRUCTURED_IDENTIFIER")) as ?uuid)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/gestructureerdeIdentificatoren/", ?uuid)) AS ?structuredIdentifier)
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
|
||||
# identifier property in the export is only used for RRN.
|
||||
CONSTRUCT {
|
||||
?person persoon:registratie ?rrn .
|
||||
}
|
||||
WHERE {
|
||||
?person adms:identifier ?rrn .
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
const BATCH_SIZE = parseInt(process.env.BATCH_SIZE) || 100;
|
||||
const MU_CALL_SCOPE_ID_INITIAL_SYNC = process.env.MU_CALL_SCOPE_ID_INITIAL_SYNC || 'http://redpencil.data.gift/id/concept/muScope/deltas/consumer/initialSync';
|
||||
const BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES = process.env.BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES == 'true' ? true : false;
|
||||
const DIRECT_DATABASE_ENDPOINT = process.env.DIRECT_DATABASE_ENDPOINT || 'http://triplestore:8890/sparql';
|
||||
const MAX_DB_RETRY_ATTEMPTS = parseInt(process.env.MAX_DB_RETRY_ATTEMPTS || 5);
|
||||
const MAX_REASONING_RETRY_ATTEMPTS = parseInt(process.env.MAX_REASONING_RETRY_ATTEMPTS || 5);
|
||||
const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 1000);
|
||||
const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
|
||||
const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
|
||||
|
||||
// Graphs
|
||||
const TARGET_GRAPH = process.env.TARGET_GRAPH || `http://mu.semte.ch/graphs/worship-service`;
|
||||
const PRIVACY_SENSITIVE_GRAPH = process.env.PRIVACY_SENSITIVE_GRAPH || `http://mu.semte.ch/graphs/worship-privacy-centric-graph`;
|
||||
const LANDING_ZONE_GRAPH = process.env.DCR_LANDING_ZONE_GRAPH || `http://mu.semte.ch/graphs/landing-zone/leidinggevenden`;
|
||||
|
||||
// Mappings
|
||||
const MAIN_INFO_MAPPING = "main-info";
|
||||
const PRIVATE_INFO_MAPPING = "private-info";
|
||||
|
||||
// ENDPOINTS
|
||||
const LANDING_ZONE_DATABASE = process.env.DCR_LANDING_ZONE_DATABASE || 'db';
|
||||
const LANDING_ZONE_DATABASE_ENDPOINT = process.env.DCR_LANDING_ZONE_DATABASE_ENDPOINT || `http://${LANDING_ZONE_DATABASE}:8890/sparql`;
|
||||
|
||||
module.exports = {
|
||||
BATCH_SIZE,
|
||||
MU_CALL_SCOPE_ID_INITIAL_SYNC,
|
||||
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
DIRECT_DATABASE_ENDPOINT,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
LANDING_ZONE_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT,
|
||||
TARGET_GRAPH,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
MAIN_INFO_MAPPING,
|
||||
PRIVATE_INFO_MAPPING
|
||||
};
|
||||
@@ -1,11 +0,0 @@
|
||||
const contextConfig = {
|
||||
addTypes: {
|
||||
scope: 'all', // 'inserts, 'deletes', 'all' or none. To add rdf:type to subjects of inserts, deletes or both
|
||||
exhausitive: false, // true or false: find all types for a subject, even if one is already present in delta
|
||||
},
|
||||
contextQueries: []
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
contextConfig
|
||||
};
|
||||
@@ -1,114 +0,0 @@
|
||||
const {
|
||||
transformStatements,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph,
|
||||
deleteFromPrivateGraph,
|
||||
insertIntoPrivateGraph
|
||||
} = require('./util');
|
||||
|
||||
const {
|
||||
MAIN_INFO_MAPPING,
|
||||
PRIVATE_INFO_MAPPING
|
||||
} = require('./config');
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
* Note: <share://file/data> will be ADDED to it's own graph.
|
||||
* We take only care of adding them, not updating triples, this is a TODO
|
||||
* @param { mu, muAuthSudo } lib - The provided libraries from the host service.
|
||||
* @param { termObjectChangeSets: { deletes, inserts } } data - The fetched changes sets, which objects of serialized Terms
|
||||
* [ {
|
||||
* graph: "<http://foo>",
|
||||
* subject: "<http://bar>",
|
||||
* predicate: "<http://baz>",
|
||||
* object: "<http://boom>^^<http://datatype>"
|
||||
* }
|
||||
* ]
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, fetch } = lib;
|
||||
let { termObjectChangeSets, termObjectChangeSetsWithContext } = data;
|
||||
|
||||
// Both arrays are the same length, so we can zip them together for easier processing
|
||||
zippedChangeSets = termObjectChangeSets.map((o, i) => ({
|
||||
original: o,
|
||||
withContext: termObjectChangeSetsWithContext[i]
|
||||
}));
|
||||
|
||||
console.log(`Received ${zippedChangeSets.length} change sets`)
|
||||
|
||||
for (let { original, withContext } of zippedChangeSets) {
|
||||
let originalDeletes, originalInserts, insertsWithContext, deletesWithContext;
|
||||
try {
|
||||
originalInserts = original.inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
originalDeletes = original.deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
} catch (e) {
|
||||
console.log(`Error while processing change set: ${e}`);
|
||||
console.log(`Original change set: ${JSON.stringify(original)}`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Extra context needed for mapping from DL to OP model and filtering based on type.
|
||||
try {
|
||||
insertsWithContext = withContext.inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
deletesWithContext = withContext.deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
} catch (e) {
|
||||
console.log(`Error while processing change set with context: ${e}`);
|
||||
console.log(`Change set with context: ${JSON.stringify(withContext)}`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (originalDeletes.length) {
|
||||
// Map main deletes from DL to OP model
|
||||
const transformedMainDeletes = await transformStatements(fetch, deletesWithContext, MAIN_INFO_MAPPING);
|
||||
|
||||
if (!transformedMainDeletes.length) {
|
||||
console.log(`Warn: Delete main statements mapped to empty result.`);
|
||||
console.log(`Input: ${deletesWithContext}`);
|
||||
console.log(`Output: ${transformedMainDeletes}`);
|
||||
} else {
|
||||
await deleteFromTargetGraph(lib, transformedMainDeletes);
|
||||
}
|
||||
|
||||
// Map private deletes from DL to OP model
|
||||
const transformedPrivateDeletes = await transformStatements(fetch, deletesWithContext, PRIVATE_INFO_MAPPING);
|
||||
|
||||
if (!transformedPrivateDeletes.length) {
|
||||
console.log(`Warn: Delete private statements mapped to empty result.`);
|
||||
console.log(`Input: ${deletesWithContext}`);
|
||||
console.log(`Output: ${transformedPrivateDeletes}`);
|
||||
} else {
|
||||
await deleteFromPrivateGraph(lib, transformedPrivateDeletes);
|
||||
}
|
||||
}
|
||||
|
||||
if (originalInserts.length) {
|
||||
// Map main inserts from DL to OP model
|
||||
const transformedMainInserts = await transformStatements(fetch, insertsWithContext, MAIN_INFO_MAPPING);
|
||||
|
||||
if (!transformedMainInserts.length) {
|
||||
console.log(`Warn: Insert statements mapped to empty result.`);
|
||||
console.log(`Input: ${insertsWithContext}`);
|
||||
console.log(`Output: ${transformedMainInserts}`);
|
||||
} else {
|
||||
await insertIntoTargetGraph(lib, transformedMainInserts);
|
||||
}
|
||||
|
||||
// Map private inserts from DL to OP model
|
||||
const transformedPrivateInserts = await transformStatements(fetch, insertsWithContext, PRIVATE_INFO_MAPPING);
|
||||
|
||||
if (!transformedPrivateInserts.length) {
|
||||
console.log(`Warn: Insert statements mapped to empty result.`);
|
||||
console.log(`Input: ${insertsWithContext}`);
|
||||
console.log(`Output: ${transformedPrivateInserts}`);
|
||||
} else {
|
||||
await insertIntoPrivateGraph(lib, transformedPrivateInserts);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
@@ -1,106 +0,0 @@
|
||||
const { batchedDbUpdate, transformLandingZoneGraph } = require('./util');
|
||||
const {
|
||||
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
DIRECT_DATABASE_ENDPOINT,
|
||||
MU_CALL_SCOPE_ID_INITIAL_SYNC,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
TARGET_GRAPH,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
LANDING_ZONE_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT,
|
||||
MAIN_INFO_MAPPING,
|
||||
PRIVATE_INFO_MAPPING
|
||||
} = require('./config');
|
||||
|
||||
const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT : process.env.MU_SPARQL_ENDPOINT;
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
* @param { mu, muAuthSudo } lib - The provided libraries from the host service.
|
||||
* @param { termObjects } data - The fetched quad information, which objects of serialized Terms
|
||||
* [ {
|
||||
* graph: "<http://foo>",
|
||||
* subject: "<http://bar>",
|
||||
* predicate: "<http://baz>",
|
||||
* object: "<http://boom>^^<http://datatype>"
|
||||
* }
|
||||
* ]
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, muAuthSudo } = lib;
|
||||
const { termObjects } = data;
|
||||
|
||||
// Steps:
|
||||
// 1. Write the triples to the landing zone graph - withouth any mapping or filtering
|
||||
// 2. One-time reasoning run with the full landing zone graph and write the results to the target graph (on-finish)
|
||||
|
||||
if (BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES) {
|
||||
console.warn(`Service configured to skip MU_AUTH!`);
|
||||
}
|
||||
console.log(`Using ${endpoint} to insert triples`);
|
||||
|
||||
if (termObjects.length) {
|
||||
const originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
LANDING_ZONE_GRAPH,
|
||||
originalInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
LANDING_ZONE_DATABASE_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async function onFinishInitialIngest(lib) {
|
||||
const { muAuthSudo, fetch } = lib;
|
||||
|
||||
console.log(`!! On-finish triggered !!`);
|
||||
|
||||
const transformedMainInsertTriples = await transformLandingZoneGraph(fetch, endpoint, MAIN_INFO_MAPPING);
|
||||
console.log(`Transformed ${transformedMainInsertTriples.length} main triples`);
|
||||
|
||||
if (transformedMainInsertTriples.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
transformedMainInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
endpoint,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
|
||||
const transformedPrivateInsertTriples = await transformLandingZoneGraph(fetch, endpoint, PRIVATE_INFO_MAPPING);
|
||||
console.log(`Transformed ${transformedPrivateInsertTriples.length} private triples`);
|
||||
|
||||
if (transformedPrivateInsertTriples.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
transformedPrivateInsertTriples,
|
||||
{ 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
|
||||
endpoint,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch,
|
||||
onFinishInitialIngest
|
||||
};
|
||||
@@ -1,204 +0,0 @@
|
||||
const {
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
TARGET_GRAPH,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
LANDING_ZONE_GRAPH,
|
||||
BATCH_SIZE
|
||||
} = require('./config');
|
||||
|
||||
async function batchedDbUpdate(
|
||||
muUpdate,
|
||||
graph,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
batchSize,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
operation = 'INSERT'
|
||||
) {
|
||||
|
||||
for (let i = 0; i < triples.length; i += batchSize) {
|
||||
console.log(`Inserting triples in batch: ${i}-${i + batchSize}`);
|
||||
|
||||
const batch = triples.slice(i, i + batchSize).join('\n');
|
||||
|
||||
const insertCall = async () => {
|
||||
await muUpdate(`
|
||||
${operation} DATA {
|
||||
GRAPH <${graph}> {
|
||||
${batch}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(insertCall, 0, maxAttempts, sleepTimeOnFail);
|
||||
|
||||
console.log(`Sleeping before next query execution: ${sleepBetweenBatches}`);
|
||||
await new Promise(r => setTimeout(r, sleepBetweenBatches));
|
||||
}
|
||||
}
|
||||
|
||||
async function operationWithRetry(callback,
|
||||
attempt,
|
||||
maxAttempts,
|
||||
sleepTimeOnFail) {
|
||||
try {
|
||||
if (typeof callback === "function")
|
||||
return await callback();
|
||||
else // Catch error from promise - not how I would do it normally, but allows re use of existing code.
|
||||
return await callback;
|
||||
}
|
||||
catch (e) {
|
||||
console.log(`Operation failed for ${callback.toString()}, attempt: ${attempt} of ${maxAttempts}`);
|
||||
console.log(`Error: ${e}`);
|
||||
console.log(`Sleeping ${sleepTimeOnFail} ms`);
|
||||
|
||||
if (attempt >= maxAttempts) {
|
||||
console.log(`Max attempts reached for ${callback.toString()}, giving up`);
|
||||
throw e;
|
||||
}
|
||||
|
||||
await new Promise(r => setTimeout(r, sleepTimeOnFail));
|
||||
return operationWithRetry(callback, ++attempt, maxAttempts, sleepTimeOnFail);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Splits an array into two parts, a part that passes and a part that fails a predicate function.
|
||||
* Credits: https://github.com/benjay10
|
||||
* @public
|
||||
* @function partition
|
||||
* @param {Array} arr - Array to be partitioned
|
||||
* @param {Function} fn - Function that accepts single argument: an element of the array, and should return a truthy or falsy value.
|
||||
* @returns {Object} Object that contains keys passes and fails, each representing an array with elemets that pass or fail the predicate respectively
|
||||
*/
|
||||
function partition(arr, fn) {
|
||||
let passes = [], fails = [];
|
||||
arr.forEach((item) => (fn(item) ? passes : fails).push(item));
|
||||
return { passes, fails };
|
||||
}
|
||||
|
||||
/**
|
||||
* Send triples to reasoning service for conversion
|
||||
*
|
||||
*/
|
||||
async function transformTriples(fetch, triples, mapping) {
|
||||
return await operationWithRetry(mainConversion(fetch, triples, mapping), 0,
|
||||
MAX_REASONING_RETRY_ATTEMPTS, SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION);
|
||||
}
|
||||
|
||||
async function mainConversion(fetch, triples, mapping) {
|
||||
let formdata = new URLSearchParams();
|
||||
formdata.append("data", triples);
|
||||
|
||||
let requestOptions = {
|
||||
method: 'POST',
|
||||
body: formdata,
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}`, requestOptions)
|
||||
return await response.text();
|
||||
}
|
||||
|
||||
async function transformStatements(fetch, triples, mapping = 'main') {
|
||||
console.log(`Received ${JSON.stringify(triples)} to transform`);
|
||||
const transformedTriples = await transformTriples(fetch, triples.join('\n'), mapping);
|
||||
statements = transformedTriples ? transformedTriples.replace(/\n{2,}/g, '').split('\n') : [];
|
||||
console.log(`CONVERSION: FROM ${triples.length} triples to ${statements.length}`);
|
||||
return statements;
|
||||
}
|
||||
|
||||
async function deleteFromTargetGraph(lib, statements) {
|
||||
console.log(`Deleting ${statements.length} statements from target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'DELETE');
|
||||
}
|
||||
|
||||
async function deleteFromPrivateGraph(lib, statements) {
|
||||
console.log(`Deleting ${statements.length} statements from target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'DELETE');
|
||||
}
|
||||
|
||||
async function insertIntoTargetGraph(lib, statements) {
|
||||
console.log(`Inserting ${statements.length} statements into target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
TARGET_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'INSERT');
|
||||
}
|
||||
|
||||
async function insertIntoPrivateGraph(lib, statements) {
|
||||
console.log(`Inserting ${statements.length} statements into target graph`);
|
||||
console.log(`Statements: ${JSON.stringify(statements)}`)
|
||||
|
||||
await batchedDbUpdate(
|
||||
lib.muAuthSudo.updateSudo,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
statements,
|
||||
{},
|
||||
process.env.MU_SPARQL_ENDPOINT,
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
'INSERT');
|
||||
}
|
||||
|
||||
async function transformLandingZoneGraph(fetch, endpoint, mapping = 'main') {
|
||||
console.log(`Transforming landing zone graph: ${LANDING_ZONE_GRAPH}`);
|
||||
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}?data=${encodeURIComponent(`${endpoint}?default-graph-uri=&query=CONSTRUCT+%7B%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D+WHERE+%7B%0D%0A+GRAPH+<${LANDING_ZONE_GRAPH}>+%7B%0D%0A%3Fs+%3Fp+%3Fo%0D%0A%7D%0D%0A%7D&should-sponge=&format=text%2Fplain&timeout=0&run=+Run+Query`)}`);
|
||||
const text = await response.text();
|
||||
const statements = text.replace(/\n{2,}/g, '').split('\n');
|
||||
|
||||
return statements;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
batchedDbUpdate,
|
||||
partition,
|
||||
transformStatements,
|
||||
transformLandingZoneGraph,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph,
|
||||
deleteFromPrivateGraph,
|
||||
insertIntoPrivateGraph
|
||||
};
|
||||
15
config/migrations-sample/README.md
Normal file
15
config/migrations-sample/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Motivation
|
||||
|
||||
This folder contains migration files that are typically executed on an as-needed, or ad hoc, basis.
|
||||
In addition, these files can function as templates or provide inspiration for future migrations.
|
||||
|
||||
## Warning
|
||||
|
||||
- Please keep in mind, when adding these files to the migrations folder, it's important to rename them according to the conventions established by the migration service
|
||||
- As the data model or the data location may undergo changes over time, it's imporant to have a clear understanding of the implications when using these files.
|
||||
|
||||
## Template files
|
||||
|
||||
- `pseudonimyze-data.sparql-template` - the file that contains the sparql for pseudonymizing data in the triplestore. It should run every time the db is "refreshed" with a copy from PROD.
|
||||
- `remove-stale-jobs.sparql-template` - removing `busy` and `scheduled` jobs.
|
||||
- `remove-type-in-producer-graph.sparql-template` - the migration to handle the occasional sync issue between OP and Loket.
|
||||
149
config/migrations-sample/pseudonimyze-data.sparql-template
Normal file
149
config/migrations-sample/pseudonimyze-data.sparql-template
Normal file
@@ -0,0 +1,149 @@
|
||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?person foaf:familyName ?fn.
|
||||
?person foaf:givenName ?gn.
|
||||
?person persoon:gebruikteVoornaam ?gvn.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?person foaf:givenName ?gn_s.
|
||||
?person foaf:familyName ?fn_s.
|
||||
?person persoon:gebruikteVoornaam ?gvn_s.
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g { <http://mu.semte.ch/graphs/organisatieportaal> <http://redpencil.data.gift/id/deltas/producer/organizations>}
|
||||
GRAPH ?g {
|
||||
BIND("njbyevfeRTE8651B" AS ?salt).
|
||||
?person a person:Person.
|
||||
OPTIONAL {
|
||||
?person foaf:givenName ?gn.
|
||||
BIND(SHA1(CONCAT(?salt, ?gn)) AS ?gn_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?person foaf:familyName ?fn.
|
||||
BIND(SHA1(CONCAT(?salt, ?fn)) AS ?fn_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?person persoon:gebruikteVoornaam ?gvn.
|
||||
BIND(SHA1(CONCAT(?salt, ?gvn)) AS ?gvn_s).
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
DELETE {
|
||||
GRAPH ?h {
|
||||
?birth persoon:datum ?dob.
|
||||
?identificator generiek:lokaleIdentificator ?rrn .
|
||||
?person persoon:heeftNationaliteit ?nationality .
|
||||
?person persoon:geslacht ?gender .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?h {
|
||||
?birth persoon:datum "1977-01-01T00:00:00Z"^^xsd:dateTime .
|
||||
?identificator generiek:lokaleIdentificator "42012205181" .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g { <http://mu.semte.ch/graphs/organisatieportaal> <http://redpencil.data.gift/id/deltas/producer/organizations>}
|
||||
VALUES ?h { <http://mu.semte.ch/graphs/privacy-centric-graph> }
|
||||
GRAPH ?g {
|
||||
?person a person:Person.
|
||||
}
|
||||
GRAPH ?h {
|
||||
OPTIONAL {
|
||||
?person persoon:heeftGeboorte ?birth .
|
||||
?birth persoon:datum ?dob.
|
||||
}
|
||||
OPTIONAL {
|
||||
?person persoon:registratie/generiek:gestructureerdeIdentificator ?identificator .
|
||||
?identificator generiek:lokaleIdentificator ?rrn .
|
||||
}
|
||||
OPTIONAL {
|
||||
?person persoon:geslacht ?gender .
|
||||
}
|
||||
OPTIONAL {
|
||||
?person persoon:heeftNationaliteit ?nationality .
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?cp schema:telephone ?phone.
|
||||
?cp schema:email ?mail.
|
||||
?address locn:fullAddress ?fa.
|
||||
?address adres:Adresvoorstelling.huisnummer ?huisnr.
|
||||
?address adres:Adresvoorstelling.busnummer ?busnr.
|
||||
?address locn:thoroughfare ?street.
|
||||
?address locn:postCode ?postCode.
|
||||
?address adres:gemeentenaam ?gemeente.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?cp schema:telephone ?phone_s.
|
||||
?cp schema:email ?mail_s.
|
||||
?address locn:fullAddress ?fa_s.
|
||||
?address adres:Adresvoorstelling.huisnummer ?huisnr_s.
|
||||
?address adres:Adresvoorstelling.busnummer ?busnr_s.
|
||||
?address locn:thoroughfare ?street_s.
|
||||
?address locn:postCode ?postCode_s.
|
||||
?address adres:gemeentenaam ?gemeente_s.
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g { <http://mu.semte.ch/graphs/organisatieportaal> <http://redpencil.data.gift/id/deltas/producer/organizations>}
|
||||
GRAPH ?g {
|
||||
BIND("njbyevfeRTE8651B" AS ?salt).
|
||||
?cp a <http://schema.org/ContactPoint> .
|
||||
|
||||
OPTIONAL {
|
||||
?cp schema:telephone ?phone.
|
||||
BIND(SHA1(CONCAT(?salt, ?phone)) AS ?phone_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?cp schema:email ?mail.
|
||||
BIND(CONCAT(SHA1(CONCAT(?salt, ?mail)), "@email.com") AS ?mail_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?cp locn:address ?address.
|
||||
OPTIONAL {
|
||||
?address locn:fullAddress ?fa.
|
||||
BIND(SHA1(CONCAT(?salt, ?fa)) AS ?fa_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?address adres:Adresvoorstelling.huisnummer ?huisnr.
|
||||
BIND(SHA1(CONCAT(?salt, ?huisnr)) AS ?huisnr_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?address adres:Adresvoorstelling.busnummer ?busnr.
|
||||
BIND(SHA1(CONCAT(?salt, ?busnr)) AS ?busnr_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?address locn:thoroughfare ?street.
|
||||
BIND(SHA1(CONCAT(?salt, ?street)) AS ?street_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?address locn:postCode ?postCode.
|
||||
BIND(SHA1(CONCAT(?salt, ?postCode)) AS ?postCode_s).
|
||||
}
|
||||
OPTIONAL {
|
||||
?address adres:gemeentenaam ?gemeente.
|
||||
BIND(SHA1(CONCAT(?salt, ?gemeente)) AS ?gemeente_s).
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
25
config/migrations-sample/remove-stale-jobs.sparql-template
Normal file
25
config/migrations-sample/remove-stale-jobs.sparql-template
Normal file
@@ -0,0 +1,25 @@
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
PREFIX task: <http://redpencil.data.gift/vocabularies/tasks/>
|
||||
PREFIX dct: <http://purl.org/dc/terms/>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX nie: <http://www.semanticdesktop.org/ontologies/2007/01/19/nie#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX oslc: <http://open-services.net/ns/core#>
|
||||
PREFIX cogs: <http://vocab.deri.ie/cogs#>
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?jobUri a <http://vocab.deri.ie/cogs#Job>.
|
||||
?jobUri adms:status ?status.
|
||||
?jobUri ?p ?o
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?jobUri a <http://vocab.deri.ie/cogs#Job>.
|
||||
?jobUri adms:status ?status.
|
||||
?jobUri ?p ?o
|
||||
FILTER(?status IN (<http://redpencil.data.gift/id/concept/JobStatus/busy>, <http://redpencil.data.gift/id/concept/JobStatus/scheduled>))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
DELETE WHERE {
|
||||
GRAPH <http://redpencil.data.gift/id/deltas/producer/public> {
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/4ea0cc455e37195c10acf457a8902ffb> a ?firsttype.
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/66ce16dcb455dc95588c05916736d511> a ?secondtype.
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/69dca6d7c6bf9d6073771788358c74e5> a ?thirdtype.
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/c9ce0539d719b63b60598148b084a7e8> a ?fourthtype.
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/560d86a055eddb83fd60e0ea3043a708> a ?fifthtype.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/geregistreerdeOrganisaties/8b2e8749-98a9-450f-b2f1-7a93115ef513> <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/35833ba2-7371-400b-8df2-2912f66fb153> .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/geregistreerdeOrganisaties/8b2e8749-98a9-450f-b2f1-7a93115ef513> <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/GeregistreerdeOrganisatieClassificatieCode/3e5c8e30-95a7-47b0-b0a4-210d5bd440a7> .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?organisation skos:prefLabel ?oldLabel;
|
||||
regorg:legalName ?oldName.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?organisation skos:prefLabel ?newName;
|
||||
regorg:legalName ?newName.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
?organisation a besluit:Bestuurseenheid;
|
||||
skos:prefLabel ?oldLabel;
|
||||
regorg:legalName ?oldName.
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
<http://mu.semte.ch/graphs/shared>
|
||||
}
|
||||
VALUES (?organisation ?newName) {
|
||||
(<http://data.lblod.info/id/bestuurseenheden/99da98a7a0087d3429b084ebfc4eb5d488c593790d4d5af7253982a2e21a6a5f> """Bilzen-Hoeselt""")
|
||||
(<http://data.lblod.info/id/bestuurseenheden/9ae900a5447b7d727ca6496910220d4389aba7f1869923f1bbf9729bdeca28e2> """Bilzen-Hoeselt""")
|
||||
(<http://data.lblod.info/id/bestuurseenheden/05099fa1f6524b8b994d86f61549455d2c00b2a956d5308683ac2d1f810fc729> """Tessenderlo-Ham""")
|
||||
(<http://data.lblod.info/id/bestuurseenheden/42a43591e0db1dca9432f480f0f49f9bd4056c2b131e2fc997497130f5e099d0> """Tessenderlo-Ham""")
|
||||
(<http://data.lblod.info/id/bestuurseenheden/104f32d7fb8d4b8b61b71717301656f136fe046eabaf126fb3325896b5c2d625> """Tongeren-Borgloon""")
|
||||
(<http://data.lblod.info/id/bestuurseenheden/ab684633d605d93dbbe6b9ea40667e2bcf03a0856cafe1825e95b7829ed502a3> """Tongeren-Borgloon""")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?org regorg:orgStatus ?oldStatus.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?org regorg:orgStatus <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311>.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
?org regorg:orgStatus ?oldStatus.
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
VALUES ?org {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e41ffa04f94bb450a79793020e70d55b5fee5033a5280277998608a9d0913117>
|
||||
<http://data.lblod.info/id/bestuurseenheden/7125fcbfb7a08f8c01efbed115cea602db249c04afe9b5a2cc298cc7949cd040>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/4f0eb4436c88cf831c35f84e7c34ce32f9ee4e99c5139aff62990e5e531aa1e7>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6af55cecaea3621f53bb32417a36ed6e3d41b2aa5b9f6d62ab3d80cc8ec11539>
|
||||
<http://data.lblod.info/id/bestuurseenheden/c362abc58ac4579ff417824ce620962ac57bc344b34fe8f51d21b35ef54da36d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/72bc672ceb6894d8dd31dc2dff2faad2fd93f4b9f5347d556d092516eaa30aa3>
|
||||
<http://data.lblod.info/id/bestuurseenheden/d3c76fd84794dad5e12c9eed6d6332dc5e5c99daf0e4ddd7ceebf13d5d6c0ccd>
|
||||
<http://data.lblod.info/id/bestuurseenheden/bbc23313f4c8585a0c51f15f920d77123356535cd1cad9af38f5707892c7088d>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/a3bd0845853278f478f90b14436d3efa99e73249a84d462f0ddc2e5b6e37a156>
|
||||
<http://data.lblod.info/id/bestuurseenheden/785e8d5516378c7382ad0e7e356d2301496d810c6cd46d72ccebb455d3ac525e>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/05441122597e0b20b61a8968ea1247c07f9014aad1f1f0709d0b1234e3dfbc2f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3834647b5e95ea20f5ffe5a12a09fbd3d7fdf0d187fab385cb7b841422176ad6>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/0327a51548f73607f8a5ec11b36711a3c96703686ad93a3d632718c135c295db>
|
||||
<http://data.lblod.info/id/bestuurseenheden/e39bc997aa6dd9f240277735efd745b6a0422614d2b36cf01825c86b1b91a9ee>
|
||||
<http://data.lblod.info/id/bestuurseenheden/0a2d980559eb9f3e0820386541274a72692f495204cd6d951ea1907ecc65829b>
|
||||
<http://data.lblod.info/id/bestuurseenheden/144c75e403c5084af57f5c0c86252b8759b56baf9694326abbcb5ea40ab69f1a>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/00eb231f51bd6b4f5dcc6536b2d09a174ea8583f5bf28b10bc4fc769a07e511d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/c69192b973a3ca11531b9657b3ee20aa6688fa33ea1ef1392310fec751980ab2>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3eb8c9fae32d02359dcd7b22e2a74e67a5b48388df31ad819c27c688fedd10b0>
|
||||
<http://data.lblod.info/id/bestuurseenheden/ba8a253d98ea7d2ab1afc43e5e2cd145a12ccd86b68e71d023e3c13a83d7498f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/76c45d60f05bf8afc8c71859342b69cac6a57ee2b320b900a60afd6ba9b8eb9d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5d21ccef2f5aa3ccbf3a74c6f25ebe9f0b1ef5a97b87f3d79c86ae9d6d857df8>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/af8969752f6b28c66b6bc402d7987fa38774901ac72b95c5cb7976570487c3c9>
|
||||
<http://data.lblod.info/id/bestuurseenheden/fb1be873c4b31e391613dfae8e68edd694b1fdf126eeecb502b1e5cad6f2f682>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/f6b131de5e40a0dfd4fc93fedf3b95c9bf156ece718b87fe00469dea2564b3fb>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3e077115eeb70b649d44e2ebbb218f2cfcac5d84e130c88584f0ec23f7cebbf9>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/1313d4a58f9ecf52cc7e274e3549a759b35e731973cc9f5e07562e5650f594dd>
|
||||
<http://data.lblod.info/id/bestuurseenheden/7c6b38fa6fc65879cb674a654617de171adfcfacba086fb918da3749dbaa43b5>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/c5dbb08e35e2d090a05d119fef4cc161b5ee1f322698cb8ea3c8c6643a521cf2>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f2a9a2392d5e4c0f992a84a0871d048a7b91b14681e9980a63aa6ba4b1f7eb8c>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/c0b6b5cf198cd939251dff8ed052177cfff245074c6b8d43394c8c97f7b6e945>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8ef1e4a43efd913e6b09b0ddea344b7b5d723a344ad559389a55ae1ff0bebc8f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/04895013fe6301f32aa46deae98abfb833a717ece5a33b6c453674c6d0f4cc5e>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f56f068943a99059f5bfc3b905fe8848a25a47cfa30fb3ed3d294b47815b2255>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/5a4b2b4f1de1f3b91b0348a7eb6d6aa0ef9420b8ec31374970c9ffe933a79515>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3f57a17fbcdfc13def910c54948bec11d71d3f75946b0336fffc0587bf18d783>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/2564e21e3650f91625189ccb7eb055e47754a0633c54c7582a899171fef60c52>
|
||||
<http://data.lblod.info/id/bestuurseenheden/60daf27c2cf12dd123447aa300dd7320890391dbd8dd6b4dd7ec02258f8281b3>
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?org regorg:orgStatus ?oldStatus.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?org regorg:orgStatus <http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6>.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
?org regorg:orgStatus ?oldStatus.
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
VALUES ?org {
|
||||
<http://data.lblod.info/id/bestuurseenheden/4b44e6f1-113b-4692-b149-44a889b215f2>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/1ca65d65-54ff-4b44-b750-bd70c91191af>
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d53f659-3a3b-44b1-9e77-3ea067678c0e>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/b8bb293d-aa22-4b43-bda4-0b6af76e9493>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5d94b2fd-60ee-4e56-a1f0-a586d596adf6>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/19483103-318e-435a-aa37-45e485406ee9>
|
||||
<http://data.lblod.info/id/bestuurseenheden/fd41f573-7d9a-4d9f-b7d0-d5b6114d1622>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/add1e4eb-9ec7-4ea6-af82-335aa76b7d48>
|
||||
<http://data.lblod.info/id/bestuurseenheden/650378e7-1bee-4737-91ff-5b20ac4623cf>
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?address locn:adminUnitL2 "Antwerpen".
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?address locn:adminUnitL2 "Oost-Vlaanderen".
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
?address a locn:Address;
|
||||
adres:gemeentenaam "Zwijndrecht";
|
||||
locn:adminUnitL2 "Antwerpen"
|
||||
FILTER (EXISTS { ?site organisatie:bestaatUit ?address. } ||
|
||||
EXISTS { ?site org:siteAddress/locn:address ?address. })
|
||||
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?address adres:gemeentenaam ?oldMunicipality.
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?address adres:gemeentenaam ?newMunicipality.
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?address a locn:Address;
|
||||
adres:gemeentenaam ?oldMunicipality.
|
||||
FILTER (EXISTS { ?site organisatie:bestaatUit ?address. } ||
|
||||
EXISTS { ?site org:siteAddress/locn:address ?address. })
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
}
|
||||
VALUES (?oldMunicipality ?newMunicipality) {
|
||||
("Borsbeek" "Antwerpen")
|
||||
("Galmaarden" "Pajottegem")
|
||||
("Gooik" "Pajottegem")
|
||||
("Herne" "Pajottegem")
|
||||
("Ruiselede" "Wingene")
|
||||
("Meulebeke" "Tielt")
|
||||
("De Pinte" "Nazareth-De Pinte")
|
||||
("Nazareth" "Nazareth-De Pinte")
|
||||
("Wachtebeke" "Lochristi")
|
||||
("Moerbeke" "Lokeren")
|
||||
("Melle" "Merelbeke-Melle")
|
||||
("Merelbeke" "Merelbeke-Melle")
|
||||
("Beveren" "Beveren-Kruibeke-Zwijndrecht")
|
||||
("Kruibeke" "Beveren-Kruibeke-Zwijndrecht")
|
||||
("Zwijndrecht" "Beveren-Kruibeke-Zwijndrecht")
|
||||
("Bilzen" "Bilzen-Hoeselt")
|
||||
("Hoeselt" "Bilzen-Hoeselt")
|
||||
("Borgloon" "Tongeren-Borgloon")
|
||||
("Tongeren" "Tongeren-Borgloon")
|
||||
("Ham" "Tessenderlo-Ham")
|
||||
("Tessenderlo" "Tessenderlo-Ham")
|
||||
("Kortessem" "Hasselt")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?address locn:fullAddress ?fullAddress.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?address locn:fullAddress ?newFullAddress.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
?address locn:fullAddress ?fullAddress;
|
||||
locn:thoroughfare ?street;
|
||||
adres:Adresvoorstelling.huisnummer ?buildingNo;
|
||||
locn:postCode ?postalCode;
|
||||
adres:gemeentenaam ?municipality;
|
||||
adres:land ?country.
|
||||
FILTER NOT EXISTS { ?address adres:Adresvoorstelling.busnummer ?boxNo. }
|
||||
FILTER (EXISTS { ?site organisatie:bestaatUit ?address. } ||
|
||||
EXISTS { ?site org:siteAddress/locn:address ?address. })
|
||||
FILTER (?municipality IN (
|
||||
"Antwerpen",
|
||||
"Pajottegem",
|
||||
"Wingene",
|
||||
"Tielt",
|
||||
"Nazareth-De Pinte",
|
||||
"Lochristi",
|
||||
"Lokeren",
|
||||
"Merelbeke-Melle",
|
||||
"Beveren-Kruibeke-Zwijndrecht",
|
||||
"Bilzen-Hoeselt",
|
||||
"Tongeren-Borgloon",
|
||||
"Tessenderlo-Ham",
|
||||
"Hasselt"
|
||||
))
|
||||
BIND (CONCAT(?street, " ", ?buildingNo, ", ", ?postalCode, " ", ?municipality, ", ", ?country) AS ?newFullAddress)
|
||||
FILTER (?fullAddress != ?newFullAddress)
|
||||
}
|
||||
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?address locn:fullAddress ?fullAddress.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?address locn:fullAddress ?newFullAddress.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
?address locn:fullAddress ?fullAddress;
|
||||
locn:thoroughfare ?street;
|
||||
adres:Adresvoorstelling.huisnummer ?buildingNo;
|
||||
adres:Adresvoorstelling.busnummer ?boxNo;
|
||||
locn:postCode ?postalCode;
|
||||
adres:gemeentenaam ?municipality;
|
||||
adres:land ?country.
|
||||
FILTER (EXISTS { ?site organisatie:bestaatUit ?address. } ||
|
||||
EXISTS { ?site org:siteAddress/locn:address ?address. })
|
||||
FILTER (?municipality IN (
|
||||
"Antwerpen",
|
||||
"Pajottegem",
|
||||
"Wingene",
|
||||
"Tielt",
|
||||
"Nazareth-De Pinte",
|
||||
"Lochristi",
|
||||
"Lokeren",
|
||||
"Merelbeke-Melle",
|
||||
"Beveren-Kruibeke-Zwijndrecht",
|
||||
"Bilzen-Hoeselt",
|
||||
"Tongeren-Borgloon",
|
||||
"Tessenderlo-Ham",
|
||||
"Hasselt"
|
||||
))
|
||||
BIND (CONCAT(?street, " ", ?buildingNo, " ", ?boxNo, ", ", ?postalCode, " ", ?municipality, ", ", ?country) AS ?newFullAddress)
|
||||
FILTER (?fullAddress != ?newFullAddress)
|
||||
}
|
||||
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s regorg:orgStatus ?activeStatus.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s regorg:orgStatus ?notActiveStatus.
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?s {
|
||||
<http://data.lblod.info/id/bestuurseenheden/150440a8bb763d6f53d24ca1c6f1460cb5817c8a261fd90e74aadac3292c3efe>
|
||||
<http://data.lblod.info/id/bestuurseenheden/41d31a2eb697af977aadf64c73e0bcffb094e0f20e4017fe3b49c507079c0976>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/330516b323c00851cf4b93e6d5d7a2ef4591f68ae6e71ad9c1f432ee70521bb2>
|
||||
<http://data.lblod.info/id/bestuurseenheden/7dd1250996188607bb1e28df1ebea0b943e8db59c08ea01e3c57672531c43ec6>
|
||||
<http://data.lblod.info/id/bestuurseenheden/541c1603eb8c01968f95d1f262854134499e00d135cd7c9147d307ccbd1e20fd>
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/4deae42b2b25bff407f5abc7cbb6d62eb02afaf2892086341c324fdf2c0e6e92>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b7af3483cb5d0021c6f5864a433b211fce30246ef685621d104b1951915c21c4>
|
||||
}
|
||||
BIND (<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> AS ?notActiveStatus)
|
||||
BIND (<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> AS ?activeStatus)
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
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> {
|
||||
?stAmandus regorg:orgStatus ?oldStatus.
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?stAmandus regorg:orgStatus ?notActiveStatus.
|
||||
|
||||
?mergerChangeEvent org:originalOrganization ?stAmandus.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?stAmandus regorg:orgStatus ?oldStatus.
|
||||
}
|
||||
VALUES ?stAmandus {
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/b18a5d3943087d509d76dcceeba102c3>
|
||||
}
|
||||
BIND (<http://data.lblod.info/id/veranderingsgebeurtenissen/677E445E29299CC832892A0F> AS ?mergerChangeEvent)
|
||||
BIND (<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> AS ?notActiveStatus)
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:start ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s mandaat:start ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:start ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:einde ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s mandaat:einde ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:einde ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:bindingStart ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s mandaat:bindingStart ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:bindingStart ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:bindingEinde ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s mandaat:bindingEinde ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s mandaat:bindingEinde ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s ch:startdatum ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s ch:startdatum ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s ch:startdatum ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s ch:eindedatum ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s ch:eindedatum ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s ch:eindedatum ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?s ere:geplandeEinddatumAanstelling ?o .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?s ere:geplandeEinddatumAanstelling ?converteddate .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?s ere:geplandeEinddatumAanstelling ?o .
|
||||
}
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
BIND(IF(strlen(str(?o)) = 10, strdt(concat(str(?o), 'T02:00:00'), xsd:dateTime), ?o) as ?converteddate).
|
||||
}
|
||||
;
|
||||
@@ -1,42 +0,0 @@
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?orgaanInTime a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidOrgaanInTime ;
|
||||
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#bindingStart> "2019-01-01T00:00:00"^^xsd:dateTime .
|
||||
|
||||
?orgaan a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidOrgaan ;
|
||||
<http://www.w3.org/2004/02/skos/core#prefLabel> ?orgaanLabel ;
|
||||
<http://www.w3.org/ns/org#classification> ?classificationOrgaan ;
|
||||
<http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuurseenheid .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?classificationOrgaan {
|
||||
"http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/013cc838-173a-4657-b1ae-b00c048df943"
|
||||
"http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/b52094ff-21a2-4da8-8dbe-f513365d1528"
|
||||
"http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/41caf7e6-b040-4720-9cc2-a96cfffed5b4"
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e2fdd5a7-c67f-4cad-99c5-6a2c5212f9a3>
|
||||
<http://data.lblod.info/id/bestuurseenheden/384b48dc-6860-49b4-a9ef-efa557299950>
|
||||
<http://data.lblod.info/id/bestuurseenheden/98afbe1f-4e7d-4896-925b-d7324302ce73>
|
||||
<http://data.lblod.info/id/bestuurseenheden/fc648151-f691-4d75-a954-b3249a4deb76>
|
||||
}
|
||||
|
||||
?bestuurseenheid a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?bestuurseenheidLabel .
|
||||
|
||||
?classificationOrgaan skos:prefLabel ?classificationOrgaanLabel .
|
||||
|
||||
BIND(CONCAT(?classificationOrgaanLabel, " ", ?bestuurseenheidLabel) as ?orgaanLabel)
|
||||
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "orgaanInTime")) as ?uuidOrgaanInTime)
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "orgaan")) as ?uuidOrgaan)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaan)) AS ?orgaan)
|
||||
}
|
||||
;
|
||||
|
||||
@@ -2127,34 +2127,6 @@
|
||||
}
|
||||
|
||||
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?addressUri
|
||||
<https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer> "15";
|
||||
|
||||
<http://www.w3.org/ns/locn#postCode> "8710";
|
||||
<http://www.w3.org/ns/locn#adminUnitL2> "Wielsbeke";
|
||||
<http://www.w3.org/ns/locn#thoroughfare> "Hernieuwenstraat";
|
||||
<https://data.vlaanderen.be/ns/adres#gemeentenaam> "Wielsbeke";
|
||||
<https://data.vlaanderen.be/ns/adres#land> "België";
|
||||
<http://www.w3.org/ns/locn#fullAddress> "Hernieuwenstraat 15, 8710 Wielsbeke, België".
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH ?g {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?addressUri
|
||||
|
||||
@@ -1554,31 +1554,3 @@
|
||||
?contact <http://schema.org/contactType> "Primary" .
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?contact <http://schema.org/telephone> "tel:+3256674504" .
|
||||
?contact <http://xmlns.com/foaf/0.1/page> "https://www.wielsbeke.be/producten/woonzorgcentrum-ter-lembeek" .
|
||||
?contact <http://schema.org/email> "ouderenhuisvesting@wielsbeke.be" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?primarySite .
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "" .
|
||||
|
||||
?primarySite <http://www.w3.org/ns/org#siteAddress> ?contact .
|
||||
|
||||
?contact <http://schema.org/contactType> "Primary" .
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
http://mu.semte.ch/graphs/administrative-unit
|
||||
@@ -0,0 +1,566 @@
|
||||
@prefix lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/> .
|
||||
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
|
||||
@prefix org: <http://www.w3.org/ns/org#> .
|
||||
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/0241c23151e89c935338e66e3b311769c66af75970908b3a63e5a21dab852051> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/c3e9ee4f3053895f79f55cb968eb9e7ca91d5ad88ef2da1647dfa20d26d18123> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/03ab4035a1d587d2ff76b9970dd0163f6a6d78592c0badadc0e33bc58894ca92> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/34531563f113e04747d1c6e403edf337348a581d943262c02227ec1cfc0fc0a7> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/0789acf2-1263-44cc-9696-b8ace1a45bef> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/6677fbf1-bff3-4748-b16f-9b65846bc835> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/08f35a2e902ccf13bcd285fa26465ea309d83e69391611cd4438046647a04b3a> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/5d8fb8342ec812b9c38937c0752b2ca86047fb6fbcc83f136b638374714ffbf0> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/092a3888-fe32-4e46-9704-4f20b1d30c28> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/5214b1ca-2313-4c13-9c23-1738ce561f63> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/0ac69787fdbdc9b510808e0a6481aef97e8245f842de0b360308caf82f358858> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/8fd6c931023b35ae88ad5687244281171f5c77351790aa029ad994cb41dadd26> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/0cc7abe94890895696bb141955d251d4ab1c30b023f7efdada1ec5d6cd4702cf> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/295812dc2a750365b619d305d7d95ba5df9cc03ec293f232de9d3ee6e07859b6> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/0e8753dd669ef5c7c70fd08ba7fc96093679eede2d3d0268f164fa85a68d4c5c> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/1aa1f795cd62557e8029c38290ef79fa8645cfc291856c91b7b2e1d9c7dac9b8> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/0f2f93d8b77e2dd255fcca88615b0ff164f46218c882b77d06c52a1196981029> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/e93746bddc610674ff0fcc15b014bc9fa2dd2ec62fdb94cbc4418c99d22e05a9> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/10d39db2c6fa90dab5a5d53da1789619b57ae5319d72ce6f05291cf3a60bc24f> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/5a774d5b9a661db40dd52cd98d1922ff2f9645c751cf25b0f39e3a30f28ee6b8> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/11a2899e993c650de4c8dbd7f5414a29c415be5f587ce07e4844709b0ebe68c5> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/58f0b93dcff80d5bd61ae173e39581e03cef44d7bbe5b04680714abd36cc0704> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/120a3777dfa31dd69cde486f9e087a51501f33e07f5a4a5ad59fe79cc2ad85a9> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/437ef0c23693f890be5da977cbcee30206a18a2a355621d7b5396810b629f8de> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/1efe43c653e46774ff5359027df5f64c62bb0ec42f2eeced283d4dc30d1b9237> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/5fb724a0b783b3173cdd30365353406ea07ae191b83d180f1026488151d0adb2> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/20d8d72ed811d49fa31b11f80cab53b9b766a05fa77b184cc0e42d7eb4e3e2df> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/4a4f643937ac5151b352a31358443bc66750cdaf4f9466f0177426d63ea17ccd> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/266f17a7-783f-4a65-ab86-1c77bbdedbd2> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/68b48f32d7c4264c8a399e2b5cc28be8366c57723d4c72385c296f03ebb79270> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/27dc18781381d104cf2a582abd320c6515f3a0ef74194d468767894f08f0f3fc> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/f2874d70dabbde2eb3c502686b1f0f68c87c1df03ea841d694843972c65da2ba> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/292571e9f6ea58bf2c777a15d2c7887ee63259a546e706050b87d2f900506871> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/6287c55ae6f576e43144821da028dc2191e6dd42fd0d79e45af82330bc7e99fa> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/2d5e702ed27480f3d067a08d56848101e9839d5fa6293d1520f0fe07b84fa70b> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/a8391c0397e8e420ab11b9731ab38a092c68461d4d7157dd35e68ec0a629b561> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/2ecf2f41bb4f992771ea86645d7eab54968e9f91109deaec566e04ccc40e6ab1> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/be42e1c957c95408c1bd4cf79fee16634bc8adbc60588dad92c2d4ab9535e48e> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/2f7d268866437e3ca4ca4be4153ea8b11a9dece5dde6db85ebfd5a27d4d3ae33> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/9e1576d7dd73b2fca2579c2fc97ea5c2965ac5d8f4d25798d023ee108955749f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/3496487a8bb4a72b3385dafd97ca4cb40220e450916586e1cc16fdce47c8983a> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/d55cbd8c725951c859e02a3499caf136eccc7754f7cb7220ed8491b4c9710a3d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/3605585750c9698f31c08d3cf415e1786cf1b8cc5e852e9b6a8e68d33bd17a41> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/bc0d95791771d915e8130f58913d0ade8803994e054928eda8627eda1ad46497> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/360afb091485183274c728a11dc6dc7bc118208caaed92f6e28b9f582d59c6b3> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/b58edba3c5418c16ec07ea298526aecab173556c67e70be012a7d966537f6f71> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/3818103a2206128e969284b1ae466a2a2b8ef59e594da6343b62a0dbec53d365> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/903d1383c3674fba9d5b8da3b4eff2e335bf654955850d6fa1b5eef18d5ab234> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/39180312ac5aa7133857ac69931965676ff5d7ad625494fcdd8e5d085693a4c9> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/3b769e96d3e114e9719ba6d3563b8cefc857adfdf472c9b7908769b434d327e6> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/3b54f8eb38243859f014907f7ecdfaa8deed7e88ac1d1d7f6f11fe5ce7e27b65> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/b048fe52b25509b858ee97bbb2feb2cf5fb556721688c17f517751875c48e429> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/3c9ec00c-e412-4934-a7a3-465f2cd7a3a3> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/232b9e15-1b81-4565-8adf-9357b1ae3bac> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/3f789d930a9d55360706a1d24b310f9920a7f4a7652d6f290629acef22dd2a3b> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/eb260cd40014a4a7c6d0d060df840a2ed39b005046bd20e36015a12d9137707e> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/4478bcc8c9daaf939aab3e75aaab64c060a7d3b1aed1fbcf3530f9dd59b2c72e> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/d91f2bf69177a8c856b6d27923e1bea5ffc249faf16649ef6c95896d80f79ba0> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/4a96141046521ac3958d074a9fbbc7f55b4088f2714891c70533b10311c4d4a1> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/8041f2ca28da00f321cdb98dd29961076e30df1d6c42d7aa07c73a448d1867c1> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/4cecfa9c28fcc5f050da431c0f74f8a8f37c89072679fc13aa4bf755c4161e21> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/87f05c3c21cc40f12bfcb95d8253ae0f5b93fe1f16bda030fbd256fd886d27a4> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/4d639828ac589677dc7f17898cd954ecca977a002f7be6690f4c30de54cc284b> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/4eda0f6889a772d41e53235a96a4a33afcb4bf635943ac20f32493a78ab6c802> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/4dcbcd0d438c5bc7c9b9e5e0612ff20fd98758915461da1003448bb7ea7b1f72> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/846f38ef4d8b6b8e21008e6cb3c712c5c720617e27ab82ac0820141584e8f565> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/54c6895deae73439752313919881bed1f328f6a4666d29dad2176f89bdb70d54> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/c4581fec84e4955152a354cb26700b1552fb9fe24498988425c959e2756441f6> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/55544e33b2e77fc68fe062186fa5d516567f9bae426aeb4e86146626fffa7940> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/b5cb152b39f2f64667c6426824b5dcd42d1fa39a9fa01797da6905f761ecea8c> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/60cf891cb7e038bef18d639a543ee21d9717e414c94dbc4a7401fb3c3f68a7ff> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/7471439abda295f77e464a0a6a12cd8296d8291f5dfcf72c3cae8d98de2c138d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/661c80000f84ff5f6ea025f4c3c809ed4fcb4fab2f4c5b531c6027c744e0dc6f> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/b655dce7849ab67277bc5844fe357714d9b6473dccf821997b0fe86c21c055c0> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/67a06e04-4d59-462a-a8e5-dbda20ac2a54> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/670d595b-f9ff-4541-a333-7301cbabf6a9> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/696a99b5e42c774e8ecf4e2ecf61f14f3c1c6b480263476b10d34d570f04f234> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/98a3ad55c03a018a3d5b769dece5b25fd625db2c6944b178a263b22233b9f1ac> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/6bac703f4e5318e5fa87bae6d3ec3bbc53587ce86a053554197837e74b3112a6> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/33f3d2dc5998978e956fbf6913bb9b748826db6ab890cb1a62eb871971537fb5> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/7507293c5c04e6e750a4040dbb5146da99d3788774d852dd37f2036a76b49b04> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/0ee91dabae88816e6ef25c06981f498daac3b4cdc7af64472e15f74ea0b2632a> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/868fa75d9b9107eeb2b49d990bfa0e67bb297a26c82a7af575b154cc99104bec> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/cde437839beef966a156757f7529ae5465c6165617f5680001591ae1e15c431b> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/87fb808d-f838-4db3-8dad-64a63b1fd27c> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/2a9111583acb0216ee57d4d5948c2ce33e697a7060fcdd26cd2f488a2dca9e78> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/8c11ab01ef79a78735b6d3bd7a6f733b1f91d94e5ca7ff1eb1b0e810c48be9c7> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/21b4600821e4a0c3dccf54206ba94881f642693be5b84f9d2c3df698e493746d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/8c726ea24bd6c2116dea777de04220b7da1a7abbc357d3659dcd062bbccfa4a8> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/28f0be5212cbe37990748631092a1ca2e18240ccb492bd51175ac2f7adc15efc> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/8dbfe24072f19a408cff44522af31bdf174c5a43179aba7dda55ffee55a00afd> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/3d4da1ea6055da39710f4e0a75a1885ab38f12c95afa17cae93c5fde1d2400ca> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/8dcb56310e52a366219b95d99870d804a20c667d9ea9c6eedcdac6ca63af3f7f> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/7e1b8e8a9bb0323846530250930a5e41de6a784e082c79b9a02931f6ef4760e4> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/8eb1767c6edd4336701fd4777703e5179d728defe9b44e76ba9c3a3a17e6164e> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/3a71484e7603218c186aee48b5de2b3d109fde5b79e3929b2d3114f78ee5e11d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/92093c74dc19b6f8092b5a991d4fa8ae30ded6b57dcc92ed86eebced79706cb9> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/a362666c0673d459ab5a8cfd0448eb020077c3252943653b59cdb0dd1355ec3c> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/93d299bb7cd3fc45a9125d1eb77d65f9febeadaa06c1c5827b24881fbacab91e> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/9b1d37f0abdae29c3e1e47ffafe26134621607f238972da847d2a7a719e0a42d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/9414f35d20a4bcc119bd1246716936bd0a8d77f809018ff1763ffc80b24659a6> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/737fb209efaae693f8efbfde6a14bb27c5012fae57d369827de30ee876f549d3> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/95385b62-eea2-4f3a-9ad3-d10e84c9d18e> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/4b615778b865cdbf434b450722a98d8902b5284c5dbbdabb495ce2390c587f4a> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/96af1b7b3c75640ffb87dda8757a38d8ebfbf9bbd698608ed4e6e73d18e3d8fe> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/5ceb19598cecd32eb66445ee620f34b9ba2aa0cf8c6321bae3049f0e725c0312> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/9710ad88034d02c8bd49107565a97c29217043c7e8c1a6d88fa6f229edf76447> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/57f293d75564a21d1171f558d80f9e95bb27f647303c71afc8185d5caf2b7f43> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/992828c3-a9c2-4888-b5ec-7c658ee666a8> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/d974a38884bb6c628cb6da882f43c40a83ee62d0ccb5daff21d80b61236f2329> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/9b6b17b0e753c72e9b43b0761cb82076e7f2ca78ef98d19646b3441c57dda400> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/cf852b93d438e14f9e300b343e94ffb06ba7084290fcaf6ce42f9d443677b02c> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/a2c15da2-23fa-4f66-a379-15e218b03ba3> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/f828e4bf-3f4e-4d33-93f5-f6082820cf4f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/a3d4e2b3e29a88265dcecc4134b9eeede86e5b1b433fd5d4de2615bef1bd60c5> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/86e4cda8813ec134be47a1e5623d5845093cdcaaa7d16e6b6484568d7ec046ac> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/abe8caddece5909c6d8523cb3dae8564ef2b3d3fe385b365ff41c1504c37b030> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/34bc6706485045acf2073237a43e71880313a1887ff7de7a9802f57cdf1cefb5> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/b1c6a40bd520109db031e8f81ba6569d85c581124ddd85448f8d2d8c4977a706> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/6dc760d2d3fc82c346afd770ece08b4dc11fd307225ecafe10b365eaad715f3c> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/b4444178-4959-4b2b-8794-1843f68d344f> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/cb2752ae-56c3-4c3f-bb34-478e84723de7> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/b523133b6366d85deb44dfe707eb45858f7f25b4e4b8bf099609130996d03ebf> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/0f141a2c907d8fb5d6afcf7a4a3c643db738944616db4d0279369150a485e9ac> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/b67e1b76ab61388f428c648b35787ce1f1203ecb552665913d8409252db55324> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/d79756eca895d5c03482c973de9684d48b2de9ffe90e68adc6900bc3fa708c04> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/baabf991fb3f59bc87f4b4fe2294ae59613f5b6f4d50b64cd982893eb8d84b2e> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/559d5a9ca37edf492727808268205e266b8249b10bf8c5a1e442669160ff78d7> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/bc327813fddbe0675f41b2d64f8d31a19a5a633eb44acca7cbea45a4079c4350> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/d724757b663986d3c8d9921a41aeb6ce13991dbc633625b39a88da6aa1223501> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/c16bc9e577fb33fe0a56f203483bb85a2ebcf5a028a0911b93b953235055cfdd> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/6f0d1dba54a70751e4cb330b49268117c7dea262e1bf6e1f0922c8c3a8615fe5> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/c6398262a7e9e2ee25e6df0e7bf237b3861f41e06c38f4d241c49f64b5a5643c> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/cd54fd20c9dc9a7040fc2dae2066b00b3348334d8a2e1d040734a9a7848518b7> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/caa6157ee73d86190667995c804667a96d82526d007354edddd53e9426b06a69> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/c324564751eeaf77495f1983c41a84e6163311e60e0ece37dc2b31f4e784ea06> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/d15d4561-3078-4452-bb44-41f5dbcde08c> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/308aae90-c26e-4f54-968f-3f83c6d881ee> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/d383d125-3652-43fe-92ce-e1e28d3f2684> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/f082ea81-b925-454a-aed8-d3ebfb5b8187> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/d40ff7222fe9d15f2aa624da3086f307b0241aeaa53549e92025dd2db90523f3> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/c4fe0fcd16a11339951ee74bb33247e059180b59ffa338bad54251fdcd99716d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/db2160258099185eb05fa446c05aa79ac70c71b9fd77ead33f4a511cd3921e13> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/357ea2523a37b20441c17cc289188b9fef4cd728bf3be192bfe825f2a16cc868> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/e12b86b1-c457-4b86-beb0-4a306e8678e2> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/fdb45d8a-c640-4b3a-a2dc-07726794b28d> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/e4170723392a7c8dccbee72e6dfa5be38856a70fdbcb963748c537138631e324> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/e02314cabe049aee4acbcffdc842f5f1042a3c101f32dcf50fb9ac2c644f71ad> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/e548803cb4cc1414f2acebcb11cba7addd0cb945697a042385b5d45d77ebeb5d> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/c9b05cfefff656d5a3040467b993777ee9c344c0c00aca18e2a8085ed485d598> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/e6a39bc6-9ef0-4d1a-81cc-a21e6605b099> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/148104b5e0e65c00fb91e2405714518b4501c8e55881a740ee00e3bb4c5aefb5> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/ed31a90f10c58efeb61fff3e4e4246bb3c9a4e40f4a90483c1f6ee9ab09ad0b1> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/ce0c595a54aa944e73ff1678b92bc74b0779fc89913c81a843443107a9bc8dd5> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/ee5bd719e6fd47e74c96624db2df02da761ffbe1cf0d3d091956282af1d9cd0d> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/7b68c3aafe9a95dd44c1ed7db0bad5a825abe80e176bee2501c21797bba00041> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/f77140396dba29e4cdd4c4c7636604f8ecc05eaa880d9033ddd13cec8ae44ebd> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/f5c71b55da62c7dbb5ab2cf73ea6f38d3ad502e27e702d1708d145e0d7f14621> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursorganen/fdf011516569be6bfa345771c56dec1f7091d75a9e970048fc9fdf7aeb6f2674> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/ec2dfdb16c37d05d359db922152e133d9b990eda4a69bd7d29af0963978017bf> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/0ee91dabae88816e6ef25c06981f498daac3b4cdc7af64472e15f74ea0b2632a> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "0ee91dabae88816e6ef25c06981f498daac3b4cdc7af64472e15f74ea0b2632a" ;
|
||||
skos:prefLabel "Zorgbedrijf Ouderenzorg Genk Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/0f141a2c907d8fb5d6afcf7a4a3c643db738944616db4d0279369150a485e9ac> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "0f141a2c907d8fb5d6afcf7a4a3c643db738944616db4d0279369150a485e9ac" ;
|
||||
skos:prefLabel "AZ ST-JAN Brugge-Oostende A.V. Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/148104b5e0e65c00fb91e2405714518b4501c8e55881a740ee00e3bb4c5aefb5> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "148104b5e0e65c00fb91e2405714518b4501c8e55881a740ee00e3bb4c5aefb5" ;
|
||||
skos:prefLabel "Ziekenhuis Oost-Limburg, autonome verzorgingsinstelling Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/1aa1f795cd62557e8029c38290ef79fa8645cfc291856c91b7b2e1d9c7dac9b8> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "1aa1f795cd62557e8029c38290ef79fa8645cfc291856c91b7b2e1d9c7dac9b8" ;
|
||||
skos:prefLabel "Zorgbedrijf Vilvoorde Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/21b4600821e4a0c3dccf54206ba94881f642693be5b84f9d2c3df698e493746d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "21b4600821e4a0c3dccf54206ba94881f642693be5b84f9d2c3df698e493746d" ;
|
||||
skos:prefLabel "Vereniging De Schakelaar Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/232b9e15-1b81-4565-8adf-9357b1ae3bac> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "232b9e15-1b81-4565-8adf-9357b1ae3bac" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/28f0be5212cbe37990748631092a1ca2e18240ccb492bd51175ac2f7adc15efc> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "28f0be5212cbe37990748631092a1ca2e18240ccb492bd51175ac2f7adc15efc" ;
|
||||
skos:prefLabel "Zorgbedrijf Rivierenland Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/295812dc2a750365b619d305d7d95ba5df9cc03ec293f232de9d3ee6e07859b6> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "295812dc2a750365b619d305d7d95ba5df9cc03ec293f232de9d3ee6e07859b6" ;
|
||||
skos:prefLabel "SOCIAAL VERHUURKANTOOR MELLE - DESTELBERGEN Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/2a9111583acb0216ee57d4d5948c2ce33e697a7060fcdd26cd2f488a2dca9e78> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "2a9111583acb0216ee57d4d5948c2ce33e697a7060fcdd26cd2f488a2dca9e78" ;
|
||||
skos:prefLabel "ALGEMEEN ZIEKENHUIS WAASLAND Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/308aae90-c26e-4f54-968f-3f83c6d881ee> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "308aae90-c26e-4f54-968f-3f83c6d881ee" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/33f3d2dc5998978e956fbf6913bb9b748826db6ab890cb1a62eb871971537fb5> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "33f3d2dc5998978e956fbf6913bb9b748826db6ab890cb1a62eb871971537fb5" ;
|
||||
skos:prefLabel "Ruddersstove Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/34531563f113e04747d1c6e403edf337348a581d943262c02227ec1cfc0fc0a7> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "34531563f113e04747d1c6e403edf337348a581d943262c02227ec1cfc0fc0a7" ;
|
||||
skos:prefLabel "DE BLAUWE LELIE Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/34bc6706485045acf2073237a43e71880313a1887ff7de7a9802f57cdf1cefb5> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "34bc6706485045acf2073237a43e71880313a1887ff7de7a9802f57cdf1cefb5" ;
|
||||
skos:prefLabel "VERENIGING WOK Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/357ea2523a37b20441c17cc289188b9fef4cd728bf3be192bfe825f2a16cc868> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "357ea2523a37b20441c17cc289188b9fef4cd728bf3be192bfe825f2a16cc868" ;
|
||||
skos:prefLabel "SOCIAAL VERHUURKANTOOR LEIE EN SCHELDE Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/3a71484e7603218c186aee48b5de2b3d109fde5b79e3929b2d3114f78ee5e11d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "3a71484e7603218c186aee48b5de2b3d109fde5b79e3929b2d3114f78ee5e11d" ;
|
||||
skos:prefLabel "Vereniging Dodoens Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/3b769e96d3e114e9719ba6d3563b8cefc857adfdf472c9b7908769b434d327e6> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "3b769e96d3e114e9719ba6d3563b8cefc857adfdf472c9b7908769b434d327e6" ;
|
||||
skos:prefLabel "Vereniging Weldenderend Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/3d4da1ea6055da39710f4e0a75a1885ab38f12c95afa17cae93c5fde1d2400ca> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "3d4da1ea6055da39710f4e0a75a1885ab38f12c95afa17cae93c5fde1d2400ca" ;
|
||||
skos:prefLabel "Zorggroep Orion Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/437ef0c23693f890be5da977cbcee30206a18a2a355621d7b5396810b629f8de> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "437ef0c23693f890be5da977cbcee30206a18a2a355621d7b5396810b629f8de" ;
|
||||
skos:prefLabel "Regionaal Instituut voor Dringende Hulpverlening Krisisinfo-Netwerk-Antwerpen Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/4a4f643937ac5151b352a31358443bc66750cdaf4f9466f0177426d63ea17ccd> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "4a4f643937ac5151b352a31358443bc66750cdaf4f9466f0177426d63ea17ccd" ;
|
||||
skos:prefLabel "WELZIJNSZORG KEMPEN Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/4b615778b865cdbf434b450722a98d8902b5284c5dbbdabb495ce2390c587f4a> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "4b615778b865cdbf434b450722a98d8902b5284c5dbbdabb495ce2390c587f4a" ;
|
||||
skos:prefLabel "ZorgGroep Lommel Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/4eda0f6889a772d41e53235a96a4a33afcb4bf635943ac20f32493a78ab6c802> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "4eda0f6889a772d41e53235a96a4a33afcb4bf635943ac20f32493a78ab6c802" ;
|
||||
skos:prefLabel "Woon- en Zorgbedrijf Wervik Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/5214b1ca-2313-4c13-9c23-1738ce561f63> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "5214b1ca-2313-4c13-9c23-1738ce561f63" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/559d5a9ca37edf492727808268205e266b8249b10bf8c5a1e442669160ff78d7> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "559d5a9ca37edf492727808268205e266b8249b10bf8c5a1e442669160ff78d7" ;
|
||||
skos:prefLabel "Zorg Izegem Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/57f293d75564a21d1171f558d80f9e95bb27f647303c71afc8185d5caf2b7f43> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "57f293d75564a21d1171f558d80f9e95bb27f647303c71afc8185d5caf2b7f43" ;
|
||||
skos:prefLabel "Schuldbemiddeling BODUKAP Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/58f0b93dcff80d5bd61ae173e39581e03cef44d7bbe5b04680714abd36cc0704> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "58f0b93dcff80d5bd61ae173e39581e03cef44d7bbe5b04680714abd36cc0704" ;
|
||||
skos:prefLabel "Woonzorgnetwerk Edegem Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/5a774d5b9a661db40dd52cd98d1922ff2f9645c751cf25b0f39e3a30f28ee6b8> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "5a774d5b9a661db40dd52cd98d1922ff2f9645c751cf25b0f39e3a30f28ee6b8" ;
|
||||
skos:prefLabel "WELZIJNKOEPEL KLEIN-BRABANT-VAARTLAND Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/5ceb19598cecd32eb66445ee620f34b9ba2aa0cf8c6321bae3049f0e725c0312> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "5ceb19598cecd32eb66445ee620f34b9ba2aa0cf8c6321bae3049f0e725c0312" ;
|
||||
skos:prefLabel "Zorgbedrijf Antwerpen Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/5d8fb8342ec812b9c38937c0752b2ca86047fb6fbcc83f136b638374714ffbf0> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "5d8fb8342ec812b9c38937c0752b2ca86047fb6fbcc83f136b638374714ffbf0" ;
|
||||
skos:prefLabel "RVT/RUSTHUIS NAJAARSZON Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/5fb724a0b783b3173cdd30365353406ea07ae191b83d180f1026488151d0adb2> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "5fb724a0b783b3173cdd30365353406ea07ae191b83d180f1026488151d0adb2" ;
|
||||
skos:prefLabel "Dienst voor schuldbemiddeling Waasland Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/6287c55ae6f576e43144821da028dc2191e6dd42fd0d79e45af82330bc7e99fa> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "6287c55ae6f576e43144821da028dc2191e6dd42fd0d79e45af82330bc7e99fa" ;
|
||||
skos:prefLabel "Zorgvereniging Brugge Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/6677fbf1-bff3-4748-b16f-9b65846bc835> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "6677fbf1-bff3-4748-b16f-9b65846bc835" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/670d595b-f9ff-4541-a333-7301cbabf6a9> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "670d595b-f9ff-4541-a333-7301cbabf6a9" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/68b48f32d7c4264c8a399e2b5cc28be8366c57723d4c72385c296f03ebb79270> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "68b48f32d7c4264c8a399e2b5cc28be8366c57723d4c72385c296f03ebb79270" ;
|
||||
skos:prefLabel "Welzijnsvereniging Sleutelzorg Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/6dc760d2d3fc82c346afd770ece08b4dc11fd307225ecafe10b365eaad715f3c> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "6dc760d2d3fc82c346afd770ece08b4dc11fd307225ecafe10b365eaad715f3c" ;
|
||||
skos:prefLabel "Zorgbedrijf Roeselare Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/6f0d1dba54a70751e4cb330b49268117c7dea262e1bf6e1f0922c8c3a8615fe5> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "6f0d1dba54a70751e4cb330b49268117c7dea262e1bf6e1f0922c8c3a8615fe5" ;
|
||||
skos:prefLabel "ZORGBEDRIJF KLEIN-BRABANT Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/737fb209efaae693f8efbfde6a14bb27c5012fae57d369827de30ee876f549d3> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "737fb209efaae693f8efbfde6a14bb27c5012fae57d369827de30ee876f549d3" ;
|
||||
skos:prefLabel "Woonzorgcentrum van Lierde Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/7471439abda295f77e464a0a6a12cd8296d8291f5dfcf72c3cae8d98de2c138d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "7471439abda295f77e464a0a6a12cd8296d8291f5dfcf72c3cae8d98de2c138d" ;
|
||||
skos:prefLabel "Zorgbedrijf Meetjesland Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/7b68c3aafe9a95dd44c1ed7db0bad5a825abe80e176bee2501c21797bba00041> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "7b68c3aafe9a95dd44c1ed7db0bad5a825abe80e176bee2501c21797bba00041" ;
|
||||
skos:prefLabel "Welzijnsvereniging Sint-Gillis-Waas Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/7e1b8e8a9bb0323846530250930a5e41de6a784e082c79b9a02931f6ef4760e4> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "7e1b8e8a9bb0323846530250930a5e41de6a784e082c79b9a02931f6ef4760e4" ;
|
||||
skos:prefLabel "Woonzorggroep Voorkempen Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/8041f2ca28da00f321cdb98dd29961076e30df1d6c42d7aa07c73a448d1867c1> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "8041f2ca28da00f321cdb98dd29961076e30df1d6c42d7aa07c73a448d1867c1" ;
|
||||
skos:prefLabel "WELZIJNSBAND MEETJESLAND Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/846f38ef4d8b6b8e21008e6cb3c712c5c720617e27ab82ac0820141584e8f565> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "846f38ef4d8b6b8e21008e6cb3c712c5c720617e27ab82ac0820141584e8f565" ;
|
||||
skos:prefLabel "Welzijnskoepel West-Brabant Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/86e4cda8813ec134be47a1e5623d5845093cdcaaa7d16e6b6484568d7ec046ac> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "86e4cda8813ec134be47a1e5623d5845093cdcaaa7d16e6b6484568d7ec046ac" ;
|
||||
skos:prefLabel "SOCIAAL VERHUURKANTOOR KOEPEL BREDENE - OOSTENDE Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/87f05c3c21cc40f12bfcb95d8253ae0f5b93fe1f16bda030fbd256fd886d27a4> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "87f05c3c21cc40f12bfcb95d8253ae0f5b93fe1f16bda030fbd256fd886d27a4" ;
|
||||
skos:prefLabel "WOONWINKEL KNOKKE-HEIST Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/8fd6c931023b35ae88ad5687244281171f5c77351790aa029ad994cb41dadd26> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "8fd6c931023b35ae88ad5687244281171f5c77351790aa029ad994cb41dadd26" ;
|
||||
skos:prefLabel "AUTONOME VERENIGING \"HET DAK\" Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/903d1383c3674fba9d5b8da3b4eff2e335bf654955850d6fa1b5eef18d5ab234> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "903d1383c3674fba9d5b8da3b4eff2e335bf654955850d6fa1b5eef18d5ab234" ;
|
||||
skos:prefLabel "Sociaal Verhuurkantoor Gent Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/98a3ad55c03a018a3d5b769dece5b25fd625db2c6944b178a263b22233b9f1ac> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "98a3ad55c03a018a3d5b769dece5b25fd625db2c6944b178a263b22233b9f1ac" ;
|
||||
skos:prefLabel "Zorgbedrijf Tielt Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/9b1d37f0abdae29c3e1e47ffafe26134621607f238972da847d2a7a719e0a42d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "9b1d37f0abdae29c3e1e47ffafe26134621607f238972da847d2a7a719e0a42d" ;
|
||||
skos:prefLabel "VERENIGING ONS TEHUIS VOOR ZUID-WEST-VLAANDEREN Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/9e1576d7dd73b2fca2579c2fc97ea5c2965ac5d8f4d25798d023ee108955749f> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "9e1576d7dd73b2fca2579c2fc97ea5c2965ac5d8f4d25798d023ee108955749f" ;
|
||||
skos:prefLabel "Algemeen Ziekenhuis Sint-Dimpna Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/a362666c0673d459ab5a8cfd0448eb020077c3252943653b59cdb0dd1355ec3c> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "a362666c0673d459ab5a8cfd0448eb020077c3252943653b59cdb0dd1355ec3c" ;
|
||||
skos:prefLabel "Beschut Wonen - Antwerpen Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/a8391c0397e8e420ab11b9731ab38a092c68461d4d7157dd35e68ec0a629b561> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "a8391c0397e8e420ab11b9731ab38a092c68461d4d7157dd35e68ec0a629b561" ;
|
||||
skos:prefLabel "Zorg Stekene Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/b048fe52b25509b858ee97bbb2feb2cf5fb556721688c17f517751875c48e429> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "b048fe52b25509b858ee97bbb2feb2cf5fb556721688c17f517751875c48e429" ;
|
||||
skos:prefLabel "VERENIGING 'T SAS Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/b58edba3c5418c16ec07ea298526aecab173556c67e70be012a7d966537f6f71> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "b58edba3c5418c16ec07ea298526aecab173556c67e70be012a7d966537f6f71" ;
|
||||
skos:prefLabel "\"Het Eepos (Wonen voor volwassen personen met een handicap)\" Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/b5cb152b39f2f64667c6426824b5dcd42d1fa39a9fa01797da6905f761ecea8c> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "b5cb152b39f2f64667c6426824b5dcd42d1fa39a9fa01797da6905f761ecea8c" ;
|
||||
skos:prefLabel "De Steenoven Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/b655dce7849ab67277bc5844fe357714d9b6473dccf821997b0fe86c21c055c0> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "b655dce7849ab67277bc5844fe357714d9b6473dccf821997b0fe86c21c055c0" ;
|
||||
skos:prefLabel "vereniging voor Samenwerking rond Preventie in het kader van Opvoeding en Onderwijs Regio Brugge Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/bc0d95791771d915e8130f58913d0ade8803994e054928eda8627eda1ad46497> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "bc0d95791771d915e8130f58913d0ade8803994e054928eda8627eda1ad46497" ;
|
||||
skos:prefLabel "Zorgbedrijf Leuven Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/be42e1c957c95408c1bd4cf79fee16634bc8adbc60588dad92c2d4ab9535e48e> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "be42e1c957c95408c1bd4cf79fee16634bc8adbc60588dad92c2d4ab9535e48e" ;
|
||||
skos:prefLabel "W13 Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/c324564751eeaf77495f1983c41a84e6163311e60e0ece37dc2b31f4e784ea06> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "c324564751eeaf77495f1983c41a84e6163311e60e0ece37dc2b31f4e784ea06" ;
|
||||
skos:prefLabel "SOCIAAL VERHUURKANTOOR BRUGGE (SVK BRUGGE) Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/c3e9ee4f3053895f79f55cb968eb9e7ca91d5ad88ef2da1647dfa20d26d18123> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "c3e9ee4f3053895f79f55cb968eb9e7ca91d5ad88ef2da1647dfa20d26d18123" ;
|
||||
skos:prefLabel "SOCIAAL VERHUURKANTOOR WAASLAND Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/c4581fec84e4955152a354cb26700b1552fb9fe24498988425c959e2756441f6> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "c4581fec84e4955152a354cb26700b1552fb9fe24498988425c959e2756441f6" ;
|
||||
skos:prefLabel "Zorgvereniging OPcura Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/c4fe0fcd16a11339951ee74bb33247e059180b59ffa338bad54251fdcd99716d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "c4fe0fcd16a11339951ee74bb33247e059180b59ffa338bad54251fdcd99716d" ;
|
||||
skos:prefLabel "Algemeen Ziekenhuis Jan Palfijn Gent Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/c9b05cfefff656d5a3040467b993777ee9c344c0c00aca18e2a8085ed485d598> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "c9b05cfefff656d5a3040467b993777ee9c344c0c00aca18e2a8085ed485d598" ;
|
||||
skos:prefLabel "OPENBARE VERENIGING RONSE Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/cb2752ae-56c3-4c3f-bb34-478e84723de7> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "cb2752ae-56c3-4c3f-bb34-478e84723de7" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/cd54fd20c9dc9a7040fc2dae2066b00b3348334d8a2e1d040734a9a7848518b7> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "cd54fd20c9dc9a7040fc2dae2066b00b3348334d8a2e1d040734a9a7848518b7" ;
|
||||
skos:prefLabel "Zorgbedrijf Sint-Truiden Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/cde437839beef966a156757f7529ae5465c6165617f5680001591ae1e15c431b> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "cde437839beef966a156757f7529ae5465c6165617f5680001591ae1e15c431b" ;
|
||||
skos:prefLabel "Ons Huis Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/ce0c595a54aa944e73ff1678b92bc74b0779fc89913c81a843443107a9bc8dd5> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "ce0c595a54aa944e73ff1678b92bc74b0779fc89913c81a843443107a9bc8dd5" ;
|
||||
skos:prefLabel "Zorg Houthalen-Helchteren Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/cf852b93d438e14f9e300b343e94ffb06ba7084290fcaf6ce42f9d443677b02c> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "cf852b93d438e14f9e300b343e94ffb06ba7084290fcaf6ce42f9d443677b02c" ;
|
||||
skos:prefLabel "Zorgbedrijf Harelbeke Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/d55cbd8c725951c859e02a3499caf136eccc7754f7cb7220ed8491b4c9710a3d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "d55cbd8c725951c859e02a3499caf136eccc7754f7cb7220ed8491b4c9710a3d" ;
|
||||
skos:prefLabel "WOONDIENST JOGI Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/d724757b663986d3c8d9921a41aeb6ce13991dbc633625b39a88da6aa1223501> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "d724757b663986d3c8d9921a41aeb6ce13991dbc633625b39a88da6aa1223501" ;
|
||||
skos:prefLabel "SOCiAL Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/d79756eca895d5c03482c973de9684d48b2de9ffe90e68adc6900bc3fa708c04> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "d79756eca895d5c03482c973de9684d48b2de9ffe90e68adc6900bc3fa708c04" ;
|
||||
skos:prefLabel "Autonome Verzorginstelling Henri Serruysziekenhuis Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/d91f2bf69177a8c856b6d27923e1bea5ffc249faf16649ef6c95896d80f79ba0> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "d91f2bf69177a8c856b6d27923e1bea5ffc249faf16649ef6c95896d80f79ba0" ;
|
||||
skos:prefLabel "Audio Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/d974a38884bb6c628cb6da882f43c40a83ee62d0ccb5daff21d80b61236f2329> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "d974a38884bb6c628cb6da882f43c40a83ee62d0ccb5daff21d80b61236f2329" ;
|
||||
skos:prefLabel "Zorgband Leie en Schelde, OCMW-vereniging van publiekrecht Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/e02314cabe049aee4acbcffdc842f5f1042a3c101f32dcf50fb9ac2c644f71ad> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "e02314cabe049aee4acbcffdc842f5f1042a3c101f32dcf50fb9ac2c644f71ad" ;
|
||||
skos:prefLabel "Zorgbedrijf Brasschaat Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/e93746bddc610674ff0fcc15b014bc9fa2dd2ec62fdb94cbc4418c99d22e05a9> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "e93746bddc610674ff0fcc15b014bc9fa2dd2ec62fdb94cbc4418c99d22e05a9" ;
|
||||
skos:prefLabel "OCMW Vereniging SAKURA Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/eb260cd40014a4a7c6d0d060df840a2ed39b005046bd20e36015a12d9137707e> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "eb260cd40014a4a7c6d0d060df840a2ed39b005046bd20e36015a12d9137707e" ;
|
||||
skos:prefLabel "WELZIJNSREGIO NOORD-LIMBURG Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/ec2dfdb16c37d05d359db922152e133d9b990eda4a69bd7d29af0963978017bf> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "ec2dfdb16c37d05d359db922152e133d9b990eda4a69bd7d29af0963978017bf" ;
|
||||
skos:prefLabel "Auroraziekenhuis Autonome Verzorgingsinstelling Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/f082ea81-b925-454a-aed8-d3ebfb5b8187> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "f082ea81-b925-454a-aed8-d3ebfb5b8187" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/f2874d70dabbde2eb3c502686b1f0f68c87c1df03ea841d694843972c65da2ba> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "f2874d70dabbde2eb3c502686b1f0f68c87c1df03ea841d694843972c65da2ba" ;
|
||||
skos:prefLabel "HUISVESTINGSDIENST REGIO IZEGEM Leidend ambtenaar",
|
||||
"WOONDIENST REGIO IZEGEM Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/f5c71b55da62c7dbb5ab2cf73ea6f38d3ad502e27e702d1708d145e0d7f14621> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "f5c71b55da62c7dbb5ab2cf73ea6f38d3ad502e27e702d1708d145e0d7f14621" ;
|
||||
skos:prefLabel "Zorgpunt Waasland Leidend ambtenaar" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/f828e4bf-3f4e-4d33-93f5-f6082820cf4f> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "f828e4bf-3f4e-4d33-93f5-f6082820cf4f" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/fdb45d8a-c640-4b3a-a2dc-07726794b28d> a lblodlg:Bestuursfunctie ;
|
||||
mu:uuid "fdb45d8a-c640-4b3a-a2dc-07726794b28d" ;
|
||||
skos:prefLabel "Leidend ambtenaar" ;
|
||||
org:role "http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f" .
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?orgaanInTime a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidOrgaanInTime ;
|
||||
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#bindingStart> "2019-01-01T00:00:00"^^xsd:dateTime ;
|
||||
<http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie .
|
||||
|
||||
?orgaan a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidOrgaan ;
|
||||
<http://www.w3.org/2004/02/skos/core#prefLabel> ?orgaanLabel ;
|
||||
<http://www.w3.org/ns/org#classification> ?classificationOrgaan ;
|
||||
<http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuurseenheid .
|
||||
|
||||
?bestuursfunctie a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?functieUuid ;
|
||||
<http://www.w3.org/2004/02/skos/core#prefLabel> ?functieLabel ;
|
||||
<http://www.w3.org/ns/org#role> <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/41caf7e6-b040-4720-9cc2-a96cfffed5b4> # Leidend Ambtenaar
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e2fdd5a7-c67f-4cad-99c5-6a2c5212f9a3>
|
||||
<http://data.lblod.info/id/bestuurseenheden/384b48dc-6860-49b4-a9ef-efa557299950>
|
||||
<http://data.lblod.info/id/bestuurseenheden/98afbe1f-4e7d-4896-925b-d7324302ce73>
|
||||
<http://data.lblod.info/id/bestuurseenheden/fc648151-f691-4d75-a954-b3249a4deb76>
|
||||
}
|
||||
|
||||
?bestuurseenheid a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?bestuurseenheidLabel .
|
||||
|
||||
?classificationOrgaan skos:prefLabel ?classificationOrgaanLabel .
|
||||
|
||||
BIND(CONCAT(?bestuurseenheidLabel, " Leidend ambtenaar") AS ?functieLabel)
|
||||
BIND(CONCAT(?classificationOrgaanLabel, " ", ?bestuurseenheidLabel) as ?orgaanLabel)
|
||||
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "orgaanInTime")) AS ?uuidOrgaanInTime)
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "orgaan")) AS ?uuidOrgaan)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaan)) AS ?orgaan)
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "functieLabel")) AS ?functieUuid)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursfuncties/", ?functieUuid)) AS ?bestuursfunctie)
|
||||
}
|
||||
;
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?orgaanInTime a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidOrgaanInTime ;
|
||||
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#bindingStart> "2019-01-01T00:00:00"^^xsd:dateTime .
|
||||
|
||||
?orgaan a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidOrgaan ;
|
||||
<http://www.w3.org/2004/02/skos/core#prefLabel> ?orgaanLabel ;
|
||||
<http://www.w3.org/ns/org#classification> ?classificationOrgaan ;
|
||||
<http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuurseenheid .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/013cc838-173a-4657-b1ae-b00c048df943> # Raad van bestuur
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/b52094ff-21a2-4da8-8dbe-f513365d1528> # Algemene vergadering
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e2fdd5a7-c67f-4cad-99c5-6a2c5212f9a3>
|
||||
<http://data.lblod.info/id/bestuurseenheden/384b48dc-6860-49b4-a9ef-efa557299950>
|
||||
<http://data.lblod.info/id/bestuurseenheden/98afbe1f-4e7d-4896-925b-d7324302ce73>
|
||||
<http://data.lblod.info/id/bestuurseenheden/fc648151-f691-4d75-a954-b3249a4deb76>
|
||||
}
|
||||
|
||||
?bestuurseenheid a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?bestuurseenheidLabel .
|
||||
|
||||
?classificationOrgaan skos:prefLabel ?classificationOrgaanLabel .
|
||||
|
||||
BIND(CONCAT(?classificationOrgaanLabel, " ", ?bestuurseenheidLabel) as ?orgaanLabel)
|
||||
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "orgaanInTime")) AS ?uuidOrgaanInTime)
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "orgaan")) AS ?uuidOrgaan)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaan)) AS ?orgaan)
|
||||
}
|
||||
@@ -0,0 +1,987 @@
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0685516024" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0809699184" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0696665975" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Limburg" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0689553994" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0686537789" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0875376696" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Limburg" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0267393663" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0696899963" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0694597697" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0711824305" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0684891363" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0212165922" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0698838775" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Limburg" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0687742074" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Vlaams-Brabant" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0712777279" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Vlaams-Brabant" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0684493762" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Limburg" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0688812935" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0735627214" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0630835639" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0871009916" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0680439360" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0698817989" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Vlaams-Brabant" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0697787118" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0729523736" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0462239939" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0871206587" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0881291322" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Limburg" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0242469910" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0266559859" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Vlaams-Brabant" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0473908049" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0262925527" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0505931808" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0885714720" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Antwerpen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0862382656" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0666615870" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0262926319" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "West-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0537951706" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?addressUri <http://www.w3.org/ns/locn#adminUnitL2> "Oost-Vlaanderen" .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?adminUnit <http://www.w3.org/ns/adms#identifier> ?id ;
|
||||
<http://www.w3.org/ns/org#hasPrimarySite> ?site .
|
||||
|
||||
?id <http://www.w3.org/2004/02/skos/core#notation> "KBO nummer" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator>/<https://data.vlaanderen.be/ns/generiek#lokaleIdentificator> "0262926616" .
|
||||
|
||||
?site <https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?boundAddress .
|
||||
?boundAddress <http://www.w3.org/ns/locn#adminUnitL2> ?province .
|
||||
|
||||
BIND( ?boundAddress AS ?addressUri )
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user