Compare commits
614 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
51b8c2303e | ||
|
|
846c3f4543 | ||
|
|
3d5b962931 | ||
|
|
a8274a8925 | ||
|
|
c850677776 | ||
|
|
44c9f44737 | ||
|
|
2ee40fc923 | ||
|
|
c8d46edd67 | ||
|
|
7d2ed8d741 | ||
|
|
a093ecb309 | ||
|
|
cefdd9aaea | ||
|
|
108e29e4a1 | ||
|
|
52bb3b8d6b | ||
|
|
24e9659c3d | ||
|
|
b676c0a743 | ||
|
|
764cfb6f1c | ||
|
|
dbb80aba03 | ||
|
|
50d47c2395 | ||
|
|
b1e3d00974 | ||
|
|
21bfd7096f | ||
|
|
e9b21036ea | ||
|
|
c567c06262 | ||
|
|
082d923f2e | ||
|
|
10eee92e1c | ||
|
|
792a08124f | ||
|
|
ea56b77b57 | ||
|
|
6d47523e15 | ||
|
|
7730ccc3cb | ||
|
|
3bef65188c | ||
|
|
e414a9e086 | ||
|
|
8573d7bd14 | ||
|
|
ac7232c8af | ||
|
|
3ac31fe810 | ||
|
|
458395931b | ||
|
|
8b001b93c8 | ||
|
|
99f5f5365b | ||
|
|
a1fc67b970 | ||
|
|
97c1929346 | ||
|
|
1d14452084 | ||
|
|
e67e8e749f | ||
|
|
a53f0d3f30 | ||
|
|
df3ccdc06a | ||
|
|
df9c5fc126 | ||
|
|
76784840a4 | ||
|
|
6fae30d245 | ||
|
|
9637ed4cfa | ||
|
|
15a033af93 | ||
|
|
11105113a9 | ||
|
|
2eb960265f | ||
|
|
d57c850ba4 | ||
|
|
0a7fc133de | ||
|
|
482f34a836 | ||
|
|
b4208f0d0a | ||
|
|
d1be8f8eff | ||
|
|
d752d162af | ||
|
|
518db8fb3f | ||
|
|
0e85e069b1 | ||
|
|
9c8616ffab | ||
|
|
e8061f6a0b | ||
|
|
65efd72683 | ||
|
|
70e79734df | ||
|
|
329e87f0eb | ||
|
|
663c975725 | ||
|
|
53bbc00327 | ||
|
|
c9c2cd23ed | ||
|
|
4418349b9e | ||
|
|
f104078cd6 | ||
|
|
78ff81de65 | ||
|
|
9c322a2fab | ||
|
|
76a0715df3 | ||
|
|
66f907eddc | ||
|
|
17f7c04065 | ||
|
|
6429ae4ab8 | ||
|
|
c93bfa6a2e | ||
|
|
6d790078a3 | ||
|
|
cdf17e128b | ||
|
|
51c2476562 | ||
|
|
fbde10887b | ||
|
|
b9263514b2 | ||
|
|
c5990c40f0 | ||
|
|
7bcc9f09ee | ||
|
|
8c2cd9c959 | ||
|
|
60b5f1e3a0 | ||
|
|
b49f0ffd3f | ||
|
|
ddb13e210d | ||
|
|
79d2dda77a | ||
|
|
54e381bfad | ||
|
|
13a9b599a5 | ||
|
|
2a66359ebd | ||
|
|
7cbf418fcc | ||
|
|
7eb7a50e41 | ||
|
|
562f463af3 | ||
|
|
771ac03c13 | ||
|
|
bf425b7dbb | ||
|
|
4dfe1953a7 | ||
|
|
d5c6a3f666 | ||
|
|
a944075616 | ||
|
|
78baadce4f | ||
|
|
d34e28ec0e | ||
|
|
4e8af93f23 | ||
|
|
122b51ad0e | ||
|
|
672b4bce6a | ||
|
|
0bcfc6a63a | ||
|
|
674f27bff8 | ||
|
|
a462b53d06 | ||
|
|
2fd9ce3774 | ||
|
|
1324cd4e58 | ||
|
|
a114380a6b | ||
|
|
00ca7aded0 | ||
|
|
cc1aa08b36 | ||
|
|
90012767a2 | ||
|
|
3259a80083 | ||
|
|
51c1889a7f | ||
|
|
67bedc108c | ||
|
|
b1d5a374f2 | ||
|
|
f295f10d00 | ||
|
|
90f8e4b5d1 | ||
|
|
9a3c0b3dbc | ||
|
|
7d93978327 | ||
|
|
89f6c5dc7b | ||
|
|
45b145847a | ||
|
|
866cff52cc | ||
|
|
a23c817256 | ||
|
|
30f4341e01 | ||
|
|
118c78ce97 | ||
|
|
de9f2f19c1 | ||
|
|
375865e548 | ||
|
|
57e09e9b47 | ||
|
|
f120638741 | ||
|
|
7c96be523c | ||
|
|
848d3b893d | ||
|
|
4443e7de5f | ||
|
|
7128591a49 | ||
|
|
d19464ce36 | ||
|
|
42cb016c47 | ||
|
|
bd9058d186 | ||
|
|
fcbe6c60be | ||
|
|
d0238045bd | ||
|
|
3f37d7ebbc | ||
|
|
ada7193f73 | ||
|
|
ad20c5efb2 | ||
|
|
36e638c262 | ||
|
|
1902b4b9e4 | ||
|
|
81963cb4c8 | ||
|
|
60b9459854 | ||
|
|
c35b3c6c3a | ||
|
|
ef50e761f8 | ||
|
|
b4804f1ef3 | ||
|
|
f6cc456483 | ||
|
|
8494a22621 | ||
|
|
0265b73a27 | ||
|
|
281e7fcfe0 | ||
|
|
76bbfb9300 | ||
|
|
4b3ee6ef58 | ||
|
|
de6058acab | ||
|
|
c5699d6bf5 | ||
|
|
ad8f2620da | ||
|
|
0e54bf206a | ||
|
|
c3b6abc321 | ||
|
|
7e37be687b | ||
|
|
2644c38743 | ||
|
|
cd2f4192d0 | ||
|
|
aac58980d8 | ||
|
|
b89fcc548c | ||
|
|
190374cdcf | ||
|
|
6b02956eb2 | ||
|
|
501973c4cf | ||
|
|
075bde44af | ||
|
|
328fcc5511 | ||
|
|
537274c6c0 | ||
|
|
db769f80a6 | ||
|
|
a732d788b7 | ||
|
|
f9ebd17d17 | ||
|
|
29bd4c9d56 | ||
|
|
2587ba6daf | ||
|
|
4070bde4ab | ||
|
|
ffceadc491 | ||
|
|
be7625a31e | ||
|
|
6b7672df9f | ||
|
|
b1c2f12c71 | ||
|
|
6895f75b2b | ||
|
|
7ccdbad0f1 | ||
|
|
a5a94769a7 | ||
|
|
bed834e9b9 | ||
|
|
5ebb1d3f03 | ||
|
|
20c240d481 | ||
|
|
a9f02a148b | ||
|
|
61924d37d9 | ||
|
|
913fd54da3 | ||
|
|
89572728bc | ||
|
|
43caffdce8 | ||
|
|
0d3ba99048 | ||
|
|
b015497d93 | ||
|
|
8b40cf597f | ||
|
|
f78e7ad99a | ||
|
|
8fb0bd245a | ||
|
|
cdfe850b47 | ||
|
|
ab6da30578 | ||
|
|
33740d1749 | ||
|
|
245786a94a | ||
|
|
5d30fa368d | ||
|
|
8bc16f1551 | ||
|
|
412ebf3220 | ||
|
|
46da33334a | ||
|
|
d27a99cdee | ||
|
|
04b689b9d2 | ||
|
|
29d0203311 | ||
|
|
af56734cde | ||
|
|
e948aea401 | ||
|
|
e89aba8d53 | ||
|
|
43948054aa | ||
|
|
024a090453 | ||
|
|
f34672d697 | ||
|
|
4416d35de1 | ||
|
|
14f18793e7 | ||
| b7f70202bd | |||
| 1aa950a521 | |||
|
|
f81e591238 | ||
|
|
c82317e2bb | ||
|
|
e38769fb1f | ||
|
|
f4ea1e7307 | ||
|
|
cc49c6c5b7 | ||
| 4581fd0b61 | |||
|
|
337e3fec87 | ||
|
|
a8d16d966f | ||
| e34561f4e7 | |||
|
|
ea03febb98 | ||
|
|
9f4ec2f3d9 | ||
|
|
90c4105c10 | ||
|
|
a340f1c175 | ||
|
|
4ac08f9bb3 | ||
|
|
346c1d129b | ||
|
|
88e54265b0 | ||
|
|
f14debcc45 | ||
|
|
35a11c917d | ||
|
|
996be3625c | ||
|
|
5b742e1161 | ||
|
|
2c29edb363 | ||
|
|
4b92e0a9a6 | ||
|
|
768b1bc5df | ||
|
|
8083deffe3 | ||
|
|
8c869af7f1 | ||
|
|
7c5ab8ec4f | ||
|
|
91e06501d3 | ||
|
|
aa06ae84c5 | ||
|
|
ba802bfaf6 | ||
|
|
496f52512a | ||
|
|
8f14716eb4 | ||
|
|
1a1b0937c2 | ||
|
|
523247b4da | ||
|
|
ba14cdf1e8 | ||
|
|
08f3424e11 | ||
|
|
a9efd0564a | ||
|
|
9fa3e6e30d | ||
|
|
2662c962f9 | ||
|
|
313c13e28c | ||
|
|
5948f3ece6 | ||
|
|
da4bece141 | ||
|
|
0c0a644225 | ||
|
|
80b72fe09d | ||
|
|
b7b6d2bc40 | ||
|
|
fc22377b28 | ||
|
|
b13d6f7b03 | ||
|
|
4078f8149d | ||
|
|
4c356113aa | ||
|
|
e617b471c4 | ||
|
|
3a23aa3c2d | ||
|
|
7c136c5494 | ||
|
|
68b5c67a16 | ||
|
|
21532f17c0 | ||
|
|
ae53746323 | ||
|
|
73ff073540 | ||
|
|
2dbc29adeb | ||
|
|
22cc8ad09e | ||
|
|
622dae7969 | ||
|
|
47a2ca5072 | ||
|
|
a4098a5b84 | ||
|
|
dfb7bbd7dc | ||
|
|
70d6add28d | ||
|
|
cc4a842281 | ||
|
|
d01168989f | ||
|
|
b518a5ea79 | ||
| c62c0aa4a9 | |||
| 8a779c5d9f | |||
| a7334e161d | |||
|
|
6293b77492 | ||
|
|
12bacd7391 | ||
|
|
627b4950dd | ||
|
|
1fbe0f2fda | ||
|
|
d1925167b3 | ||
|
|
f7df3a3cb0 | ||
| 539e88f604 | |||
| ed321540ba | |||
|
|
b32930f4bb | ||
|
|
4454a95137 | ||
| a94ddafb98 | |||
| e887c6ffeb | |||
| 96175d3de2 | |||
|
|
4ed997dabd | ||
|
|
02de06921e | ||
|
|
fefb103cb5 | ||
|
|
3aadf0960e | ||
|
|
666945f077 | ||
|
|
e3883db087 | ||
|
|
86e4304b7e | ||
|
|
64a2c22afc | ||
|
|
8d0686926e | ||
|
|
d08c88f312 | ||
|
|
9486643214 | ||
|
|
dc0aeec0dc | ||
|
|
53c449f08d | ||
|
|
f43ae9f642 | ||
|
|
4858aa51f3 | ||
|
|
6e4c5a45ed | ||
|
|
42dc3af86a | ||
|
|
99fe30d2ef | ||
| 7774283905 | |||
| 335501ede6 | |||
| a538b42abd |
12
.gitignore
vendored
12
.gitignore
vendored
@@ -1,21 +1,25 @@
|
||||
# Virtuoso files /data/db
|
||||
/data/publication-triplestore/*
|
||||
/data/db.bck/**
|
||||
/data/db/*
|
||||
!/data/db/virtuoso.ini
|
||||
/data/db/virtuoso.ini
|
||||
!/data/db/toLoad
|
||||
!/data/db/toLoad/*
|
||||
/data/files/*
|
||||
!/data/files/exports/.gitkeep
|
||||
/data/temp/*
|
||||
docker-compose.override.yml
|
||||
.idea
|
||||
*.iml
|
||||
|
||||
/data/elasticsearch/**
|
||||
/data/ldes-feed/*
|
||||
/tmp
|
||||
.DS_STORE
|
||||
.env
|
||||
|
||||
/config/migrations/private-data/*
|
||||
/config/migrations/local/*
|
||||
|
||||
/config/proxy/nginx.htpasswd
|
||||
|
||||
@@ -25,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
|
||||
|
||||
@@ -7,91 +7,95 @@ alias Acl.GroupSpec, as: GroupSpec
|
||||
alias Acl.GroupSpec.GraphCleanup, as: GraphCleanup
|
||||
|
||||
defmodule Acl.UserGroups.Config do
|
||||
|
||||
@error_type [
|
||||
"https://docs.oasis-open-projects.org/oslc-op/core/v3.0/os/core-vocab.html#Error"
|
||||
]
|
||||
|
||||
@worship_type [
|
||||
"http://data.lblod.info/vocabularies/erediensten/EredienstMandataris",
|
||||
"http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
|
||||
"http://data.lblod.info/vocabularies/erediensten/EredienstBestuurseenheid",
|
||||
"http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
|
||||
"http://data.lblod.info/vocabularies/erediensten/VoorwaardenBedienaar",
|
||||
"http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
|
||||
"http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
|
||||
"http://data.lblod.info/vocabularies/erediensten/VerbondenJuridischeStructuren",
|
||||
"http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
|
||||
"http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
|
||||
"http://data.lblod.info/vocabularies/erediensten/EredienstMandataris",
|
||||
"http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
|
||||
"http://data.lblod.info/vocabularies/erediensten/EredienstBestuurseenheid",
|
||||
"http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
|
||||
"http://data.lblod.info/vocabularies/erediensten/VoorwaardenBedienaar",
|
||||
"http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
|
||||
"http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
|
||||
"http://data.lblod.info/vocabularies/erediensten/VerbondenJuridischeStructuren",
|
||||
"http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
|
||||
"http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan"
|
||||
]
|
||||
|
||||
@public_type [
|
||||
"http://www.w3.org/ns/org#Role",
|
||||
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
|
||||
"http://xmlns.com/foaf/0.1/Person",
|
||||
"http://xmlns.com/foaf/0.1/OnlineAccount",
|
||||
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject",
|
||||
"http://www.w3.org/ns/dcat#Dataset",
|
||||
"http://www.w3.org/ns/dcat#Distribution",
|
||||
"http://www.w3.org/ns/dcat#Catalog",
|
||||
"http://mu.semte.ch/vocabularies/ext/GeslachtCode",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/MandatarisStatusCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
|
||||
"http://www.w3.org/2004/02/skos/core#ConceptScheme",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BedienaarFinanceringCode",
|
||||
"http://www.w3.org/2004/02/skos/core#Concept",
|
||||
"http://publications.europa.eu/ontology/euvoc#Country",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/HelftVerkiezing",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/VoorwaardenBedienaarCriterium",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BedienaarCriteriumBewijsstuk",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/Rechtsvormtype"
|
||||
"http://www.w3.org/ns/org#Role",
|
||||
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
|
||||
"http://xmlns.com/foaf/0.1/Person",
|
||||
"http://xmlns.com/foaf/0.1/OnlineAccount",
|
||||
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject",
|
||||
"http://www.w3.org/ns/dcat#Dataset",
|
||||
"http://www.w3.org/ns/dcat#Distribution",
|
||||
"http://www.w3.org/ns/dcat#Catalog",
|
||||
"http://mu.semte.ch/vocabularies/ext/GeslachtCode",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/MandatarisStatusCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
|
||||
"http://mu.semte.ch/vocabularies/ext/GeregistreerdeOrganisatieClassificatieCode",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
|
||||
"http://www.w3.org/2004/02/skos/core#ConceptScheme",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BedienaarFinancieringCode",
|
||||
"http://www.w3.org/2004/02/skos/core#Concept",
|
||||
"http://publications.europa.eu/ontology/euvoc#Country",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/HelftVerkiezing",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/VoorwaardenBedienaarCriterium",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/BedienaarCriteriumBewijsstuk",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/Rechtsvormtype"
|
||||
]
|
||||
|
||||
@org_type [
|
||||
"http://www.w3.org/ns/org#Organization",
|
||||
"http://data.vlaanderen.be/ns/besluit#Besluit",
|
||||
"https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit",
|
||||
"http://www.w3.org/ns/org#Site",
|
||||
"http://www.w3.org/ns/locn#Address",
|
||||
"http://www.w3.org/ns/person#Person",
|
||||
"http://schema.org/ContactPoint",
|
||||
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
|
||||
"http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
|
||||
"http://www.w3.org/ns/adms#Identifier",
|
||||
"https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"http://data.vlaanderen.be/ns/mandaat#Mandaat",
|
||||
"http://data.vlaanderen.be/ns/mandaat#Mandataris",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat",
|
||||
"http://www.w3.org/ns/org#Post",
|
||||
"http://www.w3.org/ns/org#ChangeEvent",
|
||||
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie"
|
||||
"http://purl.org/dc/terms/Agent",
|
||||
"http://www.w3.org/ns/org#Organization",
|
||||
"http://www.w3.org/ns/regorg#RegisteredOrganization",
|
||||
"http://data.vlaanderen.be/ns/besluit#Besluit",
|
||||
"https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit",
|
||||
"http://www.w3.org/ns/org#Site",
|
||||
"http://www.w3.org/ns/locn#Address",
|
||||
"http://www.w3.org/ns/person#Person",
|
||||
"http://schema.org/ContactPoint",
|
||||
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
|
||||
"http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
|
||||
"http://www.w3.org/ns/adms#Identifier",
|
||||
"https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"http://data.vlaanderen.be/ns/mandaat#Mandaat",
|
||||
"http://data.vlaanderen.be/ns/mandaat#Mandataris",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
|
||||
"http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat",
|
||||
"http://www.w3.org/ns/org#Post",
|
||||
"http://www.w3.org/ns/org#ChangeEvent",
|
||||
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie",
|
||||
"http://mu.semte.ch/vocabularies/ext/KboOrganisatie",
|
||||
]
|
||||
|
||||
@shared_protected_type [
|
||||
"http://www.w3.org/ns/prov#Location",
|
||||
"http://xmlns.com/foaf/0.1/Image",
|
||||
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
|
||||
"http://www.w3.org/ns/prov#Location",
|
||||
"http://xmlns.com/foaf/0.1/Image",
|
||||
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
|
||||
]
|
||||
|
||||
defp access_by_role( group_string ) do
|
||||
defp access_by_role(group_string) do
|
||||
%AccessByQuery{
|
||||
# vars: ["session_group","session_role"], todo we might have to create multiple graph depending on role
|
||||
# vars: ["session_group","session_role"], todo we might have to create multiple graph depending on role
|
||||
vars: [],
|
||||
query: sparql_query_for_access_role( group_string ) }
|
||||
query: sparql_query_for_access_role(group_string)
|
||||
}
|
||||
end
|
||||
|
||||
defp sparql_query_for_access_role( group_string ) do
|
||||
defp sparql_query_for_access_role(group_string) do
|
||||
"PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
SELECT distinct ?session_group ?session_role WHERE {
|
||||
@@ -103,11 +107,10 @@ defmodule Acl.UserGroups.Config do
|
||||
|
||||
def user_groups do
|
||||
[
|
||||
|
||||
%GroupSpec{
|
||||
name: "acmidm-lezer",
|
||||
useage: [:read],
|
||||
access: access_by_role( "ABBOrganisatiePortaalGebruiker-lezer" ),
|
||||
access: access_by_role("ABBOrganisatiePortaalGebruiker-lezer"),
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/administrative-unit",
|
||||
@@ -120,7 +123,7 @@ defmodule Acl.UserGroups.Config do
|
||||
%GroupSpec{
|
||||
name: "acmidm-editeerder",
|
||||
useage: [:read, :write, :read_for_write],
|
||||
access: access_by_role( "ABBOrganisatiePortaalGebruiker-editeerder" ),
|
||||
access: access_by_role("ABBOrganisatiePortaalGebruiker-editeerder"),
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/administrative-unit",
|
||||
@@ -133,7 +136,7 @@ defmodule Acl.UserGroups.Config do
|
||||
%GroupSpec{
|
||||
name: "acmidm-beheerder",
|
||||
useage: [:read, :write, :read_for_write],
|
||||
access: access_by_role( "ABBOrganisatiePortaalGebruiker-beheerder" ),
|
||||
access: access_by_role("ABBOrganisatiePortaalGebruiker-beheerder"),
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/administrative-unit",
|
||||
@@ -146,7 +149,7 @@ defmodule Acl.UserGroups.Config do
|
||||
%GroupSpec{
|
||||
name: "acmidm-worship-lezer",
|
||||
useage: [:read],
|
||||
access: access_by_role( "ABBOrganisatiePortaalErediensten-lezer" ),
|
||||
access: access_by_role("ABBOrganisatiePortaalErediensten-lezer"),
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/worship-service",
|
||||
@@ -159,7 +162,7 @@ defmodule Acl.UserGroups.Config do
|
||||
%GroupSpec{
|
||||
name: "acmidm-worship-editeerder",
|
||||
useage: [:read, :write, :read_for_write],
|
||||
access: access_by_role( "ABBOrganisatiePortaalErediensten-editeerder" ),
|
||||
access: access_by_role("ABBOrganisatiePortaalErediensten-editeerder"),
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/worship-service",
|
||||
@@ -172,7 +175,7 @@ defmodule Acl.UserGroups.Config do
|
||||
%GroupSpec{
|
||||
name: "acmidm-worship-beheerder",
|
||||
useage: [:read, :write, :read_for_write],
|
||||
access: access_by_role( "ABBOrganisatiePortaalErediensten-beheerder" ),
|
||||
access: access_by_role("ABBOrganisatiePortaalErediensten-beheerder"),
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/worship-service",
|
||||
@@ -188,10 +191,10 @@ defmodule Acl.UserGroups.Config do
|
||||
access: %AlwaysAccessible{},
|
||||
graphs: [
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/public",
|
||||
constraint: %ResourceConstraint{
|
||||
resource_types: @public_type
|
||||
}
|
||||
graph: "http://mu.semte.ch/graphs/public",
|
||||
constraint: %ResourceConstraint{
|
||||
resource_types: @public_type
|
||||
}
|
||||
},
|
||||
%GraphSpec{
|
||||
graph: "http://mu.semte.ch/graphs/shared",
|
||||
@@ -199,8 +202,8 @@ defmodule Acl.UserGroups.Config do
|
||||
resource_types: @shared_protected_type ++ @org_type
|
||||
}
|
||||
}
|
||||
|
||||
]},
|
||||
]
|
||||
},
|
||||
|
||||
# // CLEANUP
|
||||
#
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
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://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);
|
||||
const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/administrative-unit`;
|
||||
|
||||
// Graphs
|
||||
const LANDING_ZONE_GRAPH = process.env.DCR_LANDING_ZONE_GRAPH || `http://mu.semte.ch/graphs/landing-zone/clb-contact-data`;
|
||||
|
||||
if (!process.env.FILE_SYNC_GRAPH)
|
||||
throw `Expected 'FILE_SYNC_GRAPH' to be provided.`;
|
||||
const FILE_SYNC_GRAPH = process.env.FILE_SYNC_GRAPH;
|
||||
// ENDPOINTS
|
||||
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 = {
|
||||
BATCH_SIZE,
|
||||
@@ -24,6 +25,6 @@ module.exports = {
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
INGEST_GRAPH,
|
||||
FILE_SYNC_GRAPH
|
||||
};
|
||||
LANDING_ZONE_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,13 +1,15 @@
|
||||
const { transformStatements, batchedDbUpdate } = require('./util');
|
||||
const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
const { batchedDbUpdate, moveDataAfterInitialSync } = 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,
|
||||
INGEST_GRAPH
|
||||
LANDING_ZONE_GRAPH,
|
||||
} = require('./config');
|
||||
|
||||
const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT : process.env.MU_SPARQL_ENDPOINT;
|
||||
|
||||
/**
|
||||
@@ -24,34 +26,44 @@ const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, muAuthSudo, fetch } = lib;
|
||||
const { mu, muAuthSudo } = lib;
|
||||
const { termObjects } = data;
|
||||
|
||||
// Steps:
|
||||
// 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) {
|
||||
console.warn(`Service configured to skip MU_AUTH!`);
|
||||
}
|
||||
console.log(`Using ${endpoint} to insert triples`);
|
||||
|
||||
if (termObjects.length) {
|
||||
originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`)
|
||||
const originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
|
||||
const transformedStatementsToInsert = await transformStatements(fetch, originalInsertTriples);
|
||||
if (transformedStatementsToInsert.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
INGEST_GRAPH,
|
||||
transformedStatementsToInsert,
|
||||
{ '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 batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
LANDING_ZONE_GRAPH,
|
||||
originalInsertTriples,
|
||||
{ '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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
async function onFinishInitialIngest(lib,data) {
|
||||
const { muAuthSudo } = lib;
|
||||
|
||||
console.log(`!! On-finish triggered !!`);
|
||||
|
||||
await moveDataAfterInitialSync(muAuthSudo.updateSudo, endpoint)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
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,6 +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://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
|
||||
@@ -11,14 +12,34 @@
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
|
||||
"fileBaseName": "dump-organizations",
|
||||
"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
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations-public-info": {
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsPublicInfoCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-public-info",
|
||||
"fileBaseName": "dump-organizations-public-info",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations-public-info": {
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsPublicInfoCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-public-info",
|
||||
"fileBaseName": "dump-organizations-public-info",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/public": {
|
||||
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/PublicCacheGraphDump",
|
||||
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/public",
|
||||
"fileBaseName": "dump-public",
|
||||
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
@@ -27,6 +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://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
@@ -35,6 +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://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
@@ -43,6 +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://publication-triplestore:8890/sparql",
|
||||
"targetDcatGraph": "http://mu.semte.ch/graphs/public",
|
||||
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
|
||||
"cleanupOldDumps": true
|
||||
|
||||
338
config/delta-producer/organizations-public-info/export.json
Normal file
338
config/delta-producer/organizations-public-info/export.json
Normal file
@@ -0,0 +1,338 @@
|
||||
{
|
||||
"conceptScheme": "http://lblod.data.gift/concept-schemes/0d101f02-609d-4cde-bb07-639d874470c4",
|
||||
"export": [
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"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#changedBy",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://data.lblod.info/vocabularies/erediensten/denominatie",
|
||||
"http://data.lblod.info/vocabularies/erediensten/grensoverschrijdend",
|
||||
"http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typeEredienst"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"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#changedBy",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/org#hasPost",
|
||||
"http://www.w3.org/ns/org#linkedTo",
|
||||
"http://www.w3.org/ns/org#hasSubOrganization",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"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/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#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": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"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/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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.lblod.info/vocabularies/erediensten/typebetrokkenheid",
|
||||
"http://www.w3.org/ns/org#organization",
|
||||
"http://data.lblod.info/vocabularies/erediensten/financieringspercentage"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/ns/org#role",
|
||||
"http://data.lblod.info/vocabularies/erediensten/functie"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/adms#Identifier",
|
||||
"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/2004/02/skos/core#notation",
|
||||
"https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/adms#Identifier",
|
||||
"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",
|
||||
"https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator"
|
||||
],
|
||||
"additionalFilter": "?ro <http://www.w3.org/ns/adms#identifier> ?subject ; a <http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan> ."
|
||||
},
|
||||
{
|
||||
"type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"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/generiek#lokaleIdentificator"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"graphsFilter": ["http://mu.semte.ch/graphs/worship-service"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
|
||||
],
|
||||
"additionalFilter": "?ro <http://www.w3.org/ns/adms#identifier>/<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator> ?subject ; a <http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan> ."
|
||||
},
|
||||
{
|
||||
"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"
|
||||
],
|
||||
"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": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/administrative-unit",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.vlaanderen.be/ns/besluit#bestuurt",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"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"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
|
||||
"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://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
|
||||
"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://www.w3.org/ns/org#ChangeEvent",
|
||||
"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://purl.org/dc/terms/date",
|
||||
"http://purl.org/dc/terms/description",
|
||||
"http://data.lblod.info/vocabularies/contacthub/typeWijziging",
|
||||
"http://www.w3.org/ns/org#resultedFrom",
|
||||
"http://www.w3.org/ns/org#changedBy",
|
||||
"http://lblod.data.gift/vocabularies/organisatie/veranderingsgebeurtenisResultaat",
|
||||
"http://www.w3.org/ns/org#originalOrganization",
|
||||
"http://www.w3.org/ns/org#resultingOrganization",
|
||||
"http://data.europa.eu/m8g/hasFormalFramework"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
|
||||
"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://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
|
||||
"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://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
|
||||
"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/mandaat#Mandaat",
|
||||
"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#role"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie",
|
||||
"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#role",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"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"],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://www.w3.org/ns/org#role",
|
||||
"http://www.w3.org/2004/02/skos/core#prefLabel",
|
||||
"http://www.w3.org/2004/02/skos/core#notation",
|
||||
"https://schema.org/startDate",
|
||||
"https://schema.org/endDate",
|
||||
"http://www.w3.org/2004/02/skos/core#broader",
|
||||
"http://www.w3.org/2004/02/skos/core#exactMatch",
|
||||
"http://www.w3.org/2004/02/skos/core#narrower",
|
||||
"http://www.w3.org/2004/02/skos/core#narrowMatch"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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": [
|
||||
@@ -396,7 +477,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/BedienaarFinanceringCode",
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/BedienaarFinancieringCode",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
},
|
||||
@@ -223,6 +276,18 @@
|
||||
"https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://www.w3.org/ns/adms#Identifier",
|
||||
"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",
|
||||
"https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator"
|
||||
],
|
||||
"additionalFilter": "?ro <http://www.w3.org/ns/adms#identifier> ?subject ; a <http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan> ."
|
||||
},
|
||||
{
|
||||
"type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"graphsFilter": [
|
||||
@@ -241,6 +306,17 @@
|
||||
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
|
||||
],
|
||||
"additionalFilter": "?ro <http://www.w3.org/ns/adms#identifier>/<https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator> ?subject ; a <http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan> ."
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
|
||||
"graphsFilter": [
|
||||
@@ -255,49 +331,33 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
|
||||
"strictTypeExport": "true",
|
||||
"type": "http://mu.semte.ch/vocabularies/ext/RepresentatiefOrgaanClassificatieCode",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service",
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"pathToConceptScheme": [
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/2004/02/skos/core#inScheme"
|
||||
"http://mu.semte.ch/graphs/public"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.vlaanderen.be/ns/mandaat#bindingEinde",
|
||||
"http://data.vlaanderen.be/ns/mandaat#bindingStart",
|
||||
"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/2004/02/skos/core#prefLabel"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
|
||||
"strictTypeExport": "true",
|
||||
"graphsFilter": [
|
||||
"http://mu.semte.ch/graphs/shared",
|
||||
"http://mu.semte.ch/graphs/worship-service",
|
||||
"http://mu.semte.ch/graphs/administrative-unit"
|
||||
],
|
||||
"pathToConceptScheme": [
|
||||
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"http://www.w3.org/2004/02/skos/core#inScheme"
|
||||
"http://mu.semte.ch/graphs/administrative-unit",
|
||||
"http://mu.semte.ch/graphs/worship-service"
|
||||
],
|
||||
"properties": [
|
||||
"http://mu.semte.ch/vocabularies/core/uuid",
|
||||
"http://data.vlaanderen.be/ns/mandaat#bindingEinde",
|
||||
"http://data.vlaanderen.be/ns/mandaat#bindingStart",
|
||||
"http://data.vlaanderen.be/ns/besluit#bestuurt",
|
||||
"http://www.w3.org/ns/org#classification",
|
||||
"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> ."
|
||||
},
|
||||
{
|
||||
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
|
||||
@@ -424,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,78 +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: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://redpencil.data.gift/id/deltas/producer/organizations'
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-json-diff-publisher-organizations/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
|
||||
}
|
||||
},
|
||||
{
|
||||
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: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://redpencil.data.gift/id/deltas/producer/public'
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-json-diff-publisher-public/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
// anything
|
||||
},
|
||||
callback: {
|
||||
url: 'http://delta-producer-pub-graph-maintainer-worship-posts/delta',
|
||||
url: 'http://delta-producer-publication-graph-maintainer/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
@@ -197,5 +123,111 @@ export default [
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
|
||||
}
|
||||
},
|
||||
// organizations-sync-with-sharepoint/delta : jobs come from the jobs graph, data from the two main graphs
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://mu.semte.ch/graphs/jobs'
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://organizations-sync-with-sharepoint/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://mu.semte.ch/graphs/shared'
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://organizations-sync-with-sharepoint/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://mu.semte.ch/graphs/administrative-unit'
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://organizations-sync-with-sharepoint/delta',
|
||||
method: 'POST'
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
ignoreFromSelf: true,
|
||||
optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
|
||||
}
|
||||
}
|
||||
/*
|
||||
Commenting ldes rules until ready to go to qa/prod. In the meantime, we override the configuration on dev.
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://mu.semte.ch/graphs/shared',
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://ldes-delta-pusher/publish',
|
||||
method: 'POST',
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://mu.semte.ch/graphs/worship-service',
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://ldes-delta-pusher/publish',
|
||||
method: 'POST',
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
}
|
||||
},
|
||||
{
|
||||
match: {
|
||||
graph: {
|
||||
type: 'uri',
|
||||
value: 'http://mu.semte.ch/graphs/administrative-unit',
|
||||
}
|
||||
},
|
||||
callback: {
|
||||
url: 'http://ldes-delta-pusher/publish',
|
||||
method: 'POST',
|
||||
},
|
||||
options: {
|
||||
resourceFormat: 'v0.0.1',
|
||||
gracePeriod: 1000,
|
||||
}
|
||||
}
|
||||
*/
|
||||
]
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?mandaat ?pmandaat ?omandaat .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
|
||||
GRAPH ?g {
|
||||
?mandaat mandaat:isBestuurlijkeAliasVan ?person ;
|
||||
?pmandaat ?omandaat .
|
||||
}
|
||||
|
||||
FILTER NOT EXISTS { ?person ?pperson ?operson . }
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?mandaat ?pmandaat ?omandaat .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
|
||||
GRAPH ?g {
|
||||
?mandaat mandaat:start ?start ;
|
||||
?pmandaat ?omandaat .
|
||||
}
|
||||
|
||||
FILTER NOT EXISTS { ?mandaat a ?type . }
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodorg: <https://data.lblod.info/vocabularies/organisatie/>
|
||||
PREFIX lblodgeneriek: <https://data.lblod.info/vocabularies/generiek/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
|
||||
PREFIX nacebel: <http://data.gift/vocabularies/nace-bel/>
|
||||
PREFIX core: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
# Core data
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""".
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> a besluit:Bestuurseenheid.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> a org:Organization.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> a dc_terms:Agent.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> skos:prefLabel """VERENIGING OCMW-WIELTJESGRACHT""".
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/e8294b73-87c9-4fa2-9441-1937350763c9>.
|
||||
|
||||
# Site
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> core:uuid """6585490A8CEC3153DEA3A208""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> a schema:ContactPoint .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> schema:email """mail@adres.com""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> schema:telephone """tel:+3211211430""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> foaf:page """https://www.vlaanderen.be""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> schema:contactType """Primary""" .
|
||||
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> core:uuid """6585490B8CEC3153DEA3A209""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> a schema:ContactPoint .
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> schema:telephone """tel:+3211211431""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> schema:contactType """Secondary""" .
|
||||
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> core:uuid """6585490B8CEC3153DEA3A20A""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> a locn:Address .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:Adresvoorstelling.huisnummer """1""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:thoroughfare """Oude Markt""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:postCode """3000""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:gemeentenaam """Leuven""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:adminUnitL2 """Vlaams-Brabant""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:land """België""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:fullAddress """Oude Markt 1, 3000 Leuven, België""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:verwijstNaar <https://data.vlaanderen.be/id/adres/294733> .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> dc_terms:source <http://lblod.data.gift/concepts/e59c97a9-4e95-4d65-9696-756de47fbc1f> .
|
||||
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> core:uuid """6585490B8CEC3153DEA3A20B""" .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> a org:Site .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> organisatie:bestaatUit <http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> org:siteAddress <http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> org:siteAddress <http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> ere:vestigingstype <http://lblod.data.gift/concepts/f1381723dec42c0b6ba6492e41d6f5dd> .
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> org:hasPrimarySite <http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> .
|
||||
|
||||
# KBO number
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920> core:uuid """65856287B12D00C739F23920""".
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920> a generiek:GestructureerdeIdentificator.
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920> generiek:lokaleIdentificator """0262925527""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> core:uuid """65856287B12D00C739F23921""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> a adms:Identifier.
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> skos:notation """KBO nummer""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> generiek:gestructureerdeIdentificator <http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920>.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> adms:identifier <http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921>.
|
||||
|
||||
# Sharepoint identifier
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> core:uuid """65856287B12D00C739F23922""".
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> a generiek:GestructureerdeIdentificator.
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> generiek:lokaleIdentificator """sp-id-test""" .
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> core:uuid """65856287B12D00C739F23923""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> a adms:Identifier.
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> skos:notation """SharePoint identificator""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> generiek:gestructureerdeIdentificator <http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> .
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> adms:identifier <http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> .
|
||||
|
||||
# OVO number
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> adms:identifier <http://data.lblod.info/id/identificatoren/d5713a51-40d4-4b79-bf72-0d917f78c37b> .
|
||||
<http://data.lblod.info/id/identificatoren/d5713a51-40d4-4b79-bf72-0d917f78c37b> a adms:Identifier ;
|
||||
core:uuid """d5713a51-40d4-4b79-bf72-0d917f78c37b""" ;
|
||||
skos:notation "OVO-nummer" ;
|
||||
generiek:gestructureerdeIdentificator <http://data.lblod.info/id/gestructureerdeIdentificatoren/438b542b-6841-4137-b8da-287b394328ee> .
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/438b542b-6841-4137-b8da-287b394328ee> a generiek:GestructureerdeIdentificator ;
|
||||
core:uuid """438b542b-6841-4137-b8da-287b394328ee""" ;
|
||||
generiek:lokaleIdentificator "OVO009999" .
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> besluit:werkingsgebied <http://data.lblod.info/id/werkingsgebieden/a8040e566e7a22dfc6a83a7176d105abc68ab1bf1a89e94a1333c8f049131837>.
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> regorg:orgStatus <http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6>.
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/8a162fa437a54cb657b57514e4e0135ec106fce3206c29cd2f90b1859ed90dab> org:hasSubOrganization <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca>.
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/8a162fa437a54cb657b57514e4e0135ec106fce3206c29cd2f90b1859ed90dab> ext:isFounderOfOrganization <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca>.
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/16875d1ad2294295c576de9837756a4c6796d3ee7e0b7ebd6e8d3e8f65930353> a besluit:Bestuursorgaan ;
|
||||
core:uuid """16875d1ad2294295c576de9837756a4c6796d3ee7e0b7ebd6e8d3e8f65930353""" ;
|
||||
skos:prefLabel ?governingBodyLabel ;
|
||||
besluit:bestuurt <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> ;
|
||||
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/013cc838-173a-4657-b1ae-b00c048df943> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?administrativeUnit core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""" ;
|
||||
skos:prefLabel ?administrativeUnitLabel .
|
||||
BIND(CONCAT("""Raad van bestuur""", " ", ?administrativeUnitLabel) as ?governingBodyLabel)
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/47e52223b3e27ad63c7233f93df0331f6d45bfb743f81d1110cbca4b3ac933ee> a besluit:Bestuursorgaan ;
|
||||
core:uuid """47e52223b3e27ad63c7233f93df0331f6d45bfb743f81d1110cbca4b3ac933ee""" ;
|
||||
generiek:isTijdspecialisatieVan <http://data.lblod.info/id/bestuursorganen/16875d1ad2294295c576de9837756a4c6796d3ee7e0b7ebd6e8d3e8f65930353> ;
|
||||
mandaat:bindingStart "1971-11-03T00:00:00.000Z"^^xsd:dateTime .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/e891dc823e0d924a94cd067d0b291c169c95695cdd73a3c259e79c39e91d0034> a besluit:Bestuursorgaan ;
|
||||
core:uuid """e891dc823e0d924a94cd067d0b291c169c95695cdd73a3c259e79c39e91d0034""" ;
|
||||
skos:prefLabel ?governingBodyLabel ;
|
||||
besluit:bestuurt <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> ;
|
||||
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/b52094ff-21a2-4da8-8dbe-f513365d1528> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?administrativeUnit core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""" ;
|
||||
skos:prefLabel ?administrativeUnitLabel .
|
||||
BIND(CONCAT("""Algemene vergadering""", " ", ?administrativeUnitLabel) as ?governingBodyLabel)
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/be22b1988874583b0773677665596200c9586f758207cdf335278a9380180d86> a besluit:Bestuursorgaan ;
|
||||
core:uuid """be22b1988874583b0773677665596200c9586f758207cdf335278a9380180d86""" ;
|
||||
generiek:isTijdspecialisatieVan <http://data.lblod.info/id/bestuursorganen/e891dc823e0d924a94cd067d0b291c169c95695cdd73a3c259e79c39e91d0034> ;
|
||||
mandaat:bindingStart "1971-11-03T00:00:00.000Z"^^xsd:dateTime .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/0f87572fb2968c17383dc7574320031dffa339f17a974e3b194588d685c1fc5d> a besluit:Bestuursorgaan ;
|
||||
core:uuid """0f87572fb2968c17383dc7574320031dffa339f17a974e3b194588d685c1fc5d""" ;
|
||||
skos:prefLabel ?governingBodyLabel ;
|
||||
besluit:bestuurt <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> ;
|
||||
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/41caf7e6-b040-4720-9cc2-a96cfffed5b4> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?administrativeUnit core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""" ;
|
||||
skos:prefLabel ?administrativeUnitLabel .
|
||||
BIND(CONCAT("""Leidend Ambtenaar""", " ", ?administrativeUnitLabel) as ?governingBodyLabel)
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/a48a21167ca609b76d621be5d5714e28f48711f1eb49d704985d1476565fdd66> a besluit:Bestuursorgaan ;
|
||||
core:uuid """a48a21167ca609b76d621be5d5714e28f48711f1eb49d704985d1476565fdd66""" ;
|
||||
generiek:isTijdspecialisatieVan <http://data.lblod.info/id/bestuursorganen/0f87572fb2968c17383dc7574320031dffa339f17a974e3b194588d685c1fc5d> ;
|
||||
mandaat:bindingStart "2019-01-01T00:00:00.000Z"^^xsd:dateTime .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/a48a21167ca609b76d621be5d5714e28f48711f1eb49d704985d1476565fdd66> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/73e7ef49c748e7f475feb952355f4a6bee2db1d85cd30b17b722a6291739b490> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/73e7ef49c748e7f475feb952355f4a6bee2db1d85cd30b17b722a6291739b490> a lblodlg:Bestuursfunctie ;
|
||||
core:uuid """73e7ef49c748e7f475feb952355f4a6bee2db1d85cd30b17b722a6291739b490""" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> ;
|
||||
skos:prefLabel """VERENIGING OCMW-WIELTJESGRACHT Leidend ambtenaar""" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,199 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodorg: <https://data.lblod.info/vocabularies/organisatie/>
|
||||
PREFIX lblodgeneriek: <https://data.lblod.info/vocabularies/generiek/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX geo: <http://www.opengis.net/ont/geosparql#>
|
||||
PREFIX nacebel: <http://data.gift/vocabularies/nace-bel/>
|
||||
PREFIX core: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/0f87572fb2968c17383dc7574320031dffa339f17a974e3b194588d685c1fc5d> a besluit:Bestuursorgaan ;
|
||||
core:uuid """0f87572fb2968c17383dc7574320031dffa339f17a974e3b194588d685c1fc5d""" ;
|
||||
skos:prefLabel ?governingBodyLabel ;
|
||||
besluit:bestuurt <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> ;
|
||||
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/41caf7e6-b040-4720-9cc2-a96cfffed5b4> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?administrativeUnit core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""" ;
|
||||
skos:prefLabel ?administrativeUnitLabel .
|
||||
BIND(CONCAT("""Leidend Ambtenaar""", " ", ?administrativeUnitLabel) as ?governingBodyLabel)
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/e891dc823e0d924a94cd067d0b291c169c95695cdd73a3c259e79c39e91d0034> a besluit:Bestuursorgaan ;
|
||||
core:uuid """e891dc823e0d924a94cd067d0b291c169c95695cdd73a3c259e79c39e91d0034""" ;
|
||||
skos:prefLabel ?governingBodyLabel ;
|
||||
besluit:bestuurt <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> ;
|
||||
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/b52094ff-21a2-4da8-8dbe-f513365d1528> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?administrativeUnit core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""" ;
|
||||
skos:prefLabel ?administrativeUnitLabel .
|
||||
BIND(CONCAT("""Algemene vergadering""", " ", ?administrativeUnitLabel) as ?governingBodyLabel)
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/16875d1ad2294295c576de9837756a4c6796d3ee7e0b7ebd6e8d3e8f65930353> a besluit:Bestuursorgaan ;
|
||||
core:uuid """16875d1ad2294295c576de9837756a4c6796d3ee7e0b7ebd6e8d3e8f65930353""" ;
|
||||
skos:prefLabel ?governingBodyLabel ;
|
||||
besluit:bestuurt <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> ;
|
||||
org:classification <http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/013cc838-173a-4657-b1ae-b00c048df943> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?administrativeUnit core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""" ;
|
||||
skos:prefLabel ?administrativeUnitLabel .
|
||||
BIND(CONCAT("""Raad van bestuur""", " ", ?administrativeUnitLabel) as ?governingBodyLabel)
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> core:uuid """7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca""".
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> a besluit:Bestuurseenheid.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> a org:Organization.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> a dc_terms:Agent.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> skos:prefLabel """VERENIGING OCMW-WIELTJESGRACHT""".
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/e8294b73-87c9-4fa2-9441-1937350763c9>.
|
||||
|
||||
# Site
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> core:uuid """6585490A8CEC3153DEA3A208""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> a schema:ContactPoint .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> schema:email """mail@adres.com""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> schema:telephone """tel:+3211211430""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> foaf:page """https://www.vlaanderen.be""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> schema:contactType """Primary""" .
|
||||
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> core:uuid """6585490B8CEC3153DEA3A209""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> a schema:ContactPoint .
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> schema:telephone """tel:+3211211431""" .
|
||||
<http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> schema:contactType """Secondary""" .
|
||||
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> core:uuid """6585490B8CEC3153DEA3A20A""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> a locn:Address .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:Adresvoorstelling.huisnummer """1""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:thoroughfare """Oude Markt""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:postCode """3000""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:gemeentenaam """Leuven""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:adminUnitL2 """Vlaams-Brabant""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:land """België""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> locn:fullAddress """Oude Markt 1, 3000 Leuven, België""" .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> adres:verwijstNaar <https://data.vlaanderen.be/id/adres/294733> .
|
||||
<http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> dc_terms:source <http://lblod.data.gift/concepts/e59c97a9-4e95-4d65-9696-756de47fbc1f> .
|
||||
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> core:uuid """6585490B8CEC3153DEA3A20B""" .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> a org:Site .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> organisatie:bestaatUit <http://data.lblod.info/id/adressen/6585490B8CEC3153DEA3A20A> .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> org:siteAddress <http://data.lblod.info/id/contact-punten/6585490A8CEC3153DEA3A208> .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> org:siteAddress <http://data.lblod.info/id/contact-punten/6585490B8CEC3153DEA3A209> .
|
||||
<http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> ere:vestigingstype <http://lblod.data.gift/concepts/f1381723dec42c0b6ba6492e41d6f5dd> .
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> org:hasPrimarySite <http://data.lblod.info/id/vestigingen/6585490B8CEC3153DEA3A20B> .
|
||||
|
||||
# KBO number
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920> core:uuid """65856287B12D00C739F23920""".
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920> a generiek:GestructureerdeIdentificator.
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920> generiek:lokaleIdentificator """0262925527""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> core:uuid """65856287B12D00C739F23921""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> a adms:Identifier.
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> skos:notation """KBO nummer""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921> generiek:gestructureerdeIdentificator <http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23920>.
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> adms:identifier <http://data.lblod.info/id/identificatoren/65856287B12D00C739F23921>.
|
||||
|
||||
# Sharepoint identifier
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> core:uuid """65856287B12D00C739F23922""".
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> a generiek:GestructureerdeIdentificator.
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> generiek:lokaleIdentificator """sp-id-test""" .
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> core:uuid """65856287B12D00C739F23923""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> a adms:Identifier.
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> skos:notation """SharePoint identificator""".
|
||||
<http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> generiek:gestructureerdeIdentificator <http://data.lblod.info/id/gestructureerdeIdentificatoren/65856287B12D00C739F23922> .
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> adms:identifier <http://data.lblod.info/id/identificatoren/65856287B12D00C739F23923> .
|
||||
|
||||
# OVO number
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> adms:identifier <http://data.lblod.info/id/identificatoren/d5713a51-40d4-4b79-bf72-0d917f78c37b> .
|
||||
<http://data.lblod.info/id/identificatoren/d5713a51-40d4-4b79-bf72-0d917f78c37b> a adms:Identifier ;
|
||||
core:uuid """d5713a51-40d4-4b79-bf72-0d917f78c37b""" ;
|
||||
skos:notation "OVO-nummer" ;
|
||||
generiek:gestructureerdeIdentificator <http://data.lblod.info/id/gestructureerdeIdentificatoren/438b542b-6841-4137-b8da-287b394328ee> .
|
||||
<http://data.lblod.info/id/gestructureerdeIdentificatoren/438b542b-6841-4137-b8da-287b394328ee> a generiek:GestructureerdeIdentificator ;
|
||||
core:uuid """438b542b-6841-4137-b8da-287b394328ee""" ;
|
||||
generiek:lokaleIdentificator "OVO009999" .
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> besluit:werkingsgebied <http://data.lblod.info/id/werkingsgebieden/a8040e566e7a22dfc6a83a7176d105abc68ab1bf1a89e94a1333c8f049131837>.
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca> regorg:orgStatus <http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6>.
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/8a162fa437a54cb657b57514e4e0135ec106fce3206c29cd2f90b1859ed90dab> org:hasSubOrganization <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca>.
|
||||
|
||||
<http://data.lblod.info/id/bestuurseenheden/8a162fa437a54cb657b57514e4e0135ec106fce3206c29cd2f90b1859ed90dab> ext:isFounderOfOrganization <http://data.lblod.info/id/bestuurseenheden/7d1254994765887e47ee3c9a2551f6a790a02a1747809285f52e7e690c12f2ca>.
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/47e52223b3e27ad63c7233f93df0331f6d45bfb743f81d1110cbca4b3ac933ee> a besluit:Bestuursorgaan ;
|
||||
core:uuid """47e52223b3e27ad63c7233f93df0331f6d45bfb743f81d1110cbca4b3ac933ee""" ;
|
||||
generiek:isTijdspecialisatieVan <http://data.lblod.info/id/bestuursorganen/16875d1ad2294295c576de9837756a4c6796d3ee7e0b7ebd6e8d3e8f65930353> ;
|
||||
mandaat:bindingStart "1971-11-03T00:00:00.000Z"^^xsd:dateTime .
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/be22b1988874583b0773677665596200c9586f758207cdf335278a9380180d86> a besluit:Bestuursorgaan ;
|
||||
core:uuid """be22b1988874583b0773677665596200c9586f758207cdf335278a9380180d86""" ;
|
||||
generiek:isTijdspecialisatieVan <http://data.lblod.info/id/bestuursorganen/e891dc823e0d924a94cd067d0b291c169c95695cdd73a3c259e79c39e91d0034> ;
|
||||
mandaat:bindingStart "1971-11-03T00:00:00.000Z"^^xsd:dateTime .
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/a48a21167ca609b76d621be5d5714e28f48711f1eb49d704985d1476565fdd66> a besluit:Bestuursorgaan ;
|
||||
core:uuid """a48a21167ca609b76d621be5d5714e28f48711f1eb49d704985d1476565fdd66""" ;
|
||||
generiek:isTijdspecialisatieVan <http://data.lblod.info/id/bestuursorganen/0f87572fb2968c17383dc7574320031dffa339f17a974e3b194588d685c1fc5d> ;
|
||||
mandaat:bindingStart "2019-01-01T00:00:00.000Z"^^xsd:dateTime .
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/a48a21167ca609b76d621be5d5714e28f48711f1eb49d704985d1476565fdd66> lblodlg:heeftBestuursfunctie <http://data.lblod.info/id/bestuursfuncties/73e7ef49c748e7f475feb952355f4a6bee2db1d85cd30b17b722a6291739b490> .
|
||||
|
||||
<http://data.lblod.info/id/bestuursfuncties/73e7ef49c748e7f475feb952355f4a6bee2db1d85cd30b17b722a6291739b490> a lblodlg:Bestuursfunctie ;
|
||||
core:uuid """73e7ef49c748e7f475feb952355f4a6bee2db1d85cd30b17b722a6291739b490""" ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/855489b9-b584-4f34-90b2-39aea808cd9f> ;
|
||||
skos:prefLabel """VERENIGING OCMW-WIELTJESGRACHT Leidend ambtenaar""" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s ext:isFounderOfOrganization ?o .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s ext:isFounderOfOrganization ?o .
|
||||
?o org:classification ?class .
|
||||
|
||||
VALUES ?class {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/e8294b73-87c9-4fa2-9441-1937350763c9> # Welzijnsvereniging
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/34b5af85-dc9f-468f-9e03-ef89b174c267> # Autonome verzorgingsinstelling
|
||||
}
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s org:hasSubOrganization ?o .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s org:hasSubOrganization ?o .
|
||||
?o org:classification ?class .
|
||||
|
||||
VALUES ?class {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/e8294b73-87c9-4fa2-9441-1937350763c9> # Welzijnsvereniging
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/34b5af85-dc9f-468f-9e03-ef89b174c267> # Autonome verzorgingsinstelling
|
||||
}
|
||||
}
|
||||
}
|
||||
4
config/dev/tlsproxy/Caddyfile
Normal file
4
config/dev/tlsproxy/Caddyfile
Normal file
@@ -0,0 +1,4 @@
|
||||
{$SITE_ADDRESS}:443 {
|
||||
reverse_proxy identifier:80
|
||||
tls internal
|
||||
}
|
||||
@@ -60,8 +60,8 @@ defmodule Dispatcher do
|
||||
Proxy.forward conn, path, "http://cache/board-position-codes/"
|
||||
end
|
||||
|
||||
match "/agents/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://cache/agents/"
|
||||
match "/functionaries/*path", %{ accept: [:json], layer: :api} do
|
||||
Proxy.forward conn, path, "http://cache/functionaries/"
|
||||
end
|
||||
|
||||
match "/agent-status-codes/*path", %{ accept: [:json], layer: :api} do
|
||||
@@ -76,20 +76,32 @@ 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
|
||||
Proxy.forward conn, path, "http://cache/administrative-unit-classification-codes/"
|
||||
end
|
||||
|
||||
match "/organization-classification-codes/*path", %{ accept: [:json], layer: :api} 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
|
||||
@@ -97,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
|
||||
@@ -113,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
|
||||
@@ -215,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
|
||||
###############
|
||||
@@ -245,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
|
||||
|
||||
@@ -301,8 +317,16 @@ 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 "/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
|
||||
forward conn, path, "http://ldes-backend/"
|
||||
end
|
||||
|
||||
#################################################################
|
||||
@@ -337,21 +361,20 @@ defmodule Dispatcher do
|
||||
Proxy.forward conn, path, "http://resource/distributions/"
|
||||
end
|
||||
|
||||
|
||||
#################################################################
|
||||
# DELTA: administrative-units
|
||||
#################################################################
|
||||
|
||||
get "/sync/administrative-units/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-json-diff-file-publisher-administrative-units/files/"
|
||||
end
|
||||
|
||||
#################################################################
|
||||
# DELTA: organizations
|
||||
#################################################################
|
||||
|
||||
get "/sync/organizations/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-json-diff-file-publisher-organizations/files/"
|
||||
Proxy.forward conn, path, "http://delta-producer-publication-graph-maintainer/organizations/files/"
|
||||
end
|
||||
|
||||
#################################################################
|
||||
# DELTA: organizations-public-info
|
||||
#################################################################
|
||||
|
||||
get "/sync/organizations-public-info/files/*path" do
|
||||
Proxy.forward(conn, path, "http://delta-producer-publication-graph-maintainer/organizations-public-info/files/")
|
||||
end
|
||||
|
||||
#################################################################
|
||||
@@ -359,7 +382,7 @@ defmodule Dispatcher do
|
||||
#################################################################
|
||||
|
||||
get "/sync/public/files/*path" do
|
||||
Proxy.forward conn, path, "http://delta-producer-json-diff-publisher-public/files/"
|
||||
Proxy.forward(conn, path, "http://delta-producer-publication-graph-maintainer/public/files/")
|
||||
end
|
||||
|
||||
#################################################################
|
||||
@@ -367,17 +390,21 @@ 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
|
||||
|
||||
#################################################################
|
||||
# Exports
|
||||
#################################################################
|
||||
|
||||
get "/download-exports/*path" do
|
||||
Proxy.forward conn, path, "http://download-exports/"
|
||||
end
|
||||
|
||||
###############################################################
|
||||
# frontend layer
|
||||
###############################################################
|
||||
|
||||
match "/authorization/callback/*_path", %{ accept: [:html], layer: :api } do
|
||||
Proxy.forward conn, [], "http://frontend/torii/redirect.html"
|
||||
end
|
||||
|
||||
match "/assets/*path", %{ layer: :api } do
|
||||
Proxy.forward conn, path, "http://frontend/assets/"
|
||||
end
|
||||
|
||||
@@ -63,6 +63,38 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations-public-info": {
|
||||
"tasksConfiguration": [
|
||||
{
|
||||
"currentOperation": null,
|
||||
"nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/initialPublicationGraphSyncing",
|
||||
"nextIndex": "0"
|
||||
},
|
||||
{
|
||||
"currentOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/initialPublicationGraphSyncing",
|
||||
"nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/deltaDumpFileCreation",
|
||||
"nextIndex": "1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations-public-info": {
|
||||
"tasksConfiguration": [
|
||||
{
|
||||
"currentOperation": null,
|
||||
"nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/healing/patchPublicationGraph",
|
||||
"nextIndex": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations-public-info": {
|
||||
"tasksConfiguration": [
|
||||
{
|
||||
"currentOperation": null,
|
||||
"nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/deltaDumpFileCreation",
|
||||
"nextIndex": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public": {
|
||||
"tasksConfiguration": [
|
||||
{
|
||||
@@ -126,5 +158,23 @@
|
||||
"nextIndex": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/sp-sync/initialSyncing/organizations": {
|
||||
"tasksConfiguration": [
|
||||
{
|
||||
"currentOperation": null,
|
||||
"nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/sp-sync/initialSyncing",
|
||||
"nextIndex": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
"http://redpencil.data.gift/id/jobs/concept/JobOperation/sp-sync/healingOperation/organizations": {
|
||||
"tasksConfiguration": [
|
||||
{
|
||||
"currentOperation": null,
|
||||
"nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/sp-sync/healing",
|
||||
"nextIndex": "0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
73
config/ldes-delta-pusher/dispatch.ts
Normal file
73
config/ldes-delta-pusher/dispatch.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import { moveTriples } from "../support";
|
||||
import { Changeset } from "../types";
|
||||
import { query, sparqlEscapeUri } from 'mu';
|
||||
|
||||
export default async function dispatch(changesets: Changeset[]) {
|
||||
for (const changeset of changesets) {
|
||||
const subjects = new Set(changeset.inserts.map((insert) => insert.subject.value));
|
||||
for (const subject of subjects) {
|
||||
const { results: { bindings } } = await query(`
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX code: <http://telegraphis.net/ontology/measurement/code#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
|
||||
CONSTRUCT {
|
||||
?organization a org:Organization;
|
||||
skos:prefLabel ?prefLabel;
|
||||
adms:identifier ?identifier;
|
||||
org:hasPrimarySite ?site.
|
||||
?identifier skos:notation ?identifierLabel;
|
||||
generiek:gestructureerdeIdentificator ?gestructureerdeIdentificator.
|
||||
?gestructureerdeIdentificator generiek:lokaleIdentificator ?lokaleIdentificator.
|
||||
?site org:siteAddress ?siteAddress.
|
||||
?siteAddress ?p ?o.
|
||||
} WHERE {
|
||||
{
|
||||
VALUES ?organization { ${sparqlEscapeUri(subject)} }
|
||||
?organization a org:Organization;
|
||||
skos:prefLabel ?prefLabel;
|
||||
adms:identifier ?identifier;
|
||||
org:hasPrimarySite ?site.
|
||||
?identifier skos:notation ?identifierLabel;
|
||||
generiek:gestructureerdeIdentificator ?gestructureerdeIdentificator.
|
||||
?gestructureerdeIdentificator generiek:lokaleIdentificator ?lokaleIdentificator.
|
||||
?site org:siteAddress ?siteAddress.
|
||||
?siteAddress ?p ?o.
|
||||
} UNION {
|
||||
VALUES ?site { ${sparqlEscapeUri(subject)} }
|
||||
?organization a org:Organization;
|
||||
skos:prefLabel ?prefLabel;
|
||||
adms:identifier ?identifier;
|
||||
org:hasPrimarySite ?site.
|
||||
?identifier skos:notation ?identifierLabel;
|
||||
generiek:gestructureerdeIdentificator ?gestructureerdeIdentificator.
|
||||
?gestructureerdeIdentificator generiek:lokaleIdentificator ?lokaleIdentificator.
|
||||
?site org:siteAddress ?siteAddress.
|
||||
?siteAddress ?p ?o.
|
||||
} UNION {
|
||||
VALUES ?siteAddress { ${sparqlEscapeUri(subject)} }
|
||||
?organization a org:Organization;
|
||||
skos:prefLabel ?prefLabel;
|
||||
adms:identifier ?identifier;
|
||||
org:hasPrimarySite ?site.
|
||||
?identifier skos:notation ?identifierLabel;
|
||||
generiek:gestructureerdeIdentificator ?gestructureerdeIdentificator.
|
||||
?gestructureerdeIdentificator generiek:lokaleIdentificator ?lokaleIdentificator.
|
||||
?site org:siteAddress ?siteAddress.
|
||||
?siteAddress ?p ?o.
|
||||
}
|
||||
}
|
||||
`);
|
||||
if(bindings.length){
|
||||
console.log('SUCCESS')
|
||||
await moveTriples([
|
||||
{
|
||||
inserts: bindings.map(({ s, p, o}) => { return { subject: s, predicate: p, object: o} }),
|
||||
}
|
||||
])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,20 @@
|
||||
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://virtuoso:8890/sparql';
|
||||
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);
|
||||
const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/administrative-unit`;
|
||||
|
||||
// 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`;
|
||||
|
||||
if (!process.env.FILE_SYNC_GRAPH)
|
||||
throw `Expected 'FILE_SYNC_GRAPH' to be provided.`;
|
||||
const FILE_SYNC_GRAPH = process.env.FILE_SYNC_GRAPH;
|
||||
// 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,
|
||||
@@ -24,6 +26,7 @@ module.exports = {
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
|
||||
INGEST_GRAPH,
|
||||
FILE_SYNC_GRAPH
|
||||
LANDING_ZONE_GRAPH,
|
||||
TARGET_GRAPH,
|
||||
LANDING_ZONE_DATABASE_ENDPOINT
|
||||
};
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
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,11 +1,8 @@
|
||||
const { transformStatements, batchedDbUpdate, deleteFromAllGraphs } = require('./util');
|
||||
const {
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
INGEST_GRAPH
|
||||
} = require('./config');
|
||||
transformStatements,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph,
|
||||
} = require('./util');
|
||||
|
||||
/**
|
||||
* Dispatch the fetched information to a target graph.
|
||||
@@ -23,43 +20,61 @@ const {
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, muAuthSudo, fetch } = lib;
|
||||
const { termObjectChangeSets } = data;
|
||||
const { mu, fetch } = lib;
|
||||
let { termObjectChangeSets, termObjectChangeSetsWithContext } = data;
|
||||
|
||||
for (let { deletes, inserts } of termObjectChangeSets) {
|
||||
const deleteStatements = deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
const insertStatements = inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
// 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]
|
||||
}));
|
||||
|
||||
if (deleteStatements.length) {
|
||||
const transformedStatementsToDelete = await transformStatements(fetch, deleteStatements);
|
||||
if (transformedStatementsToDelete.length) {
|
||||
await deleteFromAllGraphs(
|
||||
muAuthSudo.updateSudo,
|
||||
transformedStatementsToDelete,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
);
|
||||
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 (insertStatements.length) {
|
||||
const transformedStatementsToInsert = await transformStatements(fetch, insertStatements);
|
||||
if (transformedStatementsToInsert.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
INGEST_GRAPH,
|
||||
transformedStatementsToInsert,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
"INSERT"
|
||||
);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
const { transformStatements, batchedDbUpdate } = require('./util');
|
||||
const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
|
||||
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,
|
||||
INGEST_GRAPH
|
||||
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;
|
||||
|
||||
/**
|
||||
@@ -24,34 +28,58 @@ const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT
|
||||
* @return {void} Nothing
|
||||
*/
|
||||
async function dispatch(lib, data) {
|
||||
const { mu, muAuthSudo, fetch } = lib;
|
||||
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) {
|
||||
originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`)
|
||||
const originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
|
||||
const transformedStatementsToInsert = await transformStatements(fetch, originalInsertTriples);
|
||||
if (transformedStatementsToInsert.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
INGEST_GRAPH,
|
||||
transformedStatementsToInsert,
|
||||
{ '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 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
|
||||
dispatch,
|
||||
onFinishInitialIngest
|
||||
};
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
const {
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION
|
||||
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,
|
||||
async function batchedDbUpdate(
|
||||
muUpdate,
|
||||
graph,
|
||||
triples,
|
||||
extraHeaders,
|
||||
@@ -37,39 +44,6 @@ ${batch}
|
||||
}
|
||||
}
|
||||
|
||||
async function deleteFromAllGraphs(muUpdate,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
) {
|
||||
|
||||
for (const triple of triples) {
|
||||
|
||||
console.log(`Deleting a triple from all graphs in triplestore`);
|
||||
|
||||
const deleteCall = async () => {
|
||||
await muUpdate(`
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
${triple}
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
${triple}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(deleteCall, 0, maxAttempts, sleepTimeOnFail);
|
||||
console.log(`Sleeping before next query execution: ${sleepBetweenBatches}`);
|
||||
await new Promise(r => setTimeout(r, sleepBetweenBatches));
|
||||
}
|
||||
}
|
||||
|
||||
async function operationWithRetry(callback,
|
||||
attempt,
|
||||
maxAttempts,
|
||||
@@ -110,18 +84,16 @@ function partition(arr, fn) {
|
||||
return { passes, fails };
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send triples to reasoning service for conversion
|
||||
*
|
||||
*/
|
||||
function transformTriples(fetch, triples) {
|
||||
return operationWithRetry(mainConversion(fetch, triples), 0,
|
||||
async function transformTriples(fetch, triples, mapping) {
|
||||
return await operationWithRetry(mainConversion(fetch, triples, mapping), 0,
|
||||
MAX_REASONING_RETRY_ATTEMPTS, SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION);
|
||||
}
|
||||
|
||||
|
||||
function mainConversion(fetch, triples) {
|
||||
async function mainConversion(fetch, triples, mapping) {
|
||||
let formdata = new URLSearchParams();
|
||||
formdata.append("data", triples);
|
||||
|
||||
@@ -131,23 +103,66 @@ function mainConversion(fetch, triples) {
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
return fetch("http://reasoner/reason/dl2op/main", requestOptions)
|
||||
.then(response => response.text());
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}`, requestOptions)
|
||||
return await response.text();
|
||||
}
|
||||
|
||||
function transformStatements(fetch, triples) {
|
||||
return transformTriples(fetch, triples.join('\n')).then(
|
||||
graph => {
|
||||
statements = graph.replace(/\n{2,}/g, '').split('\n')
|
||||
console.log(`CONVERSION: FROM ${triples.length} triples to ${statements.length}`)
|
||||
return statements
|
||||
}
|
||||
)
|
||||
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,
|
||||
deleteFromAllGraphs,
|
||||
partition,
|
||||
transformStatements
|
||||
transformStatements,
|
||||
transformLandingZoneGraph,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph
|
||||
};
|
||||
|
||||
33
config/loket-consumer/mandatarissen-dispatching/config.js
Normal file
33
config/loket-consumer/mandatarissen-dispatching/config.js
Normal file
@@ -0,0 +1,33 @@
|
||||
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
|
||||
};
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
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
|
||||
};
|
||||
@@ -0,0 +1,85 @@
|
||||
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
|
||||
};
|
||||
@@ -0,0 +1,85 @@
|
||||
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,9 +1,16 @@
|
||||
const {
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION
|
||||
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,
|
||||
async function batchedDbUpdate(
|
||||
muUpdate,
|
||||
graph,
|
||||
triples,
|
||||
extraHeaders,
|
||||
@@ -37,39 +44,6 @@ ${batch}
|
||||
}
|
||||
}
|
||||
|
||||
async function deleteFromAllGraphs(muUpdate,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
) {
|
||||
|
||||
for (const triple of triples) {
|
||||
|
||||
console.log(`Deleting a triple from all graphs in triplestore`);
|
||||
|
||||
const deleteCall = async () => {
|
||||
await muUpdate(`
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
${triple}
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
${triple}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(deleteCall, 0, maxAttempts, sleepTimeOnFail);
|
||||
console.log(`Sleeping before next query execution: ${sleepBetweenBatches}`);
|
||||
await new Promise(r => setTimeout(r, sleepBetweenBatches));
|
||||
}
|
||||
}
|
||||
|
||||
async function operationWithRetry(callback,
|
||||
attempt,
|
||||
maxAttempts,
|
||||
@@ -110,18 +84,16 @@ function partition(arr, fn) {
|
||||
return { passes, fails };
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send triples to reasoning service for conversion
|
||||
*
|
||||
*/
|
||||
function transformTriples(fetch, triples) {
|
||||
return operationWithRetry(mainConversion(fetch, triples), 0,
|
||||
async function transformTriples(fetch, triples, mapping) {
|
||||
return await operationWithRetry(mainConversion(fetch, triples, mapping), 0,
|
||||
MAX_REASONING_RETRY_ATTEMPTS, SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION);
|
||||
}
|
||||
|
||||
|
||||
function mainConversion(fetch, triples) {
|
||||
async function mainConversion(fetch, triples, mapping) {
|
||||
let formdata = new URLSearchParams();
|
||||
formdata.append("data", triples);
|
||||
|
||||
@@ -131,23 +103,66 @@ function mainConversion(fetch, triples) {
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
return fetch("http://reasoner/reason/dl2op/main", requestOptions)
|
||||
.then(response => response.text());
|
||||
const response = await fetch(`http://reasoner/reason/dl2op/${mapping}`, requestOptions)
|
||||
return await response.text();
|
||||
}
|
||||
|
||||
function transformStatements(fetch, triples) {
|
||||
return transformTriples(fetch, triples.join('\n')).then(
|
||||
graph => {
|
||||
statements = graph.replace(/\n{2,}/g, '').split('\n')
|
||||
console.log(`CONVERSION: FROM ${triples.length} triples to ${statements.length}`)
|
||||
return statements
|
||||
}
|
||||
)
|
||||
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,
|
||||
deleteFromAllGraphs,
|
||||
partition,
|
||||
transformStatements
|
||||
transformStatements,
|
||||
transformLandingZoneGraph,
|
||||
deleteFromTargetGraph,
|
||||
insertIntoTargetGraph
|
||||
};
|
||||
@@ -1,70 +0,0 @@
|
||||
const { transformStatements, batchedDbUpdate, deleteFromAllGraphs } = require('./util');
|
||||
const {
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
INGEST_GRAPH
|
||||
} = 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, muAuthSudo, fetch } = lib;
|
||||
const { termObjectChangeSets } = data;
|
||||
|
||||
for (let { deletes, inserts } of termObjectChangeSets) {
|
||||
const deleteStatements = deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
const insertStatements = inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
|
||||
if (deleteStatements.length) {
|
||||
const transformedStatementsToDelete = await transformStatements(fetch, deleteStatements);
|
||||
if (transformedStatementsToDelete.length) {
|
||||
await deleteFromAllGraphs(
|
||||
muAuthSudo.updateSudo,
|
||||
transformedStatementsToDelete,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (insertStatements.length) {
|
||||
const transformedStatementsToInsert = await transformStatements(fetch, insertStatements);
|
||||
if (transformedStatementsToInsert.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
INGEST_GRAPH,
|
||||
transformedStatementsToInsert,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
"INSERT"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
@@ -1,51 +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://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_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
|
||||
);
|
||||
const INGEST_GRAPH =
|
||||
process.env.INGEST_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 UNFILTERED_MAPPING = "main";
|
||||
const MAIN_INFO_MAPPING = "main-info";
|
||||
const PRIVATE_INFO_MAPPING = "private-info";
|
||||
|
||||
if (!process.env.FILE_SYNC_GRAPH)
|
||||
throw `Expected 'FILE_SYNC_GRAPH' to be provided.`;
|
||||
const FILE_SYNC_GRAPH = process.env.FILE_SYNC_GRAPH;
|
||||
|
||||
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,
|
||||
INGEST_GRAPH,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
UNFILTERED_MAPPING,
|
||||
MAIN_INFO_MAPPING,
|
||||
PRIVATE_INFO_MAPPING,
|
||||
FILE_SYNC_GRAPH,
|
||||
};
|
||||
@@ -1,88 +0,0 @@
|
||||
const { transformStatements, batchedDbUpdate, deleteFromAllGraphs } = require('./util');
|
||||
const {
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
INGEST_GRAPH,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
UNFILTERED_MAPPING,
|
||||
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, muAuthSudo, fetch } = lib;
|
||||
const { termObjectChangeSets } = data;
|
||||
|
||||
for (let { deletes, inserts } of termObjectChangeSets) {
|
||||
const deleteStatements = deletes.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
const insertStatements = inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
|
||||
|
||||
if (deleteStatements.length) {
|
||||
const transformedStatementsToDelete = await transformStatements(fetch, deleteStatements, UNFILTERED_MAPPING);
|
||||
if (transformedStatementsToDelete.length) {
|
||||
await deleteFromAllGraphs(
|
||||
muAuthSudo.updateSudo,
|
||||
transformedStatementsToDelete,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (insertStatements.length) {
|
||||
const transformedStatementsToInsert = await transformStatements(fetch, insertStatements, MAIN_INFO_MAPPING);
|
||||
if (transformedStatementsToInsert.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
INGEST_GRAPH,
|
||||
transformedStatementsToInsert,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
|
||||
const transformedStatementsToInsertPrivate = await transformStatements(fetch, insertStatements, PRIVATE_INFO_MAPPING);
|
||||
if (transformedStatementsToInsertPrivate.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
transformedStatementsToInsertPrivate,
|
||||
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
|
||||
process.env.MU_SPARQL_ENDPOINT, // Note: this is the default endpoint through auth
|
||||
BATCH_SIZE,
|
||||
MAX_DB_RETRY_ATTEMPTS,
|
||||
SLEEP_BETWEEN_BATCHES,
|
||||
SLEEP_TIME_AFTER_FAILED_DB_OPERATION
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dispatch
|
||||
};
|
||||
@@ -1,75 +0,0 @@
|
||||
const { transformStatements, batchedDbUpdate, } = 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,
|
||||
INGEST_GRAPH,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
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, fetch } = lib;
|
||||
const { termObjects } = data;
|
||||
|
||||
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) {
|
||||
originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`)
|
||||
|
||||
const transformedStatementsToInsert = await transformStatements(fetch, originalInsertTriples, MAIN_INFO_MAPPING);
|
||||
if (transformedStatementsToInsert.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
INGEST_GRAPH,
|
||||
transformedStatementsToInsert,
|
||||
{ '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 transformedStatementsToInsertPrivate = await transformStatements(fetch, originalInsertTriples, PRIVATE_INFO_MAPPING);
|
||||
if (transformedStatementsToInsertPrivate.length) {
|
||||
await batchedDbUpdate(
|
||||
muAuthSudo.updateSudo,
|
||||
PRIVACY_SENSITIVE_GRAPH,
|
||||
transformedStatementsToInsertPrivate,
|
||||
{ '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
|
||||
};
|
||||
@@ -1,154 +0,0 @@
|
||||
const {
|
||||
MAX_REASONING_RETRY_ATTEMPTS,
|
||||
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION
|
||||
} = 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 deleteFromAllGraphs(muUpdate,
|
||||
triples,
|
||||
extraHeaders,
|
||||
endpoint,
|
||||
maxAttempts,
|
||||
sleepBetweenBatches = 1000,
|
||||
sleepTimeOnFail = 1000,
|
||||
) {
|
||||
|
||||
for (const triple of triples) {
|
||||
|
||||
console.log(`Deleting a triple from all graphs in triplestore`);
|
||||
|
||||
const deleteCall = async () => {
|
||||
await muUpdate(`
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
${triple}
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
${triple}
|
||||
}
|
||||
}
|
||||
`, extraHeaders, endpoint);
|
||||
};
|
||||
|
||||
await operationWithRetry(deleteCall, 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
|
||||
*
|
||||
*/
|
||||
function transformTriples(fetch, triples, mapping) {
|
||||
return operationWithRetry(mainConversion(fetch, triples, mapping), 0,
|
||||
MAX_REASONING_RETRY_ATTEMPTS, SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION);
|
||||
}
|
||||
|
||||
|
||||
function mainConversion(fetch, triples, mapping) {
|
||||
let formdata = new URLSearchParams();
|
||||
formdata.append("data", triples);
|
||||
|
||||
let requestOptions = {
|
||||
method: 'POST',
|
||||
body: formdata,
|
||||
redirect: 'follow'
|
||||
};
|
||||
|
||||
return fetch(`http://reasoner/reason/dl2op/${mapping}`, requestOptions)
|
||||
.then(response => response.text());
|
||||
}
|
||||
|
||||
|
||||
function transformStatements(fetch, triples, mapping) {
|
||||
return transformTriples(fetch, triples.join('\n'), mapping).then(
|
||||
graph => {
|
||||
statements = graph ? graph.split('\n') : [];
|
||||
console.log(`CONVERSION ${mapping}: FROM ${triples.length} triples to ${statements.length}`)
|
||||
return statements
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
batchedDbUpdate,
|
||||
deleteFromAllGraphs,
|
||||
partition,
|
||||
transformStatements
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
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
|
||||
};
|
||||
@@ -0,0 +1,11 @@
|
||||
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
|
||||
};
|
||||
@@ -0,0 +1,114 @@
|
||||
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
|
||||
};
|
||||
@@ -0,0 +1,106 @@
|
||||
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
|
||||
};
|
||||
@@ -0,0 +1,204 @@
|
||||
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,46 @@
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/d640003a744edbe1a0597ab57243ab5e>
|
||||
<http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/besturenVanDeEredienst/d640003a744edbe1a0597ab57243ab5e>
|
||||
<http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> .
|
||||
|
||||
<http://data.lblod.info/id/eredienstbestuursorganen/18d843d47e223409b9bb6e7af8a4d8a8>
|
||||
a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "18d843d47e223409b9bb6e7af8a4d8a8" ;
|
||||
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> <http://data.lblod.info/id/eredienstbestuursorganen/520e20dd93d0eb546ee2402f124b499e> ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#bindingStart> "2020-04-01T00:00:00"^^xsd:dateTime ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#bindingEinde> "2023-03-31T00:00:00"^^xsd:dateTime ;
|
||||
<http://www.w3.org/ns/org#hasPost> <http://data.lblod.info/id/mandaten/c6d754b17be9634e629f7d751753bb27> ;
|
||||
<http://www.w3.org/ns/org#hasPost> <http://data.lblod.info/id/mandaten/37fc68e584d93a8c165a2b9b5b0f183a> ;
|
||||
<http://www.w3.org/ns/org#hasPost> <http://data.lblod.info/id/mandaten/daac7f53-b020-443d-92a7-9d47be6cb186> ;
|
||||
<http://www.w3.org/ns/org#hasPost> <http://data.lblod.info/id/mandaten/3618fc2a-83f7-45dd-969f-06afd0c3277b> ;
|
||||
<http://www.w3.org/ns/org#hasPost> <http://data.lblod.info/id/mandaten/e4b05858-c66d-4098-9c43-59af0359e603> ;
|
||||
<http://www.w3.org/ns/org#hasPost> <http://data.lblod.info/id/mandaten/5147f880-b0a5-4145-ac01-db8323a5410d> .
|
||||
|
||||
<http://data.lblod.info/id/mandaten/daac7f53-b020-443d-92a7-9d47be6cb186>
|
||||
a <http://data.vlaanderen.be/ns/mandaat#Mandaat> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "daac7f53-b020-443d-92a7-9d47be6cb186" ;
|
||||
<http://www.w3.org/ns/org#role> <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
|
||||
|
||||
<http://data.lblod.info/id/mandaten/3618fc2a-83f7-45dd-969f-06afd0c3277b>
|
||||
a <http://data.vlaanderen.be/ns/mandaat#Mandaat> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "3618fc2a-83f7-45dd-969f-06afd0c3277b" ;
|
||||
<http://www.w3.org/ns/org#role> <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
|
||||
|
||||
<http://data.lblod.info/id/mandaten/e4b05858-c66d-4098-9c43-59af0359e603>
|
||||
a <http://data.vlaanderen.be/ns/mandaat#Mandaat> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "e4b05858-c66d-4098-9c43-59af0359e603" ;
|
||||
<http://www.w3.org/ns/org#role> <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
|
||||
|
||||
<http://data.lblod.info/id/mandaten/5147f880-b0a5-4145-ac01-db8323a5410d>
|
||||
a <http://data.vlaanderen.be/ns/mandaat#Mandaat> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "5147f880-b0a5-4145-ac01-db8323a5410d" ;
|
||||
<http://www.w3.org/ns/org#role> <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -15,7 +15,7 @@ PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -15,7 +15,7 @@ PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -15,7 +15,7 @@ PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
|
||||
@@ -21,7 +21,7 @@ PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX lblodlg: <https://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
http://mu.semte.ch/graphs/public
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
||||
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
|
||||
rdf:type <http://mu.semte.ch/vocabularies/ext/BestuurseenheidClassificatieCode> , skos:Concept ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d" ;
|
||||
skos:topConceptOf <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> ;
|
||||
skos:prefLabel "Autonoom provinciebedrijf" ;
|
||||
skos:inScheme <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> ;
|
||||
<http://schema.org/publication> <http://lblod.data.gift/concepts/83f7b480-fcaf-4795-b603-7f3bce489325> .
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
|
||||
rdf:type <http://mu.semte.ch/vocabularies/ext/BestuurseenheidClassificatieCode> , skos:Concept ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "36a82ba0-7ff1-4697-a9dd-2e94df73b721" ;
|
||||
skos:topConceptOf <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> ;
|
||||
skos:prefLabel "Autonoom gemeentebedrijf" ;
|
||||
skos:inScheme <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> ;
|
||||
<http://schema.org/publication> <http://lblod.data.gift/concepts/83f7b480-fcaf-4795-b603-7f3bce489325> .
|
||||
|
||||
|
||||
<http://lblod.data.gift/concepts/dcc01338-842c-4fbd-ba68-3ca6f3af975c> a <http://lblod.data.gift/vocabularies/organisatie/TypeVestiging>;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "dcc01338-842c-4fbd-ba68-3ca6f3af975c";
|
||||
<http://www.w3.org/2004/02/skos/core#prefLabel> "Correspondentieadres";
|
||||
<http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/f8319ccf40fc2a1697edc5cf7e03018f>;
|
||||
<http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b>;
|
||||
<http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/f8319ccf40fc2a1697edc5cf7e03018f>.
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
http://mu.semte.ch/graphs/public
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
||||
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
|
||||
|
||||
<http://lblod.data.gift/concepts/b85363df-b598-4a21-b8ae-0dea78db73cb>
|
||||
rdf:type <http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "b85363df-b598-4a21-b8ae-0dea78db73cb" ;
|
||||
skos:prefLabel "In ontbinding" ;
|
||||
skos:inScheme <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
|
||||
skos:topConceptOf <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> .
|
||||
|
||||
<http://lblod.data.gift/concepts/e8dc166e-4769-4f28-bcf8-af2fb8cb7d15>
|
||||
rdf:type <http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "e8dc166e-4769-4f28-bcf8-af2fb8cb7d15" ;
|
||||
skos:prefLabel "In vereffening" ;
|
||||
skos:inScheme <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
|
||||
skos:topConceptOf <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> .
|
||||
|
||||
<http://lblod.data.gift/concepts/b5f471a8-eb2e-4ec3-9f84-2c179134e2be>
|
||||
rdf:type <http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "b5f471a8-eb2e-4ec3-9f84-2c179134e2be" ;
|
||||
skos:prefLabel "Ontbonden en vereffend" ;
|
||||
skos:inScheme <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
|
||||
skos:topConceptOf <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> .
|
||||
|
||||
|
||||
<http://lblod.data.gift/concepts/f0e2706a-3b64-4464-ad9c-4e65dc976288>
|
||||
rdf:type <http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> "f0e2706a-3b64-4464-ad9c-4e65dc976288" ;
|
||||
skos:prefLabel "Oprichting" ;
|
||||
skos:inScheme <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> , <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
|
||||
skos:topConceptOf <http://lblod.data.gift/concept-schemes/e1ff33ee76b5662ec8486f0e2abec384> .
|
||||
@@ -0,0 +1,27 @@
|
||||
# AGB AG2B has been added in Loket in the meantime. I'm adapting to Loket's URI
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
<http://data.lblod.info/id/bestuurseenheden/a7aaef2f-6e8f-4351-9303-bdc4288bc6f0> ?p ?o .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855> ?p ?o .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH ?g {
|
||||
<http://data.lblod.info/id/bestuurseenheden/a7aaef2f-6e8f-4351-9303-bdc4288bc6f0> ?p ?o .
|
||||
}
|
||||
}
|
||||
;
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855> <http://mu.semte.ch/vocabularies/core/uuid> "a7aaef2f-6e8f-4351-9303-bdc4288bc6f0" .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855> <http://mu.semte.ch/vocabularies/core/uuid> "e0920e46-85b9-4736-a906-b254cc7f1855" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,301 @@
|
||||
# Classification Raad van bestuur
|
||||
|
||||
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 ?classificationBestuurseenheid {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
|
||||
}
|
||||
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/013cc838-173a-4657-b1ae-b00c048df943>
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0d71bad-4684-4796-9f76-c3babb972a0f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/cec30867-e378-4e86-9568-1efebb6ccd7d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b206763c-d8d2-45bd-ba1b-b5462bdd823c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/70285c2d-2045-414e-bd49-56155a736e56>
|
||||
<http://data.lblod.info/id/bestuurseenheden/2908c8ed-0f67-44c0-b69e-5a8b07238d15>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f4228a39-de89-4a50-925f-d5d8d5109e79>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b25f4408-0b7c-46d0-a234-0936cac4eb7c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b81fdc5f-d1ba-49f2-831f-ed549ad94394>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3deaa042-58f3-474f-abc2-9cb3e15f4221>
|
||||
<http://data.lblod.info/id/bestuurseenheden/863673c6-7bc9-4bbd-a42a-9ef1d2dc4c05>
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855>
|
||||
<http://data.lblod.info/id/bestuurseenheden/99509194-025b-4292-9add-aa98b4867350>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479BE11E20833AEA681F731>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3D65190444E254CA3901>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C4C67190444E254CA390E>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B935E20833AEA681F719>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646DCAC8E20833AEA681F608>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3BB7190444E254CA38F4>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2BB5E20833AEA681F62C>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8e448f7f-5a1d-44b0-a99d-274b2cc66f58>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5202c9ba-40fb-44e2-8116-6eceadc1e60a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6478831EE20833AEA681F690>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F25AEE20833AEA681F61A>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2609E20833AEA681F623>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488403F190444E254CA3891>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3B22190444E254CA38EB>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2295E20833AEA681F611>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B670E20833AEA681F702>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488488C190444E254CA38A5>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648841E2190444E254CA389A>
|
||||
}
|
||||
|
||||
?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)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
# Classification Bevoegd beslissingsorgaan
|
||||
|
||||
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 ?classificationBestuurseenheid {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
|
||||
}
|
||||
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/0dbc70ec-6be9-4997-b8e1-11b6c0542382>
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0d71bad-4684-4796-9f76-c3babb972a0f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/cec30867-e378-4e86-9568-1efebb6ccd7d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b206763c-d8d2-45bd-ba1b-b5462bdd823c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/70285c2d-2045-414e-bd49-56155a736e56>
|
||||
<http://data.lblod.info/id/bestuurseenheden/2908c8ed-0f67-44c0-b69e-5a8b07238d15>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f4228a39-de89-4a50-925f-d5d8d5109e79>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b25f4408-0b7c-46d0-a234-0936cac4eb7c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b81fdc5f-d1ba-49f2-831f-ed549ad94394>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3deaa042-58f3-474f-abc2-9cb3e15f4221>
|
||||
<http://data.lblod.info/id/bestuurseenheden/863673c6-7bc9-4bbd-a42a-9ef1d2dc4c05>
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855>
|
||||
<http://data.lblod.info/id/bestuurseenheden/99509194-025b-4292-9add-aa98b4867350>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479BE11E20833AEA681F731>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3D65190444E254CA3901>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C4C67190444E254CA390E>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B935E20833AEA681F719>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646DCAC8E20833AEA681F608>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3BB7190444E254CA38F4>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2BB5E20833AEA681F62C>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8e448f7f-5a1d-44b0-a99d-274b2cc66f58>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5202c9ba-40fb-44e2-8116-6eceadc1e60a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6478831EE20833AEA681F690>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F25AEE20833AEA681F61A>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2609E20833AEA681F623>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488403F190444E254CA3891>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3B22190444E254CA38EB>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2295E20833AEA681F611>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B670E20833AEA681F702>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488488C190444E254CA38A5>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648841E2190444E254CA389A>
|
||||
}
|
||||
|
||||
?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)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
# Classification Algemene vergadering
|
||||
|
||||
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 ?classificationBestuurseenheid {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
|
||||
}
|
||||
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/b52094ff-21a2-4da8-8dbe-f513365d1528>
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0d71bad-4684-4796-9f76-c3babb972a0f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/cec30867-e378-4e86-9568-1efebb6ccd7d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b206763c-d8d2-45bd-ba1b-b5462bdd823c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/70285c2d-2045-414e-bd49-56155a736e56>
|
||||
<http://data.lblod.info/id/bestuurseenheden/2908c8ed-0f67-44c0-b69e-5a8b07238d15>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f4228a39-de89-4a50-925f-d5d8d5109e79>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b25f4408-0b7c-46d0-a234-0936cac4eb7c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b81fdc5f-d1ba-49f2-831f-ed549ad94394>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3deaa042-58f3-474f-abc2-9cb3e15f4221>
|
||||
<http://data.lblod.info/id/bestuurseenheden/863673c6-7bc9-4bbd-a42a-9ef1d2dc4c05>
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855>
|
||||
<http://data.lblod.info/id/bestuurseenheden/99509194-025b-4292-9add-aa98b4867350>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479BE11E20833AEA681F731>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3D65190444E254CA3901>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C4C67190444E254CA390E>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B935E20833AEA681F719>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646DCAC8E20833AEA681F608>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3BB7190444E254CA38F4>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2BB5E20833AEA681F62C>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8e448f7f-5a1d-44b0-a99d-274b2cc66f58>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5202c9ba-40fb-44e2-8116-6eceadc1e60a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6478831EE20833AEA681F690>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F25AEE20833AEA681F61A>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2609E20833AEA681F623>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488403F190444E254CA3891>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3B22190444E254CA38EB>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2295E20833AEA681F611>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B670E20833AEA681F702>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488488C190444E254CA38A5>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648841E2190444E254CA389A>
|
||||
}
|
||||
|
||||
?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)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
# Classification Leidend Ambtenaar
|
||||
|
||||
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 ?classificationBestuurseenheid {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
|
||||
}
|
||||
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/41caf7e6-b040-4720-9cc2-a96cfffed5b4>
|
||||
}
|
||||
|
||||
VALUES ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0d71bad-4684-4796-9f76-c3babb972a0f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/cec30867-e378-4e86-9568-1efebb6ccd7d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b206763c-d8d2-45bd-ba1b-b5462bdd823c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/70285c2d-2045-414e-bd49-56155a736e56>
|
||||
<http://data.lblod.info/id/bestuurseenheden/2908c8ed-0f67-44c0-b69e-5a8b07238d15>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f4228a39-de89-4a50-925f-d5d8d5109e79>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b25f4408-0b7c-46d0-a234-0936cac4eb7c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b81fdc5f-d1ba-49f2-831f-ed549ad94394>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3deaa042-58f3-474f-abc2-9cb3e15f4221>
|
||||
<http://data.lblod.info/id/bestuurseenheden/863673c6-7bc9-4bbd-a42a-9ef1d2dc4c05>
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855>
|
||||
<http://data.lblod.info/id/bestuurseenheden/99509194-025b-4292-9add-aa98b4867350>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479BE11E20833AEA681F731>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3D65190444E254CA3901>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C4C67190444E254CA390E>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B935E20833AEA681F719>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646DCAC8E20833AEA681F608>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3BB7190444E254CA38F4>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2BB5E20833AEA681F62C>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8e448f7f-5a1d-44b0-a99d-274b2cc66f58>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5202c9ba-40fb-44e2-8116-6eceadc1e60a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6478831EE20833AEA681F690>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F25AEE20833AEA681F61A>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2609E20833AEA681F623>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488403F190444E254CA3891>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3B22190444E254CA38EB>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2295E20833AEA681F611>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B670E20833AEA681F702>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488488C190444E254CA38A5>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648841E2190444E254CA389A>
|
||||
}
|
||||
|
||||
?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)
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?orgaanInTime <http://data.vlaanderen.be/ns/mandaat#bindingStart> ?start .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?orgaanInTime <http://data.vlaanderen.be/ns/mandaat#bindingStart> ?startDateTime .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
VALUES ?classificationBestuurseenheid {
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
|
||||
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
|
||||
}
|
||||
|
||||
?orgaanInTime <https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan>/<http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuurseenheid ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#bindingStart> ?start .
|
||||
|
||||
?bestuurseenheid <http://www.w3.org/ns/org#classification> ?classificationBestuurseenheid .
|
||||
|
||||
# The hour is arbitrary, but there is a bug in virtuoso when if the time is `T00:00:00` it doesn't apply the type change at all
|
||||
BIND(IF(strlen(str(?start)) = 10, strdt(concat(str(?start), 'T02:00:00'), xsd:dateTime), ?start) as ?startDateTime)
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,64 @@
|
||||
# Classification Leidend Ambtenaar
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?functie .
|
||||
|
||||
?functie a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie> ;
|
||||
<http://mu.semte.ch/vocabularies/core/uuid> ?uuidFunctie ;
|
||||
<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 ?bestuurseenheid {
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0d71bad-4684-4796-9f76-c3babb972a0f>
|
||||
<http://data.lblod.info/id/bestuurseenheden/cec30867-e378-4e86-9568-1efebb6ccd7d>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b206763c-d8d2-45bd-ba1b-b5462bdd823c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/70285c2d-2045-414e-bd49-56155a736e56>
|
||||
<http://data.lblod.info/id/bestuurseenheden/2908c8ed-0f67-44c0-b69e-5a8b07238d15>
|
||||
<http://data.lblod.info/id/bestuurseenheden/f4228a39-de89-4a50-925f-d5d8d5109e79>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b25f4408-0b7c-46d0-a234-0936cac4eb7c>
|
||||
<http://data.lblod.info/id/bestuurseenheden/b81fdc5f-d1ba-49f2-831f-ed549ad94394>
|
||||
<http://data.lblod.info/id/bestuurseenheden/3deaa042-58f3-474f-abc2-9cb3e15f4221>
|
||||
<http://data.lblod.info/id/bestuurseenheden/863673c6-7bc9-4bbd-a42a-9ef1d2dc4c05>
|
||||
<http://data.lblod.info/id/bestuurseenheden/e0920e46-85b9-4736-a906-b254cc7f1855>
|
||||
<http://data.lblod.info/id/bestuurseenheden/99509194-025b-4292-9add-aa98b4867350>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479BE11E20833AEA681F731>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3D65190444E254CA3901>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C4C67190444E254CA390E>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B935E20833AEA681F719>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5c6ab343-3405-475d-a184-d44bbe7e787a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646DCAC8E20833AEA681F608>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3BB7190444E254CA38F4>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2BB5E20833AEA681F62C>
|
||||
<http://data.lblod.info/id/bestuurseenheden/8e448f7f-5a1d-44b0-a99d-274b2cc66f58>
|
||||
<http://data.lblod.info/id/bestuurseenheden/5202c9ba-40fb-44e2-8116-6eceadc1e60a>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6478831EE20833AEA681F690>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F25AEE20833AEA681F61A>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2609E20833AEA681F623>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488403F190444E254CA3891>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648C3B22190444E254CA38EB>
|
||||
<http://data.lblod.info/id/bestuurseenheden/646F2295E20833AEA681F611>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6479B670E20833AEA681F702>
|
||||
<http://data.lblod.info/id/bestuurseenheden/6488488C190444E254CA38A5>
|
||||
<http://data.lblod.info/id/bestuurseenheden/648841E2190444E254CA389A>
|
||||
}
|
||||
|
||||
VALUES ?classificationOrgaan {
|
||||
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/41caf7e6-b040-4720-9cc2-a96cfffed5b4>
|
||||
}
|
||||
|
||||
?bestuurseenheid a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?bestuurseenheidLabel .
|
||||
|
||||
?orgaan <http://www.w3.org/ns/org#classification> ?classificationOrgaan ;
|
||||
<http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuurseenheid .
|
||||
|
||||
?orgaanInTime <https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
|
||||
|
||||
BIND(CONCAT(?bestuurseenheidLabel, " Leidend ambtenaar") as ?functieLabel)
|
||||
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?classificationOrgaan, "functieLabel")) as ?uuidFunctie)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursfuncties/", ?uuidFunctie)) AS ?functie)
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?municipality <http://mu.semte.ch/vocabularies/ext/isFounderOfOrganization> ?bestuur .
|
||||
?municipality <http://www.w3.org/ns/org#hasSubOrganization> ?bestuur .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?bestuur a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
<http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> ; # AGB
|
||||
<http://www.w3.org/ns/org#hasPrimarySite>/<https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?address .
|
||||
|
||||
?address <https://data.vlaanderen.be/ns/adres#gemeentenaam> ?municipalityLabel .
|
||||
}
|
||||
|
||||
GRAPH <http://mu.semte.ch/graphs/shared> {
|
||||
?municipality a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?municipalityLabel ;
|
||||
<http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?province <http://mu.semte.ch/vocabularies/ext/isFounderOfOrganization> ?bestuur .
|
||||
?province <http://www.w3.org/ns/org#hasSubOrganization> ?bestuur .
|
||||
?municipality <http://www.w3.org/ns/org#linkedTo> ?bestuur .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?bestuur a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
<http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d> ; # APB
|
||||
<http://www.w3.org/ns/org#hasPrimarySite>/<https://data.vlaanderen.be/ns/organisatie#bestaatUit> ?address .
|
||||
|
||||
?address <http://www.w3.org/ns/locn#adminUnitL2> ?provinceLabel .
|
||||
}
|
||||
|
||||
GRAPH <http://mu.semte.ch/graphs/shared> {
|
||||
?municipality a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?municipalityLabel ;
|
||||
<http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
|
||||
|
||||
?province a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid> ;
|
||||
skos:prefLabel ?provinceLabel ;
|
||||
<http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
# We have two bestuursorganen of the same classification for 2 bestuurseenheden.
|
||||
# Then need to be merged, as we should only have one orgaan (not in time) per classification.
|
||||
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?otherBestuursorgaan ?potherBestuursorgaan ?ootherBestuursorgaan .
|
||||
?s ?p ?otherBestuursorgaan .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?s ?p ?bestuursorgaan .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
VALUES ?type {
|
||||
ere:BestuurVanDeEredienst
|
||||
ere:CentraalBestuurVanDeEredienst
|
||||
}
|
||||
|
||||
?bestuurseenheid a ?type .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?bestuurseenheid <http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
|
||||
}
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid ;
|
||||
<http://www.w3.org/ns/org#classification> ?classif .
|
||||
|
||||
?otherBestuursorgaan besluit:bestuurt ?bestuurseenheid ;
|
||||
<http://www.w3.org/ns/org#classification> ?classif ;
|
||||
?potherBestuursorgaan ?ootherBestuursorgaan .
|
||||
|
||||
?s ?p ?otherBestuursorgaan .
|
||||
|
||||
FILTER (str(?bestuursorgaan) > str(?otherBestuursorgaan))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime a besluit:Bestuursorgaan ;
|
||||
mu:uuid ?uuidOrgaanInTime ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
VALUES ?type {
|
||||
ere:BestuurVanDeEredienst
|
||||
ere:CentraalBestuurVanDeEredienst
|
||||
}
|
||||
|
||||
?bestuurseenheid a ?type .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?bestuurseenheid <http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
|
||||
}
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
?missingOrgaanInTime mandaat:bindingStart ?start .
|
||||
FILTER CONTAINS(STR(?start), "2023")
|
||||
}
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?missingOrgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
?missingOrgaanInTime mandaat:bindingEinde ?end .
|
||||
FILTER CONTAINS(STR(?end), "2026")
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?bestuurseenheid, ?bestuursorgaan, "2023-2026")) as ?uuidOrgaanInTime)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/bestuursorganen/", ?uuidOrgaanInTime)) AS ?orgaanInTime)
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
# Add missing mandates to central worship services
|
||||
|
||||
## 2023 - 2026
|
||||
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?expert .
|
||||
|
||||
?expert a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidExpert ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/8c91c321ad477c4fc372ee36358d3ed4> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:CentraalBestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?expert .
|
||||
?expert org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/8c91c321ad477c4fc372ee36358d3ed4> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Expert 2023-2026")) as ?uuidExpert)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidExpert)) AS ?expert)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?vertegenwoordiger .
|
||||
|
||||
?vertegenwoordiger a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidVertegenwoordiger ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/6e26e94ea4b127eeb850fb6debe07271> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:CentraalBestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?vertegenwoordiger .
|
||||
?vertegenwoordiger org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/6e26e94ea4b127eeb850fb6debe07271> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Vertegenwoordiger 2023-2026")) as ?uuidVertegenwoordiger)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVertegenwoordiger)) AS ?vertegenwoordiger)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?secretaris .
|
||||
|
||||
?secretaris a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidSecretaris ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:CentraalBestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?secretaris .
|
||||
?secretaris org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/e2af0ea1a6af96cfb698ac39ad985eea> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2023-2026")) as ?uuidSecretaris)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?voorzitter .
|
||||
|
||||
?voorzitter a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidVoorzitter ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5960262f753661cf84329f3afa9f7df7> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:CentraalBestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?voorzitter .
|
||||
?voorzitter org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5960262f753661cf84329f3afa9f7df7> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2023-2026")) as ?uuidVoorzitter)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?bestuurslid .
|
||||
|
||||
?bestuurslid a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidBestuurslid ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/f848fa3cc2c5fb7c581a116866293925> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:CentraalBestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?worshipService <http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
|
||||
}
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?bestuurslid .
|
||||
?bestuurslid org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/f848fa3cc2c5fb7c581a116866293925> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Bestuurslid 2023-2026")) as ?uuidBestuurslid)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslid)) AS ?bestuurslid)
|
||||
}
|
||||
@@ -0,0 +1,186 @@
|
||||
# Add missing mandates to worship services for period 2023-2026
|
||||
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
|
||||
## Case LidVanRechtswege : shared mandate for all the organen in time
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?lidVanRechtswege .
|
||||
|
||||
?lidVanRechtswege a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidLidVanRechtswege ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5972fccd87f864c4ec06bfbd20b5008b> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
VALUES (?start ?end) {
|
||||
("2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>)
|
||||
}
|
||||
|
||||
?worshipService a ere:BestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart ?start ;
|
||||
mandaat:bindingEinde ?end .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?lidVanRechtswege .
|
||||
?lidVanRechtswege org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5972fccd87f864c4ec06bfbd20b5008b> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Rechtswege")) as ?uuidLidVanRechtswege)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidLidVanRechtswege)) AS ?lidVanRechtswege)
|
||||
}
|
||||
|
||||
## Case Bestuursleden, small or big half : 2023 is the beggining of a KH
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?bestuurslidGH .
|
||||
|
||||
?bestuurslidGH a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidBestuurslidGH ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/a8b5509b-f86b-48f8-94d6-fe463a9b77e3> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:BestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?bestuurslidGH .
|
||||
?bestuurslidGH org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/a8b5509b-f86b-48f8-94d6-fe463a9b77e3> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidGH 2020-2026")) as ?uuidBestuurslidGH)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslidGH)) AS ?bestuurslidGH)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?bestuurslidKH .
|
||||
|
||||
?bestuurslidKH a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidBestuurslidKH ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
VALUES (?start ?end) {
|
||||
("2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>)
|
||||
}
|
||||
|
||||
?worshipService a ere:BestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart ?start ;
|
||||
mandaat:bindingEinde ?end .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?bestuurslidKH .
|
||||
?bestuurslidKH org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/2962f0bd-2836-4758-9866-8ce8ea2c536f> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "BestuurslidKH 2023-2029")) as ?uuidBestuurslidKH)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidBestuurslidKH)) AS ?bestuurslidKH)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
## Other cases are simpler, one mandate is linked to only one orgaan in time. Creating them when missing.
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?voorzitter .
|
||||
|
||||
?voorzitter a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidVoorzitter ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:BestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?voorzitter .
|
||||
?voorzitter org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/67e6e585166cd97575b3e17ffc430a43> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Voorzitter 2023-2026")) as ?uuidVoorzitter)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidVoorzitter)) AS ?voorzitter)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?secretaris .
|
||||
|
||||
?secretaris a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidSecretaris ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:BestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?secretaris .
|
||||
?secretaris org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/5ac134b9800b81da3c450d6b9605cef2> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Secretaris 2023-2026")) as ?uuidSecretaris)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidSecretaris)) AS ?secretaris)
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?orgaanInTime org:hasPost ?penningmeester .
|
||||
|
||||
?penningmeester a mandaat:Mandaat ;
|
||||
mu:uuid ?uuidPenningmeester ;
|
||||
org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipService a ere:BestuurVanDeEredienst .
|
||||
?orgaan besluit:bestuurt ?worshipService .
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?orgaan ;
|
||||
mandaat:bindingStart "2023-04-01T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> ;
|
||||
mandaat:bindingEinde "2026-03-31T00:00:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
?orgaanInTime org:hasPost ?penningmeester .
|
||||
?penningmeester org:role <http://data.vlaanderen.be/id/concept/BestuursfunctieCode/180d13930d6f1a3938e0aa7fa9990002> .
|
||||
}
|
||||
}
|
||||
|
||||
BIND(MD5(CONCAT(?worshipService, ?orgaan, "Penningmeester 2023-2026")) as ?uuidPenningmeester)
|
||||
BIND(IRI(CONCAT("http://data.lblod.info/id/mandaten/", ?uuidPenningmeester)) AS ?penningmeester)
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/shared> {
|
||||
?person
|
||||
?p ?o
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/shared> {
|
||||
?person a person:Person ;
|
||||
?p ?o.
|
||||
}
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
VALUES ?typePosition {
|
||||
<http://data.lblod.info/vocabularies/leidinggevenden/Functionaris>
|
||||
<http://data.vlaanderen.be/ns/mandaat#Mandataris>
|
||||
}
|
||||
|
||||
?position mandaat:isBestuurlijkeAliasVan ?person ;
|
||||
a ?typePosition .
|
||||
}
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?worshipPosition <http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan> ?person .
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?functionaris ?p ?o.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?functionaris a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
|
||||
org:holds ?bestuursFunctie ;
|
||||
?p ?o .
|
||||
}
|
||||
|
||||
?bestuursorgaanInTime lblodlg:heeftBestuursfunctie ?bestuursFunctie ;
|
||||
generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
VALUES ?typeBestuur {
|
||||
<http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst>
|
||||
<http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst>
|
||||
}
|
||||
?bestuurseenheid a ?typeBestuur .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?mandataris ?p ?o.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?mandataris a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
|
||||
org:holds ?mandaat ;
|
||||
?p ?o .
|
||||
}
|
||||
|
||||
?bestuursorgaanInTime org:hasPost ?mandaat ;
|
||||
generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
VALUES ?typeBestuur {
|
||||
<http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst>
|
||||
<http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst>
|
||||
}
|
||||
?bestuurseenheid a ?typeBestuur .
|
||||
}
|
||||
}
|
||||
LIMIT 1000000
|
||||
@@ -0,0 +1,53 @@
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?mandataris ?p ?o.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?mandataris a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
|
||||
org:holds ?mandaat ;
|
||||
?p ?o .
|
||||
}
|
||||
|
||||
?bestuursorgaanInTime org:hasPost ?mandaat ;
|
||||
generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
VALUES ?typeBestuur {
|
||||
<http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst>
|
||||
<http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst>
|
||||
}
|
||||
?bestuurseenheid a ?typeBestuur .
|
||||
}
|
||||
}
|
||||
LIMIT 1000000
|
||||
@@ -0,0 +1,52 @@
|
||||
PREFIX adms: <http://www.w3.org/ns/adms#>
|
||||
PREFIX adres: <https://data.vlaanderen.be/ns/adres#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
|
||||
PREFIX dbpedia: <http://dbpedia.org/ontology/>
|
||||
PREFIX dc_terms: <http://purl.org/dc/terms/>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX euro: <http://data.europa.eu/m8g/>
|
||||
PREFIX euvoc: <http://publications.europa.eu/ontology/euvoc#>
|
||||
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
|
||||
PREFIX locn: <http://www.w3.org/ns/locn#>
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX organisatie: <https://data.vlaanderen.be/ns/organisatie#>
|
||||
PREFIX person: <http://www.w3.org/ns/person#>
|
||||
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
|
||||
PREFIX prov: <http://www.w3.org/ns/prov#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX regorg: <http://www.w3.org/ns/regorg#>
|
||||
PREFIX schema: <http://schema.org/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX vcard: <http://www.w3.org/2006/vcard/ns#>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?mandataris ?p ?o.
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?mandataris a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
|
||||
org:holds ?mandaat ;
|
||||
?p ?o .
|
||||
}
|
||||
|
||||
?bestuursorgaanInTime org:hasPost ?mandaat ;
|
||||
generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
FILTER NOT EXISTS {
|
||||
VALUES ?typeBestuur {
|
||||
<http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst>
|
||||
<http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst>
|
||||
}
|
||||
?bestuurseenheid a ?typeBestuur .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?minister ?p ?o .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?minister a ere:RolBedienaar ;
|
||||
org:holds ?ministerPosition ;
|
||||
?p ?o .
|
||||
|
||||
VALUES ?status {
|
||||
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> # Actief
|
||||
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> # Niet Actief
|
||||
}
|
||||
|
||||
?worshipService <http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor> ?ministerPosition ;
|
||||
<http://www.w3.org/ns/regorg#orgStatus> ?status .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
delete {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?position <http://data.lblod.info/vocabularies/erediensten/functie> ?function.
|
||||
}
|
||||
}
|
||||
|
||||
insert {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?position <http://data.lblod.info/vocabularies/erediensten/functie> <http://lblod.data.gift/concepts/7d8e0c15-7726-4196-9416-6dc40ed858bb>.
|
||||
}
|
||||
}
|
||||
where {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?position <http://data.lblod.info/vocabularies/erediensten/functie> ?function.
|
||||
?worshipService <http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor> ?position;
|
||||
<http://www.w3.org/ns/regorg#orgStatus> ?worshipStatus.
|
||||
|
||||
filter (?function in (<http://lblod.data.gift/concepts/5ebb798bd59c3b48c25116032caa02b7>,
|
||||
<http://lblod.data.gift/concepts/c4a3fd586211b17b06f574885e23f355>,
|
||||
<http://lblod.data.gift/concepts/e357bc8f4cc3a694fde2239748768a22>)
|
||||
&& ?worshipStatus = <http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab>)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s a <http://www.w3.org/ns/org#Post> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s a <http://data.vlaanderen.be/ns/mandaat#Mandaat> .
|
||||
}
|
||||
}
|
||||
|
||||
INSERT {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?s a <http://www.w3.org/ns/org#Post> .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/worship-service> {
|
||||
?s a <http://data.vlaanderen.be/ns/mandaat#Mandaat> .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
|
||||
delete {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/642E815DE025A7C706F41E5D> <http://purl.org/dc/terms/date> "2023-03-30"^^xsd:date .
|
||||
}
|
||||
}
|
||||
insert {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/642E815DE025A7C706F41E5D> <http://purl.org/dc/terms/date> "2023-04-06"^^xsd:date .
|
||||
}
|
||||
}
|
||||
where {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/642E815DE025A7C706F41E5D> <http://purl.org/dc/terms/date> "2023-03-30"^^xsd:date .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
DELETE DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/ad933a3247ab634eb1a8c7233e77d6ea8cd2b6e1950d302832d065dcb516bcf5> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Voeren" .
|
||||
<http://data.lblod.info/id/bestuursorganen/082976d57de0655ac4f123b57d5cb008f612956d0a6de1742c02913dcbfcf125> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Drogenbos" .
|
||||
<http://data.lblod.info/id/bestuursorganen/cc803c53b2e0b17aac1069f5566fb8e1c8dad2f702845515a662229721803c00> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Wezembeek-Oppem" .
|
||||
<http://data.lblod.info/id/bestuursorganen/f373ece36dc05b29737c0adc14de95682161bb78a55cb85f786fac3fbd5b1cfc> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Sint-Genesius-Rode" .
|
||||
<http://data.lblod.info/id/bestuursorganen/317126204426dc7cabb60ecb09cbe4ca4830882652884e1e5800e60231195f5c> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Linkebeek" .
|
||||
<http://data.lblod.info/id/bestuursorganen/db8c3e2da85d7621120a986adc19fd8d21f501b39c01952238073abfe7d4a7e7> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Wemmel" .
|
||||
<http://data.lblod.info/id/bestuursorganen/d7fffe5c17d1936d46b92620d1e454f38393736988514b5f339910a17c7134f0> <http://www.w3.org/2004/02/skos/core#prefLabel> "OCMWraad(Rechtstreeksverkiezing) Kraainem" .
|
||||
}
|
||||
}
|
||||
;
|
||||
INSERT DATA {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
<http://data.lblod.info/id/bestuursorganen/f373ece36dc05b29737c0adc14de95682161bb78a55cb85f786fac3fbd5b1cfc> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Sint-Genesius-Rode" .
|
||||
<http://data.lblod.info/id/bestuursorganen/317126204426dc7cabb60ecb09cbe4ca4830882652884e1e5800e60231195f5c> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Linkebeek" .
|
||||
<http://data.lblod.info/id/bestuursorganen/cc803c53b2e0b17aac1069f5566fb8e1c8dad2f702845515a662229721803c00> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Wezembeek-Oppem" .
|
||||
<http://data.lblod.info/id/bestuursorganen/ad933a3247ab634eb1a8c7233e77d6ea8cd2b6e1950d302832d065dcb516bcf5> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Voeren" .
|
||||
<http://data.lblod.info/id/bestuursorganen/082976d57de0655ac4f123b57d5cb008f612956d0a6de1742c02913dcbfcf125> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Drogenbos" .
|
||||
<http://data.lblod.info/id/bestuursorganen/d7fffe5c17d1936d46b92620d1e454f38393736988514b5f339910a17c7134f0> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Kraainem" .
|
||||
<http://data.lblod.info/id/bestuursorganen/db8c3e2da85d7621120a986adc19fd8d21f501b39c01952238073abfe7d4a7e7> <http://www.w3.org/2004/02/skos/core#prefLabel> "Raad voor Maatschappelijk Welzijn Wemmel" .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
delete {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/644616FDF08BCC5A4747B5A2> <http://purl.org/dc/terms/date> ?date.
|
||||
}
|
||||
}
|
||||
insert {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/644616FDF08BCC5A4747B5A2> <http://purl.org/dc/terms/date> "2022-04-22".
|
||||
}
|
||||
}
|
||||
where {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/644616FDF08BCC5A4747B5A2> <http://purl.org/dc/terms/date> ?date.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingEinde ?end .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingEinde ?endDateTime .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
GRAPH ?g {
|
||||
?bestuurseenheid a ?type .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?orgaanInTime mandaat:bindingEinde ?end .
|
||||
FILTER (datatype(?end) = xsd:date)
|
||||
BIND(strdt(concat(str(?end), 'T01:00:00'), xsd:dateTime) as ?endDateTime)
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingStart ?start .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingStart ?startDateTime .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
GRAPH ?g {
|
||||
?bestuurseenheid a ?type .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?orgaanInTime mandaat:bindingStart ?start .
|
||||
FILTER (datatype(?start) = xsd:date)
|
||||
BIND(strdt(concat(str(?start), 'T01:00:00'), xsd:dateTime) as ?startDateTime)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingEinde ?end .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingEinde ?endDateTime .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
GRAPH ?g {
|
||||
?bestuurseenheid a ?type .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?orgaanInTime mandaat:bindingEinde ?end .
|
||||
|
||||
FILTER (HOURS(?end) = 1)
|
||||
BIND(strdt(concat(xsd:date(?end), 'T00:00:00'), xsd:dateTime) as ?endDateTime)
|
||||
}
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
DELETE {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingStart ?start .
|
||||
}
|
||||
} INSERT {
|
||||
GRAPH ?g {
|
||||
?orgaanInTime mandaat:bindingStart ?startDateTime .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
GRAPH ?g {
|
||||
?bestuurseenheid a ?type .
|
||||
|
||||
?bestuursorgaan besluit:bestuurt ?bestuurseenheid .
|
||||
|
||||
?orgaanInTime generiek:isTijdspecialisatieVan ?bestuursorgaan .
|
||||
|
||||
?orgaanInTime mandaat:bindingStart ?start .
|
||||
|
||||
FILTER (HOURS(?start) = 1)
|
||||
BIND(strdt(concat(xsd:date(?start), 'T00:00:00'), xsd:dateTime) as ?startDateTime)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s ?p ?o .
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?s a <http://data.vlaanderen.be/ns/mandaat#Fractie> ;
|
||||
?p ?o .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
|
||||
INSERT {
|
||||
GRAPH ?g {
|
||||
?org a org:Organization .
|
||||
}
|
||||
} WHERE {
|
||||
VALUES ?g {
|
||||
<http://mu.semte.ch/graphs/shared>
|
||||
<http://mu.semte.ch/graphs/worship-service>
|
||||
<http://mu.semte.ch/graphs/administrative-unit>
|
||||
}
|
||||
GRAPH ?g {
|
||||
VALUES ?type {
|
||||
besluit:Bestuurseenheid
|
||||
ere:RepresentatiefOrgaan
|
||||
ere:EredienstBestuurseenheid
|
||||
ere:BestuurVanDeEredienst
|
||||
ere:CentraalBestuurVanDeEredienst
|
||||
}
|
||||
?org a ?type .
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
|
||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
PREFIX dct: <http://purl.org/dc/terms/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX concepts: <http://lblod.data.gift/concepts/>
|
||||
PREFIX bestuur: <http://data.lblod.info/id/besturenVanDeEredienst/>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
||||
PREFIX contacthub: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
PREFIX ce: <http://data.lblod.info/id/veranderingsgebeurtenissen/>
|
||||
PREFIX cer: <http://data.lblod.info/id/veranderingsgebeurtenis-resultaten/>
|
||||
PREFIX m8g: <http://data.europa.eu/m8g/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX eli: <http://data.europa.eu/eli/ontology#>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
|
||||
|
||||
DELETE {
|
||||
graph <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?decision ?decisionP ?decisionO.
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?decision ?decisionP ?decisionO.
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?changeEvent a <http://www.w3.org/ns/org#ChangeEvent>;
|
||||
<http://data.europa.eu/m8g/hasFormalFramework> ?decision.
|
||||
}
|
||||
graph <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?decision ?decisionP ?decisionO.
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
;
|
||||
|
||||
|
||||
DELETE {
|
||||
graph <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?decisionActivity ?p ?o.
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?decisionActivity ?p ?o.
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
graph <http://mu.semte.ch/graphs/worship-service> {
|
||||
?decision a <http://data.vlaanderen.be/ns/besluit#Besluit>.
|
||||
}
|
||||
graph <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?decisionActivity a <https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit>;
|
||||
<http://www.w3.org/ns/prov#generated> ?decision;
|
||||
?p ?o.
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
||||
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
PREFIX dct: <http://purl.org/dc/terms/>
|
||||
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
|
||||
PREFIX concepts: <http://lblod.data.gift/concepts/>
|
||||
PREFIX bestuur: <http://data.lblod.info/id/besturenVanDeEredienst/>
|
||||
PREFIX org: <http://www.w3.org/ns/org#>
|
||||
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
|
||||
PREFIX contacthub: <http://data.lblod.info/vocabularies/contacthub/>
|
||||
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
|
||||
PREFIX ce: <http://data.lblod.info/id/veranderingsgebeurtenissen/>
|
||||
PREFIX cer: <http://data.lblod.info/id/veranderingsgebeurtenis-resultaten/>
|
||||
PREFIX m8g: <http://data.europa.eu/m8g/>
|
||||
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
|
||||
PREFIX eli: <http://data.europa.eu/eli/ontology#>
|
||||
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
|
||||
|
||||
|
||||
DELETE {
|
||||
graph ?g {
|
||||
?changeEvent ?p ?o.
|
||||
?changeEventResult ?cP ?cO.
|
||||
?decision ?decisionP ?decisionO.
|
||||
?decisionActivity ?decisionActivityP ?desitionActivityO.
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
graph ?g {
|
||||
?changeEvent a <http://www.w3.org/ns/org#ChangeEvent>;
|
||||
<http://lblod.data.gift/vocabularies/organisatie/veranderingsgebeurtenisResultaat> ?changeEventResult;
|
||||
mu:uuid ?uuidChangeEvent;
|
||||
?p ?o.
|
||||
?changeEventResult a <http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat>;
|
||||
mu:uuid ?uuidChangeEventResult;
|
||||
?cP ?cO.
|
||||
|
||||
optional {
|
||||
?changeEvent <http://data.europa.eu/m8g/hasFormalFramework> ?decision.
|
||||
?decision ?decisionP ?decisionO.
|
||||
optional {
|
||||
?decisionActivity a <https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit>;
|
||||
<http://www.w3.org/ns/prov#generated> ?decision;
|
||||
?decisionActivityP ?desitionActivityO.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
filter(?uuidChangeEvent in ("63343865036B579F0A26FF5C", "63343E99036B579F0A26FF6F", "633446D6036B579F0A26FF87","63345772036B579F0A26FF93"))
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
delete {
|
||||
graph ?g {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/620E674C5747C883CA1D2EE4> <http://data.lblod.info/vocabularies/contacthub/typeWijziging> <http://lblod.data.gift/concepts/9f19f14910245f9b14737f1f1a2067f2>.
|
||||
}
|
||||
}
|
||||
insert {
|
||||
graph ?g {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/620E674C5747C883CA1D2EE4> <http://data.lblod.info/vocabularies/contacthub/typeWijziging> <http://lblod.data.gift/concepts/4297bc56c1a874240e4566e2c5b8816f>.
|
||||
|
||||
}
|
||||
}
|
||||
where {
|
||||
graph ?g {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/620E674C5747C883CA1D2EE4> <http://data.lblod.info/vocabularies/contacthub/typeWijziging> <http://lblod.data.gift/concepts/9f19f14910245f9b14737f1f1a2067f2>.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
DELETE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?functionaris ?pfunctionaris ?ofunctionaris .
|
||||
}
|
||||
} WHERE {
|
||||
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
|
||||
?functionaris a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
|
||||
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
|
||||
?pfunctionaris ?ofunctionaris .
|
||||
}
|
||||
|
||||
?orgaan <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
|
||||
<http://data.vlaanderen.be/ns/mandaat#isTijdspecialisatieVan>/<http://data.vlaanderen.be/ns/besluit#bestuurt>/<http://data.vlaanderen.be/ns/besluit#classificatie> ?classification .
|
||||
|
||||
FILTER(?classification NOT 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>
|
||||
))
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
delete {
|
||||
graph ?g {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/6380DDD34B5FEAF28DEDE982> <http://data.lblod.info/vocabularies/contacthub/typeWijziging>
|
||||
<http://lblod.data.gift/concepts/3dd7550843eaf18e1fa1ca6c6c3f2610>.
|
||||
}
|
||||
}
|
||||
insert {
|
||||
graph ?g {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/6380DDD34B5FEAF28DEDE982> <http://data.lblod.info/vocabularies/contacthub/typeWijziging>
|
||||
<http://lblod.data.gift/concepts/9f19f14910245f9b14737f1f1a2067f2>.
|
||||
|
||||
}
|
||||
}
|
||||
where {
|
||||
graph ?g {
|
||||
<http://data.lblod.info/id/veranderingsgebeurtenissen/6380DDD34B5FEAF28DEDE982> <http://data.lblod.info/vocabularies/contacthub/typeWijziging>
|
||||
<http://lblod.data.gift/concepts/3dd7550843eaf18e1fa1ca6c6c3f2610>.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
DELETE {
|
||||
graph <http://mu.semte.ch/graphs/public> {
|
||||
<http://lblod.data.gift/concepts/dcc01338-842c-4fbd-ba68-3ca6f3af975c> <http://www.w3.org/2004/02/skos/core#prefLabel> "Correspondentieadres".
|
||||
}
|
||||
}
|
||||
INSERT {
|
||||
graph <http://mu.semte.ch/graphs/public> {
|
||||
<http://lblod.data.gift/concepts/dcc01338-842c-4fbd-ba68-3ca6f3af975c> <http://www.w3.org/2004/02/skos/core#prefLabel> "Andere vestiging".
|
||||
}
|
||||
}
|
||||
WHERE {
|
||||
graph <http://mu.semte.ch/graphs/public> {
|
||||
<http://lblod.data.gift/concepts/dcc01338-842c-4fbd-ba68-3ca6f3af975c> <http://www.w3.org/2004/02/skos/core#prefLabel> "Correspondentieadres".
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user