Merge branch 'development' into internal/remove-organizations-public-info-producer

This commit is contained in:
Boris De Vloed
2026-02-03 09:49:56 +01:00
committed by GitHub
21 changed files with 7077 additions and 13 deletions

View File

@@ -1 +0,0 @@
COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml

View File

@@ -6,9 +6,6 @@
### Deploy instructions
```
# cleanup job
drc restart migrations
drc exec db-cleanup curl -X GET "http://localhost/runCronJob?cronJobID=8ffd9f11-db25-430d-a66a-31fc8b393d5f"
# removing producer
drc restart dispatcher delta-producer-dump-file-publisher delta-producer-background-jobs-initiator delta-producer-publication-graph-maintainer jobs-controller
drc up -d publication-triplestore-migrations
@@ -16,6 +13,113 @@ rm -r data/files/deltas/organizations-public-info
rm -r data/files/delta-producer-dumps/dump-organizations-public-info
```
### Deploy instructions
## 1.38.1 (2026-01-30)
### General
- Bump frontend to v1.36.3 [OP-3428]
- [OP-3720]: Delta background job having errors/getting stuck, send an email
### Deploy instructions
#### For error-alert and deliver-email-service
Per environment a specfic configuration for the email service similar to loket config.
Ask colleague for specfic credentials.
```
deliver-email-service:
environment:
EMAIL_PROTOCOL: "smtp"
#WELL_KNOWN_SERVICE: "smtp"
EMAIL_HOST: "Fill in Email host adress"
EMAIL_ADDRESS: "Fill in email"
EMAIL_PASSWORD: "Fill in email password"
EMAIL_PORT: "Fill in port"
SECURE_CONNECTION: "true"
EMAIL_CRON_PATTERN: "*/1 * * * *"
restart: "no"
error-alert:
environment:
EMAIL_FROM: "Fill in email adress of sender
EMAIL_TO: "Fill in email adress of receiver"
```
#### Deploy instructions
```
drc restart migrations deltanotifier
drc up -d error-alert deliver-email-service frontend
```
## 1.38.0 (2026-01-08)
### General
- [OP-3590]: OP is now master of "aantal houders" of mandates
- [OP-3699]: Update aantal houders for some mandates Hasselt and Antwerp
- [OP-3680]: Indicate whether a worship service is a customer of ReligioPoint or Loket voor Lokale Besturen
- Bump frontend to v1.36.2 [OP-3623] [OP-3681] [OP-3703] [OP-2712]
### Deploy instructions
#### For the vendor-management-consumer
Per environment a slightly different configuration is needed. Update the `docker-compose.override.yml` accordingly.
##### development
```
vendor-management-consumer:
environment:
DCR_SYNC_BASE_URL: "https://dev.loket.lblod.info/"
DCR_SYNC_LOGIN_ENDPOINT: "https://dev.loket.lblod.info/sync/vendor-management/login" # Add DCR_SECRET_KEY in docker-compose.override.yml
DCR_DISABLE_INITIAL_SYNC: "false"
DCR_DISABLE_DELTA_INGEST: "false"
DCR_SECRET_KEY: "SECRECT KEY TO ASK"
```
##### qa
```
vendor-management-consumer:
environment:
DCR_SYNC_BASE_URL: "https://loket.lblod.info/"
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lblod.info/sync/vendor-management/login" # Add DCR_SECRET_KEY in docker-compose.override.yml
DCR_DISABLE_INITIAL_SYNC: "false"
DCR_DISABLE_DELTA_INGEST: "false"
DCR_SECRET_KEY: "SECRECT KEY TO ASK"
```
##### production
```
vendor-management-consumer:
environment:
DCR_SYNC_BASE_URL: "https://loket.lokaalbestuur.vlaanderen.be/"
DCR_SYNC_LOGIN_ENDPOINT: "https://loket.lokaalbestuur.vlaanderen.be/sync/vendor-management/login" # Add DCR_SECRET_KEY in docker-compose.override.yml
DCR_DISABLE_INITIAL_SYNC: "false"
DCR_DISABLE_DELTA_INGEST: "false"
DCR_SECRET_KEY: "SECRECT KEY TO ASK"
```
#### Deploy instructions
```
drc restart migrations
drc restart delta-producer-publication-graph-maintainer resource
drc pull vendor-management-consumer; drc up -d vendor-management-consumer
drc restart db resource
drc pull frontend && drc up -d frontend
```
## 1.37.3 (2025-11-14)
### Backend
- Added cleanup job to clean duplicated data of municipalities and provinces [OP-3676]
- Delete local involvements for worship services [OP-3693]
### Deploy notes
```
# cleanup job
drc restart migrations
drc exec db-cleanup curl -X GET "http://localhost/runCronJob?cronJobID=8ffd9f11-db25-430d-a66a-31fc8b393d5f"
```
## 1.37.2 (2025-11-13)
- Bump frontend to v1.36.0
### Deploy notes
```
drc up -d frontend
```
## 1.37.1 (2025-11-04)
### Bakend
- Include v1.35.2 hotfix to the 1.37.x version. Already deployed so no deploy instructions
## 1.37.0 (2025-10-24)
### Backend
- Add municipalities and werkingsgebieden in the area of Brussel [OP-3669]
@@ -77,6 +181,14 @@ drc pull frontend; drc up -d frontend
drc restart migrations-triggering-indexing; drc logs -ft --tail=200 migrations-triggering-indexing
```
## v1.35.2 (2025-11-04)
### Backend
- Fix camel case name of municipality Heist-op-den-Berg in addresses [OP-3694]
### Deploy notes
```
drc restart migrations-triggering-indexing
```
## v1.35.1 (2025-09-15)
### Backend
- Produce memberships and their roles in organizations and public producers [OP-3658] & [OP-3661]

View File

@@ -2,14 +2,40 @@
Backend for the organization portal application, based on the mu.semte.ch microservices stack.
## How to
### Boot up the system in DEV environment
cd /path/to/mu-project
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
cd /path/to/app-organization-portal
docker compose -f docker-compose.yml -f docker-compose.dev.yml up
You can shut down using `docker-compose stop` and remove everything using `docker-compose rm`.
You can shut down using `docker compose stop` and remove everything using `docker compose rm`.
You need to wait until the migrations are ready.
After that, you need to trigger the ES index manually.
You can do it by:
```
# Assumes you are in root of app-organization-portal
/bin/bash scripts/reset-elastic.sh
```
And follow the steps. It takes a bit, from an install from scratch, about 10 mins. (Mileage may vary)
#### Tricks to make it a bit easier.
If you think typing the full command takes too long every time, run this in your shell:
```
# Assumes you are in root of app-organization-portal
echo "COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml:docker-compose.override.yml" > .env
touch docker-compose.override.yml
```
Now you can just run `docker compose up` and it will take the config files into account.
If you want to go a step further, and still think (like most of us) that `docker compose` is too long to type, you can alias it:
```
echo "alias drc='docker compose'" >> ~/.bashrc
echo "alias drcl='docker compose logs -ft --tail=100'" >> ~/.bashrc
```
Now everywhere `drc up -d` will work as shorthand for `docker compose up -d`.
#### Setup consumers
@@ -151,6 +177,31 @@ drc up -d
sh scripts/reset-elastic.sh
```
#### Setup vendors sync
Note: this is assuming you have never ran this before.
```
drc down;
```
Update `docker-compose.override.yml` to:
```
vendor-management-consumer:
environment:
DCR_SYNC_BASE_URL: "https://dev.loket.lblod.info/" # or another endpoint
DCR_DISABLE_INITIAL_SYNC: "true"
BATCH_SIZE: "500"
DCR_SECRET_KEY: "<key>>" # fill in key for selected endpoint
DCR_SYNC_LOGIN_ENDPOINT: "https://dev.loket.lblod.info/sync/vendor-management/login" # login for selected endpoint
```
Then:
```
drc up -d migrations
drc up -d db vendor-management-consumer
```
Finally, put the stack back up.
```
drc up -d
```
### Setting up the delta-producers related services
To make sure the app can share data, producers need to be set up. There is an intial sync, that is potentially very expensive, and must be started manually

View File

@@ -89,6 +89,11 @@ defmodule Acl.UserGroups.Config do
"http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
]
@vendor_type [
"http://mu.semte.ch/vocabularies/ext/Vendor"
]
defp access_by_role(group_string) do
%AccessByQuery{
# vars: ["session_group","session_role"], todo we might have to create multiple graph depending on role
@@ -130,6 +135,12 @@ defmodule Acl.UserGroups.Config do
constraint: %ResourceConstraint{
resource_types: @org_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
@@ -143,6 +154,12 @@ defmodule Acl.UserGroups.Config do
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
@@ -156,6 +173,12 @@ defmodule Acl.UserGroups.Config do
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
@@ -169,6 +192,12 @@ defmodule Acl.UserGroups.Config do
constraint: %ResourceConstraint{
resource_types: @org_type ++ @worship_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
@@ -182,6 +211,12 @@ defmodule Acl.UserGroups.Config do
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type ++ @worship_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},
@@ -195,6 +230,12 @@ defmodule Acl.UserGroups.Config do
constraint: %ResourceConstraint{
resource_types: @org_type ++ @error_type ++ @worship_type
}
},
%GraphSpec{
graph: "http://mu.semte.ch/graphs/vendor-management-data",
constraint: %ResourceConstraint{
resource_types: @vendor_type
}
}
]
},

View File

@@ -540,7 +540,8 @@
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
"http://www.w3.org/ns/org#role"
"http://www.w3.org/ns/org#role",
"http://data.vlaanderen.be/ns/mandaat#aantalHouders"
]
},
{

View File

@@ -178,6 +178,27 @@ export default [
ignoreFromSelf: true,
optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
}
},
{
match: {
predicate: {
type: 'uri',
value: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'
},
object: {
type: 'uri',
value:'http://open-services.net/ns/core#Error'
}
},
callback: {
url: 'http://error-alert/delta',
method:'POST'
},
options: {
resourceFormat: 'v0.0.1',
gracePeriod: 1000,
ignoreFromSelf: true
}
}
/*
Commenting ldes rules until ready to go to qa/prod. In the meantime, we override the configuration on dev.

View File

@@ -0,0 +1,20 @@
DELETE {
GRAPH ?g {
?s a <http://www.w3.org/ns/org#Organization>.
?s <http://www.w3.org/ns/regorg#orgStatus> ?status.
}
}
INSERT {
GRAPH ?g {
?s <http://www.w3.org/ns/regorg#orgStatus> <http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6>.
}
}
WHERE {
GRAPH ?g {
?s a <http://www.w3.org/ns/org#Organization>.
OPTIONAL {
?s <http://www.w3.org/ns/regorg#orgStatus> ?status.
}
}
}

View File

@@ -0,0 +1,33 @@
INSERT DATA {
GRAPH <http://mu.semte.ch/graphs/public> {
<http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> <http://www.w3.org/2004/02/skos/core#prefLabel> "Organisatie status code" .
<http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> .
<http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> <http://mu.semte.ch/vocabularies/core/uuid> "b8dcb04f0d1feb86ff01cc0677363b20" .
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> <http://mu.semte.ch/vocabularies/core/uuid> "63cc561de9188d64ba5840a42ae8f0d6" .
<http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#ConceptScheme> .
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> <http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> .
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> .
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode> .
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> <http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> .
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> .
<http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> <http://www.w3.org/2004/02/skos/core#prefLabel> "In oprichting" .
<http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode> .
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
<http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> <http://www.w3.org/2004/02/skos/core#topConceptOf> <http://lblod.data.gift/concept-schemes/b8dcb04f0d1feb86ff01cc0677363b20> .
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> <http://www.w3.org/2004/02/skos/core#prefLabel> "Niet Actief" .
<http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> <http://mu.semte.ch/vocabularies/core/uuid> "abf4fee82019f88cf122f986830621ab" .
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> <http://www.w3.org/2004/02/skos/core#prefLabel> "Actief" .
<http://lblod.data.gift/concepts/63cc561de9188d64ba5840a42ae8f0d6> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode> .
<http://lblod.data.gift/concepts/d02c4e12bf88d2fdf5123b07f29c9311> <http://mu.semte.ch/vocabularies/core/uuid> "d02c4e12bf88d2fdf5123b07f29c9311" .
<http://lblod.data.gift/concepts/abf4fee82019f88cf122f986830621ab> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b> .
}
}

View File

@@ -0,0 +1,8 @@
{
"creators": [
"http://lblod.data.gift/services/delta-producer-background-jobs-initiator/organizations",
"http://lblod.data.gift/services/delta-producer-background-jobs-initiator/public",
"http://lblod.data.gift/services/delta-producer-background-jobs-initiator/organizations-public-info",
"http://lblod.data.gift/services/delta-producer-background-jobs-initiator/worship-posts"
]
}

View File

@@ -0,0 +1,16 @@
DELETE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s a <http://www.w3.org/ns/locn#Address> ;
<https://data.vlaanderen.be/ns/adres#gemeentenaam> "Heist-Op-Den-Berg" .
}
} INSERT {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s a <http://www.w3.org/ns/locn#Address> ;
<https://data.vlaanderen.be/ns/adres#gemeentenaam> "Heist-op-den-Berg" .
}
} WHERE {
GRAPH <http://mu.semte.ch/graphs/worship-service> {
?s a <http://www.w3.org/ns/locn#Address> ;
<https://data.vlaanderen.be/ns/adres#gemeentenaam> "Heist-Op-Den-Berg" .
}
}

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?mandaat mandaat:aantalHouders ?oldValue .
}
}
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?mandaat mandaat:aantalHouders "9"^^xsd:integer .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
VALUES ?mandaat {
<http://data.lblod.info/id/mandaten/1d6bf704b39472c5aa987779b7c0162183736d7990ddbd54835c0a6f98e52116>
<http://data.lblod.info/id/mandaten/273adda009e28c3512472f2e1e5bda0ee49272fca353eebde0f045e461c174d9>
<http://data.lblod.info/id/mandaten/23d2744cdb69fbdbbd4aa63f22752e19dc20b9a71bebbf260fa7812c20db483a>
<http://data.lblod.info/id/mandaten/1ba0b2b260793ace3bf8425b22fd22622e2fcc0f805c14db10ac8194b227a988>
}
OPTIONAL { ?mandaat mandaat:aantalHouders ?oldValue . }
}
}

View File

@@ -0,0 +1,24 @@
PREFIX mandaat: <http://data.vlaanderen.be/ns/mandaat#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
DELETE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?mandaat mandaat:aantalHouders ?oldValue .
}
}
INSERT {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
?mandaat mandaat:aantalHouders ?newValue .
}
}
WHERE {
GRAPH <http://mu.semte.ch/graphs/administrative-unit> {
VALUES ?mandaat {
<http://data.lblod.info/id/mandaten/1d6bf704b39472c5aa987779b7c0162183736d7990ddbd54835c0a6f98e52116>
<http://data.lblod.info/id/mandaten/23d2744cdb69fbdbbd4aa63f22752e19dc20b9a71bebbf260fa7812c20db483a>
<http://data.lblod.info/id/mandaten/68021f6bbdb0835e116b252030c420fc15de36732dc50a50bb76e119bd273ec8>
}
?mandaat mandaat:aantalHouders ?oldValue .
BIND(?oldValue + 1 AS ?newValue)
}
}

View File

@@ -0,0 +1,44 @@
INSERT DATA {
GRAPH <http://mu.semte.ch/graphs/system/email> {
<http://data.lblod.info/id/mailboxes/1> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#Mailbox>;
<http://mu.semte.ch/vocabularies/core/uuid> "cf9cb7e4-9a00-4855-9ee0-e8e3bbeba9e9";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#hasPart> <http://data.lblod.info/id/mail-folders/1>;
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#hasPart> <http://data.lblod.info/id/mail-folders/2>;
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#hasPart> <http://data.lblod.info/id/mail-folders/3>;
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#hasPart> <http://data.lblod.info/id/mail-folders/4>;
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#hasPart> <http://data.lblod.info/id/mail-folders/5>;
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#hasPart> <http://data.lblod.info/id/mail-folders/6>.
<http://data.lblod.info/id/mail-folders/1> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder>;
<http://mu.semte.ch/vocabularies/core/uuid> "891c67e5-4719-47f8-aec2-d898ba2c09e8";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title> "inbox";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#description> "Your incoming mail goes here.".
<http://data.lblod.info/id/mail-folders/2> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder>;
<http://mu.semte.ch/vocabularies/core/uuid> "786a8cb0-4452-40f5-b8d8-046dd2d63281";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title> "outbox";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#description> "Your outgoing mail goes here.".
<http://data.lblod.info/id/mail-folders/3> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder>;
<http://mu.semte.ch/vocabularies/core/uuid> "a6fb03f9-11be-4401-9d8f-b4dc0e9df5ee";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title> "sentbox";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#description> "Your sent mail goes here.".
<http://data.lblod.info/id/mail-folders/4> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder>;
<http://mu.semte.ch/vocabularies/core/uuid> "a430a848-e595-49fa-bc11-f5579605877f";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title> "sending";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#description> "Your mail goes here while being sent.".
<http://data.lblod.info/id/mail-folders/5> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder>;
<http://mu.semte.ch/vocabularies/core/uuid> "0cb108a9-1c0d-4c0a-bf53-60e304116e47";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title> "drafts";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#description> "Your draft goes here.".
<http://data.lblod.info/id/mail-folders/6> a <http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder>;
<http://mu.semte.ch/vocabularies/core/uuid> "70c0baba-17a0-11eb-adc1-0242ac120002";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#title> "failbox";
<http://www.semanticdesktop.org/ontologies/2007/01/19/nie#description> "Your email that failed while sending goes here.".
}
}

View File

@@ -30,7 +30,8 @@
"ext": "http://mu.semte.ch/vocabularies/ext/",
"geo": "http://www.opengis.net/ont/geosparql#",
"nacebel": "http://data.gift/vocabularies/nace-bel/",
"time": "http://www.w3.org/2006/time#"
"time": "http://www.w3.org/2006/time#",
"muAccount": "http://mu.semte.ch/vocabularies/account/"
},
"resources": {
"agents": {
@@ -252,6 +253,12 @@
"mandates": {
"class": "mandaat:Mandaat",
"super": ["posts"],
"attributes": {
"aantal-houders": {
"type": "number",
"predicate": "mandaat:aantalHouders"
}
},
"relationships": {
"role-board": {
"predicate": "org:role",
@@ -467,7 +474,13 @@
"target": "kbo-organizations",
"cardinality": "one",
"inverse": true
}
},
"vendors": {
"predicate": "muAccount:canActOnBehalfOf",
"target": "vendors",
"cardinality": "many",
"inverse": true
}
},
"features": ["include-uri"],
"new-resource-base": "http://data.lblod.info/id/organisaties/"
@@ -553,6 +566,23 @@
},
"new-resource-base": "http://data.lblod.info/id/eredienstBestuurseenheden/"
},
"vendors": {
"class": "ext:Vendor",
"attributes": {
"name": {
"type": "string",
"predicate": "foaf:name"
}
},
"relationships": {
"organizations": {
"predicate": "muAccount:canActOnBehalfOf",
"target": "organizations",
"cardinality": "many"
}
},
"new-resource-base": "http://data.lblod.info/vendors/"
},
"worship-services": {
"class": "ere:BestuurVanDeEredienst",
"super": ["worship-administrative-units"],

View File

@@ -97,6 +97,17 @@ services:
BASE_URL: "http://localhost/ldes/"
kbo-data-sync:
restart: "no"
error-alert:
environment:
EMAIL_FROM: 'test@example.com'
EMAIL_TO: '123@example.com'
restart: "no"
deliver-email-service:
environment:
EMAIL_CRON_PATTERN: "*/5 * * * *"
WELL_KNOWN_SERVICE: "test"
FROM_NAME: "Your Name"
restart: "no"
# use this to test acmidm
# tlsproxy:
# image: caddy:2

View File

@@ -212,7 +212,7 @@ services:
restart: always
logging: *default-logging
frontend:
image: lblod/frontend-organization-portal:1.35.0
image: lblod/frontend-organization-portal:1.36.3
volumes:
- ./config/frontend/add-x-frame-options-header.conf:/config/add-x-frame-options.conf
environment:
@@ -550,6 +550,27 @@ services:
- triplestore:virtuoso
logging: *default-logging
vendor-management-consumer:
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/vendor-management/login' # Add DCR_SECRET_KEY in docker-compose.override.yml
DCR_SERVICE_NAME: "vendor-management-consumer"
DCR_SYNC_FILES_PATH: "/sync/vendor-management/files"
DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/VendorManagementCacheGraphDump"
DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/initialSync/vendor-management"
DCR_JOB_CREATOR_URI: "http://data.lblod.info/services/id/vendor-management-consumer"
DCR_DISABLE_INITIAL_SYNC: "true"
DCR_KEEP_DELTA_FILES: "true"
DCR_DELTA_FILE_FOLDER: "/consumer-files"
DCR_DELTA_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/VendorManagementFileSyncing"
INGEST_GRAPH: "http://mu.semte.ch/graphs/vendor-management-data"
labels:
- "logging=true"
links:
- db:database
restart: always
logging: *default-logging
################################################################################
# DELTA CONSUMERS: END
################################################################################
@@ -615,6 +636,28 @@ services:
restart: always
logging: *default-logging
error-alert:
image: lblod/loket-error-alert-service:1.0.0
volumes:
- ./config/error-alert:/config/
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
deliver-email-service:
image: redpencil/deliver-email-service:1.0.0
environment:
MAILBOX_URI: "http://data.lblod.info/id/mailboxes/1"
links:
- db:database
labels:
- "logging=true"
restart: always
logging: *default-logging
roles:
image: lblod/select-role-service:0.1.0
labels: