Compare commits

...

97 Commits

Author SHA1 Message Date
Laurent Deketelaere
842e9f7205 chore: Bump frontend to per-release v1.24.0-0 2024-05-16 10:06:09 +02:00
Laurent Deketelaere
c562698edf Merge pull request #422 from lblod/fix/sync-wegwijs-api
Fix kbo-data-sync rewrite all `fullAddress` and override `sameAs`
2024-05-03 09:35:40 +02:00
Laurent Deketelaere
a7708255f9 fix: kbo-data-sync rewrite all fullAddress and override sameAs
- Bump `sync-wegwijs-organization-service` to v2.0.2
- Stop using v0.1.0 when feature flag off on frontend
2024-05-02 22:18:26 +02:00
YJouhar47
697fd814fc add site to representative organs 2024-05-02 10:14:16 +00:00
mirdono
f30fcfda22 fix: remove dangling change event results
The change events related to an organisation contains some data errors:
- There is a change event result without any corresponding change event. This
  causes an error when visiting the change events page for this organisation.
- There are two identical change event results for the same change event. This
  causes the change event to be shown twice in the table. (Only on PROD)

The added migration removes these unnecessary elements change event results.
2024-05-02 07:39:50 +00:00
Laurent Deketelaere
26d5a23a3c Merge pull request #417 from lblod/fix/adminitrative-unit-dump-publisher
Fix prefLabel missing in Kalliope dump after edition
2024-04-29 14:40:43 +02:00
Laurent Deketelaere
e7129dc41d chore: Clear producer organizations graph from main triplestore 2024-04-29 11:08:13 +02:00
Laurent Deketelaere
b5b8df6610 chore: Bump delta-producer-publication-graph-maintainer to v1.1.1-rc.1 2024-04-26 13:22:15 +02:00
Dachamelemon
0616d24ad0 Merge pull request #419 from lblod/fix/change-event-date-update-migration
fix/change-event-date-update-migration
2024-04-26 10:23:20 +02:00
Laurent Deketelaere
94baeb539f chore: Bump delta-producer-publication-graph-maintainer to 1.0.9-rc2 + enable other producers 2024-04-25 16:10:28 +02:00
Elias Papanikitas
007b0a35ee removed references to administrative units 2024-04-25 10:47:35 +02:00
Elias Papanikitas
131ecd4f1e fixed migraition 2024-04-24 14:41:29 +02:00
Oscar Rodriguez Villalobos
c260c5c3df Merge pull request #416 from lblod/feat/consumer-perfomance-improvements
avoid inserting duplicate triples to the database
2024-04-23 15:56:57 +02:00
Laurent Deketelaere
723527fb62 chore: Disable more 2024-04-23 13:08:58 +02:00
Laurent Deketelaere
fc4fcfddf8 chore: Bum delta-producer organizations to v1.0.8 + disabled not need for testing purpose 2024-04-23 13:07:08 +02:00
Oscar
449204a9d1 avoid inserting duplicate triples to the database 2024-04-23 12:51:04 +02:00
mirdono
4252004fc2 Merge branch 'master' into development 2024-04-23 09:36:28 +02:00
Laurent Deketelaere
730f99cf2b Merge pull request #415 from lblod/fix/add-missing-prefix-reasoner
fix: add missing prefix
2024-04-22 19:58:09 +02:00
mirdono
6223301f6f fix: add missing prefix 2024-04-22 17:50:57 +02:00
Oscar Rodriguez Villalobos
09d499fc01 Merge pull request #414 from lblod/bug/fix-shared-graph-edge-case
Fix consumer problem with admin units in shared graph
2024-04-18 14:53:58 +02:00
Oscar Rodriguez Villalobos
6ef0386a2b Add clarifying comment 2024-04-18 09:43:42 +02:00
Oscar Rodriguez Villalobos
4edfd3d08a Fix consumer problem with admin units in shared graph 2024-04-17 13:10:46 +02:00
Dachamelemon
410377d3e5 Merge pull request #410 from lblod/improvement/update-change-event-dates
Improvement/update change event dates
2024-04-17 11:26:21 +02:00
Elias Papanikitas
6305343672 Merge branch 'development' into improvement/update-change-event-dates 2024-04-17 11:24:25 +02:00
Elias Papanikitas
1a0987afeb removed 2 migrations that snuck in by accident 2024-04-17 10:37:02 +02:00
Dachamelemon
30504c9135 Merge pull request #413 from lblod/enhancement/remove-empty-literals
Enhancement/remove empty literals
2024-04-17 10:06:19 +02:00
Alexander van den Berghe
cdf6f8f75f Merge pull request #412 from lblod/fix/correct-representative-body-classification-code-type
Fix: corrected type for representative body classification code to match resources configuration
2024-04-15 14:18:00 +00:00
Elias Papanikitas
976b2b02df Merge branch 'development' into enhancement/remove-empty-literals 2024-04-15 11:53:42 +02:00
Elias Papanikitas
95e737873a removed migration for empty URIs 2024-04-15 11:52:42 +02:00
mirdono
48b5a82fda fix: correct type for classification to match resource configuration 2024-04-15 11:21:02 +02:00
Oscar Rodriguez Villalobos
3b6b6d6b21 Merge pull request #383 from lblod/feat/clb-consumer
Feat/clb consumer
2024-04-12 10:59:37 +02:00
Laurent Deketelaere
4691a18407 Merge pull request #411 from lblod/bump-sync-wegwijs-organization-service
Bump sync-wegwijs-organization-service to v2.0.0
2024-04-11 19:56:06 +02:00
Laurent Deketelaere
43523ec37d chore: Bump sync-wegwijs-organization-service to v2.0.0 2024-04-11 18:11:36 +02:00
mirdono
f4bd10fa46 Merge branch 'master' into development 2024-04-11 17:43:12 +02:00
mirdono
df5d249246 chore: frontend bump 2024-04-11 17:38:07 +02:00
Oscar
9e3f365ee3 fixed bug with object not present in triggering triple 2024-04-11 14:03:48 +02:00
Oscar
41f5b74b8f revert to old version 2024-04-11 14:03:48 +02:00
Oscar
188d7f0e18 Fix bugs (not tested) 2024-04-11 14:03:47 +02:00
Oscar
3052bf8315 fix bug site and primary site was not being added to the correct graph 2024-04-11 14:03:47 +02:00
Oscar
c34ff82125 changed default landing zone graph 2024-04-11 14:03:47 +02:00
Oscar
c483546709 improve readability of the code 2024-04-11 14:03:47 +02:00
Oscar
ce93e787e6 typo cleanup and update consumer 2024-04-11 14:03:47 +02:00
Oscar
c0e802d1f3 Remove unused graph bindings 2024-04-11 14:03:47 +02:00
Oscar
0b1d8f3b12 avoid code between function and documentation 2024-04-11 14:03:47 +02:00
Oscar
1bf7b59905 Delete target graph as it's not used 2024-04-11 14:03:47 +02:00
Oscar
02b0e825f1 bug fixes 2024-04-11 14:03:47 +02:00
Oscar Rodriguez Villalobos
d569d15360 bug fixes 2024-04-11 14:03:47 +02:00
Oscar Rodriguez Villalobos
64044b2ce0 Added first version of the clb consumer 2024-04-11 14:03:47 +02:00
Elias Papanikitas
c0fad917f1 leave out structured identifiers from deletion 2024-04-11 12:38:22 +02:00
Elias Papanikitas
857919804d used regex for filtering empty literals 2024-04-11 10:22:07 +02:00
mirdono
a12293e460 Merge branch 'master' into development 2024-04-10 16:22:59 +02:00
mirdono
0ad11a2289 chore: bump frontend 2024-04-10 16:18:02 +02:00
Elias Papanikitas
ea83f49a0f updated dates for change events 2024-04-10 11:04:24 +02:00
Elias Papanikitas
27f240f25c removed empty literals and uris 2024-04-09 09:49:41 +02:00
mirdono
ed28ca6983 Merge branch 'master' into development 2024-04-08 13:48:59 +02:00
mirdono
6b89b32e99 chore: bump frontend 2024-04-08 13:45:34 +02:00
mirdono
c7650d6379 Merge branch 'master' into development 2024-04-05 16:16:11 +02:00
mirdono
8e090ca872 chore: bump frontend 2024-04-05 16:03:37 +02:00
Oscar Rodriguez Villalobos
2e4c0702a6 Merge pull request #406 from lblod/feat/add-legal-and-alternative-names
Add legal and alternative names to producer
2024-04-04 15:35:30 +02:00
mirdono
53c5bd1275 feat: export legal and alternative names via producers 2024-04-04 13:31:18 +00:00
Oscar Rodriguez Villalobos
675a984cc4 alt label was already present 2024-04-04 14:54:28 +02:00
Laurent Deketelaere
dc842b7c6b Merge branch 'master' into development 2024-04-04 11:59:00 +02:00
Laurent Deketelaere
e507c31a3d Merge pull request #407 from lblod/hotfix/1.23.1-1
Update adressenregister to use basisregisters adressen V2 API
2024-04-04 11:51:39 +02:00
Laurent Deketelaere
a966e25832 fix: Update adressenregister to use basisregisters adressen V2 API 2024-04-04 11:50:08 +02:00
Oscar Rodriguez Villalobos
9367256717 Add legal and alternative names to producer 2024-04-04 10:35:14 +02:00
Laurent Deketelaere
aa6b9c803b Merge pull request #405 from lblod/fix-reset-elastic-permission
Add execute permission on `scripts/reset-elastic.sh`
2024-04-03 15:38:54 +02:00
Laurent Deketelaere
0fd50697f6 chore: Add execute permission 2024-04-03 15:35:19 +02:00
mirdono
a8607f9c1a fix: remove empty alternative names for administrative units 2024-04-03 11:57:46 +00:00
Laurent Deketelaere
e97e0d3477 Merge pull request #391 from lblod/delta-producer-organisations-add-administrative-unit
Add administrative-unit in delta-producer/organisations
2024-04-02 13:47:52 +02:00
Laurent Deketelaere
8326d02d3c feat: Add Location in delta-producer/organisations
related to OP-3128
2024-04-02 10:55:17 +02:00
Laurent Deketelaere
b9911887c2 feat: Add page in organization ContactPoint export 2024-04-02 10:55:17 +02:00
Laurent Deketelaere
8a1c6323c0 Add administrative-unit in delta-producer/organisations 2024-04-02 10:55:17 +02:00
Dachamelemon
bff78b12d6 Merge pull request #375 from lblod/feat/wegwijs-service-integration
Feat/wegwijs service integration
2024-04-02 10:22:36 +02:00
Laurent Deketelaere
ec749c81dd Merge pull request #403 from lblod/hotfix/ws-consumer-tweaks
bump + tweaked ingestion blobs to smaller amounts
2024-04-02 10:16:08 +02:00
mirdono
aa7ce23a85 chore: bumped consumers to latest version 2024-04-02 08:10:18 +00:00
mirdono
0592e10a8c chore: bump mu-search version 2024-04-02 08:08:48 +00:00
felix
c24f56c7cb bump + tweaked ingestion blobs to smaller amounts
to make it more digestable for OP (+ search)
2024-04-02 10:01:10 +02:00
Laurent Deketelaere
69fa0b5d8b chore: Bump frontend to v1.23.0 2024-04-02 09:43:35 +02:00
Laurent Deketelaere
f07c1a561b Merge pull request #402 from lblod/revert-add-recognized-worship-types
Revert "Merge pull request #397 from lblod/fix/add-recognized-worship-types"
2024-04-02 09:24:20 +02:00
Laurent Deketelaere
954f72ef7e Revert "Merge pull request #397 from lblod/fix/add-recognized-worship-types"
This reverts commit 9ed2cfa080, reversing
changes made to 37f071c065.
2024-03-29 16:00:01 +01:00
Elias Papanikitas
402f7ffce3 bumped new vervsion kbo-sync 2024-03-27 10:38:07 +01:00
Elias Papanikitas
a169184fca renamed to kboOrganization and linked to organisation 2024-03-26 17:38:42 +01:00
Elias Papanikitas
23199fc896 updated kbo data sync service version 2024-03-22 13:12:22 +01:00
Elias Papanikitas
7901485e01 updated to correct woodpecker release 2024-03-21 16:29:56 +01:00
Elias Papanikitas
b00983c580 setup for async release 2024-03-21 15:34:41 +01:00
Elias Papanikitas
0e63fcc8b0 applied changed according to merge with development 2024-03-21 11:40:02 +01:00
Elias Papanikitas
6c80037fb5 Merge branch 'development' into feat/wegwijs-service-integration 2024-03-21 10:26:11 +01:00
Elias Papanikitas
fc6f5139c4 added relationships for kbo administrative units 2024-03-13 16:18:51 +01:00
Elias Papanikitas
3f81847c94 updated the altlable for shortname/commercialname 2024-03-13 16:09:14 +01:00
Elias Papanikitas
1b2268fc6a updated configuration to handle new service name 2024-03-04 14:12:48 +01:00
Elias Papanikitas
a8274a8925 added all kbo fields to backend 2024-02-20 10:38:40 +01:00
Elias Papanikitas
cefdd9aaea fixed domain 2024-02-07 13:50:12 +01:00
Elias Papanikitas
108e29e4a1 Merge branch 'development' into feat/wegwijs-service-integration 2024-02-07 13:13:44 +01:00
Elias Papanikitas
52bb3b8d6b fixed missing } 2024-02-07 13:12:54 +01:00
Elias Papanikitas
24e9659c3d added contacts 2024-02-07 12:52:19 +01:00
Elias Papanikitas
b676c0a743 draft: adding more data to kbo-administrative-unit 2024-02-07 10:45:47 +01:00
Elias Papanikitas
764cfb6f1c added kbo-administrative-unit model 2024-02-06 11:08:40 +01:00
28 changed files with 2641 additions and 123 deletions

View File

@@ -76,7 +76,8 @@ defmodule Acl.UserGroups.Config do
"http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat",
"http://www.w3.org/ns/org#Post",
"http://www.w3.org/ns/org#ChangeEvent",
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie"
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie",
"http://mu.semte.ch/vocabularies/ext/KboOrganisatie",
]
@shared_protected_type [

View File

@@ -0,0 +1,30 @@
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 || 100);
const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
// Graphs
const LANDING_ZONE_GRAPH = process.env.DCR_LANDING_ZONE_GRAPH || `http://mu.semte.ch/graphs/landing-zone/clb-contact-data`;
// ENDPOINTS
const LANDING_ZONE_DATABASE = process.env.DCR_LANDING_ZONE_DATABASE || 'database';
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
};

View 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
};

View 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
};

View File

@@ -0,0 +1,69 @@
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,
LANDING_ZONE_GRAPH,
} = 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 - 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) {
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 },
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,
onFinishInitialIngest
};

View 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,
};

View File

@@ -0,0 +1,12 @@
[
{
"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
}
]

View File

@@ -3,7 +3,7 @@
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
"fileBaseName": "dump-organizations",
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
"targetDcatGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
"targetFilesGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
"cleanupOldDumps": true
@@ -12,7 +12,7 @@
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
"fileBaseName": "dump-organizations",
"publicationGraphEndpoint": "http://triplestore:8890/sparql",
"publicationGraphEndpoint": "http://publication-triplestore:8890/sparql",
"targetDcatGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
"targetFilesGraph": "http://redpencil.data.gift/id/deltas/producer/organizations-deltas",
"cleanupOldDumps": true

View File

@@ -1,7 +1,6 @@
{
"conceptScheme": "http://lblod.data.gift/concept-schemes/0d101f02-609d-4cde-bb07-639d874470c4",
"export": [
{
"type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"strictTypeExport": "true",
@@ -13,6 +12,7 @@
"http://mu.semte.ch/vocabularies/core/uuid",
"http://www.w3.org/2004/02/skos/core#prefLabel",
"http://www.w3.org/2004/02/skos/core#altLabel",
"http://www.w3.org/ns/regorg#legalName",
"http://www.w3.org/ns/adms#identifier",
"http://www.w3.org/ns/regorg#orgStatus",
"http://www.w3.org/ns/org#hasPrimarySite",
@@ -40,6 +40,7 @@
"http://mu.semte.ch/vocabularies/core/uuid",
"http://www.w3.org/2004/02/skos/core#prefLabel",
"http://www.w3.org/2004/02/skos/core#altLabel",
"http://www.w3.org/ns/regorg#legalName",
"http://www.w3.org/ns/adms#identifier",
"http://www.w3.org/ns/regorg#orgStatus",
"http://www.w3.org/ns/org#hasPrimarySite",
@@ -72,6 +73,7 @@
"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",
@@ -98,7 +100,11 @@
"http://www.w3.org/2004/02/skos/core#prefLabel",
"http://www.w3.org/ns/org#linkedTo",
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
"http://www.w3.org/ns/adms#identifier"
"http://www.w3.org/ns/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"
]
},
{
@@ -371,4 +377,4 @@
]
}
]
}
}

View File

@@ -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",
@@ -317,6 +356,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": [

View File

@@ -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",
@@ -105,6 +108,8 @@
"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/adms#identifier"

View File

@@ -0,0 +1,25 @@
{
"organizations": {
"deltaInterval": 10000,
"deltaPath": "/organizations/delta",
"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
}
}

View File

@@ -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,6 +124,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://www.w3.org/ns/org#hasPrimarySite",

View File

@@ -92,7 +92,7 @@ export default [
match: {
},
callback: {
url: 'http://delta-producer-pub-graph-maintainer-organizations/delta',
url: 'http://delta-producer-publication-graph-maintainer/organizations/delta',
method: 'POST'
},
options: {

View File

@@ -219,6 +219,10 @@ defmodule Dispatcher do
Proxy.forward conn, path, "http://cache/decision-activities/"
end
match "/kbo-organizations/*path", %{ accept: [:any], layer: :api} do
Proxy.forward conn, path, "http://resource/kbo-organizations/"
end
###############
# LOGIN
###############
@@ -308,8 +312,13 @@ defmodule Dispatcher do
forward conn, path, "http://construct-administrative-unit-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
# TODO: Remove when the kbo feature flag is removed on the frontend
post "/sync-ovo-number/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://sync-ovo-numbers/sync-from-kbo/"
forward conn, path, "http://kbo-data-sync/sync-kbo-data/"
end
get "/ldes/*path", %{ layer: :api_services } do
@@ -353,7 +362,7 @@ defmodule Dispatcher do
#################################################################
get "/sync/organizations/files/*path" do
Proxy.forward conn, path, "http://delta-producer-pub-graph-maintainer-organizations/files/"
Proxy.forward conn, path, "http://delta-producer-publication-graph-maintainer/files/"
end
#################################################################

View File

@@ -1,27 +0,0 @@
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX core: <http://mu.semte.ch/vocabularies/core/>
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://lblod.data.gift/concepts/cbd4c767ea184b41bf51b65d406754d4> a code:TypeEredienst ;
core:uuid "cbd4c767ea184b41bf51b65d406754d4" ;
skos:prefLabel "Niet-confessioneel" ;
skos:inScheme <http://lblod.data.gift/concept-schemes/5be1fce008d73105d9bc6de9e488b0b9> ;
skos:inScheme <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
skos:topConceptOf <http://lblod.data.gift/concept-schemes/5be1fce008d73105d9bc6de9e488b0b9> .
}
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://lblod.data.gift/concepts/f076c85e72814278814776b038ac33f7> a code:TypeEredienst ;
core:uuid "f076c85e72814278814776b038ac33f7" ;
skos:prefLabel "Boeddhistisch" ;
skos:inScheme <http://lblod.data.gift/concept-schemes/5be1fce008d73105d9bc6de9e488b0b9> ;
skos:inScheme <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> ;
skos:topConceptOf <http://lblod.data.gift/concept-schemes/5be1fce008d73105d9bc6de9e488b0b9> .
}
}

View File

@@ -1,15 +0,0 @@
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/representatieveOrganen/45a0c64b0f2ee4ac0fa8c151e6f2209c> a ere:RepresentatiefOrgaan ;
ere:typeEredienst <http://lblod.data.gift/concepts/cbd4c767ea184b41bf51b65d406754d4>
}
}
;
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/representatieveOrganen/5871503aa86b44cd470f97228a2ce413> a ere:RepresentatiefOrgaan ;
ere:typeEredienst <http://lblod.data.gift/concepts/f076c85e72814278814776b038ac33f7>
}
}

View File

@@ -0,0 +1,20 @@
DELETE {
GRAPH ?g {
?s ?p ?o .
}
}
WHERE {
VALUES ?g {
<http://mu.semte.ch/graphs/administrative-unit>
<http://mu.semte.ch/graphs/worship-service>
<http://mu.semte.ch/graphs/public>
<http://mu.semte.ch/graphs/privacy-centric-graph>
<http://mu.semte.ch/graphs/worship-privacy-centric-graph>
}
graph ?g {
?s ?p ?o
FILTER (isLiteral(?o))
FILTER regex(str(?o), "^\\s*$")
}
}

View File

@@ -0,0 +1,14 @@
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?s skos:altLabel ?alt .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?s a besluit:Bestuurseenheid ;
skos:altLabel ?alt .
FILTER (strLen(?alt) = 0)
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
PREFIX ext: <http://mu.semte.ch/vocabularies/ext/>
DELETE {
GRAPH <http://mu.semte.ch/graphs/public> {
?s a ext:RepresentatieveOrgaanClassificatieCode .
}
} INSERT {
GRAPH <http://mu.semte.ch/graphs/public> {
?s a ext:RepresentatiefOrgaanClassificatieCode .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/public> {
?s a ext:RepresentatieveOrgaanClassificatieCode .
}
}

View File

@@ -0,0 +1,3 @@
# The producer organizations graph is now in the publication-triplestore
# Lets remove it from the main triplestore
CLEAR GRAPH <http://redpencil.data.gift/id/deltas/producer/organizations>

View File

@@ -0,0 +1,35 @@
# The change events related to organisation <http://data.lblod.info/id/besturenVanDeEredienst/a8d9f1a45c11c6761306bdf680349593>
# contains some data errors:
# - There is a change event result without any corresponding change event. This
# causes an error when visiting the change events page for this organisation.
# - There are two identical change event results for the same change event. This
# causes the change event to be shown twice in the table. (Only on PROD)
#
# Note: may require restarting the cache before the changes are noticeable.
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
# Remove the dangling change event result
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
<http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/6346C0C38DE5818A7C9F40D8> ?p ?o .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
<http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/6346C0C38DE5818A7C9F40D8> ?p ?o .
}
}
# Remove one of the duplicate change event results for the change event
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/veranderingsgebeurtenissen/63C512F34E1F899807CFFB75> code:veranderingsgebeurtenisResultaat <http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/63C512F74E1F899807CFFB77> .
<http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/63C512F74E1F899807CFFB77> ?p ?o .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
<http://data.lblod.info/id/veranderingsgebeurtenissen/63C512F34E1F899807CFFB75> code:veranderingsgebeurtenisResultaat <http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/63C512F74E1F899807CFFB77> .
<http://lblod.data.info/id/veranderingsgebeurtenis-resultaten/63C512F74E1F899807CFFB77> ?p ?o .
}
}

View File

@@ -17,6 +17,7 @@ PREFIX persoon_loket: <http://data.vlaanderen.be/ns/persoon#>
PREFIX skos:<http://www.w3.org/2004/02/skos/core#>
PREFIX string: <http://www.w3.org/2000/10/swap/string#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)

View File

@@ -50,7 +50,9 @@
},
"people": {
"class": "person:Person",
"super": ["agents"],
"super": [
"agents"
],
"attributes": {
"given-name": {
"type": "string",
@@ -89,7 +91,9 @@
},
"agents-in-position": {
"class": "ch:AgentInPositie",
"super": ["agents"],
"super": [
"agents"
],
"attributes": {
"agent-start-date": {
"type": "datetime",
@@ -137,7 +141,9 @@
},
"mandatories": {
"class": "mandaat:Mandataris",
"super": ["agents-in-position"],
"super": [
"agents-in-position"
],
"attributes": {
"start-date": {
"type": "datetime",
@@ -180,12 +186,16 @@
"predicate": "skos:prefLabel"
}
},
"features": ["include-uri"],
"features": [
"include-uri"
],
"new-resource-base": "http://data.vlaanderen.be/id/concept/MandatarisStatusCode/"
},
"worship-mandatories": {
"class": "ere:EredienstMandataris",
"super": ["mandatories"],
"super": [
"mandatories"
],
"attributes": {
"expected-end-date": {
"type": "datetime",
@@ -250,7 +260,9 @@
},
"mandates": {
"class": "mandaat:Mandaat",
"super": ["posts"],
"super": [
"posts"
],
"relationships": {
"role-board": {
"predicate": "org:role",
@@ -274,7 +286,9 @@
},
"functionaries": {
"class": "lblodlg:Functionaris",
"super": ["agents-in-position"],
"super": [
"agents-in-position"
],
"attributes": {
"start-date": {
"type": "datetime",
@@ -312,12 +326,16 @@
"predicate": "skos:prefLabel"
}
},
"features": ["include-uri"],
"features": [
"include-uri"
],
"new-resource-base": "http://data.vlaanderen.be/id/concept/functionarisStatusCode/"
},
"board-positions": {
"class": "lblodlg:Bestuursfunctie",
"super": ["posts"],
"super": [
"posts"
],
"relationships": {
"role-board": {
"predicate": "org:role",
@@ -367,7 +385,9 @@
},
"organizations": {
"class": "org:Organization",
"super": ["agents"],
"super": [
"agents"
],
"attributes": {
"name": {
"type": "string",
@@ -487,13 +507,21 @@
"target": "organizations",
"cardinality": "many",
"inverse": true
},
"kbo-organization": {
"predicate": "owl:sameAs",
"target": "kbo-organizations",
"cardinality": "one",
"inverse": true
}
},
"new-resource-base": "http://data.lblod.info/id/organisaties/"
},
"administrative-units": {
"class": "besluit:Bestuurseenheid",
"super": ["organizations"],
"super": [
"organizations"
],
"relationships": {
"classification": {
"predicate": "org:classification",
@@ -541,12 +569,16 @@
},
"administrative-unit-classification-codes": {
"class": "code:BestuurseenheidClassificatieCode",
"super": ["organization-classification-codes"],
"super": [
"organization-classification-codes"
],
"new-resource-base": "http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/"
},
"worship-administrative-units": {
"class": "ere:EredienstBestuurseenheid",
"super": ["administrative-units"],
"super": [
"administrative-units"
],
"relationships": {
"recognized-worship-type": {
"predicate": "ere:typeEredienst",
@@ -569,7 +601,9 @@
},
"worship-services": {
"class": "ere:BestuurVanDeEredienst",
"super": ["worship-administrative-units"],
"super": [
"worship-administrative-units"
],
"attributes": {
"denomination": {
"type": "string",
@@ -594,12 +628,44 @@
},
"central-worship-services": {
"class": "ere:CentraalBestuurVanDeEredienst",
"super": ["worship-administrative-units"],
"super": [
"worship-administrative-units"
],
"new-resource-base": "http://data.lblod.info/id/centraleBesturenVanDeEredienst/"
},
"kbo-organizations": {
"class": "ext:KboOrganisatie",
"super": [
"organizations"
],
"attributes": {
"rechtsvorm": {
"type": "string",
"predicate": "ext:rechtsvorm"
},
"start-date": {
"type": "date",
"predicate": "ext:startDate"
},
"modified": {
"type": "date",
"predicate": "dc_terms:modified"
}
},
"relationships": {
"organization": {
"predicate": "owl:sameAs",
"target": "organizations",
"cardinality": "one"
}
},
"new-resource-base": "http://data.lblod.info/id/kboOrganisaties/"
},
"representative-bodies": {
"class": "ere:RepresentatiefOrgaan",
"super": ["organizations"],
"super": [
"organizations"
],
"relationships": {
"classification": {
"predicate": "org:classification",
@@ -622,7 +688,9 @@
},
"representative-body-classification-codes": {
"class": "ext:RepresentatiefOrgaanClassificatieCode",
"super": ["organization-classification-codes"],
"super": [
"organization-classification-codes"
],
"new-resource-base": "http://data.vlaanderen.be/id/concept/RepresentatiefOrgaanClassificatieCode/"
},
"governing-bodies": {
@@ -846,7 +914,9 @@
"predicate": "skos:prefLabel"
}
},
"features": ["include-uri"],
"features": [
"include-uri"
],
"new-resource-base": "http://lblod.data.gift/concepts/"
},
"locations": {
@@ -899,7 +969,9 @@
},
"ministers": {
"class": "ere:RolBedienaar",
"super": ["agents-in-position"],
"super": [
"agents-in-position"
],
"relationships": {
"minister-position": {
"predicate": "org:holds",
@@ -967,7 +1039,9 @@
},
"minister-positions": {
"class": "ere:PositieBedienaar",
"super": ["posts"],
"super": [
"posts"
],
"relationships": {
"function": {
"predicate": "ere:functie",
@@ -1069,4 +1143,4 @@
"new-resource-base": "http://data.relance.lblod.info/id/nace-bel/"
}
}
}
}

View File

@@ -51,9 +51,9 @@ services:
restart: "no"
uri-info:
restart: "no"
delta-producer-bg-jobs-initiator-organizations:
delta-producer-background-jobs-initiator:
restart: "no"
delta-producer-pub-graph-maintainer-organizations:
delta-producer-publication-graph-maintainer:
restart: "no"
search:
restart: "no"
@@ -92,7 +92,7 @@ services:
ldes-backend:
environment:
BASE_URL: "http://localhost/ldes/"
sync-ovo-numbers:
kbo-data-sync:
restart: "no"
# use this to test acmidm
# tlsproxy:

View File

@@ -175,13 +175,13 @@ services:
links:
- db:database
adressenregister:
image: lblod/adressenregister-fuzzy-search-service:0.7.0
image: lblod/adressenregister-fuzzy-search-service:0.8.0
labels:
- "logging=true"
restart: always
logging: *default-logging
frontend:
image: lblod/frontend-organization-portal:1.23.0-1
image: lblod/frontend-organization-portal:1.24.0-0
volumes:
- ./config/frontend/add-x-frame-options-header.conf:/config/add-x-frame-options.conf
environment:
@@ -206,10 +206,10 @@ services:
image: semtech/mu-file-service:3.2.0
volumes:
- ./data/files:/share
labels:
- "logging=true"
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
jobs-controller:
@@ -264,6 +264,8 @@ services:
END_DATE_WORSHIP_GOVERNING_BODY: "2026-03-31T00:00:00"
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
reasoner:
@@ -298,8 +300,8 @@ services:
- "logging=true"
restart: always
logging: *default-logging
sync-ovo-numbers:
image: lblod/sync-ovo-numbers-service:0.1.0
kbo-data-sync:
image: lblod/sync-wegwijs-organization-service:2.0.2
links:
- db:database
labels:
@@ -318,6 +320,8 @@ services:
volumes:
- ./data/publication-triplestore:/data
- ./config/publication-triplestore/virtuoso.ini:/data/virtuoso.ini
labels:
- "logging=true"
restart: always
logging: *default-logging
delta-producer-dump-file-publisher:
@@ -327,57 +331,39 @@ services:
- ./data/files:/share
links:
- db:database
restart: always
logging: *default-logging
################################################################################
# DELTA ORGANIZATIONS: START
################################################################################
delta-producer-bg-jobs-initiator-organizations:
image: lblod/delta-producer-background-jobs-initiator:0.3.1
environment:
JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs"
DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations"
INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations"
HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations"
CRON_PATTERN_DUMP_JOB: "42 * * * *" # At minute 42 every hour
CRON_PATTERN_HEALING_JOB: "0 0 4 * * *" # everyday at 4 AM
START_INITIAL_SYNC: "false" # prefer to disable it now. We want to have feeling with how the DB acts.
labels:
- "logging=true"
links:
- db:database
restart: always
logging: *default-logging
delta-producer-pub-graph-maintainer-organizations:
image: lblod/delta-producer-publication-graph-maintainer:0.15.4
delta-producer-background-jobs-initiator:
image: lblod/delta-producer-background-jobs-initiator:1.0.1
volumes:
- ./config/delta-producer/background-job-initiator:/config
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
delta-producer-publication-graph-maintainer:
image: lblod/delta-producer-publication-graph-maintainer:1.1.1-rc.1
environment:
MAX_BODY_SIZE: "50mb"
JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs"
RELATIVE_FILE_PATH: "deltas/organizations"
PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/organizations"
HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations"
INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations"
QUEUE_POLL_INTERVAL: 3000
USE_VIRTUOSO_FOR_EXPENSIVE_SELECTS: "true" # some queries are just too expensive
SKIP_MU_AUTH_INITIAL_SYNC: "true"
HEALING_PATCH_GRAPH_BATCH_SIZE: 500
SERVE_DELTA_FILES: "true"
PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/organizations"
DELTA_INTERVAL_MS: 10000
PRETTY_PRINT_DIFF_JSON: "true"
ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs"
PUBLICATION_VIRTUOSO_ENDPOINT: "http://publication-triplestore:8890/sparql"
PUBLICATION_MU_AUTH_ENDPOINT: "http://publication-triplestore:8890/sparql"
SUDO_QUERY_RETRY_FOR_HTTP_STATUS_CODES: "404,500,503"
CONFIG_SERVICES_JSON_PATH: '/config/publication-graph-maintainer/config.json'
volumes:
- ./config/delta-producer/organizations:/config
- ./config/delta-producer:/config
- ./data/files/:/share
links:
- db:database
- triplestore:virtuoso
labels:
- "logging=true"
restart: always
logging: *default-logging
################################################################################
# DELTA ORGANIZATIONS: END
################################################################################
################################################################################
# DELTA ORGANIZATIONS PUBLIC INFO: START
@@ -425,6 +411,8 @@ services:
- db:database
- triplestore:virtuoso
restart: always
labels:
- "logging=true"
logging: *default-logging
################################################################################
# DELTA ORGANIZATIONS PUBLIC INFO: END
@@ -474,6 +462,8 @@ services:
- db:database
- triplestore:virtuoso
restart: always
labels:
- "logging=true"
logging: *default-logging
################################################################################
# DELTA PUBLIC INFORMATION: END
@@ -523,6 +513,8 @@ services:
- db:database
- triplestore:virtuoso
restart: always
labels:
- "logging=true"
logging: *default-logging
################################################################################
# DELTA WORSHIP POSTS: END
@@ -535,7 +527,7 @@ services:
# LOKET MANDATARISSEN CONSUMERS
################################################################################
mandatarissen-consumer:
image: lblod/delta-consumer:0.0.17-rc.7
image: lblod/delta-consumer:0.0.24
environment:
DCR_SERVICE_NAME: "mandatarissen-consumer"
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # replace with link to Loket API
@@ -566,7 +558,7 @@ services:
# LOKET LEIDINGGEVENDEN CONSUMERS
################################################################################
leidinggevenden-consumer:
image: lblod/delta-consumer:0.0.18
image: lblod/delta-consumer:0.0.24
environment:
DCR_SERVICE_NAME: "leidinggevenden-consumer"
DCR_SYNC_BASE_URL: "https://loket.lblod.info" # replace with link to Loket API
@@ -597,7 +589,7 @@ services:
# LOKET WORSHIP SENSITIVE CONSUMERS
################################################################################
worship-services-sensitive-consumer:
image: lblod/delta-consumer:0.0.17-rc.7
image: lblod/delta-consumer:0.0.24
environment:
DCR_SYNC_BASE_URL: "https://loket.lblod.info/"
DCR_SERVICE_NAME: "worship-services-sensitive-consumer"
@@ -608,7 +600,8 @@ services:
DCR_DISABLE_INITIAL_SYNC: "true"
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES: "true"
DCR_SYNC_FILES_PATH: "/sync/worship-services-sensitive/files"
BATCH_SIZE: 1000
BATCH_SIZE: 50
SLEEP_BETWEEN_BATCHES: 10
DCR_KEEP_DELTA_FILES: "true"
DCR_ENABLE_DELTA_CONTEXT: "true"
DCR_LANDING_ZONE_DATABASE: "triplestore"
@@ -624,6 +617,37 @@ services:
- triplestore:virtuoso
logging: *default-logging
################################################################################
# CLB CONSUMERS
################################################################################
clb-contact-data-consumer:
image: lblod/delta-consumer:0.0.18
environment:
DCR_SYNC_BASE_URL: "https://dev.contactgegevens-loket.lblod.info/"
DCR_SERVICE_NAME: "clb-contact-data-consumer"
DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/ContactGegevensCacheGraphDump"
DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/contactData"
DCR_DELTA_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/contactDataDeltaFileSyncing"
DCR_JOB_CREATOR_URI: "http://data.lblod.info/services/id/clb-contact-data-consumer"
DCR_DISABLE_INITIAL_SYNC: "false"
BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES: "true"
DCR_SYNC_FILES_PATH: "/sync/contact-data/files"
BATCH_SIZE: 1000
DCR_KEEP_DELTA_FILES: "true"
DCR_ENABLE_DELTA_CONTEXT: "true"
DCR_LANDING_ZONE_DATABASE: "triplestore"
DCR_LANDING_ZONE_GRAPH: "http://mu.semte.ch/graphs/landing-zone/clb-contact-data"
volumes:
- ./config/clb-consumer/contact-data:/config/triples-dispatching/custom-dispatching
- ./data/files/consumer-files/clb-contact-data:/consumer-files/
restart: always
labels:
- "logging=true"
links:
- db:database
- triplestore:virtuoso
logging: *default-logging
################################################################################
# DELTA CONSUMERS: END
################################################################################
@@ -662,7 +686,7 @@ services:
# MU SEARCH
################################################################################
search:
image: semtech/mu-search:0.9.1
image: semtech/mu-search:0.10.0-beta.5
links:
- db:database
restart: always

0
scripts/reset-elastic.sh Normal file → Executable file
View File