Merge branch 'development'

This commit is contained in:
mirdono
2025-02-18 10:15:55 +01:00
77 changed files with 1613 additions and 5770 deletions

1
.gitignore vendored
View File

@@ -20,6 +20,7 @@ docker-compose.override.yml
/config/migrations/private-data/*
/config/migrations/local/*
/config/migrations-triggering-indexing/local/*
/config/proxy/nginx.htpasswd

View File

@@ -1,7 +1,50 @@
# Changelog
## Unreleased
## v1.30.0 (prerelease v1.30.0-0: 2025-02-18)
### Frontend
- Bump to version [v1.29.0](TODO: link to release)
### Backend
- Datafix: delete duplicate identifiers [OP-3157]
- Feature: replace different relations between organisations by memberships [OP-3195 (epic), OP-2606, OP-3156, OP-3198, OP-3199, OP-3258, OP-3259, OP-3260, OP-3265, OP-3293, OP-3305]
- Added `db-cleanup-service` to keep membership data backwards compatible [OP-3369]
- Datafix: delete incorrect change event [OP-3363]
- Feature: re-enable contact data editing [OP-3425]
- Remove gemeente and provincie classifications from admin unit graph [OP-3393]
- Remove several OCMW bcsd faciliteitgemeenten [OP-3535]
- Completely remove AGB Stekene's data. [OP-3409]
- Remove reasoner service, replaced by new consumer logic
### Deploy Notes
- Before pulling the changes
+ Shut down the reasoner and thank it for its good service: `drc down reasoner`
- Re-enable contact date editing:
+ remove `EMBER_ENABLE_EDIT_CONTACT_DATA_FEATURE` flag in `docker-compose.override.yml`
+ Stop and remove the `clb-contact-data-consumer` service
+ Remove the `clb-contact-data-consumer` configuration in `docker-compose.override.yml`
- Rebuild the `search` service before starting the re-indexing
- To enable the membership functionality:
+ Restart migration service
+ Restart services for which the configuration was changed: `resource`, `dispatcher` and `db`
+ Start the `db-cleanup-service`
+ Pull and restart the frontend
+ Perform a re-index using `reset-elastic.sh` script
#### Deploy commands
```
drc down clb-contact-data-consumer
drc up -d search
drc restart migrations; drc logs -ft --tail=200 migrations
drc restart migrations-triggering-indexing && drc logs -ft --tail=200 migrations-triggering-indexing
drc restart resource dispatcher db
drc up -d db-cleanup-service
drc pull frontend; drc up -d frontend
./scripts/reset-elastic.sh
```
## 1.29.2 (2025-02-17)
### Data fix
- restore bestrokken lokale besturen that have been accidentally flushed [OP-3546]
- restore betrokken lokale besturen that have been accidentally flushed [OP-3546]
## 1.29.1 (2025-02-14)
### Backend
- re-init `worship-services-sensitive-consumer` [OP-3483]

View File

@@ -79,6 +79,8 @@ defmodule Acl.UserGroups.Config do
"http://www.w3.org/ns/org#ChangeEvent",
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie",
"http://mu.semte.ch/vocabularies/ext/KboOrganisatie",
"http://www.w3.org/ns/org#Membership",
"http://www.w3.org/2006/time#ProperInterval"
]
@shared_protected_type [

View File

@@ -1,30 +0,0 @@
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

@@ -1,268 +0,0 @@
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

@@ -1,104 +0,0 @@
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

@@ -1,69 +0,0 @@
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

@@ -1,337 +0,0 @@
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,31 @@
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership ?p ?o .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
org:member ?member ;
org:organization ?organization ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> ; # has a relation with
?p ?o .
?organization org:classification ?organizationClass .
FILTER (?organizationClass IN
(
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/ea446861-2c51-45fa-afd3-4e4a37b71562> , # HVZ
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d> , # APB
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/d01bb1f6-2439-4e33-9c25-1fc295de2e71> , # Dienstverlenende vereniging
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cd93f147-3ece-4308-acab-5c5ada3ec63d> , # Opdrachthoudende vereniging
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/4b8450cf-a326-4c66-9e63-b4ec10acc7f6> , # Opdrachthoudende vereniging met private deelname
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b156b67f-c5f4-4584-9b30-4c090be02fdc> , # Projectvereniging
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/a3922c6d-425b-474f-9a02-ffb71a436bfc> , # Politiezone
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/34b5af85-dc9f-468f-9e03-ef89b174c267> , # Autonome verzorgingsinstelling
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> , # AGB
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/e8294b73-87c9-4fa2-9441-1937350763c9> # Welzijnsvereniging
)
)
}
}

View File

@@ -1,364 +1,387 @@
defmodule Dispatcher do
use Matcher
define_accept_types [
define_accept_types(
html: ["text/html", "application/xhtml+html"],
json: ["application/json", "application/vnd.api+json"],
upload: ["multipart/form-data"],
sparql_json: ["application/sparql-results+json"],
any: [ "*/*" ],
]
define_layers [ :api_services, :api, :frontend, :not_found ]
any: ["*/*"]
)
define_layers([:api_services, :api, :frontend, :not_found])
###############################################################
# domain.json
###############################################################
match "/people/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/people/"
match "/people/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/people/")
end
match "/agents-in-position/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/agents-in-position/"
match "/agents-in-position/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/agents-in-position/")
end
match "/posts/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/posts/"
match "/posts/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/posts/")
end
match "/mandatories/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/mandatories/"
match "/mandatories/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/mandatories/")
end
match "/mandatory-status-codes/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/mandatory-status-codes/"
match "/mandatory-status-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/mandatory-status-codes/")
end
match "/worship-mandatories/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/worship-mandatories/"
match "/worship-mandatories/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/worship-mandatories/")
end
match "/half-elections/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/half-elections/"
match "/half-elections/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/half-elections/")
end
match "/contact-points/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/contact-points/"
match "/contact-points/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/contact-points/")
end
match "/mandates/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/mandates/"
match "/mandates/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/mandates/")
end
match "/board-positions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/board-positions/"
match "/board-positions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/board-positions/")
end
match "/board-position-codes/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/board-position-codes/"
match "/board-position-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/board-position-codes/")
end
match "/functionaries/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/functionaries/"
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
Proxy.forward conn, path, "http://cache/agent-status-codes/"
match "/agent-status-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/agent-status-codes/")
end
match "/roles/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/roles/"
match "/roles/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/roles/")
end
match "/organizations/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/organizations/"
match "/organizations/*path", %{accept: [:json], layer: :api} 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/"
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://cache/administrative-units/"
match "/administrative-units/*path", %{accept: [:json], layer: :api} do
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/"
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/"
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/"
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://cache/worship-administrative-units/"
match "/worship-administrative-units/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/worship-administrative-units/")
end
match "/worship-services/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/worship-services/"
match "/worship-services/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/worship-services/")
end
match "/recognized-worship-types/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/recognized-worship-types/"
match "/recognized-worship-types/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/recognized-worship-types/")
end
match "/central-worship-services/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/central-worship-services/"
match "/central-worship-services/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/central-worship-services/")
end
match "/representative-bodies/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/representative-bodies/"
match "/representative-bodies/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/representative-bodies/")
end
match "/governing-bodies/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/governing-bodies/"
match "/governing-bodies/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/governing-bodies/")
end
match "/governing-body-classification-codes/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/governing-body-classification-codes/"
match "/governing-body-classification-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/governing-body-classification-codes/")
end
match "/local-involvements/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/local-involvements/"
match "/local-involvements/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/local-involvements/")
end
match "/identifiers/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/identifiers/"
match "/identifiers/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/identifiers/")
end
match "/structured-identifiers/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/structured-identifiers/"
match "/structured-identifiers/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/structured-identifiers/")
end
match "/addresses/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/addresses/"
match "/addresses/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/addresses/")
end
match "/sites/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/sites/"
match "/sites/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/sites/")
end
match "/change-events/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/change-events/"
match "/change-events/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/change-events/")
end
match "/change-event-types/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/change-event-types/"
match "/change-event-types/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/change-event-types/")
end
match "/change-event-results/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/change-event-results/"
match "/change-event-results/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/change-event-results/")
end
match "/organization-status-codes/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/organization-status-codes/"
match "/organization-status-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/organization-status-codes/")
end
match "/locations/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/locations/"
match "/locations/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/locations/")
end
match "/involvement-types/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/involvement-types/"
match "/involvement-types/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/involvement-types/")
end
match "/ministers/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/ministers/"
match "/ministers/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/ministers/")
end
match "/minister-conditions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/minister-conditions/"
match "/minister-conditions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/minister-conditions/")
end
match "/dates-of-birth/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/dates-of-birth/"
match "/dates-of-birth/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/dates-of-birth/")
end
match "/nationalities/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/nationalities/"
match "/nationalities/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/nationalities/")
end
match "/gender-codes/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/gender-codes/"
end
match "/concepts/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/concepts/"
match "/gender-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/gender-codes/")
end
match "/minister-positions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/minister-positions/"
match "/concepts/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/concepts/")
end
match "/minister-position-functions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/minister-position-functions/"
match "/minister-positions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/minister-positions/")
end
match "/financing-codes/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/financing-codes/"
match "/minister-position-functions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/minister-position-functions/")
end
match "/minister-condition-criterions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/minister-condition-criterions/"
match "/financing-codes/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/financing-codes/")
end
match "/document-types-criterions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/document-types-criterions/"
match "/minister-condition-criterions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/minister-condition-criterions/")
end
match "/site-types/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/site-types/"
match "/document-types-criterions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/document-types-criterions/")
end
match "/request-reasons/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/request-reasons/"
match "/site-types/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/site-types/")
end
match "/decisions/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/decisions/"
match "/request-reasons/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/request-reasons/")
end
match "/decision-activities/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://cache/decision-activities/"
match "/decisions/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/decisions/")
end
match "/decision-activities/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/decision-activities/")
end
match "/memberships/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/memberships/")
end
match "/membership-roles/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://cache/membership-roles/")
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/"
match "/kbo-organizations/*path", %{accept: [:any], layer: :api} do
Proxy.forward(conn, path, "http://resource/kbo-organizations/")
end
###############
# LOGIN
###############
match "/accounts", %{ accept: [:json], layer: :api} do
Proxy.forward conn, [], "http://resource/accounts/"
end
match "/accounts/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://accountdetail/accounts/"
end
match "/active-role/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://roles/"
end
match "/groups/*path", %{ accept: [:json], layer: :api} do
Proxy.forward conn, path, "http://resource/groups/"
match "/accounts", %{accept: [:json], layer: :api} do
Proxy.forward(conn, [], "http://resource/accounts/")
end
match "/mock/sessions/*path", %{ accept: [:any], layer: :api} do
Proxy.forward conn, path, "http://mocklogin/sessions/"
match "/accounts/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://accountdetail/accounts/")
end
match "/sessions/*path", %{ accept: [:any], layer: :api} do
Proxy.forward conn, path, "http://login/sessions/"
match "/active-role/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://roles/")
end
match "/groups/*path", %{accept: [:json], layer: :api} do
Proxy.forward(conn, path, "http://resource/groups/")
end
match "/mock/sessions/*path", %{accept: [:any], layer: :api} do
Proxy.forward(conn, path, "http://mocklogin/sessions/")
end
match "/sessions/*path", %{accept: [:any], layer: :api} do
Proxy.forward(conn, path, "http://login/sessions/")
end
###############################################################
# SEARCH
###############################################################
match "/search/*path", %{ accept: %{ json: true }, layer: :api_services} do
Proxy.forward conn, path, "http://search/"
match "/search/*path", %{accept: %{json: true}, layer: :api_services} do
Proxy.forward(conn, path, "http://search/")
end
###############
# API SERVICES
###############
match "/v3/api-docs/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://kalliope-api/v3/api-docs/"
match "/v3/api-docs/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://kalliope-api/v3/api-docs/")
end
match "/consolidated/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://kalliope-api/consolidated/"
match "/consolidated/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://kalliope-api/consolidated/")
end
match "/adresses-register/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://adressenregister/"
match "/adresses-register/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://adressenregister/")
end
match "/worship/person-information-updates/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-worship/person-information-updates"
match "/worship/person-information-updates/*path", %{
layer: :api_services,
accept: %{json: true}
} do
forward(conn, path, "http://privacy-worship/person-information-updates")
end
match "/worship/person-information-requests/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-worship/person-information-requests"
match "/worship/person-information-requests/*path", %{
layer: :api_services,
accept: %{json: true}
} do
forward(conn, path, "http://privacy-worship/person-information-requests")
end
match "/worship/person-information-ask/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-worship/person-information-ask/"
match "/worship/person-information-ask/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://privacy-worship/person-information-ask/")
end
match "/worship/person-information-validate-ssn/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-worship/person-information-validate-ssn/"
match "/worship/person-information-validate-ssn/*path", %{
layer: :api_services,
accept: %{json: true}
} do
forward(conn, path, "http://privacy-worship/person-information-validate-ssn/")
end
match "/person-information-updates/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-unit/person-information-updates"
match "/person-information-updates/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://privacy-unit/person-information-updates")
end
match "/person-information-requests/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-unit/person-information-requests"
match "/person-information-requests/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://privacy-unit/person-information-requests")
end
match "/person-information-ask/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-unit/person-information-ask/"
match "/person-information-ask/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://privacy-unit/person-information-ask/")
end
match "/person-information-validate-ssn/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://privacy-unit/person-information-validate-ssn/"
match "/person-information-validate-ssn/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://privacy-unit/person-information-validate-ssn/")
end
get "/uri-info/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://uri-info/"
get "/uri-info/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://uri-info/")
end
post "/construct-organization-relationships/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://construct-organization-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/"
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/"
get "/ldes/*path", %{layer: :api_services} do
forward(conn, path, "http://ldes-backend/")
end
#################################################################
# ERROR REPORT
#################################################################
match "/error-reports/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://error-report-service/error-reports/"
match "/error-reports/*path", %{layer: :api_services, accept: %{json: true}} do
forward(conn, path, "http://error-report-service/error-reports/")
end
#################################################################
# FILES
#################################################################
get "/files/:id/download", %{ accept: [:any], } do
Proxy.forward conn, [], "http://file/files/" <> id <> "/download"
get "/files/:id/download", %{accept: [:any]} do
Proxy.forward(conn, [], "http://file/files/" <> id <> "/download")
end
get "/files/*path" , %{ layer: :api_services, accept: %{ json: true } } do
Proxy.forward conn, path, "http://resource/files/"
get "/files/*path", %{layer: :api_services, accept: %{json: true}} do
Proxy.forward(conn, path, "http://resource/files/")
end
#################################################################
# DCAT
#################################################################
get "/datasets/*path", %{ layer: :api_services, accept: %{ json: true } } do
Proxy.forward conn, path, "http://resource/datasets/"
get "/datasets/*path", %{layer: :api_services, accept: %{json: true}} do
Proxy.forward(conn, path, "http://resource/datasets/")
end
get "/distributions/*path", %{ layer: :api_services, accept: %{ json: true } } do
Proxy.forward conn, path, "http://resource/distributions/"
get "/distributions/*path", %{layer: :api_services, accept: %{json: true}} do
Proxy.forward(conn, path, "http://resource/distributions/")
end
#################################################################
@@ -398,44 +421,42 @@ defmodule Dispatcher do
#################################################################
get "/download-exports/*path" do
Proxy.forward conn, path, "http://download-exports/"
Proxy.forward(conn, path, "http://download-exports/")
end
###############################################################
# frontend layer
###############################################################
match "/assets/*path", %{ layer: :api } do
Proxy.forward conn, path, "http://frontend/assets/"
match "/assets/*path", %{layer: :api} do
Proxy.forward(conn, path, "http://frontend/assets/")
end
match "/@appuniversum/*path", %{ layer: :api } do
Proxy.forward conn, path, "http://frontend/@appuniversum/"
match "/@appuniversum/*path", %{layer: :api} do
Proxy.forward(conn, path, "http://frontend/@appuniversum/")
end
match "/*path", %{ accept: [:html], layer: :api } do
Proxy.forward conn, [], "http://frontend/index.html"
match "/*path", %{accept: [:html], layer: :api} do
Proxy.forward(conn, [], "http://frontend/index.html")
end
match "/*_path", %{ layer: :frontend } do
Proxy.forward conn, [], "http://frontend/index.html"
match "/*_path", %{layer: :frontend} do
Proxy.forward(conn, [], "http://frontend/index.html")
end
###############################################################
# sparql endpoint
###############################################################
post "/sparql/*path", %{ layer: :api_services, accept: %{ sparql_json: true } } do
forward conn, path, "http://db:8890/sparql/"
post "/sparql/*path", %{layer: :api_services, accept: %{sparql_json: true}} do
forward(conn, path, "http://db:8890/sparql/")
end
###############################################################
# errors
###############################################################
match "/*_path", %{ accept: [:any], layer: :not_found} do
send_resp( conn, 404, "{\"error\": {\"code\": 404}")
match "/*_path", %{accept: [:any], layer: :not_found} do
send_resp(conn, 404, "{\"error\": {\"code\": 404}")
end
end

View File

@@ -0,0 +1,15 @@
DELETE {
GRAPH ?g {
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> <http://www.w3.org/ns/regorg#orgStatus> ?orgStatus .
}
}
INSERT {
GRAPH ?g {
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> <http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> .
}
}
WHERE {
GRAPH ?g {
<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> <http://www.w3.org/ns/regorg#orgStatus> ?orgStatus .
}
}

View File

@@ -0,0 +1,196 @@
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?bestuursorganen ?bestuursorganenP ?bestuursorganenO .
}
}
WHERE {
VALUES ?bestuursorganen {
<http://data.lblod.info/id/bestuursorganen/24d8e602a8ddbe0adf3dea8c40277706>
<http://data.lblod.info/id/bestuursorganen/dad1789d9b9f8f6cb3c81cc2ca88154f>
<http://data.lblod.info/id/bestuursorganen/b90d16f2c8043bc20b88da232c0389fc>
<http://data.lblod.info/id/bestuursorganen/2f27a688e1728c1906a4bbd8670d7810>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?bestuursorganen ?bestuursorganenP ?bestuursorganenO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?bestuursorganenInTijd ?bestuursorganenInTijdP ?bestuursorganenInTijdO .
}
}
WHERE {
VALUES ?bestuursorganenInTijd {
<http://data.lblod.info/id/bestuursorganen/c5bb7bca7363109b94b58b1aef6ed59c>
<http://data.lblod.info/id/bestuursorganen/8d43a29c6ed4a8af0cd43d4aba2c7014>
<http://data.lblod.info/id/bestuursorganen/f54979f47464bae1cc001788aedb8b86>
<http://data.lblod.info/id/bestuursorganen/c9a7d9130e1dd8f26ddb8c96fdd94c64>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?bestuursorganenInTijd ?bestuursorganenInTijdP ?bestuursorganenInTijdO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?identifier ?identifierP ?identifierO .
}
}
WHERE {
VALUES ?identifier {
<http://data.lblod.info/id/identificatoren/99554be7-29d2-403a-a7d5-bda842b4bd86>
<http://data.lblod.info/id/identificatoren/19847e1b-a2bf-48a1-872e-baf8d4efaa12>
<http://data.lblod.info/id/identificatoren/b2123d27-b6bc-4e70-b594-27d35c696713>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?identifier ?identifierP ?identifierO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?structuredIdentifier ?structuredIdentifierP ?structuredIdentifierO .
}
}
WHERE {
VALUES ?structuredIdentifier {
<http://data.lblod.info/id/gestructureerdeIdentificatoren/920f98a2-1785-4de1-81ed-5859c224dcb8>
<http://data.lblod.info/id/gestructureerdeIdentificatoren/5e1082d8-7751-4bed-a53f-457b347f7f28>
<http://data.lblod.info/id/gestructureerdeIdentificatoren/2e978403-d3ef-40ab-a9f9-3a4ae6a35609>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?structuredIdentifier ?structuredIdentifierP ?structuredIdentifierO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?site ?siteP ?siteO .
}
}
WHERE {
VALUES ?site {
<http://data.lblod.info/id/vestigingen/daa79855-1de7-4479-8a2e-a8d89db55ee3>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?site ?siteP ?siteO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?address ?addressP ?addressO .
}
}
WHERE {
VALUES ?address {
<http://data.lblod.info/id/adressen/df102cb4-8abb-4588-a199-1ce22c211812>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?address ?addressP ?addressO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?contactPoint ?contactPointP ?contactPointO .
}
}
WHERE {
VALUES ?contactPoint {
<http://data.lblod.info/id/contact-punten/042e8816-2e9d-45a1-89f6-dcf805882af7>
<http://data.lblod.info/id/contact-punten/364d8e1a-cb18-4970-aeaf-5f6f307370ad>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?contactPoint ?contactPointP ?contactPointO .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?parentOrganization <http://www.w3.org/ns/org#hasSubOrganization> ?organization .
}
}
WHERE {
BIND(<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> AS ?organization)
BIND(<http://data.lblod.info/id/bestuurseenheden/6025a5d1ca2262a784f002edd8ce9ca9073ae3d5ebc6b6b5531f05a29e9250af> AS ?parentOrganization)
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?parentOrganization <http://www.w3.org/ns/org#hasSubOrganization> ?organization .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?parentOrganization <http://mu.semte.ch/vocabularies/ext/isFounderOfOrganization> ?organization .
}
}
WHERE {
BIND(<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> AS ?organization)
BIND(<http://data.lblod.info/id/bestuurseenheden/6025a5d1ca2262a784f002edd8ce9ca9073ae3d5ebc6b6b5531f05a29e9250af> AS ?parentOrganization)
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?parentOrganization <http://mu.semte.ch/vocabularies/ext/isFounderOfOrganization> ?organization .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership ?p ?o.
}
}
WHERE {
BIND(<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> AS ?organization)
VALUES ?membershipP {
<http://www.w3.org/ns/org#organization>
<http://www.w3.org/ns/org#member>
}
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a <http://www.w3.org/ns/org#Membership> ;
?membershipP ?organization ;
?p ?o .
}
}
;
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?organization ?organizationP ?organizationO .
}
}
WHERE {
BIND(<http://data.lblod.info/id/bestuurseenheden/8d6609b4-1a20-46b8-97ed-150c6d53acd6> AS ?organization)
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?organization ?organizationP ?organizationO .
}
}

View File

@@ -0,0 +1,3 @@
# Motivation
This folder is designed to contain migration files specific to a specific deployed instance of the app. These files will be ignored by git. The typical use case for this folder includes migrations containing sensitive data or those related to a re-sync of consumers. Migrations that should be applied to all instances of the app should be stored outside of this folder, but within the 'migrations-triggering-indexing' folder.

View File

@@ -0,0 +1,31 @@
@prefix org: <http://www.w3.org/ns/org#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
<https://data.vlaanderen.be/id/conceptscheme/lidmaatschap-rollen> a skos:ConceptScheme;
mu:uuid "4755a6afc9044ff289d872092e202472";
skos:prefLabel "lidmaatschap rollen".
<http://data.lblod.info/id/rollen/93c48754610c45e6bd9a894d2720a53d> a org:Role;
mu:uuid "93c48754610c45e6bd9a894d2720a53d";
skos:topConceptOf <https://data.vlaanderen.be/id/conceptscheme/lidmaatschap-rollen>;
skos:prefLabel "lid".
<http://data.lblod.info/id/rollen/73d5e1cf250d42fab15926771f07505a> a org:Role;
mu:uuid "73d5e1cf250d42fab15926771f07505a";
skos:prefLabel "stichtend lid";
skos:broader <http://data.lblod.info/id/rollen/93c48754610c45e6bd9a894d2720a53d>.
<http://data.lblod.info/id/rollen/2152eb830b1143bfb97a7dd9596d6c63> a org:Role;
mu:uuid "2152eb830b1143bfb97a7dd9596d6c63";
skos:prefLabel "participant";
skos:broader <http://data.lblod.info/id/rollen/93c48754610c45e6bd9a894d2720a53d>.
<http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> a org:Role;
mu:uuid "4ec7d5c39bdc4e84b4174379b9e22ad8";
skos:prefLabel "gerelateerd";
skos:broader <http://data.lblod.info/id/rollen/93c48754610c45e6bd9a894d2720a53d>.

View File

@@ -0,0 +1,35 @@
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 ext: <http://mu.semte.ch/vocabularies/ext/>
DELETE {
GRAPH ?g {
?foundingOrg ext:isFounderOfOrganization ?foundedOrg .
}
}
INSERT {
GRAPH ?g {
?foundingOrg org:memberOf ?foundedOrg .
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?foundedOrg ;
org:member ?foundingOrg ;
org:role <http://data.lblod.info/id/rollen/73d5e1cf250d42fab15926771f07505a> . # stichtend lid
}
}
WHERE {
VALUES ?g {
<http://mu.semte.ch/graphs/worship-service>
<http://mu.semte.ch/graphs/administrative-unit>
<http://mu.semte.ch/graphs/shared>
}
GRAPH ?g {
?foundingOrg ext:isFounderOfOrganization ?foundedOrg .
}
BIND(SHA1(CONCAT(STR(?foundingOrg), STR(?foundedOrg), "founded by")) as ?uuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}

View File

@@ -0,0 +1,32 @@
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/>
DELETE {
GRAPH ?g {
?memberOrganization org:memberOf ?organization .
}
}
INSERT {
GRAPH ?g {
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?organization ;
org:member ?memberOrganization ;
org:role <http://data.lblod.info/id/rollen/2152eb830b1143bfb97a7dd9596d6c63> . # participant
}
}
WHERE {
VALUES ?g {
<http://mu.semte.ch/graphs/worship-service>
<http://mu.semte.ch/graphs/administrative-unit>
<http://mu.semte.ch/graphs/shared>
}
GRAPH ?g {
?memberOrganization org:memberOf ?organization .
}
BIND(SHA1(CONCAT(STR(?memberOrganization), STR(?organization), "member of")) as ?uuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}

View File

@@ -0,0 +1,26 @@
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/>
INSERT {
GRAPH ?g {
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?organization ;
org:member ?subOrganization ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # gerelateerd
}
} WHERE {
VALUES ?g {
<http://mu.semte.ch/graphs/worship-service>
<http://mu.semte.ch/graphs/administrative-unit>
<http://mu.semte.ch/graphs/shared>
}
GRAPH ?g {
?organization org:hasSubOrganization ?subOrganization.
}
BIND(SHA1(CONCAT(STR(?organization), STR(?subOrganization), "sub organization")) as ?uuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}

View File

@@ -0,0 +1,27 @@
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 ext: <http://mu.semte.ch/vocabularies/ext/>
INSERT {
GRAPH ?g {
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?linkedOrg ;
org:member ?org ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # gerelateerd
}
} WHERE {
VALUES ?g {
<http://mu.semte.ch/graphs/worship-service>
<http://mu.semte.ch/graphs/administrative-unit>
<http://mu.semte.ch/graphs/shared>
}
GRAPH ?g {
?org org:linkedTo ?linkedOrg .
}
BIND(SHA1(CONCAT(STR(?org), STR(?linkedOrg), "associated with")) as ?uuid)
BIND(IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}

View File

@@ -0,0 +1,13 @@
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
DELETE DATA {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
skos:inScheme <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> ;
skos:topConceptOf <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> .
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
skos:inScheme <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> ;
skos:topConceptOf <https://data.vlaanderen.be/id/conceptscheme/BestuurseenheidClassificatieCode> .
}
}

View File

@@ -0,0 +1,39 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Insert triples of the form:
# <Representative Body> <http://www.w3.org/ns/org#linkedTo> <Worship Service>
# <Representative Body> <http://www.w3.org/ns/org#linkedTo> <Central Worship Service>
# matching memberships for which no such triple exists.
# Worship Service: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86>
# Central Worship Service: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054>
<http://data.lblod.info/id/cleanup-job/f0f7a304-34e9-4986-bf27-8434bb6f8111> a cleanup:Job ;
mu:uuid "f0f7a304-34e9-4986-bf27-8434bb6f8111" ;
dcterms:title "Insert missing `org:linkedTo` triples for Representative Bodies and [Central] Worship Services." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?member org:linkedTo ?organization .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?membership a org:Membership ;
org:organization ?organization ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
?member org:classification <http://data.vlaanderen.be/id/concept/RepresentatiefOrgaanClassificatieCode/89a00b5a-024f-4630-a722-65a5e68967e5> .
?organization org:classification ?orgClass .
FILTER ( ?orgClass IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054>
))
FILTER NOT EXISTS { ?member org:linkedTo ?organization . }
}
}
""" .

View File

@@ -0,0 +1,35 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Insert triples of the form:
# <Central Worship Service> <http://www.w3.org/ns/org#hasSubOrganization> <Worship Service>
# matching memberships for which no such triple exists.
# Central Worship Service: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054>
# Worship Service: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86>
<http://data.lblod.info/id/cleanup-job/1352f2c5-0207-435b-9737-26d29769cde6> a cleanup:Job ;
mu:uuid "1352f2c5-0207-435b-9737-26d29769cde6" ;
dcterms:title "Insert missing `org:hasSubOrganization` triples for Central Worship Services and Worship Services." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?organization org:hasSubOrganization ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?membership a org:Membership ;
org:organization ?organization ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
?organization org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054> .
?member org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86> .
FILTER NOT EXISTS { ?organization org:hasSubOrganization ?member . }
}
}
""" .

View File

@@ -0,0 +1,52 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Insert triples of the form
# <Province> <http://www.w3.org/ns/org#hasSubOrganization> <subOrg>
# matching memberships for which no such triple exists.
# Province: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000>
#
# Municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>
# OCMW: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>
# AGB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
# APB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
# PEVA municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e>
# PEVA province: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/088784b6-e188-48bf-b94f-94665f9e1f53>
<http://data.lblod.info/id/cleanup-job/434b8b52-b695-4358-a927-ddaceb22e7e3> a cleanup:Job ;
mu:uuid "434b8b52-b695-4358-a927-ddaceb22e7e3" ;
dcterms:title "Insert missing `org:hasSubOrganization` triples for Provinces." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?organization org:hasSubOrganization ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
org:organization ?organization ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
FILTER NOT EXISTS { ?organization org:hasSubOrganization ?member . }
}
?organization org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
?member org:classification ?memberClass .
FILTER ( ?memberClass
IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/088784b6-e188-48bf-b94f-94665f9e1f53>
)
)
}
""" .

View File

@@ -0,0 +1,57 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Insert triples of the form
# <Municipality> <http://www.w3.org/ns/org#hasSubOrganization> <subOrg>
# matching memberships for which no such triple exists.
# Municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>
#
# AGB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
# Projectvereniging: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b156b67f-c5f4-4584-9b30-4c090be02fdc>
# Dientsverlenende vereniging <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/d01bb1f6-2439-4e33-9c25-1fc295de2e71>
# Opdrachthoudende vereniging: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cd93f147-3ece-4308-acab-5c5ada3ec63d>
# Opdrachthoudende vereniging met private deelname: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/4b8450cf-a326-4c66-9e63-b4ec10acc7f6>
# HVZ: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/ea446861-2c51-45fa-afd3-4e4a37b71562>
# PZ: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/a3922c6d-425b-474f-9a02-ffb71a436bfc>
# PEVA municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e>
<http://data.lblod.info/id/cleanup-job/3b7f8739-aa56-4a6c-af56-eb9d80022379> a cleanup:Job ;
mu:uuid "3b7f8739-aa56-4a6c-af56-eb9d80022379" ;
dcterms:title "Insert missing `org:hasSubOrganization` triples for Municipalities." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?organization org:hasSubOrganization ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
org:organization ?organization ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
FILTER NOT EXISTS { ?organization org:hasSubOrganization ?member . }
?member org:classification ?memberClass .
FILTER ( ?memberClass
IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b156b67f-c5f4-4584-9b30-4c090be02fdc> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/d01bb1f6-2439-4e33-9c25-1fc295de2e71> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cd93f147-3ece-4308-acab-5c5ada3ec63d> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/4b8450cf-a326-4c66-9e63-b4ec10acc7f6> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/ea446861-2c51-45fa-afd3-4e4a37b71562> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/a3922c6d-425b-474f-9a02-ffb71a436bfc> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e>
)
)
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?organization org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
}
}
""" .

View File

@@ -0,0 +1,45 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Insert triples of the form:
# <Municipality> <http://www.w3.org/ns/org#linkedTo> <subOrg>
# matching memberships for which no such triple exists.
# Municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>
#
# OCMW: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>
# APB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
<http://data.lblod.info/id/cleanup-job/a99bcd5c-9781-425d-8a34-fb11a6e3e262> a cleanup:Job ;
mu:uuid "a99bcd5c-9781-425d-8a34-fb11a6e3e262" ;
dcterms:title "Insert missing `org:linkedTo` triples for Municipalities." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?organization org:linkedTo ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
org:organization ?organization ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
FILTER NOT EXISTS { ?organization org:linkedTo ?member . }
?member org:classification ?memberClass .
FILTER ( ?memberClass
IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
)
)
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?organization org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
}
}
""" .

View File

@@ -0,0 +1,42 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Delete triples of the form:
# <Representative Body> <http://www.w3.org/ns/org#linkedTo> <Worship Service>
# <Representative Body> <http://www.w3.org/ns/org#linkedTo> <Central Worship Service>
# for which no matching membership exists.
# Worship Service: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86>
# Central Worship Service: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054>
<http://data.lblod.info/id/cleanup-job/679eec55-0f69-4d45-84c1-9f73df966983> a cleanup:Job ;
mu:uuid "679eec55-0f69-4d45-84c1-9f73df966983" ;
dcterms:title "Delete leftover `org:linkedTo` triples for Representative Bodies and [Central] Worship Services." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s org:linkedTo ?o .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s org:linkedTo ?o .
FILTER NOT EXISTS {
?membership a org:Membership ;
org:organization ?o ;
org:member ?s ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
?s org:classification <http://data.vlaanderen.be/id/concept/RepresentatiefOrgaanClassificatieCode/89a00b5a-024f-4630-a722-65a5e68967e5> .
?o org:classification ?oClass .
FILTER ( ?oClass IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054>
))
}
}
""" .

View File

@@ -0,0 +1,36 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Delete triples of the form
# <Central Worship Service> <http://www.w3.org/ns/org#hasSubOrganization> <Worship Service>
# for which no matching membership exists.
# Central Worship Service <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054>
# Worship Service <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86>
<http://data.lblod.info/id/cleanup-job/50cee254-37e4-410e-936a-d974047bdd4b> a cleanup:Job ;
mu:uuid "50cee254-37e4-410e-936a-d974047bdd4b" ;
dcterms:title "Delete leftover `org:hasSubOrganization` triples for Central Worship Services and Worship Services." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?cws org:hasSubOrganization ?ws .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?cws org:hasSubOrganization ?ws .
FILTER NOT EXISTS {
?membership a org:Membership ;
org:organization ?cws ;
org:member ?ws ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
?cws org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/f9cac08a-13c1-49da-9bcb-f650b0604054> .
?ws org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/66ec74fd-8cfc-4e16-99c6-350b35012e86> .
}
}
""" .

View File

@@ -0,0 +1,47 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Delete triples of the form:
# <Municipality> <http://www.w3.org/ns/org#linkedTo> <subOrg>
# for which no matching membership exists.
# Municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>
#
# OCMW: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>
# APB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
<http://data.lblod.info/id/cleanup-job/14cfd05c-7047-43a1-97e4-42d3dd6b048d> a cleanup:Job ;
mu:uuid "14cfd05c-7047-43a1-97e4-42d3dd6b048d" ;
dcterms:title "Delete leftover `org:linkedTo` triples for Municipalities." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?municipality org:linkedTo ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?municipality org:linkedTo ?member .
FILTER NOT EXISTS {
?membership a org:Membership ;
org:organization ?municipality ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
?member org:classification ?memberClass .
FILTER ( ?memberClass
IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
)
)
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?municipality org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
}
}
""" .

View File

@@ -0,0 +1,58 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Delete triples of the form
# <Municipality> <http://www.w3.org/ns/org#hasSubOrganization> <subOrg>
# for which no matching membership exists.
# Municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>
#
# AGB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
# Projectvereniging: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b156b67f-c5f4-4584-9b30-4c090be02fdc>
# Dientsverlenende vereniging <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/d01bb1f6-2439-4e33-9c25-1fc295de2e71>
# Opdrachthoudende vereniging: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cd93f147-3ece-4308-acab-5c5ada3ec63d>
# Opdrachthoudende vereniging met private deelname: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/4b8450cf-a326-4c66-9e63-b4ec10acc7f6>
# HVZ: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/ea446861-2c51-45fa-afd3-4e4a37b71562>
# PZ: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/a3922c6d-425b-474f-9a02-ffb71a436bfc>
# PEVA municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e>
<http://data.lblod.info/id/cleanup-job/141a5f1c-39d5-431a-99e2-9085252654a3> a cleanup:Job ;
mu:uuid "141a5f1c-39d5-431a-99e2-9085252654a3" ;
dcterms:title "Delete leftover `org:hasSubOrganization` triples for Municipalities." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?municipality org:hasSubOrganization ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?municipality org:hasSubOrganization ?member .
FILTER NOT EXISTS {
?membership a org:Membership ;
org:organization ?municipality ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
?member org:classification ?memberClass .
FILTER ( ?memberClass
IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b156b67f-c5f4-4584-9b30-4c090be02fdc> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/d01bb1f6-2439-4e33-9c25-1fc295de2e71> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cd93f147-3ece-4308-acab-5c5ada3ec63d> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/4b8450cf-a326-4c66-9e63-b4ec10acc7f6> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/ea446861-2c51-45fa-afd3-4e4a37b71562> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/a3922c6d-425b-474f-9a02-ffb71a436bfc> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e>
)
)
}
GRAPH <http://mu.semte.ch/graphs/shared> {
?municipality org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
}
}
""" .

View File

@@ -0,0 +1,54 @@
@prefix cleanup: <http://mu.semte.ch/vocabularies/ext/cleanup/> .
@prefix mu: <http://mu.semte.ch/vocabularies/core/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
# Delete triples of the form
# <Province> <http://www.w3.org/ns/org#hasSubOrganization> <subOrg>
# for which no matching membership exists.
# Province: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000>
#
# Municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001>
# OCMW: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>
# AGB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721>
# APB: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d>
# PEVA municipality: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e>
# PEVA province: <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/088784b6-e188-48bf-b94f-94665f9e1f53>
<http://data.lblod.info/id/cleanup-job/7b2f66c8-1433-47f4-b730-62316f288631> a cleanup:Job ;
mu:uuid "7b2f66c8-1433-47f4-b730-62316f288631" ;
dcterms:title "Delete leftover `org:hasSubOrganization` triples for Provinces." ;
cleanup:randomQuery """
PREFIX org: <http://www.w3.org/ns/org#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?province org:hasSubOrganization ?member .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?province org:hasSubOrganization ?member .
FILTER NOT EXISTS {
?membership a org:Membership ;
org:organization ?province ;
org:member ?member ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> .
}
}
?member org:classification ?memberClass .
FILTER ( ?memberClass
IN (
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/2ad46df5-5c79-4d67-84d5-604c1377231e> ,
<http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/088784b6-e188-48bf-b94f-94665f9e1f53>
)
)
GRAPH <http://mu.semte.ch/graphs/shared> {
?province org:classification <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
}
}
""" .

View File

@@ -0,0 +1,37 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
# Add the "has a relation with" membership between provinces and municipalities
# for the new municipalities that were added for the 2025 mergers.
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?province ;
org:member ?municipality ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?province org:hasSubOrganization ?municipality .
FILTER (?province IN
(
<http://data.lblod.info/id/bestuurseenheden/298b13541e1e85de4b71535197aa1f3bbc4bdb67f0fe0f58ab4a7dc207af61fa> , # Oost-Vlaanderen
<http://data.lblod.info/id/bestuurseenheden/8b7e7bf05ace5bb1a68f5bc0d870e20c20f147b00bd9a3dcce3a01733d4da744> , # Vlaams-Brabant
<http://data.lblod.info/id/bestuurseenheden/14278813524c762255aeba149e7d7134ddecfbb43e7d56910731bd4e13e34f39> , # Limburg
<http://data.lblod.info/id/bestuurseenheden/bd74ee38a4b1e296821a11729c1f704cf439576c7ab2c910c95b067cf183d923> , # Antwerpen
<http://data.lblod.info/id/bestuurseenheden/8152e68420f560b8493d6c555a5bd4186903dc341028bb9855af6c44a9464fea> # West-Vlaanderen
)
)
}
BIND (SHA256(CONCAT(STR(?province), " has a relation with ", STR(?municipality))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
VALUES ?municipality {
<http://data.lblod.info/id/bestuurseenheden/19483103-318e-435a-aa37-45e485406ee9> # Beveren-Kruibeke-Zwijndrecht
<http://data.lblod.info/id/bestuurseenheden/b8bb293d-aa22-4b43-bda4-0b6af76e9493> # Merelbeke-Melle
<http://data.lblod.info/id/bestuurseenheden/1ca65d65-54ff-4b44-b750-bd70c91191af> # Nazareth-De Pinte
<http://data.lblod.info/id/bestuurseenheden/add1e4eb-9ec7-4ea6-af82-335aa76b7d48> # Pajottegem
}
}

View File

@@ -0,0 +1,22 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?antwerp ;
org:member ?borsbeek ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?antwerp org:hasSubOrganization ?borsbeek .
FILTER (?antwerp = <http://data.lblod.info/id/bestuurseenheden/670db1d66c0de3b931962e1044033ccfa9d6e3023aa9828a5f252c3bc69bd32c>)
FILTER (?borsbeek = <http://data.lblod.info/id/bestuurseenheden/4b44e6f1-113b-4692-b149-44a889b215f2>)
}
BIND (SHA256(CONCAT(STR(?antwerp), " has a relation with ", STR(?borsbeek))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}

View File

@@ -0,0 +1,105 @@
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
# Add the "has a relation with" membership between provinces and the new OCMWs
# added for the 2025 mergers.
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization ?province ;
org:member ?ocmw ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?province org:hasSubOrganization ?ocmw .
FILTER (?province IN
(
<http://data.lblod.info/id/bestuurseenheden/298b13541e1e85de4b71535197aa1f3bbc4bdb67f0fe0f58ab4a7dc207af61fa> , # Oost-Vlaanderen
<http://data.lblod.info/id/bestuurseenheden/8b7e7bf05ace5bb1a68f5bc0d870e20c20f147b00bd9a3dcce3a01733d4da744> , # Vlaams-Brabant
<http://data.lblod.info/id/bestuurseenheden/14278813524c762255aeba149e7d7134ddecfbb43e7d56910731bd4e13e34f39> , # Limburg
<http://data.lblod.info/id/bestuurseenheden/bd74ee38a4b1e296821a11729c1f704cf439576c7ab2c910c95b067cf183d923> , # Antwerpen
<http://data.lblod.info/id/bestuurseenheden/8152e68420f560b8493d6c555a5bd4186903dc341028bb9855af6c44a9464fea> # West-Vlaanderen
)
)
}
BIND (SHA256(CONCAT(STR(?province), " has a relation with ", STR(?ocmw))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
VALUES ?ocmw {
<http://data.lblod.info/id/bestuurseenheden/fd41f573-7d9a-4d9f-b7d0-d5b6114d1622> # Beveren-Kruibeke-Zwijndrecht
<http://data.lblod.info/id/bestuurseenheden/5d94b2fd-60ee-4e56-a1f0-a586d596adf6> # Merelbeke-Melle
<http://data.lblod.info/id/bestuurseenheden/7d53f659-3a3b-44b1-9e77-3ea067678c0e> # Nazareth-De Pinte
<http://data.lblod.info/id/bestuurseenheden/650378e7-1bee-4737-91ff-5b20ac4623cf> # Pajottegem
}
}
;
# Relate OCMWs with their municipalities
## Beveren-Kruibeke-Zwijndrecht
### Municipality: <http://data.lblod.info/id/bestuurseenheden/19483103-318e-435a-aa37-45e485406ee9>
### OCMW: <http://data.lblod.info/id/bestuurseenheden/fd41f573-7d9a-4d9f-b7d0-d5b6114d1622>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
<http://data.lblod.info/id/bestuurseenheden/19483103-318e-435a-aa37-45e485406ee9> org:linkedTo <http://data.lblod.info/id/bestuurseenheden/fd41f573-7d9a-4d9f-b7d0-d5b6114d1622> .
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization <http://data.lblod.info/id/bestuurseenheden/19483103-318e-435a-aa37-45e485406ee9> ;
org:member <http://data.lblod.info/id/bestuurseenheden/fd41f573-7d9a-4d9f-b7d0-d5b6114d1622> ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
BIND (SHA256(CONCAT(STR(<http://data.lblod.info/id/bestuurseenheden/19483103-318e-435a-aa37-45e485406ee9>), "has a relation with", STR(<http://data.lblod.info/id/bestuurseenheden/fd41f573-7d9a-4d9f-b7d0-d5b6114d1622>))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}
;
## Merelbeke-Melle
### Municipality: <http://data.lblod.info/id/bestuurseenheden/b8bb293d-aa22-4b43-bda4-0b6af76e9493>
### OCMW: <http://data.lblod.info/id/bestuurseenheden/5d94b2fd-60ee-4e56-a1f0-a586d596adf6>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
<http://data.lblod.info/id/bestuurseenheden/b8bb293d-aa22-4b43-bda4-0b6af76e9493> org:linkedTo <http://data.lblod.info/id/bestuurseenheden/5d94b2fd-60ee-4e56-a1f0-a586d596adf6> .
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization <http://data.lblod.info/id/bestuurseenheden/b8bb293d-aa22-4b43-bda4-0b6af76e9493> ;
org:member <http://data.lblod.info/id/bestuurseenheden/5d94b2fd-60ee-4e56-a1f0-a586d596adf6> ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
BIND (SHA256(CONCAT(STR(<http://data.lblod.info/id/bestuurseenheden/b8bb293d-aa22-4b43-bda4-0b6af76e9493>), "has a relation with", STR(<http://data.lblod.info/id/bestuurseenheden/5d94b2fd-60ee-4e56-a1f0-a586d596adf6>))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}
;
## Nazareth-De Pinte
### Municipality: <http://data.lblod.info/id/bestuurseenheden/1ca65d65-54ff-4b44-b750-bd70c91191af>
### OCMW: <http://data.lblod.info/id/bestuurseenheden/7d53f659-3a3b-44b1-9e77-3ea067678c0e>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
<http://data.lblod.info/id/bestuurseenheden/1ca65d65-54ff-4b44-b750-bd70c91191af> org:linkedTo <http://data.lblod.info/id/bestuurseenheden/7d53f659-3a3b-44b1-9e77-3ea067678c0e> .
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization <http://data.lblod.info/id/bestuurseenheden/1ca65d65-54ff-4b44-b750-bd70c91191af> ;
org:member <http://data.lblod.info/id/bestuurseenheden/7d53f659-3a3b-44b1-9e77-3ea067678c0e> ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
BIND (SHA256(CONCAT(STR(<http://data.lblod.info/id/bestuurseenheden/1ca65d65-54ff-4b44-b750-bd70c91191af>), "has a relation with", STR(<http://data.lblod.info/id/bestuurseenheden/7d53f659-3a3b-44b1-9e77-3ea067678c0e>))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}
;
## Pajottegem
### Municipality: <http://data.lblod.info/id/bestuurseenheden/add1e4eb-9ec7-4ea6-af82-335aa76b7d48>
### OCMW: <http://data.lblod.info/id/bestuurseenheden/650378e7-1bee-4737-91ff-5b20ac4623cf>
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
<http://data.lblod.info/id/bestuurseenheden/add1e4eb-9ec7-4ea6-af82-335aa76b7d48> org:linkedTo <http://data.lblod.info/id/bestuurseenheden/650378e7-1bee-4737-91ff-5b20ac4623cf> .
?membership a org:Membership ;
mu:uuid ?uuid ;
org:organization <http://data.lblod.info/id/bestuurseenheden/add1e4eb-9ec7-4ea6-af82-335aa76b7d48> ;
org:member <http://data.lblod.info/id/bestuurseenheden/650378e7-1bee-4737-91ff-5b20ac4623cf> ;
org:role <http://data.lblod.info/id/rollen/4ec7d5c39bdc4e84b4174379b9e22ad8> . # has a relation with
}
} WHERE {
BIND (SHA256(CONCAT(STR(<http://data.lblod.info/id/bestuurseenheden/add1e4eb-9ec7-4ea6-af82-335aa76b7d48>), "has a relation with", STR(<http://data.lblod.info/id/bestuurseenheden/650378e7-1bee-4737-91ff-5b20ac4623cf>))) AS ?uuid)
BIND (IRI(CONCAT("http://data.lblod.info/id/lidmaatschap/", ?uuid)) AS ?membership)
}

View File

@@ -0,0 +1,4 @@
# Note: the create statement is added because otherwise virtuoso throws an error
# on the drop because the graph was not explicitly made
CREATE SILENT GRAPH <http://mu.semte.ch/graphs/landing-zone/clb-contact-data>
DROP GRAPH <http://mu.semte.ch/graphs/landing-zone/clb-contact-data>

View File

@@ -0,0 +1,13 @@
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX code: <http://lblod.data.gift/vocabularies/organisatie/>
DELETE WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?changeEvent a <http://www.w3.org/ns/org#ChangeEvent> ;
mu:uuid "66C494CB6ABCA6E6BF2DBB94" ;
code:veranderingsgebeurtenisResultaat ?changeEventResult ;
?eventP ?eventO .
?changeEventResult ?resultP ?resultO .
}
}

View File

@@ -0,0 +1,23 @@
DELETE {
GRAPH ?g {
?org ?orgP ?orgO .
}
}
WHERE {
VALUES ?org {
<http://data.lblod.info/id/bestuurseenheden/6584318A90264E79DCA99E67>
<http://data.lblod.info/id/bestuurseenheden/658432DF90264E79DCA99E69>
<http://data.lblod.info/id/bestuurseenheden/6584351590264E79DCA99E6B>
<http://data.lblod.info/id/bestuurseenheden/6584361290264E79DCA99E70>
<http://data.lblod.info/id/bestuurseenheden/6584395890264E79DCA99E73>
<http://data.lblod.info/id/bestuurseenheden/6584396790264E79DCA99E76>
<http://data.lblod.info/id/bestuurseenheden/65843A8090264E79DCA99E79>
<http://data.lblod.info/id/bestuurseenheden/65843B0090264E79DCA99E7B>
<http://data.lblod.info/id/bestuurseenheden/65CD2F939E3C83CF14AEEC59>
<http://data.lblod.info/id/bestuurseenheden/3183ade3-7ee8-409c-8394-296b1fbfe478>
}
GRAPH ?g {
?org ?orgP ?orgO .
}
}

View File

@@ -0,0 +1,17 @@
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?adminUnit org:classification ?c
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?adminUnit org:classification ?c
}
?c skos:prefLabel ?l .
FILTER (?l IN ("Gemeente", "Provincie"))
}

View File

@@ -0,0 +1,39 @@
PREFIX besluit: <http://data.vlaanderen.be/ns/besluit#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?boi ?p ?o.
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
VALUES ?faciliteitEenheid {
# OCMW
<http://data.lblod.info/id/bestuurseenheden/76730bd9ab6808230335d90e9ff30ad362a3461ee0239fd978e4313bcdca44c5> # Sint-Genesius-Rode
<http://data.lblod.info/id/bestuurseenheden/0b5d1664b3cf08550bcfdac0f4b195ab7a46a0f1974726de864dc0edb1565ecc> # Linkebeek
<http://data.lblod.info/id/bestuurseenheden/9ba66c8f97bbc6dd3ba2b35d8a6bb79215facbe3e5b3d52672b785449d6f5e58> # Drogenbos
<http://data.lblod.info/id/bestuurseenheden/7f2c5143806d6110feb44eba2a91d58e8fd563465b94d0f6b40d13a6a1740940> # Wemmel
<http://data.lblod.info/id/bestuurseenheden/45f432ac38d124141638c62f7afd577ab847c3571061b45e3b0b3329f6194048> # Kraainem
<http://data.lblod.info/id/bestuurseenheden/f9ee0b69624bba3677b18b95110246ee9106377c948ab5d914909eac79f88bcf> # Wezembeek-Oppem
<http://data.lblod.info/id/bestuurseenheden/785715d2822814f7dc0b3896601b5b777feb1ef9722e1c54f4cdcc697594acca> # Voeren
}
VALUES ?classification {
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/5ab0e9b8a3b2ca7c5e000009> # BCSD
<http://data.vlaanderen.be/id/concept/BestuursorgaanClassificatieCode/53c0d8cd-f3a2-411d-bece-4bd83ae2bbc9> # BCSD Voorzitter
}
?bestuursorgaan besluit:bestuurt ?faciliteitEenheid .
?bestuursorgaan org:classification ?classification .
?boi generiek:isTijdspecialisatieVan ?bestuursorgaan .
?boi mandaat:bindingStart ?startDate .
?boi ?p ?o.
FILTER(?startDate >= "2019-01-01T00:00:00"^^xsd:dateTime)
}
}

View File

@@ -1,33 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Inverse properties
{
?s org:holds ?o.
} => {
?o org:heldBy ?s.
}.
{
?s org:heldBy ?o.
} => {
?o org:holds ?s.
}.

View File

@@ -1,244 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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 dc_terms: <http://purl.org/dc/terms/>
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
PREFIX person: <http://www.w3.org/ns/person#>
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
PREFIX ere: <http://data.lblod.info/vocabularies/erediensten/>
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
# Hence the mapping is in two steps.
# The first step maps the DL persoon:gebruikteVoornaam to the OP counterpart
# and drops the DL persoon:gebruikteVoornaam statements with e:becomes
# A second reasoning will map DL foaf:name to OP persoon:gebruikteVoornaam
# Doing both at once would lead all DL foaf:names to incorrectly become foaf:givennames
# in OP
# First name
# persoon:gebruikteVoornaam => foaf:givenName
# Alternatieve voornaam
# foaf:name => persoon:gebruikteVoornaam
# Test Mock DL
# <http://example.org/person> persoon_loket:gebruikteVoornaam "Didier".
{
{
?s persoon_loket:gebruikteVoornaam ?o
} e:becomes {
?s foaf:givenName ?o
}
} => {
?s foaf:givenName ?o
}.
# First name
# persoon:gebruikteVoornaam => foaf:givenName (done in pre-processing)
# Alternatieve voornaam
# foaf:name => persoon:gebruikteVoornaam
# Test Mock LLB
# <http://example.org/person> foaf:name "Didier".
{
{
?s foaf:name ?o
} e:becomes {
?s persoon:gebruikteVoornaam ?o
}
} => {
?s persoon:gebruikteVoornaam ?o
}.
# Test
# ex:s <http://data.vlaanderen.be/ns/mandaat#einde> "2019-02-01T10:32:52+00:00"^^xsd:dateTime.
{
?s mandaat:bindingEinde ?eindeDate.
# use backward arrow rule defined below
?eindeDate :dateTimeFromDate ?eindeDateTime.
{
?s mandaat:bindingEinde ?eindeDate
} e:becomes {
?s mandaat:bindingEinde ?eindeDateTime
}.
} => {
?s mandaat:bindingEinde ?eindeDateTime
}.
{
?s mandaat:bindingStart ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s mandaat:bindingStart ?startDate
} e:becomes {
?s mandaat:bindingStart ?startDateTime
}.
} => {
?s mandaat:bindingStart ?startDateTime
}.
{
?s ch:startdatum ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s ch:startdatum ?startDate
} e:becomes {
?s ch:startdatum ?startDateTime
}.
} => {
?s ch:startdatum ?startDateTime
}.
{
?s mandaat:start ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s mandaat:start ?startDate
} e:becomes {
?s mandaat:start ?startDateTime
}.
} => {
?s mandaat:start ?startDateTime
}.
{
?s mandaat:einde ?eindeDate.
# use backward arrow rule defined below
?eindeDate :dateTimeFromDate ?eindeDateTime.
{
?s mandaat:einde ?eindeDate
} e:becomes {
?s mandaat:einde ?eindeDateTime
}.
} => {
?s mandaat:einde ?eindeDateTime
}.
{
?s ch:eindedatum ?endDate.
# use backward arrow rule defined below
?endDate :dateTimeFromDate ?endDateTime.
{
?s ch:eindedatum ?endDate
} e:becomes {
?s ch:eindedatum ?endDateTime
}.
} => {
?s ch:eindedatum ?endDateTime
}.
{
?s ere:geplandeEinddatumAanstelling ?endDate.
# use backward arrow rule defined below
?endDate :dateTimeFromDate ?endDateTime.
{
?s ere:geplandeEinddatumAanstelling ?endDate
} e:becomes {
?s ere:geplandeEinddatumAanstelling ?endDateTime
}.
} => {
?s ere:geplandeEinddatumAanstelling ?endDateTime
}.
# Backward arrow rule is like a function call.
# Removes the timezone indicator "Z" from incoming datetimes
# To make sure all datetimes have the same convention we now save them as
# datetime without the timezone indicator
# We use "T02:00:00" as time indicator to work around a virtuoso bug that
# results in datetimes being converted to a date when using "T00:00:00"
{
?date :dateTimeFromDate ?dateTime
}
<=
{
( ?date 1 10 ) string:substring ?dateSolo .
(?dateSolo "T02:00:00") string:concatenation ?datePlusTime.
(?datePlusTime xsd:dateTime) log:dtlit ?dateTime .
}.
# ex:orgA besluit:classificatie <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>.
{
{
?s besluit:classificatie ?o
} e:becomes {
?s org:classification ?o
}
} => {
?s org:classification ?o
}.
# fix typo V -> v
# <http://data.lblod.info/id/adressen/606D972BC20E70000900001C> <https://data.vlaanderen.be/ns/adres#AdresVoorstelling.huisnummer> "1" .
{
{
?s adres:AdresVoorstelling.huisnummer ?o
} e:becomes {
?s adres:Adresvoorstelling.huisnummer ?o
}
} => {
?s adres:Adresvoorstelling.huisnummer ?o
}.
# Tijdspecialisatie
{
{
?s mandaat:isTijdspecialisatieVan ?o.
} e:becomes {
?s generiek:isTijdspecialisatieVan ?o.
}
} => {
?s generiek:isTijdspecialisatieVan ?o.
}.
# In OP functionaris inherits from agents-in-position, which inherits from Agent
{
?s a lblodlg:Functionaris .
} => {
?s a ch:AgentInPositie ,
dc_terms:Agent .
} .
# In OP mandataris inherits from agents-in-position, which inherits from Agent
{
?s a mandaat:Mandataris .
} => {
?s a ch:AgentInPositie ,
dc_terms:Agent .
} .
# In OP minister inherits from agents-in-position, which inherits from Agent
{
?s a ere:RolBedienaar .
} => {
?s a ch:AgentInPositie ,
dc_terms:Agent .
} .
# In OP Person inherits from Agent
{
?s a person:Person .
} => {
?s a dc_terms:Agent .
} .

View File

@@ -1,524 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Map from http persoon to https persoon namespace.
## classes:
{
{
?s a persoon_loket:Afstamming
} e:becomes {
?s a persoon:Afstamming
}
} => {
?s a persoon:Afstamming
}.
{
{
?s a persoon_loket:BurgerlijkeStaat
} e:becomes {
?s a persoon:BurgerlijkeStaat
}
} => {
?s a persoon:BurgerlijkeStaat
}.
{
{
?s a persoon_loket:Domicilie
} e:becomes {
?s a persoon:Domicilie
}
} => {
?s a persoon:Domicilie
}.
{
{
?s a persoon_loket:Geboorte
} e:becomes {
?s a persoon:Geboorte
}
} => {
?s a persoon:Geboorte
}.
{
{
?s a persoon_loket:GeenInwoner
} e:becomes {
?s a persoon:GeenInwoner
}
} => {
?s a persoon:GeenInwoner
}.
{
{
?s a persoon_loket:GeregistreerdPersoon
} e:becomes {
?s a persoon:GeregistreerdPersoon
}
} => {
?s a persoon:GeregistreerdPersoon
}.
{
{
?s a persoon_loket:Gezin
} e:becomes {
?s a persoon:Gezin
}
} => {
?s a persoon:Gezin
}.
{
{
?s a persoon_loket:Gezinsrelatie
} e:becomes {
?s a persoon:Gezinsrelatie
}
} => {
?s a persoon:Gezinsrelatie
}.
{
{
?s a persoon_loket:Huwelijk
} e:becomes {
?s a persoon:Huwelijk
}
} => {
?s a persoon:Huwelijk
}.
{
{
?s a persoon_loket:Inwoner
} e:becomes {
?s a persoon:Inwoner
}
} => {
?s a persoon:Inwoner
}.
{
{
?s a persoon_loket:Inwonerschap
} e:becomes {
?s a persoon:Inwonerschap
}
} => {
?s a persoon:Inwonerschap
}.
{
{
?s a persoon_loket:Nationaliteit
} e:becomes {
?s a persoon:Nationaliteit
}
} => {
?s a persoon:Nationaliteit
}.
{
{
?s a persoon_loket:Overlijden
} e:becomes {
?s a persoon:Overlijden
}
} => {
?s a persoon:Overlijden
}.
{
{
?s a persoon_loket:PermanentInwoner
} e:becomes {
?s a persoon:PermanentInwoner
}
} => {
?s a persoon:PermanentInwoner
}.
{
{
?s a persoon_loket:Persoonsgebeurtenis
} e:becomes {
?s a persoon:Persoonsgebeurtenis
}
} => {
?s a persoon:Persoonsgebeurtenis
}.
{
{
?s a persoon_loket:Persoonsrelatie
} e:becomes {
?s a persoon:Persoonsrelatie
}
} => {
?s a persoon:Persoonsrelatie
}.
{
{
?s a persoon_loket:Samenwonen
} e:becomes {
?s a persoon:Samenwonen
}
} => {
?s a persoon:Samenwonen
}.
{
{
?s a persoon_loket:Staatsburger
} e:becomes {
?s a persoon:Staatsburger
}
} => {
?s a persoon:Staatsburger
}.
{
{
?s a persoon_loket:Staatsburgerschap
} e:becomes {
?s a persoon:Staatsburgerschap
}
} => {
?s a persoon:Staatsburgerschap
}.
{
{
?s a persoon_loket:TijdelijkInwoner
} e:becomes {
?s a persoon:TijdelijkInwoner
}
} => {
?s a persoon:TijdelijkInwoner
}.
{
{
?s a persoon_loket:Verblijfplaats
} e:becomes {
?s a persoon:Verblijfplaats
}
} => {
?s a persoon:Verblijfplaats
}.
{
{
?s a persoon_loket:Voogdij
} e:becomes {
?s a persoon:Voogdij
}
} => {
?s a persoon:Voogdij
}.
{
{
?s a persoon_loket:Vreemdeling
} e:becomes {
?s a persoon:Vreemdeling
}
} => {
?s a persoon:Vreemdeling
}.
## properties
{
{
?s persoon_loket:afstammingsType ?o
} e:becomes {
?s persoon:afstammingsType ?o
}
} => {
?s persoon:afstammingsType ?o
}.
{
{
?s persoon_loket:alternatieveNaam ?o
} e:becomes {
?s persoon:alternatieveNaam ?o
}
} => {
?s persoon:alternatieveNaam ?o
}.
{
{
?s persoon_loket:datum ?o
} e:becomes {
?s persoon:datum ?o
}
} => {
?s persoon:datum ?o
}.
{
{
?s persoon_loket:datumVanAfstamming ?o
} e:becomes {
?s persoon:datumVanAfstamming ?o
}
} => {
?s persoon:datumVanAfstamming ?o
}.
{
{
?s persoon_loket:geslacht ?o
} e:becomes {
?s persoon:geslacht ?o
}
} => {
?s persoon:geslacht ?o
}.
{
{
?s persoon_loket:gezinsadres ?o
} e:becomes {
?s persoon:gezinsadres ?o
}
} => {
?s persoon:gezinsadres ?o
}.
{
{
?s persoon_loket:gezinsrelatietype ?o
} e:becomes {
?s persoon:gezinsrelatietype ?o
}
} => {
?s persoon:gezinsrelatietype ?o
}.
{
{
?s persoon_loket:heeftBurgerlijkeStaat ?o
} e:becomes {
?s persoon:heeftBurgerlijkeStaat ?o
}
} => {
?s persoon:heeftBurgerlijkeStaat ?o
}.
{
{
?s persoon_loket:heeftGeboorte ?o
} e:becomes {
?s persoon:heeftGeboorte ?o
}
} => {
?s persoon:heeftGeboorte ?o
}.
{
{
?s persoon_loket:heeftInwonerschap ?o
} e:becomes {
?s persoon:heeftInwonerschap ?o
}
} => {
?s persoon:heeftInwonerschap ?o
}.
{
{
?s persoon_loket:heeftNationaliteit ?o
} e:becomes {
?s persoon:heeftNationaliteit ?o
}
} => {
?s persoon:heeftNationaliteit ?o
}.
{
{
?s persoon_loket:heeftOverlijden ?o
} e:becomes {
?s persoon:heeftOverlijden ?o
}
} => {
?s persoon:heeftOverlijden ?o
}.
{
{
?s persoon_loket:heeftPersoonsrelatie ?o
} e:becomes {
?s persoon:heeftPersoonsrelatie ?o
}
} => {
?s persoon:heeftPersoonsrelatie ?o
}.
{
{
?s persoon_loket:heeftStaatsburgerschap ?o
} e:becomes {
?s persoon:heeftStaatsburgerschap ?o
}
} => {
?s persoon:heeftStaatsburgerschap ?o
}.
{
{
?s persoon_loket:heeftVerblijfplaats ?o
} e:becomes {
?s persoon:heeftVerblijfplaats ?o
}
} => {
?s persoon:heeftVerblijfplaats ?o
}.
{
{
?s persoon_loket:Inwonerschap.binnenJurisdictie ?o
} e:becomes {
?s persoon:Inwonerschap.binnenJurisdictie ?o
}
} => {
?s persoon:Inwonerschap.binnenJurisdictie ?o
}.
{
{
?s persoon_loket:isHoofdVan ?o
} e:becomes {
?s persoon:isHoofdVan ?o
}
} => {
?s persoon:isHoofdVan ?o
}.
{
{
?s persoon_loket:isLidVan ?o
} e:becomes {
?s persoon:isLidVan ?o
}
} => {
?s persoon:isLidVan ?o
}.
{
{
?s persoon_loket:isRelatieMet ?o
} e:becomes {
?s persoon:isRelatieMet ?o
}
} => {
?s persoon:isRelatieMet ?o
}.
{
{
?s persoon_loket:land ?o
} e:becomes {
?s persoon:land ?o
}
} => {
?s persoon:land ?o
}.
{
{
?s persoon_loket:nationaliteit ?o
} e:becomes {
?s persoon:nationaliteit ?o
}
} => {
?s persoon:nationaliteit ?o
}.
{
{
?s persoon_loket:plaats ?o
} e:becomes {
?s persoon:plaats ?o
}
} => {
?s persoon:plaats ?o
}.
{
{
?s persoon_loket:registratie ?o
} e:becomes {
?s persoon:registratie ?o
}
} => {
?s persoon:registratie ?o
}.
{
{
?s persoon_loket:Staatsburgerschap.binnenJurisdictie ?o
} e:becomes {
?s persoon:Staatsburgerschap.binnenJurisdictie ?o
}
} => {
?s persoon:Staatsburgerschap.binnenJurisdictie ?o
}.
{
{
?s persoon_loket:type ?o
} e:becomes {
?s persoon:type ?o
}
} => {
?s persoon:type ?o
}.
{
{
?s persoon_loket:verblijfsadres ?o
} e:becomes {
?s persoon:verblijfsadres ?o
}
} => {
?s persoon:verblijfsadres ?o
}.
{
{
?s persoon_loket:volledigeNaam ?o
} e:becomes {
?s persoon:volledigeNaam ?o
}
} => {
?s persoon:volledigeNaam ?o
}.

View File

@@ -1,32 +0,0 @@
PREFIX string: <http://www.w3.org/2000/10/swap/string#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX schema: <http://schema.org/>
PREFIX : <#>
{
?s schema:telephone ?number.
# Remove all non digits
( ?number ("""[^+\\d]""") ("") ) string:replaceAll ?scrape_result.
# Replace leading 00 with +
( ?scrape_result """^00""" "+") string:replace ?replaced_zero_zero.
( ?replaced_zero_zero """^0""" "+32") string:replace ?default_be.
( ?default_be """\\+320""" "+32" ) string:replace ?replace_320.
( ?replace_320 """^320""" "+32" ) string:replace ?final_result.
?final_result string:matches """^\\+((32\\d{8})|(324\\d{8})|((?!32)\\d+))$""".
( "tel:" ?final_result ) string:concatenation ?parsed_result .
{
?s schema:telephone ?number.
} e:becomes {
?s schema:telephone ?parsed_result .
}.
} => {
?s schema:telephone ?parsed_result .
}.

View File

@@ -1,544 +0,0 @@
# Generated by producer-config-to-query.ipynb
## CLASSES
{
?s a <http://data.lblod.info/vocabularies/contacthub/AgentInPositie>
} => {
?s a <http://data.lblod.info/vocabularies/contacthub/AgentInPositie>
}.
{
?s a <http://data.lblod.info/vocabularies/erediensten/EredienstMandataris>
} => {
?s a <http://data.lblod.info/vocabularies/erediensten/EredienstMandataris>
}.
{
?s a <http://data.lblod.info/vocabularies/erediensten/RolBedienaar>
} => {
?s a <http://data.lblod.info/vocabularies/erediensten/RolBedienaar>
}.
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie>
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie>
}.
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris>
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris>
}.
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode>
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode>
}.
{
?s a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid>
} => {
?s a <http://data.vlaanderen.be/ns/besluit#Bestuurseenheid>
}.
{
?s a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan>
} => {
?s a <http://data.vlaanderen.be/ns/besluit#Bestuursorgaan>
}.
{
?s a <http://data.vlaanderen.be/ns/mandaat#Mandaat>
} => {
?s a <http://data.vlaanderen.be/ns/mandaat#Mandaat>
}.
{
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris>
} => {
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris>
}.
# {
# ?s a <https://data.vlaanderen.be/ns/persoon#Geboorte>
# } => {
# ?s a <https://data.vlaanderen.be/ns/persoon#Geboorte>
# }.
{
?s a <http://mu.semte.ch/vocabularies/ext/BeleidsdomeinCode>
} => {
?s a <http://mu.semte.ch/vocabularies/ext/BeleidsdomeinCode>
}.
{
?s a <http://mu.semte.ch/vocabularies/ext/BestuurseenheidClassificatieCode>
} => {
?s a <http://mu.semte.ch/vocabularies/ext/BestuurseenheidClassificatieCode>
}.
{
?s a <http://mu.semte.ch/vocabularies/ext/BestuursfunctieCode>
} => {
?s a <http://mu.semte.ch/vocabularies/ext/BestuursfunctieCode>
}.
{
?s a <http://mu.semte.ch/vocabularies/ext/BestuursorgaanClassificatieCode>
} => {
?s a <http://mu.semte.ch/vocabularies/ext/BestuursorgaanClassificatieCode>
}.
{
?s a <http://mu.semte.ch/vocabularies/ext/MandatarisStatusCode>
} => {
?s a <http://mu.semte.ch/vocabularies/ext/MandatarisStatusCode>
}.
{
?s a <http://schema.org/ContactPoint>
} => {
?s a <http://schema.org/ContactPoint>
}.
# {
# ?s a <http://www.w3.org/ns/adms#Identifier>
# } => {
# ?s a <http://www.w3.org/ns/adms#Identifier>
# }.
{
?s a <http://www.w3.org/ns/locn#Address>
} => {
?s a <http://www.w3.org/ns/locn#Address>
}.
{
?s a <http://www.w3.org/ns/org#Membership>
} => {
?s a <http://www.w3.org/ns/org#Membership>
}.
{
?s a <http://www.w3.org/ns/person#Person>
} => {
?s a <http://www.w3.org/ns/person#Person>
}.
{
?s a <http://purl.org/dc/terms/Agent>
} => {
?s a <http://purl.org/dc/terms/Agent>
}.
{
?s a <http://data.lblod.info/vocabularies/contacthub/AgentInPositie>
} => {
?s a <http://data.lblod.info/vocabularies/contacthub/AgentInPositie>
}.
{
?s a <http://www.w3.org/ns/prov#Location>
} => {
?s a <http://www.w3.org/ns/prov#Location>
}.
## PROPERTIES
{
?s <http://data.lblod.info/vocabularies/contacthub/eindedatum> ?o
} => {
?s <http://data.lblod.info/vocabularies/contacthub/eindedatum> ?o
}.
{
?s <http://data.lblod.info/vocabularies/contacthub/startdatum> ?o
} => {
?s <http://data.lblod.info/vocabularies/contacthub/startdatum> ?o
}.
{
?s <http://data.lblod.info/vocabularies/erediensten/geplandeEinddatumAanstelling> ?o
} => {
?s <http://data.lblod.info/vocabularies/erediensten/geplandeEinddatumAanstelling> ?o
}.
{
?s <http://data.lblod.info/vocabularies/leidinggevenden/adresRegisterId> ?o
} => {
?s <http://data.lblod.info/vocabularies/leidinggevenden/adresRegisterId> ?o
}.
{
?s <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?o
} => {
?s <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?o
}.
{
?s <http://data.vlaanderen.be/ns/besluit#bestuurt> ?o
} => {
?s <http://data.vlaanderen.be/ns/besluit#bestuurt> ?o
}.
{
?s <http://data.vlaanderen.be/ns/besluit#werkingsgebied> ?o
} => {
?s <http://data.vlaanderen.be/ns/besluit#werkingsgebied> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#aantalHouders> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#aantalHouders> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#beleidsdomein> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#beleidsdomein> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#bindingEinde> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#bindingEinde> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#bindingStart> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#bindingStart> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#einde> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#einde> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#isTijdelijkVervangenDoor> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#isTijdelijkVervangenDoor> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#rangorde> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#rangorde> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#start> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#start> ?o
}.
{
?s <http://data.vlaanderen.be/ns/mandaat#status> ?o
} => {
?s <http://data.vlaanderen.be/ns/mandaat#status> ?o
}.
{
?s <https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?o
} => {
?s <https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?o
}.
# {
# ?s <https://data.vlaanderen.be/ns/persoon#datum> ?o
# } => {
# ?s <https://data.vlaanderen.be/ns/persoon#datum> ?o
# }.
{
?s <https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam> ?o
} => {
?s <https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam> ?o
}.
# {
# ?s <https://data.vlaanderen.be/ns/persoon#geslacht> ?o
# } => {
# ?s <https://data.vlaanderen.be/ns/persoon#geslacht> ?o
# }.
# {
# ?s <https://data.vlaanderen.be/ns/persoon#heeftGeboorte> ?o
# } => {
# ?s <https://data.vlaanderen.be/ns/persoon#heeftGeboorte> ?o
# }.
# {
# ?s <https://data.vlaanderen.be/ns/persoon#heeftNationaliteit> ?o
# } => {
# ?s <https://data.vlaanderen.be/ns/persoon#heeftNationaliteit> ?o
# }.
{
?s <http://mu.semte.ch/vocabularies/core/uuid> ?o
} => {
?s <http://mu.semte.ch/vocabularies/core/uuid> ?o
}.
{
?s <http://mu.semte.ch/vocabularies/ext/secondaryContactPoint> ?o
} => {
?s <http://mu.semte.ch/vocabularies/ext/secondaryContactPoint> ?o
}.
{
?s <http://mu.semte.ch/vocabularies/ext/werkingsgebiedNiveau> ?o
} => {
?s <http://mu.semte.ch/vocabularies/ext/werkingsgebiedNiveau> ?o
}.
{
?s <http://schema.org/contactPoint> ?o
} => {
?s <http://schema.org/contactPoint> ?o
}.
{
?s <http://schema.org/contactType> ?o
} => {
?s <http://schema.org/contactType> ?o
}.
{
?s <http://schema.org/email> ?o
} => {
?s <http://schema.org/email> ?o
}.
{
?s <http://schema.org/faxNumber> ?o
} => {
?s <http://schema.org/faxNumber> ?o
}.
{
?s <http://schema.org/telephone> ?o
} => {
?s <http://schema.org/telephone> ?o
}.
{
?s <http://schema.org/url> ?o
} => {
?s <http://schema.org/url> ?o
}.
# {
# ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o
# } => {
# ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o
# }.
{
?s <http://www.w3.org/2000/01/rdf-schema#label> ?o
} => {
?s <http://www.w3.org/2000/01/rdf-schema#label> ?o
}.
# {
# ?s <http://www.w3.org/2002/07/owl#sameAs> ?o
# } => {
# ?s <http://www.w3.org/2002/07/owl#sameAs> ?o
# }.
{
?s <http://www.w3.org/2004/02/skos/core#altLabel> ?o
} => {
?s <http://www.w3.org/2004/02/skos/core#altLabel> ?o
}.
# {
# ?s <http://www.w3.org/2004/02/skos/core#notation> ?o
# } => {
# ?s <http://www.w3.org/2004/02/skos/core#notation> ?o
# }.
{
?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?o
} => {
?s <http://www.w3.org/2004/02/skos/core#prefLabel> ?o
}.
{
?s <http://www.w3.org/2004/02/skos/core#scopeNote> ?o
} => {
?s <http://www.w3.org/2004/02/skos/core#scopeNote> ?o
}.
# {
# ?s <http://www.w3.org/ns/adms#identifier> ?o
# } => {
# ?s <http://www.w3.org/ns/adms#identifier> ?o
# }.
{
?s <http://www.w3.org/ns/locn#address> ?o
} => {
?s <http://www.w3.org/ns/locn#address> ?o
}.
{
?s <http://www.w3.org/ns/locn#addressArea> ?o
} => {
?s <http://www.w3.org/ns/locn#addressArea> ?o
}.
{
?s <http://www.w3.org/ns/locn#adminUnit1> ?o
} => {
?s <http://www.w3.org/ns/locn#adminUnit1> ?o
}.
{
?s <http://www.w3.org/ns/locn#adminUnit2> ?o
} => {
?s <http://www.w3.org/ns/locn#adminUnit2> ?o
}.
{
?s <http://www.w3.org/ns/locn#adminUnitL2> ?o
} => {
?s <http://www.w3.org/ns/locn#adminUnitL2> ?o
}.
{
?s <http://www.w3.org/ns/locn#fullAddress> ?o
} => {
?s <http://www.w3.org/ns/locn#fullAddress> ?o
}.
{
?s <http://www.w3.org/ns/locn#postCode> ?o
} => {
?s <http://www.w3.org/ns/locn#postCode> ?o
}.
{
?s <http://www.w3.org/ns/locn#thoroughfare> ?o
} => {
?s <http://www.w3.org/ns/locn#thoroughfare> ?o
}.
{
?s <http://www.w3.org/ns/org#classification> ?o
} => {
?s <http://www.w3.org/ns/org#classification> ?o
}.
{
?s <http://www.w3.org/ns/org#hasMembership> ?o
} => {
?s <http://www.w3.org/ns/org#hasMembership> ?o
}.
{
?s <http://www.w3.org/ns/org#hasPost> ?o
} => {
?s <http://www.w3.org/ns/org#hasPost> ?o
}.
{
?s <http://www.w3.org/ns/org#heldBy> ?o
} => {
?s <http://www.w3.org/ns/org#heldBy> ?o
}.
{
?s <http://www.w3.org/ns/org#holds> ?o
} => {
?s <http://www.w3.org/ns/org#holds> ?o
}.
{
?s <http://www.w3.org/ns/org#linkedTo> ?o
} => {
?s <http://www.w3.org/ns/org#linkedTo> ?o
}.
{
?s <http://www.w3.org/ns/org#memberOf> ?o
} => {
?s <http://www.w3.org/ns/org#memberOf> ?o
}.
{
?s <http://www.w3.org/ns/org#organisation> ?o
} => {
?s <http://www.w3.org/ns/org#organisation> ?o
}.
{
?s <http://www.w3.org/ns/org#role> ?o
} => {
?s <http://www.w3.org/ns/org#role> ?o
}.
{
?s <http://xmlns.com/foaf/0.1/familyName> ?o
} => {
?s <http://xmlns.com/foaf/0.1/familyName> ?o
}.
{
?s <http://xmlns.com/foaf/0.1/givenName> ?o
} => {
?s <http://xmlns.com/foaf/0.1/givenName> ?o
}.
{
?s <https://data.vlaanderen.be/ns/adres#Adresvoorstelling.busnummer> ?o
} => {
?s <https://data.vlaanderen.be/ns/adres#Adresvoorstelling.busnummer> ?o
}.
{
?s <https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer> ?o
} => {
?s <https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer> ?o
}.
{
?s <https://data.vlaanderen.be/ns/adres#gemeentenaam> ?o
} => {
?s <https://data.vlaanderen.be/ns/adres#gemeentenaam> ?o
}.
{
?s <https://data.vlaanderen.be/ns/adres#land> ?o
} => {
?s <https://data.vlaanderen.be/ns/adres#land> ?o
}.
{
?s <https://data.vlaanderen.be/ns/adres#postcode> ?o
} => {
?s <https://data.vlaanderen.be/ns/adres#postcode> ?o
}.
{
?s <https://data.vlaanderen.be/ns/adres#verwijstNaar> ?o
} => {
?s <https://data.vlaanderen.be/ns/adres#verwijstNaar> ?o
}.
{
?s <https://www.w3.org/ns/regorg#legalName> ?o
} => {
?s <https://www.w3.org/ns/regorg#legalName> ?o
}.

View File

@@ -1,27 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Retract empty strings
{
{
?s ?p ""
} e:becomes {}.
} => {}.

View File

@@ -1,62 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Rijksregisternummer
# Extend identifiers to match OP's model
# <http://example.org/tst#subject> skos:notation "00010100105".
{
?identifier skos:notation ?notation.
?notation string:notEqualIgnoringCase "Rijksregisternummer".
?identifier log:uri ?identifierString.
(?identifierString "STRUCTURED_IDENTIFIER") string:concatenation ?hashInput.
?hashInput crypto:md5 ?uuid.
("http://data.lblod.info/id/gestructureerdeIdentificatoren/" ?uuid) string:concatenation ?structuredIdString.
?structuredIdentifier log:uri ?structuredIdString.
{
?identifier skos:notation ?notation.
} e:becomes {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
}.
} => {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
?structuredIdentifier a generiek:GestructureerdeIdentificator ;
mu:uuid ?uuid ;
generiek:lokaleIdentificator ?notation
}.
# identifier property in the export is only used for RRN.
{
{
?s adms:identifier ?o
} e:becomes {
?s persoon:registratie ?o
}
} => {
?s persoon:registratie ?o
}.

View File

@@ -1,32 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Inverse properties
{
?s org:holds ?o.
} => {
?o org:heldBy ?s.
}.
{
?s org:heldBy ?o.
} => {
?o org:holds ?s.
}.

View File

@@ -1,229 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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 dc_terms: <http://purl.org/dc/terms/>
PREFIX ch: <http://data.lblod.info/vocabularies/contacthub/>
PREFIX person: <http://www.w3.org/ns/person#>
PREFIX lblodlg: <http://data.lblod.info/vocabularies/leidinggevenden/>
# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!)
# Hence the mapping is in two steps.
# The first step maps the DL persoon:gebruikteVoornaam to the OP counterpart
# and drops the DL persoon:gebruikteVoornaam statements with e:becomes
# A second reasoning will map DL foaf:name to OP persoon:gebruikteVoornaam
# Doing both at once would lead all DL foaf:names to incorrectly become foaf:givennames
# in OP
# First name
# persoon:gebruikteVoornaam => foaf:givenName
# Alternatieve voornaam
# foaf:name => persoon:gebruikteVoornaam
# Test Mock DL
# <http://example.org/person> persoon_loket:gebruikteVoornaam "Didier".
{
{
?s persoon_loket:gebruikteVoornaam ?o
} e:becomes {
?s foaf:givenName ?o
}
} => {
?s foaf:givenName ?o
}.
# First name
# persoon:gebruikteVoornaam => foaf:givenName (done in pre-processing)
# Alternatieve voornaam
# foaf:name => persoon:gebruikteVoornaam
# Test Mock LLB
# <http://example.org/person> foaf:name "Didier".
{
{
?s foaf:name ?o
} e:becomes {
?s persoon:gebruikteVoornaam ?o
}
} => {
?s persoon:gebruikteVoornaam ?o
}.
# Test
# ex:s <http://data.vlaanderen.be/ns/mandaat#einde> "2019-02-01T10:32:52+00:00"^^xsd:dateTime.
{
?s mandaat:bindingEinde ?eindeDate.
# use backward arrow rule defined below
?eindeDate :dateTimeFromDate ?eindeDateTime.
{
?s mandaat:bindingEinde ?eindeDate
} e:becomes {
?s mandaat:bindingEinde ?eindeDateTime
}.
} => {
?s mandaat:bindingEinde ?eindeDateTime
}.
{
?s mandaat:start ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s mandaat:start ?startDate
} e:becomes {
?s mandaat:start ?startDateTime
}.
} => {
?s mandaat:start ?startDateTime
}.
{
?s mandaat:einde ?eindeDate.
# use backward arrow rule defined below
?eindeDate :dateTimeFromDate ?eindeDateTime.
{
?s mandaat:einde ?eindeDate
} e:becomes {
?s mandaat:einde ?eindeDateTime
}.
} => {
?s mandaat:einde ?eindeDateTime
}.
{
?s mandaat:bindingStart ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s mandaat:bindingStart ?startDate
} e:becomes {
?s mandaat:bindingStart ?startDateTime
}.
} => {
?s mandaat:bindingStart ?startDateTime
}.
{
?s ch:startdatum ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s ch:startdatum ?startDate
} e:becomes {
?s ch:startdatum ?startDateTime
}.
} => {
?s ch:startdatum ?startDateTime
}.
{
?s ch:eindedatum ?endDate.
# use backward arrow rule defined below
?endDate :dateTimeFromDate ?endDateTime.
{
?s ch:eindedatum ?endDate
} e:becomes {
?s ch:eindedatum ?endDateTime
}.
} => {
?s ch:eindedatum ?endDateTime
}.
# Backward arrow rule is like a function call.
# Removes the timezone indicator "Z" from incoming datetimes
# To make sure all datetimes have the same convention we now save them as
# datetime without the timezone indicator
# We use "T02:00:00" as time indicator to work around a virtuoso bug that
# results in datetimes being converted to a date when using "T00:00:00"
{
?date :dateTimeFromDate ?dateTime
}
<=
{
( ?date 1 10 ) string:substring ?dateSolo .
(?dateSolo "T02:00:00") string:concatenation ?datePlusTime.
(?datePlusTime xsd:dateTime) log:dtlit ?dateTime .
}.
# ex:orgA besluit:classificatie <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>.
{
{
?s besluit:classificatie ?o
} e:becomes {
?s org:classification ?o
}
} => {
?s org:classification ?o
}.
# fix typo V -> v
# <http://data.lblod.info/id/adressen/606D972BC20E70000900001C> <https://data.vlaanderen.be/ns/adres#AdresVoorstelling.huisnummer> "1" .
{
{
?s adres:AdresVoorstelling.huisnummer ?o
} e:becomes {
?s adres:Adresvoorstelling.huisnummer ?o
}
} => {
?s adres:Adresvoorstelling.huisnummer ?o
}.
# Tijdspecialisatie
{
{
?s mandaat:isTijdspecialisatieVan ?o.
} e:becomes {
?s generiek:isTijdspecialisatieVan ?o.
}
} => {
?s generiek:isTijdspecialisatieVan ?o.
} .
# In OP functionaris inherits from agents-in-position, which inherits from Agent
{
?s a lblodlg:Functionaris .
} => {
?s a ch:AgentInPositie ,
dc_terms:Agent .
} .
# In OP mandataris inherits from agents-in-position, which inherits from Agent
{
?s a mandaat:Mandataris .
} => {
?s a ch:AgentInPositie ,
dc_terms:Agent .
} .
# In OP AgentInPositie inherits from Agent
{
?s a ch:AgentInPositie .
} => {
?s a dc_terms:Agent .
} .
# In OP Person inherits from Agent
{
?s a person:Person .
} => {
?s a dc_terms:Agent .
} .

View File

@@ -1,523 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Map from http persoon to https persoon namespace.
## classes:
{
{
?s a persoon_loket:Afstamming
} e:becomes {
?s a persoon:Afstamming
}
} => {
?s a persoon:Afstamming
}.
{
{
?s a persoon_loket:BurgerlijkeStaat
} e:becomes {
?s a persoon:BurgerlijkeStaat
}
} => {
?s a persoon:BurgerlijkeStaat
}.
{
{
?s a persoon_loket:Domicilie
} e:becomes {
?s a persoon:Domicilie
}
} => {
?s a persoon:Domicilie
}.
{
{
?s a persoon_loket:Geboorte
} e:becomes {
?s a persoon:Geboorte
}
} => {
?s a persoon:Geboorte
}.
{
{
?s a persoon_loket:GeenInwoner
} e:becomes {
?s a persoon:GeenInwoner
}
} => {
?s a persoon:GeenInwoner
}.
{
{
?s a persoon_loket:GeregistreerdPersoon
} e:becomes {
?s a persoon:GeregistreerdPersoon
}
} => {
?s a persoon:GeregistreerdPersoon
}.
{
{
?s a persoon_loket:Gezin
} e:becomes {
?s a persoon:Gezin
}
} => {
?s a persoon:Gezin
}.
{
{
?s a persoon_loket:Gezinsrelatie
} e:becomes {
?s a persoon:Gezinsrelatie
}
} => {
?s a persoon:Gezinsrelatie
}.
{
{
?s a persoon_loket:Huwelijk
} e:becomes {
?s a persoon:Huwelijk
}
} => {
?s a persoon:Huwelijk
}.
{
{
?s a persoon_loket:Inwoner
} e:becomes {
?s a persoon:Inwoner
}
} => {
?s a persoon:Inwoner
}.
{
{
?s a persoon_loket:Inwonerschap
} e:becomes {
?s a persoon:Inwonerschap
}
} => {
?s a persoon:Inwonerschap
}.
{
{
?s a persoon_loket:Nationaliteit
} e:becomes {
?s a persoon:Nationaliteit
}
} => {
?s a persoon:Nationaliteit
}.
{
{
?s a persoon_loket:Overlijden
} e:becomes {
?s a persoon:Overlijden
}
} => {
?s a persoon:Overlijden
}.
{
{
?s a persoon_loket:PermanentInwoner
} e:becomes {
?s a persoon:PermanentInwoner
}
} => {
?s a persoon:PermanentInwoner
}.
{
{
?s a persoon_loket:Persoonsgebeurtenis
} e:becomes {
?s a persoon:Persoonsgebeurtenis
}
} => {
?s a persoon:Persoonsgebeurtenis
}.
{
{
?s a persoon_loket:Persoonsrelatie
} e:becomes {
?s a persoon:Persoonsrelatie
}
} => {
?s a persoon:Persoonsrelatie
}.
{
{
?s a persoon_loket:Samenwonen
} e:becomes {
?s a persoon:Samenwonen
}
} => {
?s a persoon:Samenwonen
}.
{
{
?s a persoon_loket:Staatsburger
} e:becomes {
?s a persoon:Staatsburger
}
} => {
?s a persoon:Staatsburger
}.
{
{
?s a persoon_loket:Staatsburgerschap
} e:becomes {
?s a persoon:Staatsburgerschap
}
} => {
?s a persoon:Staatsburgerschap
}.
{
{
?s a persoon_loket:TijdelijkInwoner
} e:becomes {
?s a persoon:TijdelijkInwoner
}
} => {
?s a persoon:TijdelijkInwoner
}.
{
{
?s a persoon_loket:Verblijfplaats
} e:becomes {
?s a persoon:Verblijfplaats
}
} => {
?s a persoon:Verblijfplaats
}.
{
{
?s a persoon_loket:Voogdij
} e:becomes {
?s a persoon:Voogdij
}
} => {
?s a persoon:Voogdij
}.
{
{
?s a persoon_loket:Vreemdeling
} e:becomes {
?s a persoon:Vreemdeling
}
} => {
?s a persoon:Vreemdeling
}.
## properties
{
{
?s persoon_loket:afstammingsType ?o
} e:becomes {
?s persoon:afstammingsType ?o
}
} => {
?s persoon:afstammingsType ?o
}.
{
{
?s persoon_loket:alternatieveNaam ?o
} e:becomes {
?s persoon:alternatieveNaam ?o
}
} => {
?s persoon:alternatieveNaam ?o
}.
{
{
?s persoon_loket:datum ?o
} e:becomes {
?s persoon:datum ?o
}
} => {
?s persoon:datum ?o
}.
{
{
?s persoon_loket:datumVanAfstamming ?o
} e:becomes {
?s persoon:datumVanAfstamming ?o
}
} => {
?s persoon:datumVanAfstamming ?o
}.
{
{
?s persoon_loket:geslacht ?o
} e:becomes {
?s persoon:geslacht ?o
}
} => {
?s persoon:geslacht ?o
}.
{
{
?s persoon_loket:gezinsadres ?o
} e:becomes {
?s persoon:gezinsadres ?o
}
} => {
?s persoon:gezinsadres ?o
}.
{
{
?s persoon_loket:gezinsrelatietype ?o
} e:becomes {
?s persoon:gezinsrelatietype ?o
}
} => {
?s persoon:gezinsrelatietype ?o
}.
{
{
?s persoon_loket:heeftBurgerlijkeStaat ?o
} e:becomes {
?s persoon:heeftBurgerlijkeStaat ?o
}
} => {
?s persoon:heeftBurgerlijkeStaat ?o
}.
{
{
?s persoon_loket:heeftGeboorte ?o
} e:becomes {
?s persoon:heeftGeboorte ?o
}
} => {
?s persoon:heeftGeboorte ?o
}.
{
{
?s persoon_loket:heeftInwonerschap ?o
} e:becomes {
?s persoon:heeftInwonerschap ?o
}
} => {
?s persoon:heeftInwonerschap ?o
}.
{
{
?s persoon_loket:heeftNationaliteit ?o
} e:becomes {
?s persoon:heeftNationaliteit ?o
}
} => {
?s persoon:heeftNationaliteit ?o
}.
{
{
?s persoon_loket:heeftOverlijden ?o
} e:becomes {
?s persoon:heeftOverlijden ?o
}
} => {
?s persoon:heeftOverlijden ?o
}.
{
{
?s persoon_loket:heeftPersoonsrelatie ?o
} e:becomes {
?s persoon:heeftPersoonsrelatie ?o
}
} => {
?s persoon:heeftPersoonsrelatie ?o
}.
{
{
?s persoon_loket:heeftStaatsburgerschap ?o
} e:becomes {
?s persoon:heeftStaatsburgerschap ?o
}
} => {
?s persoon:heeftStaatsburgerschap ?o
}.
{
{
?s persoon_loket:heeftVerblijfplaats ?o
} e:becomes {
?s persoon:heeftVerblijfplaats ?o
}
} => {
?s persoon:heeftVerblijfplaats ?o
}.
{
{
?s persoon_loket:Inwonerschap.binnenJurisdictie ?o
} e:becomes {
?s persoon:Inwonerschap.binnenJurisdictie ?o
}
} => {
?s persoon:Inwonerschap.binnenJurisdictie ?o
}.
{
{
?s persoon_loket:isHoofdVan ?o
} e:becomes {
?s persoon:isHoofdVan ?o
}
} => {
?s persoon:isHoofdVan ?o
}.
{
{
?s persoon_loket:isLidVan ?o
} e:becomes {
?s persoon:isLidVan ?o
}
} => {
?s persoon:isLidVan ?o
}.
{
{
?s persoon_loket:isRelatieMet ?o
} e:becomes {
?s persoon:isRelatieMet ?o
}
} => {
?s persoon:isRelatieMet ?o
}.
{
{
?s persoon_loket:land ?o
} e:becomes {
?s persoon:land ?o
}
} => {
?s persoon:land ?o
}.
{
{
?s persoon_loket:nationaliteit ?o
} e:becomes {
?s persoon:nationaliteit ?o
}
} => {
?s persoon:nationaliteit ?o
}.
{
{
?s persoon_loket:plaats ?o
} e:becomes {
?s persoon:plaats ?o
}
} => {
?s persoon:plaats ?o
}.
{
{
?s persoon_loket:registratie ?o
} e:becomes {
?s persoon:registratie ?o
}
} => {
?s persoon:registratie ?o
}.
{
{
?s persoon_loket:Staatsburgerschap.binnenJurisdictie ?o
} e:becomes {
?s persoon:Staatsburgerschap.binnenJurisdictie ?o
}
} => {
?s persoon:Staatsburgerschap.binnenJurisdictie ?o
}.
{
{
?s persoon_loket:type ?o
} e:becomes {
?s persoon:type ?o
}
} => {
?s persoon:type ?o
}.
{
{
?s persoon_loket:verblijfsadres ?o
} e:becomes {
?s persoon:verblijfsadres ?o
}
} => {
?s persoon:verblijfsadres ?o
}.
{
{
?s persoon_loket:volledigeNaam ?o
} e:becomes {
?s persoon:volledigeNaam ?o
}
} => {
?s persoon:volledigeNaam ?o
}.

View File

@@ -1,32 +0,0 @@
PREFIX string: <http://www.w3.org/2000/10/swap/string#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX schema: <http://schema.org/>
PREFIX : <#>
{
?s schema:telephone ?number.
# Remove all non digits
( ?number ("""[^+\\d]""") ("") ) string:replaceAll ?scrape_result.
# Replace leading 00 with +
( ?scrape_result """^00""" "+") string:replace ?replaced_zero_zero.
( ?replaced_zero_zero """^0""" "+32") string:replace ?default_be.
( ?default_be """\\+320""" "+32" ) string:replace ?replace_320.
( ?replace_320 """^320""" "+32" ) string:replace ?final_result.
?final_result string:matches """^\\+((32\\d{8})|(324\\d{8})|((?!32)\\d+))$""".
( "tel:" ?final_result ) string:concatenation ?parsed_result .
{
?s schema:telephone ?number.
} e:becomes {
?s schema:telephone ?parsed_result .
}.
} => {
?s schema:telephone ?parsed_result .
}.

View File

@@ -1,284 +0,0 @@
# Filtering classes to ingest
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
{
?s a <http://www.w3.org/ns/person#Person> ;
?p ?o .
} => {
?s a <http://www.w3.org/ns/person#Person> ;
?p ?o .
}.
{
?s a <http://www.w3.org/ns/locn#Address> ;
?p ?o .
} => {
?s a <http://www.w3.org/ns/locn#Address> ;
?p ?o .
}.
{
?s a <http://schema.org/ContactPoint> ;
?p ?o .
} => {
?s a <http://schema.org/ContactPoint> ;
?p ?o .
}.
# For functionarissen, the contact point is on the bestuursfunctie and not on the agent in position
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie> ;
<http://schema.org/contactPoint> ?o .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie> ;
<http://schema.org/contactPoint> ?o .
}.
# Functionarissen should only be linked to an IGS, AGB, APB, gemeente, district,
# provincie, OCMW, or OCMW association (FOR NOW)
## Province
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## Municipality
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## OCMW
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## district
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000003> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## AGB
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/36a82ba0-7ff1-4697-a9dd-2e94df73b721> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## APB
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/80310756-ce0a-4a1b-9b8e-7c01b6cc7a2d> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## projectvereniging (IGS)
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/b156b67f-c5f4-4584-9b30-4c090be02fdc> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## dienstverlenend vereniging (IGS)
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/d01bb1f6-2439-4e33-9c25-1fc295de2e71> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## opdrachthoudende vereniging (IGS)
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cd93f147-3ece-4308-acab-5c5ada3ec63d> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## opdrachthoudende vereniging met private deelname (IGS)
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/4b8450cf-a326-4c66-9e63-b4ec10acc7f6> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
## OCMW associations
# Note: Loket uses only the general classification code for OCMW associations,
# while OP uses its 5 more specific subtypes
{
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
<http://www.w3.org/ns/org#holds> ?bestuursfunctie ;
?p ?o .
?orgaanInTime <http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie> ?bestuursfunctie ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/cc4e2d67-603b-4784-9b61-e50bac1ec089> .
} => {
?s a <http://data.lblod.info/vocabularies/leidinggevenden/Functionaris> ;
?p ?o .
}.
# Mandatarissen should only be linked to a gemeente, district, provincie or OCMW
# (FOR NOW)
## province
{
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
<http://www.w3.org/ns/org#holds> ?mandate ;
?p ?o .
?orgaanInTime <http://www.w3.org/ns/org#hasPost> ?mandate ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000000> .
} => {
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
?p ?o .
}.
## municipality
{
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
<http://www.w3.org/ns/org#holds> ?mandate ;
?p ?o .
?orgaanInTime <http://www.w3.org/ns/org#hasPost> ?mandate ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000001> .
} => {
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
?p ?o .
}.
## OCMW
{
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
<http://www.w3.org/ns/org#holds> ?mandate ;
?p ?o .
?orgaanInTime <http://www.w3.org/ns/org#hasPost> ?mandate ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002> .
} => {
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
?p ?o .
}.
## district
{
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
<http://www.w3.org/ns/org#holds> ?mandate ;
?p ?o .
?orgaanInTime <http://www.w3.org/ns/org#hasPost> ?mandate ;
<https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan> ?orgaan .
?orgaan <http://data.vlaanderen.be/ns/besluit#bestuurt> ?bestuur .
?bestuur <http://www.w3.org/ns/org#classification> <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000003> .
} => {
?s a <http://data.vlaanderen.be/ns/mandaat#Mandataris> ;
?p ?o .
}.
{
?s a <http://www.w3.org/ns/org#Membership> ;
?p ?o .
} => {
?s a <http://www.w3.org/ns/org#Membership> ;
?p ?o .
}.
{
?s a <http://www.w3.org/ns/prov#Location> ;
?p ?o .
} => {
?s a <http://www.w3.org/ns/prov#Location> ;
?p ?o .
}.

View File

@@ -1,26 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Retract empty strings
{
{
?s ?p ""
} e:becomes {}.
} => {}.

View File

@@ -1,60 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Rijksregisternummer
# Extend identifiers to match OP's model
# <http://example.org/tst#subject> skos:notation "00010100105".
{
?identifier skos:notation ?notation.
?notation string:notEqualIgnoringCase "Rijksregisternummer".
?identifier log:uri ?identifierString.
(?identifierString "STRUCTURED_IDENTIFIER") string:concatenation ?hashInput.
?hashInput crypto:md5 ?uuid.
("http://data.lblod.info/id/gestructureerdeIdentificatoren/" ?uuid) string:concatenation ?structuredIdString.
?structuredIdentifier log:uri ?structuredIdString.
{
?identifier skos:notation ?notation.
} e:becomes {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
}.
} => {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
?structuredIdentifier a generiek:GestructureerdeIdentificator ;
mu:uuid ?uuid ;
generiek:lokaleIdentificator ?notation
}.
# identifier property in the export is only used for RRN.
{
{
?s adms:identifier ?o
} e:becomes {
?s persoon:registratie ?o
}
} => {
?s persoon:registratie ?o
}.

View File

@@ -1,33 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Inverse properties
{
?s org:holds ?o.
} => {
?o org:heldBy ?s.
}.
{
?s org:heldBy ?o.
} => {
?o org:holds ?s.
}.

View File

@@ -1,196 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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 (!)
# Hence the mapping is in two steps.
# The first step maps the DL persoon:gebruikteVoornaam to the OP counterpart
# and drops the DL persoon:gebruikteVoornaam statements with e:becomes
# A second reasoning will map DL foaf:name to OP persoon:gebruikteVoornaam
# Doing both at once would lead all DL foaf:names to incorrectly become foaf:givennames
# in OP
# First name
# persoon:gebruikteVoornaam => foaf:givenName
# Alternatieve voornaam
# foaf:name => persoon:gebruikteVoornaam
# Test Mock DL
# <http://example.org/person> persoon_loket:gebruikteVoornaam "Didier".
{
{
?s persoon_loket:gebruikteVoornaam ?o
} e:becomes {
?s foaf:givenName ?o
}
} => {
?s foaf:givenName ?o
}.
# First name
# persoon:gebruikteVoornaam => foaf:givenName (done in pre-processing)
# Alternatieve voornaam
# foaf:name => persoon:gebruikteVoornaam
# Test Mock LLB
# <http://example.org/person> foaf:name "Didier".
{
{
?s foaf:name ?o
} e:becomes {
?s persoon:gebruikteVoornaam ?o
}
} => {
?s persoon:gebruikteVoornaam ?o
}.
# Test
# ex:s <http://data.vlaanderen.be/ns/mandaat#start> "2019-01-01T19:32:52+00:00"^^xsd:dateTime.
{
?s mandaat:bindingStart ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s mandaat:bindingStart ?startDate
} e:becomes {
?s mandaat:bindingStart ?startDateTime
}.
} => {
?s mandaat:bindingStart ?startDateTime
}.
{
?s mandaat:bindingEinde ?eindeDate.
# use backward arrow rule defined below
?eindeDate :dateTimeFromDate ?eindeDateTime.
{
?s mandaat:bindingEinde ?eindeDate
} e:becomes {
?s mandaat:bindingEinde ?eindeDateTime
}.
} => {
?s mandaat:bindingEinde ?eindeDateTime
}.
{
?s mandaat:start ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s mandaat:start ?startDate
} e:becomes {
?s mandaat:start ?startDateTime
}.
} => {
?s mandaat:start ?startDateTime
}.
{
?s mandaat:einde ?eindeDate.
# use backward arrow rule defined below
?eindeDate :dateTimeFromDate ?eindeDateTime.
{
?s mandaat:einde ?eindeDate
} e:becomes {
?s mandaat:einde ?eindeDateTime
}.
} => {
?s mandaat:einde ?eindeDateTime
}.
{
?s ch:startdatum ?startDate.
# use backward arrow rule defined below
?startDate :dateTimeFromDate ?startDateTime.
{
?s ch:startdatum ?startDate
} e:becomes {
?s ch:startdatum ?startDateTime
}.
} => {
?s ch:startdatum ?startDateTime
}.
{
?s ch:eindedatum ?endDate.
# use backward arrow rule defined below
?endDate :dateTimeFromDate ?endDateTime.
{
?s ch:eindedatum ?endDate
} e:becomes {
?s ch:eindedatum ?endDateTime
}.
} => {
?s ch:eindedatum ?endDateTime
}.
# Backward arrow rule is like a function call.
# Removes the timezone indicator "Z" from incoming datetimes
# To make sure all datetimes have the same convention we now save them as
# datetime without the timezone indicator
# We use "T02:00:00" as time indicator to work around a virtuoso bug that
# results in datetimes being converted to a date when using "T00:00:00"
{
?date :dateTimeFromDate ?dateTime
}
<=
{
( ?date 1 10 ) string:substring ?dateSolo .
(?dateSolo "T02:00:00") string:concatenation ?datePlusTime.
(?datePlusTime xsd:dateTime) log:dtlit ?dateTime .
}.
# ex:orgA besluit:classificatie <http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/5ab0e9b8a3b2ca7c5e000002>.
{
{
?s besluit:classificatie ?o
} e:becomes {
?s org:classification ?o
}
} => {
?s org:classification ?o
}.
# fix typo V -> v
# <http://data.lblod.info/id/adressen/606D972BC20E70000900001C> <https://data.vlaanderen.be/ns/adres#AdresVoorstelling.huisnummer> "1" .
{
{
?s adres:AdresVoorstelling.huisnummer ?o
} e:becomes {
?s adres:Adresvoorstelling.huisnummer ?o
}
} => {
?s adres:Adresvoorstelling.huisnummer ?o
}.
# Tijdspecialisatie
{
{
?s mandaat:isTijdspecialisatieVan ?o.
} e:becomes {
?s generiek:isTijdspecialisatieVan ?o.
}
} => {
?s generiek:isTijdspecialisatieVan ?o.
}.

View File

@@ -1,524 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Map from http persoon to https persoon namespace.
## classes:
{
{
?s a persoon_loket:Afstamming
} e:becomes {
?s a persoon:Afstamming
}
} => {
?s a persoon:Afstamming
}.
{
{
?s a persoon_loket:BurgerlijkeStaat
} e:becomes {
?s a persoon:BurgerlijkeStaat
}
} => {
?s a persoon:BurgerlijkeStaat
}.
{
{
?s a persoon_loket:Domicilie
} e:becomes {
?s a persoon:Domicilie
}
} => {
?s a persoon:Domicilie
}.
{
{
?s a persoon_loket:Geboorte
} e:becomes {
?s a persoon:Geboorte
}
} => {
?s a persoon:Geboorte
}.
{
{
?s a persoon_loket:GeenInwoner
} e:becomes {
?s a persoon:GeenInwoner
}
} => {
?s a persoon:GeenInwoner
}.
{
{
?s a persoon_loket:GeregistreerdPersoon
} e:becomes {
?s a persoon:GeregistreerdPersoon
}
} => {
?s a persoon:GeregistreerdPersoon
}.
{
{
?s a persoon_loket:Gezin
} e:becomes {
?s a persoon:Gezin
}
} => {
?s a persoon:Gezin
}.
{
{
?s a persoon_loket:Gezinsrelatie
} e:becomes {
?s a persoon:Gezinsrelatie
}
} => {
?s a persoon:Gezinsrelatie
}.
{
{
?s a persoon_loket:Huwelijk
} e:becomes {
?s a persoon:Huwelijk
}
} => {
?s a persoon:Huwelijk
}.
{
{
?s a persoon_loket:Inwoner
} e:becomes {
?s a persoon:Inwoner
}
} => {
?s a persoon:Inwoner
}.
{
{
?s a persoon_loket:Inwonerschap
} e:becomes {
?s a persoon:Inwonerschap
}
} => {
?s a persoon:Inwonerschap
}.
{
{
?s a persoon_loket:Nationaliteit
} e:becomes {
?s a persoon:Nationaliteit
}
} => {
?s a persoon:Nationaliteit
}.
{
{
?s a persoon_loket:Overlijden
} e:becomes {
?s a persoon:Overlijden
}
} => {
?s a persoon:Overlijden
}.
{
{
?s a persoon_loket:PermanentInwoner
} e:becomes {
?s a persoon:PermanentInwoner
}
} => {
?s a persoon:PermanentInwoner
}.
{
{
?s a persoon_loket:Persoonsgebeurtenis
} e:becomes {
?s a persoon:Persoonsgebeurtenis
}
} => {
?s a persoon:Persoonsgebeurtenis
}.
{
{
?s a persoon_loket:Persoonsrelatie
} e:becomes {
?s a persoon:Persoonsrelatie
}
} => {
?s a persoon:Persoonsrelatie
}.
{
{
?s a persoon_loket:Samenwonen
} e:becomes {
?s a persoon:Samenwonen
}
} => {
?s a persoon:Samenwonen
}.
{
{
?s a persoon_loket:Staatsburger
} e:becomes {
?s a persoon:Staatsburger
}
} => {
?s a persoon:Staatsburger
}.
{
{
?s a persoon_loket:Staatsburgerschap
} e:becomes {
?s a persoon:Staatsburgerschap
}
} => {
?s a persoon:Staatsburgerschap
}.
{
{
?s a persoon_loket:TijdelijkInwoner
} e:becomes {
?s a persoon:TijdelijkInwoner
}
} => {
?s a persoon:TijdelijkInwoner
}.
{
{
?s a persoon_loket:Verblijfplaats
} e:becomes {
?s a persoon:Verblijfplaats
}
} => {
?s a persoon:Verblijfplaats
}.
{
{
?s a persoon_loket:Voogdij
} e:becomes {
?s a persoon:Voogdij
}
} => {
?s a persoon:Voogdij
}.
{
{
?s a persoon_loket:Vreemdeling
} e:becomes {
?s a persoon:Vreemdeling
}
} => {
?s a persoon:Vreemdeling
}.
## properties
{
{
?s persoon_loket:afstammingsType ?o
} e:becomes {
?s persoon:afstammingsType ?o
}
} => {
?s persoon:afstammingsType ?o
}.
{
{
?s persoon_loket:alternatieveNaam ?o
} e:becomes {
?s persoon:alternatieveNaam ?o
}
} => {
?s persoon:alternatieveNaam ?o
}.
{
{
?s persoon_loket:datum ?o
} e:becomes {
?s persoon:datum ?o
}
} => {
?s persoon:datum ?o
}.
{
{
?s persoon_loket:datumVanAfstamming ?o
} e:becomes {
?s persoon:datumVanAfstamming ?o
}
} => {
?s persoon:datumVanAfstamming ?o
}.
{
{
?s persoon_loket:geslacht ?o
} e:becomes {
?s persoon:geslacht ?o
}
} => {
?s persoon:geslacht ?o
}.
{
{
?s persoon_loket:gezinsadres ?o
} e:becomes {
?s persoon:gezinsadres ?o
}
} => {
?s persoon:gezinsadres ?o
}.
{
{
?s persoon_loket:gezinsrelatietype ?o
} e:becomes {
?s persoon:gezinsrelatietype ?o
}
} => {
?s persoon:gezinsrelatietype ?o
}.
{
{
?s persoon_loket:heeftBurgerlijkeStaat ?o
} e:becomes {
?s persoon:heeftBurgerlijkeStaat ?o
}
} => {
?s persoon:heeftBurgerlijkeStaat ?o
}.
{
{
?s persoon_loket:heeftGeboorte ?o
} e:becomes {
?s persoon:heeftGeboorte ?o
}
} => {
?s persoon:heeftGeboorte ?o
}.
{
{
?s persoon_loket:heeftInwonerschap ?o
} e:becomes {
?s persoon:heeftInwonerschap ?o
}
} => {
?s persoon:heeftInwonerschap ?o
}.
{
{
?s persoon_loket:heeftNationaliteit ?o
} e:becomes {
?s persoon:heeftNationaliteit ?o
}
} => {
?s persoon:heeftNationaliteit ?o
}.
{
{
?s persoon_loket:heeftOverlijden ?o
} e:becomes {
?s persoon:heeftOverlijden ?o
}
} => {
?s persoon:heeftOverlijden ?o
}.
{
{
?s persoon_loket:heeftPersoonsrelatie ?o
} e:becomes {
?s persoon:heeftPersoonsrelatie ?o
}
} => {
?s persoon:heeftPersoonsrelatie ?o
}.
{
{
?s persoon_loket:heeftStaatsburgerschap ?o
} e:becomes {
?s persoon:heeftStaatsburgerschap ?o
}
} => {
?s persoon:heeftStaatsburgerschap ?o
}.
{
{
?s persoon_loket:heeftVerblijfplaats ?o
} e:becomes {
?s persoon:heeftVerblijfplaats ?o
}
} => {
?s persoon:heeftVerblijfplaats ?o
}.
{
{
?s persoon_loket:Inwonerschap.binnenJurisdictie ?o
} e:becomes {
?s persoon:Inwonerschap.binnenJurisdictie ?o
}
} => {
?s persoon:Inwonerschap.binnenJurisdictie ?o
}.
{
{
?s persoon_loket:isHoofdVan ?o
} e:becomes {
?s persoon:isHoofdVan ?o
}
} => {
?s persoon:isHoofdVan ?o
}.
{
{
?s persoon_loket:isLidVan ?o
} e:becomes {
?s persoon:isLidVan ?o
}
} => {
?s persoon:isLidVan ?o
}.
{
{
?s persoon_loket:isRelatieMet ?o
} e:becomes {
?s persoon:isRelatieMet ?o
}
} => {
?s persoon:isRelatieMet ?o
}.
{
{
?s persoon_loket:land ?o
} e:becomes {
?s persoon:land ?o
}
} => {
?s persoon:land ?o
}.
{
{
?s persoon_loket:nationaliteit ?o
} e:becomes {
?s persoon:nationaliteit ?o
}
} => {
?s persoon:nationaliteit ?o
}.
{
{
?s persoon_loket:plaats ?o
} e:becomes {
?s persoon:plaats ?o
}
} => {
?s persoon:plaats ?o
}.
{
{
?s persoon_loket:registratie ?o
} e:becomes {
?s persoon:registratie ?o
}
} => {
?s persoon:registratie ?o
}.
{
{
?s persoon_loket:Staatsburgerschap.binnenJurisdictie ?o
} e:becomes {
?s persoon:Staatsburgerschap.binnenJurisdictie ?o
}
} => {
?s persoon:Staatsburgerschap.binnenJurisdictie ?o
}.
{
{
?s persoon_loket:type ?o
} e:becomes {
?s persoon:type ?o
}
} => {
?s persoon:type ?o
}.
{
{
?s persoon_loket:verblijfsadres ?o
} e:becomes {
?s persoon:verblijfsadres ?o
}
} => {
?s persoon:verblijfsadres ?o
}.
{
{
?s persoon_loket:volledigeNaam ?o
} e:becomes {
?s persoon:volledigeNaam ?o
}
} => {
?s persoon:volledigeNaam ?o
}.

View File

@@ -1,90 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://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#>
# Rijksregisternummer
# Extend identifiers to match OP's model
# <http://example.org/tst#subject> skos:notation "00010100105".
{
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
?structuredIdentifier a generiek:GestructureerdeIdentificator ;
mu:uuid ?uuid ;
generiek:lokaleIdentificator ?notation
} => {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
?structuredIdentifier a generiek:GestructureerdeIdentificator ;
mu:uuid ?uuid ;
generiek:lokaleIdentificator ?notation
}.
# identifier property in the export is only used for RRN.
{
?s persoon:registratie ?o
} => {
?s persoon:registratie ?o
}.
{
?s a <http://www.w3.org/ns/adms#Identifier>
} => {
?s a <http://www.w3.org/ns/adms#Identifier>
}.
# Nationality
{
?s persoon:heeftNationaliteit ?o
} => {
?s persoon:heeftNationaliteit ?o
}.
# Birth and related attributes
{
?s a persoon:Geboorte;
?p ?o.
} => {
?s a persoon:Geboorte;
?p ?o.
}.
{
?s persoon:heeftGeboorte ?o
} => {
?s persoon:heeftGeboorte ?o
}.
{
?s persoon:datum ?o
} => {
?s persoon:datum ?o
}.
# Gender
{
?s persoon:geslacht ?o
} => {
?s persoon:geslacht ?o
}.

View File

@@ -1,27 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Retract empty strings
{
{
?s ?p ""
} e:becomes {}.
} => {}.

View File

@@ -1,62 +0,0 @@
PREFIX : <#>
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 crypto: <http://www.w3.org/2000/10/swap/crypto#>
PREFIX e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>
PREFIX ex: <http://example.org/test#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX func: <http://www.w3.org/2007/rif-builtin-function#>
PREFIX generiek: <https://data.vlaanderen.be/ns/generiek#>
PREFIX log: <http://www.w3.org/2000/10/swap/log#>
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX mu: <http://mu.semte.ch/vocabularies/core/>
PREFIX org: <http://www.w3.org/ns/org#>
PREFIX persoon: <https://data.vlaanderen.be/ns/persoon#>
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#>
# Rijksregisternummer
# Extend identifiers to match OP's model
# <http://example.org/tst#subject> skos:notation "00010100105".
{
?identifier skos:notation ?notation.
?notation string:notEqualIgnoringCase "Rijksregisternummer".
?identifier log:uri ?identifierString.
(?identifierString "STRUCTURED_IDENTIFIER") string:concatenation ?hashInput.
?hashInput crypto:md5 ?uuid.
("http://data.lblod.info/id/gestructureerdeIdentificatoren/" ?uuid) string:concatenation ?structuredIdString.
?structuredIdentifier log:uri ?structuredIdString.
{
?identifier skos:notation ?notation.
} e:becomes {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
}.
} => {
?identifier
generiek:gestructureerdeIdentificator ?structuredIdentifier ;
skos:notation "Rijksregisternummer" .
?structuredIdentifier a generiek:GestructureerdeIdentificator ;
mu:uuid ?uuid ;
generiek:lokaleIdentificator ?notation
}.
# identifier property in the export is only used for RRN.
{
{
?s adms:identifier ?o
} e:becomes {
?s persoon:registratie ?o
}
} => {
?s persoon:registratie ?o
}.

View File

@@ -29,7 +29,8 @@
"code": "http://lblod.data.gift/vocabularies/organisatie/",
"ext": "http://mu.semte.ch/vocabularies/ext/",
"geo": "http://www.opengis.net/ont/geosparql#",
"nacebel": "http://data.gift/vocabularies/nace-bel/"
"nacebel": "http://data.gift/vocabularies/nace-bel/",
"time": "http://www.w3.org/2006/time#"
},
"resources": {
"agents": {
@@ -439,36 +440,15 @@
"target": "posts",
"cardinality": "many"
},
"associated-organizations": {
"predicate": "org:linkedTo",
"target": "organizations",
"cardinality": "many"
},
"sub-organizations": {
"predicate": "org:hasSubOrganization",
"target": "organizations",
"cardinality": "many"
},
"is-associated-with": {
"predicate": "org:linkedTo",
"target": "organizations",
"cardinality": "one",
"memberships-of-organizations": {
"predicate": "org:member",
"target": "memberships",
"cardinality": "many",
"inverse": true
},
"is-sub-organization-of": {
"predicate": "org:hasSubOrganization",
"target": "organizations",
"cardinality": "one",
"inverse": true
},
"founded-organizations": {
"predicate": "ext:isFounderOfOrganization",
"target": "organizations",
"cardinality": "many"
},
"was-founded-by-organizations": {
"predicate": "ext:isFounderOfOrganization",
"target": "organizations",
"memberships": {
"predicate": "org:organization",
"target": "memberships",
"cardinality": "many",
"inverse": true
},
@@ -482,17 +462,6 @@
"target": "nace-bel-codes",
"cardinality": "many"
},
"participates-in": {
"predicate": "org:memberOf",
"target": "organizations",
"cardinality": "many"
},
"has-participants": {
"predicate": "org:memberOf",
"target": "organizations",
"cardinality": "many",
"inverse": true
},
"kbo-organization": {
"predicate": "owl:sameAs",
"target": "kbo-organizations",
@@ -862,6 +831,68 @@
},
"new-resource-base": "http://data.lblod.info/id/vestigingen/"
},
"memberships": {
"class": "org:Membership",
"relationships": {
"member": {
"predicate": "org:member",
"target": "organizations",
"cardinality": "one"
},
"organization": {
"predicate": "org:organization",
"target": "organizations",
"cardinality": "one"
},
"role": {
"predicate": "org:role",
"target": "membership-roles",
"cardinality": "one"
},
"during": {
"predicate": "euro:memberDuring",
"target": "period-of-time",
"cardinality": "one"
}
},
"new-resource-base": "http://data.lblod.info/id/lidmaatschap/"
},
"membership-roles": {
"class": "org:Role",
"attributes": {
"label": {
"predicate": "skos:prefLabel",
"type": "string"
}
},
"relationships": {
"top-concept-of": {
"predicate": "skos:topConceptOf",
"target": "concepts",
"cardinality": "one"
},
"has-broader-role": {
"predicate": "skos:broader",
"target": "membership-roles",
"cardinality": "one"
}
},
"new-resource-base": "http://data.lblod.info/id/rollen/"
},
"period-of-time": {
"class": "time:ProperInterval",
"attributes": {
"start-date": {
"predicate": "time:hasBeginning",
"type": "datetime"
},
"end-date": {
"predicate": "time:hasEnd",
"type": "datetime"
}
},
"new-resource-base": "http://data.lblod.info/id/periode/"
},
"concepts": {
"class": "skos:Concept",
"attributes": {

View File

@@ -92,22 +92,18 @@
"http://data.lblod.info/vocabularies/erediensten/EredienstMandataris"
],
"properties": {
"given_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/givenName"
],
"person_id": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"person_uuid": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"family_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/familyName"
],
"given_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/givenName"
],
"first_name_used": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam"
@@ -135,24 +131,6 @@
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_municipality": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"organization_province": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"position_id": [
"http://www.w3.org/ns/org#holds",
"http://www.w3.org/ns/org#role",
@@ -166,6 +144,14 @@
},
"mappings": {
"properties": {
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"family_name": {
"type": "text",
"fields": {
@@ -175,14 +161,6 @@
}
}
},
"id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
@@ -192,6 +170,18 @@
}
}
},
"first_name_used": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
},
"organization_id": {
"type": "text"
},
@@ -204,15 +194,6 @@
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
@@ -222,15 +203,6 @@
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
@@ -242,9 +214,6 @@
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
@@ -254,22 +223,18 @@
"on_path": "functionaries",
"rdf_type": "http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
"properties": {
"given_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/givenName"
],
"person_id": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"person_uuid": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"family_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/familyName"
],
"given_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/givenName"
],
"first_name_used": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam"
@@ -297,24 +262,6 @@
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_municipality": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"organization_province": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"position_id": [
"http://www.w3.org/ns/org#holds",
"http://www.w3.org/ns/org#role",
@@ -328,6 +275,14 @@
},
"mappings": {
"properties": {
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"family_name": {
"type": "text",
"fields": {
@@ -337,14 +292,6 @@
}
}
},
"id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
@@ -354,6 +301,18 @@
}
}
},
"first_name_used": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
},
"organization_id": {
"type": "text"
},
@@ -366,15 +325,6 @@
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
@@ -384,15 +334,6 @@
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
@@ -404,9 +345,6 @@
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
@@ -419,22 +357,18 @@
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie"
],
"properties": {
"given_name": [
"http://www.w3.org/ns/org#heldBy",
"http://xmlns.com/foaf/0.1/givenName"
],
"person_id": [
"http://www.w3.org/ns/org#heldBy",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"person_uuid": [
"http://www.w3.org/ns/org#heldBy",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"family_name": [
"http://www.w3.org/ns/org#heldBy",
"http://xmlns.com/foaf/0.1/familyName"
],
"given_name": [
"http://www.w3.org/ns/org#heldBy",
"http://xmlns.com/foaf/0.1/givenName"
],
"first_name_used": [
"http://www.w3.org/ns/org#heldBy",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam"
@@ -456,20 +390,6 @@
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_municipality": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"organization_province": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"position_id": [
"http://www.w3.org/ns/org#holds",
"http://data.lblod.info/vocabularies/erediensten/functie",
@@ -483,6 +403,14 @@
},
"mappings": {
"properties": {
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"family_name": {
"type": "text",
"fields": {
@@ -492,14 +420,6 @@
}
}
},
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
@@ -509,6 +429,18 @@
}
}
},
"first_name_used": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
},
"organization_id": {
"type": "text"
},
@@ -521,15 +453,6 @@
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
@@ -539,15 +462,6 @@
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
@@ -559,9 +473,6 @@
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
@@ -571,14 +482,6 @@
"composite_types": ["minister", "functionary", "mandatory"],
"on_path": "people",
"properties": [
{
"name": "given_name",
"mappings": {
"minister": "given_name",
"functionary": "given_name",
"mandatory": "given_name"
}
},
{
"name": "person_id",
"mappings": {
@@ -595,6 +498,14 @@
"mandatory": "family_name"
}
},
{
"name": "given_name",
"mappings": {
"minister": "given_name",
"functionary": "given_name",
"mandatory": "given_name"
}
},
{
"name": "first_name_used",
"mappings": {
@@ -635,22 +546,6 @@
"mandatory": "organization_name"
}
},
{
"name": "organization_municipality",
"mappings": {
"minister": "organization_municipality",
"functionary": "organization_municipality",
"mandatory": "organization_municipality"
}
},
{
"name": "organization_province",
"mappings": {
"minister": "organization_province",
"functionary": "organization_province",
"mandatory": "organization_province"
}
},
{
"name": "position_id",
"mappings": {
@@ -670,6 +565,14 @@
],
"mappings": {
"properties": {
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"family_name": {
"type": "text",
"fields": {
@@ -679,14 +582,6 @@
}
}
},
"id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
@@ -696,6 +591,18 @@
}
}
},
"first_name_used": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
},
"organization_id": {
"type": "text"
},
@@ -708,15 +615,6 @@
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
@@ -726,15 +624,6 @@
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
@@ -746,9 +635,6 @@
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
@@ -810,12 +696,6 @@
},
"mappings": {
"properties": {
"classification_id": {
"type": "text"
},
"recognized_worship_type_id": {
"type": "text"
},
"name": {
"type": "text",
"fields": {
@@ -843,6 +723,9 @@
}
}
},
"classification_id": {
"type": "text"
},
"classification_name": {
"type": "text",
"fields": {
@@ -861,6 +744,12 @@
}
}
},
"status_id": {
"type": "text"
},
"recognized_worship_type_id": {
"type": "text"
},
"recognized_worship_type_name": {
"type": "text",
"fields": {

View File

@@ -1,877 +0,0 @@
{
"automatic_index_updates": true,
"persist_indexes": true,
"number_of_threads": 8,
"eager_indexing_groups": [
[
{
"variables": [],
"name": "acmidm-worship-editeerder"
},
{
"variables": [],
"name": "clean"
},
{
"variables": [],
"name": "public"
}
],
[
{
"variables": [],
"name": "acmidm-editeerder"
},
{
"variables": [],
"name": "clean"
},
{
"variables": [],
"name": "public"
}
]
],
"default_settings": {
"analysis": {
"normalizer": {
"custom_sort_normalizer": {
"type": "custom",
"char_filter": [],
"filter": ["lowercase", "trim", "asciifolding"]
},
"identifier_normalizer": {
"type": "custom",
"char_filter": ["identifier_alphanumeric_filter"],
"filter": ["lowercase", "trim", "asciifolding"]
}
},
"char_filter": {
"identifier_alphanumeric_filter": {
"type": "pattern_replace",
"pattern": "[^a-zA-Z0-9]",
"replacement": ""
}
}
}
},
"types": [
{
"type": "mandatory",
"on_path": "mandatories",
"rdf_type": [
"http://data.vlaanderen.be/ns/mandaat#Mandataris",
"http://data.lblod.info/vocabularies/erediensten/EredienstMandataris"
],
"properties": {
"given_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/givenName"
],
"person_id": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"person_uuid": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"family_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/familyName"
],
"first_name_used": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam"
],
"end_date": "http://data.vlaanderen.be/ns/mandaat#einde",
"organization_id": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"organization_classification": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_name": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_municipality": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"organization_province": [
"http://www.w3.org/ns/org#holds",
"^http://www.w3.org/ns/org#hasPost",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"position_id": [
"http://www.w3.org/ns/org#holds",
"http://www.w3.org/ns/org#role",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"position_name": [
"http://www.w3.org/ns/org#holds",
"http://www.w3.org/ns/org#role",
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
"mappings": {
"properties": {
"family_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_id": {
"type": "text"
},
"organization_classification": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
"position_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
},
{
"type": "functionary",
"on_path": "functionaries",
"rdf_type": "http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
"properties": {
"given_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/givenName"
],
"person_id": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"person_uuid": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"family_name": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"http://xmlns.com/foaf/0.1/familyName"
],
"first_name_used": [
"http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam"
],
"end_date": "http://data.vlaanderen.be/ns/mandaat#einde",
"organization_id": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"organization_classification": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_name": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_municipality": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"organization_province": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/leidinggevenden/heeftBestuursfunctie",
"https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://data.vlaanderen.be/ns/besluit#bestuurt",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"position_id": [
"http://www.w3.org/ns/org#holds",
"http://www.w3.org/ns/org#role",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"position_name": [
"http://www.w3.org/ns/org#holds",
"http://www.w3.org/ns/org#role",
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
"mappings": {
"properties": {
"family_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_id": {
"type": "text"
},
"organization_classification": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
"position_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
},
{
"type": "minister",
"on_path": "ministers",
"rdf_type": [
"http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
"http://data.lblod.info/vocabularies/contacthub/AgentInPositie"
],
"properties": {
"given_name": [
"http://www.w3.org/ns/org#heldBy",
"http://xmlns.com/foaf/0.1/givenName"
],
"person_id": [
"http://www.w3.org/ns/org#heldBy",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"person_uuid": [
"http://www.w3.org/ns/org#heldBy",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"family_name": [
"http://www.w3.org/ns/org#heldBy",
"http://xmlns.com/foaf/0.1/familyName"
],
"first_name_used": [
"http://www.w3.org/ns/org#heldBy",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam"
],
"end_date": "http://data.lblod.info/vocabularies/contacthub/eindedatum",
"organization_id": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"organization_classification": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_name": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"organization_municipality": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"organization_province": [
"http://www.w3.org/ns/org#holds",
"^http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"position_id": [
"http://www.w3.org/ns/org#holds",
"http://data.lblod.info/vocabularies/erediensten/functie",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"position_name": [
"http://www.w3.org/ns/org#holds",
"http://data.lblod.info/vocabularies/erediensten/functie",
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
"mappings": {
"properties": {
"family_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword"
}
}
},
"given_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_id": {
"type": "text"
},
"organization_classification": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
"position_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
},
{
"type": "person",
"composite_types": ["minister", "functionary", "mandatory"],
"on_path": "people",
"properties": [
{
"name": "given_name",
"mappings": {
"minister": "given_name",
"functionary": "given_name",
"mandatory": "given_name"
}
},
{
"name": "person_id",
"mappings": {
"minister": "person_id",
"functionary": "person_id",
"mandatory": "person_id"
}
},
{
"name": "family_name",
"mappings": {
"minister": "family_name",
"functionary": "family_name",
"mandatory": "family_name"
}
},
{
"name": "first_name_used",
"mappings": {
"minister": "first_name_used",
"functionary": "first_name_used",
"mandatory": "first_name_used"
}
},
{
"name": "end_date",
"mappings": {
"minister": "end_date",
"functionary": "end_date",
"mandatory": "end_date"
}
},
{
"name": "organization_id",
"mappings": {
"minister": "organization_id",
"functionary": "organization_id",
"mandatory": "organization_id"
}
},
{
"name": "organization_classification",
"mappings": {
"minister": "organization_classification",
"functionary": "organization_classification",
"mandatory": "organization_classification"
}
},
{
"name": "organization_name",
"mappings": {
"minister": "organization_name",
"functionary": "organization_name",
"mandatory": "organization_name"
}
},
{
"name": "organization_municipality",
"mappings": {
"minister": "organization_municipality",
"functionary": "organization_municipality",
"mandatory": "organization_municipality"
}
},
{
"name": "organization_province",
"mappings": {
"minister": "organization_province",
"functionary": "organization_province",
"mandatory": "organization_province"
}
},
{
"name": "position_id",
"mappings": {
"minister": "position_id",
"functionary": "position_id",
"mandatory": "position_id"
}
},
{
"name": "position_name",
"mappings": {
"minister": "position_name",
"functionary": "position_name",
"mandatory": "position_name"
}
}
],
"mappings": {
"properties": {
"family_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"person_id": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"given_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_id": {
"type": "text"
},
"organization_classification": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"organization_municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"position_id": {
"type": "text"
},
"position_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"end_date": {
"type": "date"
}
}
}
},
{
"type": "organization",
"on_path": "organizations",
"rdf_type": [
"http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
"http://data.lblod.info/vocabularies/erediensten/EredienstBestuurseenheid",
"http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
"http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
"http://www.w3.org/ns/regorg#RegisteredOrganization"
],
"properties": {
"name": "http://www.w3.org/2004/02/skos/core#prefLabel",
"legal_name": "http://www.w3.org/ns/regorg#legalName",
"alternative_name": "http://www.w3.org/2004/02/skos/core#altLabel",
"classification_id": [
"http://www.w3.org/ns/org#classification",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"classification_name": [
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"status": [
"http://www.w3.org/ns/regorg#orgStatus",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"status_id": [
"http://www.w3.org/ns/regorg#orgStatus",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"recognized_worship_type_id": [
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
"http://mu.semte.ch/vocabularies/core/uuid"
],
"recognized_worship_type_name": [
"http://data.lblod.info/vocabularies/erediensten/typeEredienst",
"http://www.w3.org/2004/02/skos/core#prefLabel"
],
"province": [
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"http://www.w3.org/ns/locn#adminUnitL2"
],
"municipality": [
"http://www.w3.org/ns/org#hasPrimarySite",
"https://data.vlaanderen.be/ns/organisatie#bestaatUit",
"https://data.vlaanderen.be/ns/adres#gemeentenaam"
],
"identifier": [
"http://www.w3.org/ns/adms#identifier",
"https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator",
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
]
},
"mappings": {
"properties": {
"classification_id": {
"type": "text"
},
"recognized_worship_type_id": {
"type": "text"
},
"name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"legal_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"alternative_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"classification_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"status": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"recognized_worship_type_name": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"province": {
"type": "text",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"municipality": {
"type": "keyword",
"fields": {
"field": {
"type": "keyword",
"normalizer": "custom_sort_normalizer"
}
}
},
"identifier": {
"type": "text",
"fields": {
"index": {
"type": "keyword",
"normalizer": "identifier_normalizer"
}
}
}
}
}
}
]
}

View File

@@ -23,6 +23,8 @@ services:
restart: "no"
cache:
restart: "no"
db-cleanup:
restart: "no"
kalliope-api:
environment:
SECURITY_CONFIG_PATH: "/config/security-dev.json"
@@ -56,8 +58,6 @@ services:
restart: "no"
search:
restart: "no"
volumes:
- ./config/search/dev:/config
elasticsearch:
restart: "no"
file:

View File

@@ -8,7 +8,7 @@ x-logging: &default-logging
services:
identifier:
image: semtech/mu-identifier:1.10.1
image: semtech/mu-identifier:1.10.3
environment:
DEFAULT_MU_AUTH_ALLOWED_GROUPS_HEADER: '[{"variables":[],"name":"public"}]'
SESSION_COOKIE_SECURE: "on"
@@ -51,8 +51,17 @@ services:
- "logging=true"
restart: always
logging: *default-logging
db-cleanup:
image: lblod/db-cleanup-service:0.5.1
environment:
MU_SPARQL_ENDPOINT: "http://db:8890/sparql"
CRON_PATTERN: "23 */6 * * *"
labels:
- "logging=true"
restart: always
logging: *default-logging
migrations:
image: semtech/mu-migrations-service:0.7.0
image: semtech/mu-migrations-service:0.9.0
links:
- triplestore:database
volumes:
@@ -62,7 +71,7 @@ services:
restart: always
logging: *default-logging
migrations-triggering-indexing:
image: semtech/mu-migrations-service:0.8.0
image: semtech/mu-migrations-service:0.9.0
links:
- db:database
volumes:
@@ -183,6 +192,7 @@ services:
volumes:
- ./config/frontend/add-x-frame-options-header.conf:/config/add-x-frame-options.conf
environment:
EMBER_ENABLE_EDIT_CONTACT_DATA_FEATURE: "true"
EMBER_OAUTH_API_REDIRECT_URL: "https://organisaties.abb.lblod.info/authorization/callback"
EMBER_OAUTH_API_KEY: "677af572-2e2f-4e61-ad38-036723bb314c"
EMBER_OAUTH_API_BASE_URL: "https://authenticatie-ti.vlaanderen.be/op/v1/auth"
@@ -201,7 +211,7 @@ services:
restart: always
logging: *default-logging
file:
image: semtech/mu-file-service:3.2.0
image: semtech/mu-file-service:3.4.0
volumes:
- ./data/files:/share
links:
@@ -256,24 +266,13 @@ services:
restart: always
logging: *default-logging
construct-organization-relationships:
image: lblod/construct-organization-relationships-service:1.0.1
environment:
START_DATE_WORSHIP_GOVERNING_BODY: "2023-04-01T00:00:00"
END_DATE_WORSHIP_GOVERNING_BODY: "2026-03-31T00:00:00"
image: lblod/construct-organization-relationships-service:1.0.3
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
reasoner:
image: eyereasoner/reasoning-service:1.0.4
volumes:
- ./config/reasoner:/config
labels:
- "logging=true"
restart: always
logging: *default-logging
report-generation:
image: lblod/loket-report-generation-service:0.7.0
environment:
@@ -439,6 +438,8 @@ services:
image: lblod/delta-consumer:0.1.1
environment:
DCR_SYNC_BASE_URL: "https://loket.lblod.info/"
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login"
DCR_SECRET_KEY: "<override with secret key>"
DCR_SERVICE_NAME: "worship-services-main-info-consumer"
DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/WorshipServicesSensitiveCacheGraphDump"
DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/wsSensitive/main"
@@ -472,6 +473,8 @@ services:
image: lblod/delta-consumer:0.1.1
environment:
DCR_SYNC_BASE_URL: "https://loket.lblod.info/"
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/worship-services-sensitive/login"
DCR_SECRET_KEY: "<override with secret key>"
DCR_SERVICE_NAME: "worship-services-private-info-consumer"
DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/WorshipServicesSensitiveCacheGraphDump"
DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/wsSensitive/private"
@@ -501,37 +504,6 @@ 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
################################################################################
@@ -570,7 +542,7 @@ services:
# MU SEARCH
################################################################################
search:
image: semtech/mu-search:0.10.0-beta.5
image: semtech/mu-search:0.10.0
links:
- db:database
restart: always

View File

@@ -1,11 +1,19 @@
#!/bin/bash
version=$(docker compose version)
if [ $? -eq 0 ]; then
DRC_COMMAND="docker compose"
else
DRC_COMMAND="docker-compose"
fi
echo "warning this will run queries on the triplestore and delete containers, you have 3 seconds to press ctrl+c"
sleep 3
docker-compose rm -fs elasticsearch search
eval "$DRC_COMMAND rm -fs elasticsearch search"
sudo rm -rf data/elasticsearch/
docker-compose exec -T triplestore isql-v <<EOF
eval "$DRC_COMMAND exec -T triplestore isql-v <<EOF
SPARQL DELETE WHERE { GRAPH <http://mu.semte.ch/authorization> { ?s ?p ?o. } };
exec('checkpoint');
exit;
EOF
docker-compose up -d --remove-orphan
EOF"
eval "$DRC_COMMAND up -d --remove-orphans"