diff --git a/.gitignore b/.gitignore
index d6b6a17..3f398c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
# Virtuoso files /data/db
+/data/db.bck/**
/data/db/*
!/data/db/virtuoso.ini
!/data/db/toLoad
diff --git a/config/authorization/config.ex b/config/authorization/config.ex
index e52cb73..82b2d30 100644
--- a/config/authorization/config.ex
+++ b/config/authorization/config.ex
@@ -8,70 +8,87 @@ alias Acl.GroupSpec.GraphCleanup, as: GraphCleanup
defmodule Acl.UserGroups.Config do
- @error_type [
- "https://docs.oasis-open-projects.org/oslc-op/core/v3.0/os/core-vocab.html#Error"
- ]
+ @error_type [
+ "https://docs.oasis-open-projects.org/oslc-op/core/v3.0/os/core-vocab.html#Error"
+ ]
- @protected_resource_type [
- "http://www.w3.org/ns/org#Organization",
- "http://data.vlaanderen.be/ns/besluit#Besluit",
- "https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit",
- "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
+ @worship_type [
+ "http://data.lblod.info/vocabularies/erediensten/EredienstMandataris",
"http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"http://data.lblod.info/vocabularies/erediensten/EredienstBestuurseenheid",
"http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
"http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
"http://data.lblod.info/vocabularies/erediensten/VoorwaardenBedienaar",
- "https://data.vlaanderen.be/ns/persoon#Geboorte",
- "http://mu.semte.ch/vocabularies/ext/GeslachtCode",
"http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
- "http://www.w3.org/ns/adms#Identifier",
- "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
- "http://www.w3.org/ns/org#ChangeEvent",
"http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
"http://data.lblod.info/vocabularies/erediensten/VerbondenJuridischeStructuren",
- "http://www.w3.org/ns/prov#Location",
- "http://www.w3.org/ns/org#Site",
- "http://www.w3.org/ns/locn#Address",
- "http://www.w3.org/ns/person#Person",
- "http://data.vlaanderen.be/ns/mandaat#Mandaat",
- "http://data.vlaanderen.be/ns/mandaat#Mandataris",
- "http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode",
- "http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
- "http://data.lblod.info/vocabularies/erediensten/EredienstMandataris",
- "http://schema.org/ContactPoint",
- "http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie",
"http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
"http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
+ ]
+
+ @public_type [
"http://www.w3.org/ns/org#Role",
- "http://www.w3.org/ns/org#Post",
- "http://data.lblod.info/vocabularies/contacthub/AgentInPositie",
+ "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
+ "http://xmlns.com/foaf/0.1/Person",
+ "http://xmlns.com/foaf/0.1/OnlineAccount",
+ "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject",
+ "http://www.w3.org/ns/dcat#Dataset",
+ "http://www.w3.org/ns/dcat#Distribution",
+ "http://www.w3.org/ns/dcat#Catalog",
+ "http://mu.semte.ch/vocabularies/ext/GeslachtCode",
+ "http://data.lblod.info/vocabularies/leidinggevenden/FunctionarisStatusCode",
"http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
"http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode",
"http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
- "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
- "http://lblod.data.gift/vocabularies/organisatie/HelftVerkiezing",
- "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
- "http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat",
"http://lblod.data.gift/vocabularies/organisatie/MandatarisStatusCode",
"http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
+ "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
+ "http://www.w3.org/2004/02/skos/core#ConceptScheme",
+ "http://lblod.data.gift/vocabularies/organisatie/BedienaarFinanceringCode",
+ "http://www.w3.org/2004/02/skos/core#Concept",
+ "http://publications.europa.eu/ontology/euvoc#Country",
+ "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
+ "http://lblod.data.gift/vocabularies/organisatie/HelftVerkiezing",
+ "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
"http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
"http://lblod.data.gift/vocabularies/organisatie/VoorwaardenBedienaarCriterium",
"http://lblod.data.gift/vocabularies/organisatie/BedienaarCriteriumBewijsstuk",
"http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
- "http://lblod.data.gift/vocabularies/organisatie/BedienaarFinanceringCode",
- "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
- "http://lblod.data.gift/vocabularies/organisatie/Rechtsvormtype",
- "http://www.w3.org/2004/02/skos/core#ConceptScheme",
- "http://www.w3.org/2004/02/skos/core#Concept",
+ "http://lblod.data.gift/vocabularies/organisatie/Rechtsvormtype"
+ ]
+
+ @org_type [
+ "http://www.w3.org/ns/org#Organization",
+ "http://data.vlaanderen.be/ns/besluit#Besluit",
+ "https://data.vlaanderen.be/ns/besluitvorming#Beslissingsactiviteit",
+ "http://www.w3.org/ns/org#Site",
+ "http://www.w3.org/ns/locn#Address",
+ "http://www.w3.org/ns/person#Person",
+ "http://schema.org/ContactPoint",
+ "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
+ "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
+ "http://www.w3.org/ns/adms#Identifier",
+ "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
+ "http://data.vlaanderen.be/ns/mandaat#Mandaat",
+ "http://data.vlaanderen.be/ns/mandaat#Mandataris",
+ "http://data.lblod.info/vocabularies/leidinggevenden/Functionaris",
+ "http://data.lblod.info/vocabularies/leidinggevenden/Bestuursfunctie",
+ "http://lblod.data.gift/vocabularies/organisatie/VeranderingsgebeurtenisResultaat",
+ "http://www.w3.org/ns/org#Post",
+ "http://www.w3.org/ns/org#ChangeEvent",
+ "http://data.lblod.info/vocabularies/contacthub/AgentInPositie"
+ ]
+
+ @shared_protected_type [
+ "http://www.w3.org/ns/prov#Location",
"http://xmlns.com/foaf/0.1/Image",
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject",
- "http://publications.europa.eu/ontology/euvoc#Country"
- ]
+ "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject"
+ ]
+
defp access_by_role( group_string ) do
%AccessByQuery{
# vars: ["session_group","session_role"], todo we might have to create multiple graph depending on role
- vars: [],
+ vars: [],
query: sparql_query_for_access_role( group_string ) }
end
@@ -80,48 +97,88 @@ defmodule Acl.UserGroups.Config do
PREFIX mu:
SELECT distinct ?session_group ?session_role WHERE {
ext:sessionGroup/mu:uuid ?session_group;
- ext:sessionRole ?session_role.
+ ext:activeSessionRole ?session_role.
FILTER( ?session_role = \"#{group_string}\" )
}"
end
def user_groups do
[
- %GroupSpec{
+
+ %GroupSpec{
name: "acmidm-lezer",
useage: [:read],
access: access_by_role( "ABBOrganisatiePortaalGebruiker-lezer" ),
graphs: [
%GraphSpec{
- graph: "http://mu.semte.ch/graphs/organisatieportaal",
+ graph: "http://mu.semte.ch/graphs/administrative-unit",
constraint: %ResourceConstraint{
- resource_types: @protected_resource_type
+ resource_types: @org_type
}
}
]
},
- %GroupSpec{
+ %GroupSpec{
name: "acmidm-editeerder",
useage: [:read, :write, :read_for_write],
access: access_by_role( "ABBOrganisatiePortaalGebruiker-editeerder" ),
graphs: [
%GraphSpec{
- graph: "http://mu.semte.ch/graphs/organisatieportaal",
+ graph: "http://mu.semte.ch/graphs/administrative-unit",
constraint: %ResourceConstraint{
- resource_types: @protected_resource_type ++ @error_type
+ resource_types: @org_type ++ @error_type
}
}
]
},
- %GroupSpec{
+ %GroupSpec{
name: "acmidm-beheerder",
useage: [:read, :write, :read_for_write],
access: access_by_role( "ABBOrganisatiePortaalGebruiker-beheerder" ),
graphs: [
%GraphSpec{
- graph: "http://mu.semte.ch/graphs/organisatieportaal",
+ graph: "http://mu.semte.ch/graphs/administrative-unit",
constraint: %ResourceConstraint{
- resource_types: @protected_resource_type ++ @error_type
+ resource_types: @org_type ++ @error_type
+ }
+ }
+ ]
+ },
+ %GroupSpec{
+ name: "acmidm-worship-lezer",
+ useage: [:read],
+ access: access_by_role( "ABBOrganisatiePortaalErediensten-lezer" ),
+ graphs: [
+ %GraphSpec{
+ graph: "http://mu.semte.ch/graphs/worship-service",
+ constraint: %ResourceConstraint{
+ resource_types: @org_type ++ @worship_type
+ }
+ }
+ ]
+ },
+ %GroupSpec{
+ name: "acmidm-worship-editeerder",
+ useage: [:read, :write, :read_for_write],
+ access: access_by_role( "ABBOrganisatiePortaalErediensten-editeerder" ),
+ graphs: [
+ %GraphSpec{
+ graph: "http://mu.semte.ch/graphs/worship-service",
+ constraint: %ResourceConstraint{
+ resource_types: @org_type ++ @error_type ++ @worship_type
+ }
+ }
+ ]
+ },
+ %GroupSpec{
+ name: "acmidm-worship-beheerder",
+ useage: [:read, :write, :read_for_write],
+ access: access_by_role( "ABBOrganisatiePortaalErediensten-beheerder" ),
+ graphs: [
+ %GraphSpec{
+ graph: "http://mu.semte.ch/graphs/worship-service",
+ constraint: %ResourceConstraint{
+ resource_types: @org_type ++ @error_type ++ @worship_type
}
}
]
@@ -130,19 +187,21 @@ defmodule Acl.UserGroups.Config do
name: "public",
useage: [:read],
access: %AlwaysAccessible{},
- graphs: [ %GraphSpec{
- graph: "http://mu.semte.ch/graphs/public", # mock login only
+ graphs: [
+ %GraphSpec{
+ graph: "http://mu.semte.ch/graphs/public",
constraint: %ResourceConstraint{
- resource_types: [
- "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
- "http://xmlns.com/foaf/0.1/Person",
- "http://xmlns.com/foaf/0.1/OnlineAccount",
- "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#FileDataObject",
- "http://www.w3.org/ns/dcat#Dataset",
- "http://www.w3.org/ns/dcat#Distribution",
- "http://www.w3.org/ns/dcat#Catalog"
- ]
- } }]},
+ resource_types: @public_type
+ }
+ },
+ %GraphSpec{
+ graph: "http://mu.semte.ch/graphs/shared",
+ constraint: %ResourceConstraint{
+ resource_types: @shared_protected_type ++ @org_type
+ }
+ }
+
+ ]},
# // CLEANUP
#
diff --git a/config/delta-producer/administrative-units/export.json b/config/delta-producer/administrative-units/export.json
deleted file mode 100644
index d38b7b0..0000000
--- a/config/delta-producer/administrative-units/export.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "export": [
- {
- "type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
- "graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
- ],
- "properties": [
- "http://mu.semte.ch/vocabularies/core/uuid",
- "http://www.w3.org/2004/02/skos/core#prefLabel",
- "http://www.w3.org/2004/02/skos/core#scopeNote"
- ]
- },
- {
- "type": "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
- "graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
- ],
- "properties": [
- "http://mu.semte.ch/vocabularies/core/uuid",
- "http://www.w3.org/2004/02/skos/core#prefLabel",
- "http://www.w3.org/2004/02/skos/core#altLabel",
- "http://data.vlaanderen.be/ns/besluit#werkingsgebied",
- "http://www.w3.org/ns/org#classification"
- ]
- },
- {
- "type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
- "graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
- ],
- "properties": [
- "http://mu.semte.ch/vocabularies/core/uuid",
- "http://www.w3.org/2004/02/skos/core#prefLabel",
- "http://data.vlaanderen.be/ns/besluit#bestuurt",
- "http://www.w3.org/ns/org#classification",
- "http://data.vlaanderen.be/ns/mandaat#bindingEinde",
- "http://data.vlaanderen.be/ns/mandaat#bindingStart",
- "https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan"
- ]
- },
- {
- "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
- "graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
- ],
- "properties": [
- "http://mu.semte.ch/vocabularies/core/uuid",
- "http://www.w3.org/2004/02/skos/core#prefLabel",
- "http://www.w3.org/2004/02/skos/core#scopeNote"
- ]
- }
- ]
-}
diff --git a/config/delta-producer/dump-file-publisher/config.json b/config/delta-producer/dump-file-publisher/config.json
index d8c54f3..42c183f 100644
--- a/config/delta-producer/dump-file-publisher/config.json
+++ b/config/delta-producer/dump-file-publisher/config.json
@@ -1,20 +1,4 @@
{
- "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/administrative-units": {
- "dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/AdministrativeUnitsCacheGraphDump",
- "targetGraph": "http://redpencil.data.gift/id/deltas/producer/administrative-units",
- "fileBaseName": "dump-administrative-units",
- "targetDcatGraph": "http://mu.semte.ch/graphs/public",
- "targetFilesGraph": "http://mu.semte.ch/graphs/public",
- "cleanupOldDumps": true
- },
- "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/administrative-units": {
- "dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/AdministrativeUnitsCacheGraphDump",
- "targetGraph": "http://redpencil.data.gift/id/deltas/producer/administrative-units",
- "fileBaseName": "dump-administrative-units",
- "targetDcatGraph": "http://mu.semte.ch/graphs/public",
- "targetFilesGraph": "http://mu.semte.ch/graphs/public",
- "cleanupOldDumps": true
- },
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations": {
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
@@ -47,7 +31,7 @@
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
"cleanupOldDumps": true
},
- "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/worship-posts" : {
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/worship-posts": {
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/WorshipPostsCacheGraphDump",
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/worship-posts",
"fileBaseName": "dump-worship-posts",
@@ -55,7 +39,7 @@
"targetFilesGraph": "http://mu.semte.ch/graphs/public",
"cleanupOldDumps": true
},
- "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts" : {
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts": {
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/WorshipPostsCacheGraphDump",
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/worship-posts",
"fileBaseName": "dump-worship-posts",
diff --git a/config/delta-producer/organizations/export.json b/config/delta-producer/organizations/export.json
index bb86cfb..510c48b 100644
--- a/config/delta-producer/organizations/export.json
+++ b/config/delta-producer/organizations/export.json
@@ -3,9 +3,11 @@
{
"type": "http://www.w3.org/ns/person#Person",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
- "properties": [
+ "properties": [
"http://xmlns.com/foaf/0.1/givenName",
"http://xmlns.com/foaf/0.1/familyName",
"https://data.vlaanderen.be/ns/persoon#gebruikteVoornaam",
@@ -16,7 +18,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/MandatarisStatusCode",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -26,7 +28,8 @@
"type": "http://data.lblod.info/vocabularies/erediensten/EredienstMandataris",
"strictTypeExport": "true",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared"
],
"properties": [
"http://data.lblod.info/vocabularies/contacthub/startdatum",
@@ -46,7 +49,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/HelftVerkiezing",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -55,7 +58,8 @@
{
"type": "http://schema.org/ContactPoint",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
"http://schema.org/email",
@@ -67,7 +71,9 @@
{
"type": "http://data.vlaanderen.be/ns/mandaat#Mandaat",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
"http://www.w3.org/ns/org#role",
@@ -78,7 +84,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -87,7 +93,7 @@
{
"type": "http://www.w3.org/ns/org#Role",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -96,7 +102,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -105,7 +111,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -115,7 +121,8 @@
"type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"strictTypeExport": "true",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel",
@@ -142,7 +149,8 @@
"type": "http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
"strictTypeExport": "true",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel",
@@ -166,7 +174,8 @@
"type": "http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
"strictTypeExport": "true",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel",
@@ -187,7 +196,9 @@
"type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
"strictTypeExport": "true",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
"http://data.vlaanderen.be/ns/mandaat#bindingEinde",
@@ -201,7 +212,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -210,7 +221,8 @@
{
"type": "http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://data.lblod.info/vocabularies/erediensten/financieringspercentage",
@@ -221,7 +233,9 @@
{
"type": "http://www.w3.org/ns/adms#Identifier",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/administrative-unit",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#notation",
@@ -231,7 +245,9 @@
{
"type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/administrative-unit",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
@@ -240,7 +256,9 @@
{
"type": "http://www.w3.org/ns/locn#Address",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
"https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer",
@@ -258,7 +276,8 @@
{
"type": "http://www.w3.org/ns/org#Site",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
"http://www.w3.org/ns/org#siteAddress",
@@ -269,7 +288,8 @@
{
"type": "http://www.w3.org/ns/org#ChangeEvent",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
"http://purl.org/dc/terms/date",
@@ -282,7 +302,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -291,7 +311,7 @@
{
"type": "http://www.w3.org/2004/02/skos/core#Concept",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -300,7 +320,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -309,16 +329,17 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
]
},
{
- "type": "http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
+ "type": "http://data.lblod.info/vocabularies/erediensten/RolBedienaar",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://data.lblod.info/vocabularies/contacthub/startdatum",
@@ -333,26 +354,30 @@
{
"type": "http://data.lblod.info/vocabularies/erediensten/VoorwaardenBedienaar",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://data.lblod.info/vocabularies/erediensten/voldaan",
"http://data.lblod.info/vocabularies/erediensten/criterium",
"http://data.lblod.info/vocabularies/erediensten/criteriumbewijsstuktype"
]
- },{
+ },
+ {
"type": "http://publications.europa.eu/ontology/euvoc#Country",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel",
"http://www.w3.org/2000/01/rdf-schema#label"
]
- },{
+ },
+ {
"type": "http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://www.w3.org/ns/org#role",
@@ -364,7 +389,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -373,7 +398,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/BedienaarFinanceringCode",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -382,7 +407,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/VoorwaardenBedienaarCriterium",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -391,7 +416,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/BedienaarCriteriumBewijsstuk",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
@@ -400,7 +425,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/public"
],
"properties": [
"http://www.w3.org/2004/02/skos/core#prefLabel"
diff --git a/config/delta-producer/public/export.json b/config/delta-producer/public/export.json
index 8a726f9..c298ce4 100644
--- a/config/delta-producer/public/export.json
+++ b/config/delta-producer/public/export.json
@@ -5,6 +5,7 @@
"type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"strictTypeExport": "true",
"graphsFilter": [
+ "http://mu.semte.ch/graphs/shared",
"http://mu.semte.ch/graphs/worship-service"
],
"pathToConceptScheme": [
@@ -35,6 +36,7 @@
"type": "http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
"strictTypeExport": "true",
"graphsFilter": [
+ "http://mu.semte.ch/graphs/shared",
"http://mu.semte.ch/graphs/worship-service"
],
"pathToConceptScheme": [
@@ -144,7 +146,6 @@
"^http://www.w3.org/ns/org#hasPrimarySite",
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#inScheme"
-
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
@@ -165,7 +166,6 @@
"^http://www.w3.org/ns/org#hasPrimarySite",
"http://www.w3.org/ns/org#classification",
"http://www.w3.org/2004/02/skos/core#inScheme"
-
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
@@ -203,7 +203,6 @@
"http://xmlns.com/foaf/0.1/page",
"http://schema.org/email",
"http://schema.org/telephone"
-
]
},
{
@@ -353,9 +352,7 @@
{
"type": "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
"graphsFilter": [
- "http://mu.semte.ch/graphs/shared",
- "http://mu.semte.ch/graphs/worship-service",
- "http://mu.semte.ch/graphs/administrative-unit"
+ "http://mu.semte.ch/graphs/public"
],
"pathToConceptScheme": [
"http://www.w3.org/2004/02/skos/core#inScheme"
diff --git a/config/delta-producer/worship-posts/export.json b/config/delta-producer/worship-posts/export.json
index 9c4b9ad..0f540bd 100644
--- a/config/delta-producer/worship-posts/export.json
+++ b/config/delta-producer/worship-posts/export.json
@@ -3,7 +3,8 @@
{
"type": "http://data.vlaanderen.be/ns/mandaat#Mandaat",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
@@ -12,36 +13,282 @@
"additionalFilter": "?orgaan ?subject ; / ?bestuurseenheid . ?bestuurseenheid a ?type. FILTER (?type IN (, ))"
},
{
- "type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
- "strictTypeExport": "true",
+ "type": "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
],
"properties": [
- "http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor"
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#altLabel",
+ "http://www.w3.org/ns/regorg#orgStatus",
+ "http://data.lblod.info/vocabularies/erediensten/typeEredienst",
+ "http://www.w3.org/ns/org#classification",
+ "http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
+ "http://www.w3.org/ns/org#hasPrimarySite",
+ "http://www.w3.org/ns/org#hasSite",
+ "http://www.w3.org/ns/adms#identifier",
+ "http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur"
+ ],
+ "additionalFilter": "?subject ?bestuurClassification . FILTER (?bestuurClassification IN (, , , ))"
+ },
+ {
+ "type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/worship-service"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#altLabel",
+ "http://www.w3.org/ns/regorg#orgStatus",
+ "http://data.lblod.info/vocabularies/erediensten/typeEredienst",
+ "http://www.w3.org/ns/org#classification",
+ "http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
+ "http://www.w3.org/ns/org#hasPrimarySite",
+ "http://www.w3.org/ns/org#hasSite",
+ "http://www.w3.org/ns/adms#identifier"
+ ]
+ },
+ {
+ "type": "http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
+ "strictTypeExport": "true",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/worship-service"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#altLabel",
+ "http://www.w3.org/ns/regorg#orgStatus",
+ "http://data.lblod.info/vocabularies/erediensten/typeEredienst",
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/ns/org#hasPrimarySite",
+ "http://www.w3.org/ns/org#hasSite",
+ "http://www.w3.org/ns/adms#identifier"
]
},
{
"type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
- "strictTypeExport": "true",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://data.vlaanderen.be/ns/besluit#bestuurt",
+ "http://www.w3.org/ns/org#classification",
+ "http://data.vlaanderen.be/ns/mandaat#bindingEinde",
+ "http://data.vlaanderen.be/ns/mandaat#bindingStart",
+ "https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan",
"http://www.w3.org/ns/org#hasPost"
],
- "additionalFilter": "?subject / ?bestuurseenheid . ?bestuurseenheid a ?type. FILTER (?type IN (, ))"
+ "additionalFilter": "?subject (//)|(/) ?bestuurClassification . FILTER (?bestuurClassification IN (, , , ))"
},
{
"type": "http://data.lblod.info/vocabularies/erediensten/PositieBedienaar",
"graphsFilter": [
- "http://mu.semte.ch/graphs/organisatieportaal"
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
],
"properties": [
"http://mu.semte.ch/vocabularies/core/uuid",
"http://www.w3.org/ns/org#role",
"http://data.lblod.info/vocabularies/erediensten/functie"
]
+ },
+ {
+ "type": "http://data.lblod.info/vocabularies/erediensten/BetrokkenLokaleBesturen",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://data.lblod.info/vocabularies/erediensten/typebetrokkenheid",
+ "http://www.w3.org/ns/org#organization"
+ ]
+ },
+ {
+ "type": "http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#altLabel",
+ "http://www.w3.org/ns/regorg#orgStatus",
+ "http://www.w3.org/ns/org#hasPrimarySite",
+ "http://www.w3.org/ns/org#hasSite",
+ "http://www.w3.org/ns/org#linkedTo",
+ "http://data.lblod.info/vocabularies/erediensten/typeEredienst",
+ "http://www.w3.org/ns/adms#identifier"
+ ]
+ },
+ {
+ "type": "http://www.w3.org/ns/adms#Identifier",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#notation",
+ "https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator"
+ ],
+ "additionalFilter": "?subject \"KBO nummer\" ."
+ },
+ {
+ "type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/worship-service",
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/administrative-unit"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
+ ],
+ "additionalFilter": "?subject ^/ \"KBO nummer\" ."
+ },
+ {
+ "type": "http://www.w3.org/ns/org#Site",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "https://data.vlaanderen.be/ns/organisatie#bestaatUit",
+ "http://data.lblod.info/vocabularies/erediensten/vestigingstype"
+ ]
+ },
+ {
+ "type": "http://www.w3.org/ns/locn#Address",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/shared",
+ "http://mu.semte.ch/graphs/worship-service"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "https://data.vlaanderen.be/ns/adres#Adresvoorstelling.huisnummer",
+ "https://data.vlaanderen.be/ns/adres#Adresvoorstelling.busnummer",
+ "http://www.w3.org/ns/locn#thoroughfare",
+ "http://www.w3.org/ns/locn#postCode",
+ "https://data.vlaanderen.be/ns/adres#gemeentenaam",
+ "http://www.w3.org/ns/locn#adminUnitL2",
+ "http://www.w3.org/ns/locn#fullAddress"
+ ],
+ "additionalFilter": "?subject ^ ?site. ?site a ."
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#scopeNote"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#scopeNote"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://mu.semte.ch/vocabularies/ext/GeslachtCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://publications.europa.eu/ontology/euvoc#Country",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/public"
+ ],
+ "properties": [
+ "http://mu.semte.ch/vocabularies/core/uuid",
+ "http://www.w3.org/2000/01/rdf-schema#label",
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
}
]
}
diff --git a/config/delta/rules.js b/config/delta/rules.js
index 2b2899f..b502977 100644
--- a/config/delta/rules.js
+++ b/config/delta/rules.js
@@ -3,7 +3,7 @@ export default [
match: {
graph: {
type: "uri",
- value: "http://mu.semte.ch/graphs/organisatieportaal"
+ value: "http://mu.semte.ch/graphs/administrative-unit"
}
},
callback: {
@@ -20,7 +20,25 @@ export default [
match: {
graph: {
type: "uri",
- value: "http://mu.semte.ch/graphs/organisatieportaal"
+ value: "http://mu.semte.ch/graphs/worship-service"
+ }
+ },
+ callback: {
+ url: 'http://search/update',
+ method: 'POST'
+ },
+ options: {
+ resourceFormat: "v0.0.1",
+ gracePeriod: 10000,
+ ignoreFromSelf: true
+ }
+ },
+
+ {
+ match: {
+ graph: {
+ type: "uri",
+ value: "http://mu.semte.ch/graphs/administrative-unit"
}
},
callback: {
@@ -33,6 +51,25 @@ export default [
ignoreFromSelf: true
}
},
+
+ {
+ match: {
+ graph: {
+ type: "uri",
+ value: "http://mu.semte.ch/graphs/worship-service"
+ }
+ },
+ callback: {
+ url: 'http://resource/.mu/delta',
+ method: 'POST'
+ },
+ options: {
+ resourceFormat: "v0.0.1",
+ gracePeriod: 250,
+ ignoreFromSelf: true
+ }
+ },
+
{
match: {
predicate: {
@@ -48,42 +85,7 @@ export default [
resourceFormat: 'v0.0.1',
gracePeriod: 1000,
ignoreFromSelf: true,
- optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
- }
- },
- {
- match: {
- },
- callback: {
- url: 'http://delta-producer-pub-graph-maintainer-administrative-units/delta',
- method: 'POST'
- },
- options: {
- resourceFormat: 'v0.0.1',
- gracePeriod: 1000,
- ignoreFromSelf: true,
- optOutMuScopeIds: [
- "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
- "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
- ]
- }
- },
- {
- match: {
- graph: {
- type: 'uri',
- value: 'http://redpencil.data.gift/id/deltas/producer/administrative-units'
- }
- },
- callback: {
- url: 'http://delta-producer-json-diff-publisher-administrative-units/delta',
- method: 'POST'
- },
- options: {
- resourceFormat: 'v0.0.1',
- gracePeriod: 1000,
- ignoreFromSelf: true,
- optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
+ optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
}
},
{
@@ -98,9 +100,9 @@ export default [
gracePeriod: 1000,
ignoreFromSelf: true,
optOutMuScopeIds: [
- "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
- "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
- ]
+ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
+ "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
+ ]
}
},
{
@@ -118,7 +120,7 @@ export default [
resourceFormat: 'v0.0.1',
gracePeriod: 1000,
ignoreFromSelf: true,
- optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
+ optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
}
},
{
@@ -133,9 +135,9 @@ export default [
gracePeriod: 1000,
ignoreFromSelf: true,
optOutMuScopeIds: [
- "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
- "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
- ]
+ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
+ "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
+ ]
}
},
{
@@ -153,7 +155,7 @@ export default [
resourceFormat: 'v0.0.1',
gracePeriod: 1000,
ignoreFromSelf: true,
- optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
+ optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
}
},
{
@@ -169,9 +171,9 @@ export default [
gracePeriod: 1000,
ignoreFromSelf: true,
optOutMuScopeIds: [
- "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
- "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
- ]
+ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
+ "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
+ ]
}
},
{
@@ -193,7 +195,7 @@ export default [
resourceFormat: 'v0.0.1',
gracePeriod: 1000,
ignoreFromSelf: true,
- optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
+ optOutMuScopeIds: ["http://redpencil.data.gift/id/concept/muScope/deltas/initialSync"]
}
}
]
diff --git a/config/dispatcher/dispatcher.ex b/config/dispatcher/dispatcher.ex
index a426f37..c4128ef 100644
--- a/config/dispatcher/dispatcher.ex
+++ b/config/dispatcher/dispatcher.ex
@@ -77,7 +77,7 @@ defmodule Dispatcher do
end
match "/administrative-units/*path", %{ accept: [:json], layer: :api} do
- Proxy.forward conn, path, "http://cache/administrative-units/"
+ Proxy.forward conn, path, "http://resource/administrative-units/"
end
match "/administrative-unit-classification-codes/*path", %{ accept: [:json], layer: :api} do
@@ -85,7 +85,7 @@ defmodule Dispatcher do
end
match "/worship-administrative-units/*path", %{ accept: [:json], layer: :api} do
- Proxy.forward conn, path, "http://cache/worship-administrative-units/"
+ Proxy.forward conn, path, "http://resource/worship-administrative-units/"
end
match "/worship-services/*path", %{ accept: [:json], layer: :api} do
@@ -220,11 +220,14 @@ defmodule Dispatcher do
###############
match "/accounts", %{ accept: [:json], layer: :api} do
- Proxy.forward conn, [], "http://resource/accounts/"
+ 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/"
end
@@ -242,7 +245,7 @@ defmodule Dispatcher do
###############################################################
match "/search/*path", %{ accept: %{ json: true }, layer: :api_services} do
- IO.puts("hey")
+ IO.puts("hey")
Proxy.forward conn, path, "http://search/"
end
@@ -262,20 +265,36 @@ defmodule Dispatcher 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"
+ end
+
+ 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/"
+ 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/"
+ end
+
match "/person-information-updates/*path", %{ layer: :api_services, accept: %{ json: true } } do
- forward conn, path, "http://privacy/person-information-updates"
+ 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/person-information-requests"
+ 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/person-information-ask/"
+ 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/person-information-validate-ssn/"
+ forward conn, path, "http://privacy-unit/person-information-validate-ssn/"
end
get "/uri-info/*path", %{ layer: :api_services, accept: %{ json: true } } do
@@ -303,7 +322,7 @@ defmodule Dispatcher do
end
get "/files/*path" , %{ layer: :api_services, accept: %{ json: true } } do
- Proxy.forward conn, path, "http://cache/files/"
+ Proxy.forward conn, path, "http://resource/files/"
end
#################################################################
@@ -311,11 +330,11 @@ defmodule Dispatcher do
#################################################################
get "/datasets/*path", %{ layer: :api_services, accept: %{ json: true } } do
- Proxy.forward conn, path, "http://cache/datasets/"
+ Proxy.forward conn, path, "http://resource/datasets/"
end
get "/distributions/*path", %{ layer: :api_services, accept: %{ json: true } } do
- Proxy.forward conn, path, "http://cache/distributions/"
+ Proxy.forward conn, path, "http://resource/distributions/"
end
diff --git a/config/loket-consumer/leidinggevenden-dispatching/config.js b/config/loket-consumer/leidinggevenden-dispatching/config.js
index e280733..2afb525 100644
--- a/config/loket-consumer/leidinggevenden-dispatching/config.js
+++ b/config/loket-consumer/leidinggevenden-dispatching/config.js
@@ -7,7 +7,7 @@ const MAX_REASONING_RETRY_ATTEMPTS = parseInt(process.env.MAX_REASONING_RETRY_AT
const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 1000);
const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
-const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/organisatieportaal`;
+const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/administrative-unit`;
if (!process.env.FILE_SYNC_GRAPH)
@@ -26,4 +26,4 @@ module.exports = {
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
INGEST_GRAPH,
FILE_SYNC_GRAPH
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/leidinggevenden-dispatching/delta-sync-dispatching.js b/config/loket-consumer/leidinggevenden-dispatching/delta-sync-dispatching.js
index c8d8ba1..669895b 100644
--- a/config/loket-consumer/leidinggevenden-dispatching/delta-sync-dispatching.js
+++ b/config/loket-consumer/leidinggevenden-dispatching/delta-sync-dispatching.js
@@ -1,13 +1,10 @@
-const { transformStatements, batchedDbUpdate, partition, deleteFromAllGraphs } = require('./util');
-const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
- DIRECT_DATABASE_ENDPOINT,
- MU_CALL_SCOPE_ID_INITIAL_SYNC,
+const { transformStatements, batchedDbUpdate, deleteFromAllGraphs } = require('./util');
+const {
BATCH_SIZE,
MAX_DB_RETRY_ATTEMPTS,
SLEEP_BETWEEN_BATCHES,
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- INGEST_GRAPH,
- FILE_SYNC_GRAPH
+ INGEST_GRAPH
} = require('./config');
/**
@@ -34,43 +31,40 @@ async function dispatch(lib, data) {
const insertStatements = inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
if (deleteStatements.length) {
- await transformStatements(fetch, deleteStatements).then(
- transformedStatements => {
- deleteFromAllGraphs(
- muAuthSudo.updateSudo,
- transformedStatements,
- { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
- process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- );
- }
- )
+ const transformedStatementsToDelete = await transformStatements(fetch, deleteStatements);
+ if (transformedStatementsToDelete.length) {
+ await deleteFromAllGraphs(
+ muAuthSudo.updateSudo,
+ transformedStatementsToDelete,
+ { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
+ process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
+ );
+ }
}
-
if (insertStatements.length) {
- await transformStatements(fetch, insertStatements).then(
- transformedStatements => {
- batchedDbUpdate(
- muAuthSudo.updateSudo,
- INGEST_GRAPH,
- transformedStatements,
- { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
- process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
- BATCH_SIZE,
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- "INSERT"
- );
- }
- )
+ const transformedStatementsToInsert = await transformStatements(fetch, insertStatements);
+ if (transformedStatementsToInsert.length) {
+ await batchedDbUpdate(
+ muAuthSudo.updateSudo,
+ INGEST_GRAPH,
+ transformedStatementsToInsert,
+ { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
+ process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
+ BATCH_SIZE,
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
+ "INSERT"
+ );
+ }
}
}
}
module.exports = {
dispatch
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/leidinggevenden-dispatching/initial-sync-dispatching.js b/config/loket-consumer/leidinggevenden-dispatching/initial-sync-dispatching.js
index 88017c1..7967073 100644
--- a/config/loket-consumer/leidinggevenden-dispatching/initial-sync-dispatching.js
+++ b/config/loket-consumer/leidinggevenden-dispatching/initial-sync-dispatching.js
@@ -1,4 +1,4 @@
-const { transformStatements, batchedDbUpdate, partition } = require('./util');
+const { transformStatements, batchedDbUpdate } = require('./util');
const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
DIRECT_DATABASE_ENDPOINT,
MU_CALL_SCOPE_ID_INITIAL_SYNC,
@@ -6,8 +6,7 @@ const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
MAX_DB_RETRY_ATTEMPTS,
SLEEP_BETWEEN_BATCHES,
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- INGEST_GRAPH,
- FILE_SYNC_GRAPH
+ INGEST_GRAPH
} = require('./config');
const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT : process.env.MU_SPARQL_ENDPOINT;
@@ -36,24 +35,23 @@ async function dispatch(lib, data) {
if (termObjects.length) {
originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`)
- await transformStatements(fetch, originalInsertTriples).then(
- transformedInsertTriples => {
- batchedDbUpdate(
- muAuthSudo.updateSudo,
- INGEST_GRAPH,
- transformedInsertTriples,
- { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
- endpoint,
- BATCH_SIZE,
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION
- )
- }
- )
+ const transformedStatementsToInsert = await transformStatements(fetch, originalInsertTriples);
+ if (transformedStatementsToInsert.length) {
+ await batchedDbUpdate(
+ muAuthSudo.updateSudo,
+ INGEST_GRAPH,
+ transformedStatementsToInsert,
+ { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
+ endpoint,
+ BATCH_SIZE,
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION
+ );
+ }
}
}
module.exports = {
dispatch
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/leidinggevenden-dispatching/util.js b/config/loket-consumer/leidinggevenden-dispatching/util.js
index ff3932f..bdf477b 100644
--- a/config/loket-consumer/leidinggevenden-dispatching/util.js
+++ b/config/loket-consumer/leidinggevenden-dispatching/util.js
@@ -150,4 +150,4 @@ module.exports = {
deleteFromAllGraphs,
partition,
transformStatements
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/mandate-dispatching/config.js b/config/loket-consumer/mandate-dispatching/config.js
index e280733..2afb525 100644
--- a/config/loket-consumer/mandate-dispatching/config.js
+++ b/config/loket-consumer/mandate-dispatching/config.js
@@ -7,7 +7,7 @@ const MAX_REASONING_RETRY_ATTEMPTS = parseInt(process.env.MAX_REASONING_RETRY_AT
const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 1000);
const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
-const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/organisatieportaal`;
+const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/administrative-unit`;
if (!process.env.FILE_SYNC_GRAPH)
@@ -26,4 +26,4 @@ module.exports = {
SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION,
INGEST_GRAPH,
FILE_SYNC_GRAPH
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/mandate-dispatching/delta-sync-dispatching.js b/config/loket-consumer/mandate-dispatching/delta-sync-dispatching.js
index c8d8ba1..669895b 100644
--- a/config/loket-consumer/mandate-dispatching/delta-sync-dispatching.js
+++ b/config/loket-consumer/mandate-dispatching/delta-sync-dispatching.js
@@ -1,13 +1,10 @@
-const { transformStatements, batchedDbUpdate, partition, deleteFromAllGraphs } = require('./util');
-const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
- DIRECT_DATABASE_ENDPOINT,
- MU_CALL_SCOPE_ID_INITIAL_SYNC,
+const { transformStatements, batchedDbUpdate, deleteFromAllGraphs } = require('./util');
+const {
BATCH_SIZE,
MAX_DB_RETRY_ATTEMPTS,
SLEEP_BETWEEN_BATCHES,
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- INGEST_GRAPH,
- FILE_SYNC_GRAPH
+ INGEST_GRAPH
} = require('./config');
/**
@@ -34,43 +31,40 @@ async function dispatch(lib, data) {
const insertStatements = inserts.map(o => `${o.subject} ${o.predicate} ${o.object}.`);
if (deleteStatements.length) {
- await transformStatements(fetch, deleteStatements).then(
- transformedStatements => {
- deleteFromAllGraphs(
- muAuthSudo.updateSudo,
- transformedStatements,
- { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
- process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- );
- }
- )
+ const transformedStatementsToDelete = await transformStatements(fetch, deleteStatements);
+ if (transformedStatementsToDelete.length) {
+ await deleteFromAllGraphs(
+ muAuthSudo.updateSudo,
+ transformedStatementsToDelete,
+ { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
+ process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
+ );
+ }
}
-
if (insertStatements.length) {
- await transformStatements(fetch, insertStatements).then(
- transformedStatements => {
- batchedDbUpdate(
- muAuthSudo.updateSudo,
- INGEST_GRAPH,
- transformedStatements,
- { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
- process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
- BATCH_SIZE,
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- "INSERT"
- );
- }
- )
+ const transformedStatementsToInsert = await transformStatements(fetch, insertStatements);
+ if (transformedStatementsToInsert.length) {
+ await batchedDbUpdate(
+ muAuthSudo.updateSudo,
+ INGEST_GRAPH,
+ transformedStatementsToInsert,
+ { 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
+ process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
+ BATCH_SIZE,
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
+ "INSERT"
+ );
+ }
}
}
}
module.exports = {
dispatch
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/mandate-dispatching/initial-sync-dispatching.js b/config/loket-consumer/mandate-dispatching/initial-sync-dispatching.js
index 88017c1..152abda 100644
--- a/config/loket-consumer/mandate-dispatching/initial-sync-dispatching.js
+++ b/config/loket-consumer/mandate-dispatching/initial-sync-dispatching.js
@@ -1,4 +1,4 @@
-const { transformStatements, batchedDbUpdate, partition } = require('./util');
+const { transformStatements, batchedDbUpdate } = require('./util');
const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
DIRECT_DATABASE_ENDPOINT,
MU_CALL_SCOPE_ID_INITIAL_SYNC,
@@ -6,8 +6,7 @@ const { BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES,
MAX_DB_RETRY_ATTEMPTS,
SLEEP_BETWEEN_BATCHES,
SLEEP_TIME_AFTER_FAILED_DB_OPERATION,
- INGEST_GRAPH,
- FILE_SYNC_GRAPH
+ INGEST_GRAPH
} = require('./config');
const endpoint = BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES ? DIRECT_DATABASE_ENDPOINT : process.env.MU_SPARQL_ENDPOINT;
@@ -36,24 +35,23 @@ async function dispatch(lib, data) {
if (termObjects.length) {
originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`)
- await transformStatements(fetch, originalInsertTriples).then(
- transformedInsertTriples => {
- batchedDbUpdate(
- muAuthSudo.updateSudo,
- INGEST_GRAPH,
- transformedInsertTriples,
- { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
- endpoint,
- BATCH_SIZE,
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION
- )
- }
- )
+ const transformedStatementsToInsert = await transformStatements(fetch, originalInsertTriples);
+ if (transformedStatementsToInsert.length) {
+ await batchedDbUpdate(
+ muAuthSudo.updateSudo,
+ INGEST_GRAPH,
+ transformedStatementsToInsert,
+ { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
+ endpoint,
+ BATCH_SIZE,
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION
+ )
+ }
}
}
module.exports = {
dispatch
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/mandate-dispatching/util.js b/config/loket-consumer/mandate-dispatching/util.js
index ff3932f..bdf477b 100644
--- a/config/loket-consumer/mandate-dispatching/util.js
+++ b/config/loket-consumer/mandate-dispatching/util.js
@@ -150,4 +150,4 @@ module.exports = {
deleteFromAllGraphs,
partition,
transformStatements
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/positions-dispatching/config.js b/config/loket-consumer/positions-dispatching/config.js
index 911277b..ab34eca 100644
--- a/config/loket-consumer/positions-dispatching/config.js
+++ b/config/loket-consumer/positions-dispatching/config.js
@@ -1,18 +1,32 @@
const BATCH_SIZE = parseInt(process.env.BATCH_SIZE) || 100;
-const MU_CALL_SCOPE_ID_INITIAL_SYNC = process.env.MU_CALL_SCOPE_ID_INITIAL_SYNC || 'http://redpencil.data.gift/id/concept/muScope/deltas/consumer/initialSync';
-const BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES = process.env.BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES == 'true' ? true : false;
-const DIRECT_DATABASE_ENDPOINT = process.env.DIRECT_DATABASE_ENDPOINT || 'http://virtuoso:8890/sparql';
+const MU_CALL_SCOPE_ID_INITIAL_SYNC =
+ process.env.MU_CALL_SCOPE_ID_INITIAL_SYNC ||
+ "http://redpencil.data.gift/id/concept/muScope/deltas/consumer/initialSync";
+const BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES =
+ process.env.BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES == "true" ? true : false;
+const DIRECT_DATABASE_ENDPOINT =
+ process.env.DIRECT_DATABASE_ENDPOINT || "http://virtuoso:8890/sparql";
const MAX_DB_RETRY_ATTEMPTS = parseInt(process.env.MAX_DB_RETRY_ATTEMPTS || 5);
-const MAX_REASONING_RETRY_ATTEMPTS = parseInt(process.env.MAX_REASONING_RETRY_ATTEMPTS || 5);
-const SLEEP_BETWEEN_BATCHES = parseInt(process.env.SLEEP_BETWEEN_BATCHES || 1000);
-const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000);
-const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000);
-const INGEST_GRAPH = process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/organisatieportaal`;
-const PRIVACY_SENSITIVE_GRAPH = process.env.PRIVACY_SENSITIVE_GRAPH || `http://mu.semte.ch/graphs/privacy-centric-graph`;
-const UNFILTERED_MAPPING = 'main';
-const MAIN_INFO_MAPPING = 'main-info';
-const PRIVATE_INFO_MAPPING = 'private-info';
-
+const MAX_REASONING_RETRY_ATTEMPTS = parseInt(
+ process.env.MAX_REASONING_RETRY_ATTEMPTS || 5
+);
+const SLEEP_BETWEEN_BATCHES = parseInt(
+ process.env.SLEEP_BETWEEN_BATCHES || 1000
+);
+const SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION = parseInt(
+ process.env.SLEEP_TIME_AFTER_FAILED_REASONING_OPERATION || 10000
+);
+const SLEEP_TIME_AFTER_FAILED_DB_OPERATION = parseInt(
+ process.env.SLEEP_TIME_AFTER_FAILED_DB_OPERATION || 60000
+);
+const INGEST_GRAPH =
+ process.env.INGEST_GRAPH || `http://mu.semte.ch/graphs/worship-service`;
+const PRIVACY_SENSITIVE_GRAPH =
+ process.env.PRIVACY_SENSITIVE_GRAPH ||
+ `http://mu.semte.ch/graphs/worship-privacy-centric-graph`;
+const UNFILTERED_MAPPING = "main";
+const MAIN_INFO_MAPPING = "main-info";
+const PRIVATE_INFO_MAPPING = "private-info";
if (!process.env.FILE_SYNC_GRAPH)
throw `Expected 'FILE_SYNC_GRAPH' to be provided.`;
@@ -33,4 +47,5 @@ module.exports = {
UNFILTERED_MAPPING,
MAIN_INFO_MAPPING,
PRIVATE_INFO_MAPPING,
-};
\ No newline at end of file
+ FILE_SYNC_GRAPH,
+};
diff --git a/config/loket-consumer/positions-dispatching/delta-sync-dispatching.js b/config/loket-consumer/positions-dispatching/delta-sync-dispatching.js
index d826b2e..5384005 100644
--- a/config/loket-consumer/positions-dispatching/delta-sync-dispatching.js
+++ b/config/loket-consumer/positions-dispatching/delta-sync-dispatching.js
@@ -1,4 +1,4 @@
-const { transformStatements, batchedDbUpdate, partition, deleteFromAllGraphs } = require('./util');
+const { transformStatements, batchedDbUpdate, deleteFromAllGraphs } = require('./util');
const {
BATCH_SIZE,
MAX_DB_RETRY_ATTEMPTS,
@@ -72,7 +72,7 @@ async function dispatch(lib, data) {
PRIVACY_SENSITIVE_GRAPH,
transformedStatementsToInsertPrivate,
{ 'mu-call-scope-id': 'http://redpencil.data.gift/id/concept/muScope/deltas/write-for-dispatch' },
- process.env.MU_SPARQL_ENDPOINT, //Note: this is the default endpoint through auth
+ process.env.MU_SPARQL_ENDPOINT, // Note: this is the default endpoint through auth
BATCH_SIZE,
MAX_DB_RETRY_ATTEMPTS,
SLEEP_BETWEEN_BATCHES,
@@ -85,4 +85,4 @@ async function dispatch(lib, data) {
module.exports = {
dispatch
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/positions-dispatching/initial-sync-dispatching.js b/config/loket-consumer/positions-dispatching/initial-sync-dispatching.js
index f5fedc8..86f34b7 100644
--- a/config/loket-consumer/positions-dispatching/initial-sync-dispatching.js
+++ b/config/loket-consumer/positions-dispatching/initial-sync-dispatching.js
@@ -38,43 +38,38 @@ async function dispatch(lib, data) {
if (termObjects.length) {
originalInsertTriples = termObjects.map(o => `${o.subject} ${o.predicate} ${o.object}.`)
- await transformStatements(fetch, originalInsertTriples, MAIN_INFO_MAPPING).then(
- transformedInsertTriples => {
- if (transformedInsertTriples.length) {
- batchedDbUpdate(
- muAuthSudo.updateSudo,
- INGEST_GRAPH,
- transformedInsertTriples,
- { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
- endpoint,
- BATCH_SIZE,
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION
- )
- }
- }
- );
- await transformStatements(fetch, originalInsertTriples, PRIVATE_INFO_MAPPING).then(
- transformedInsertTriples => {
- if (transformedInsertTriples.length) {
- batchedDbUpdate(
- muAuthSudo.updateSudo,
- PRIVACY_SENSITIVE_GRAPH,
- transformedInsertTriples,
- { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
- endpoint,
- BATCH_SIZE,
- MAX_DB_RETRY_ATTEMPTS,
- SLEEP_BETWEEN_BATCHES,
- SLEEP_TIME_AFTER_FAILED_DB_OPERATION
- )
- }
- }
- );
+ const transformedStatementsToInsert = await transformStatements(fetch, originalInsertTriples, MAIN_INFO_MAPPING);
+ if (transformedStatementsToInsert.length) {
+ await batchedDbUpdate(
+ muAuthSudo.updateSudo,
+ INGEST_GRAPH,
+ transformedStatementsToInsert,
+ { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
+ endpoint,
+ BATCH_SIZE,
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION
+ );
+ }
+
+ const transformedStatementsToInsertPrivate = await transformStatements(fetch, originalInsertTriples, PRIVATE_INFO_MAPPING);
+ if (transformedStatementsToInsertPrivate.length) {
+ await batchedDbUpdate(
+ muAuthSudo.updateSudo,
+ PRIVACY_SENSITIVE_GRAPH,
+ transformedStatementsToInsertPrivate,
+ { 'mu-call-scope-id': MU_CALL_SCOPE_ID_INITIAL_SYNC },
+ endpoint,
+ BATCH_SIZE,
+ MAX_DB_RETRY_ATTEMPTS,
+ SLEEP_BETWEEN_BATCHES,
+ SLEEP_TIME_AFTER_FAILED_DB_OPERATION
+ );
+ }
}
}
module.exports = {
dispatch
-};
\ No newline at end of file
+};
diff --git a/config/loket-consumer/positions-dispatching/util.js b/config/loket-consumer/positions-dispatching/util.js
index ce38369..f6411a2 100644
--- a/config/loket-consumer/positions-dispatching/util.js
+++ b/config/loket-consumer/positions-dispatching/util.js
@@ -151,4 +151,4 @@ module.exports = {
deleteFromAllGraphs,
partition,
transformStatements
-};
\ No newline at end of file
+};
diff --git a/config/migrations-triggering-indexing/2023/20230202100000-delete-mandatarissen.sparql b/config/migrations-triggering-indexing/2023/20230202100000-delete-mandatarissen.sparql
new file mode 100644
index 0000000..2d05f67
--- /dev/null
+++ b/config/migrations-triggering-indexing/2023/20230202100000-delete-mandatarissen.sparql
@@ -0,0 +1,33 @@
+PREFIX org:
+PREFIX locn:
+PREFIX schema:
+
+DELETE {
+ GRAPH {
+
+ ?mandatarissen ?pMandatarissen ?oMandatarissen .
+ ?contactPoint ?pContactPoint ?oContactPoint .
+ ?address ?pAddress ?oAddress .
+
+ }
+}
+WHERE {
+ GRAPH {
+
+ VALUES ?mandatarissen {
+
+
+ }
+
+ ?mandatarissen ?pMandatarissen ?oMandatarissen .
+
+ OPTIONAL {
+ ?mandatarissen schema:contactPoint ?contactPoint .
+ ?contactPoint ?pContactPoint ?oContactPoint.
+ OPTIONAL {
+ ?contactPoint locn:address ?address .
+ ?address ?pAddress ?oAddress .
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/config/migrations-triggering-indexing/2023/20230203150000-remove-dummy-worship.sparql b/config/migrations-triggering-indexing/2023/20230203150000-remove-dummy-worship.sparql
new file mode 100644
index 0000000..314c464
--- /dev/null
+++ b/config/migrations-triggering-indexing/2023/20230203150000-remove-dummy-worship.sparql
@@ -0,0 +1,50 @@
+PREFIX org:
+PREFIX adms:
+PREFIX generiek:
+PREFIX organisatie:
+
+DELETE {
+ GRAPH {
+ ?bestuur ?pbestuur ?obestuur .
+ ?primarySite ?pprimarySite ?oprimarySite .
+ ?address ?paddress ?oaddress .
+ ?contactPoint ?pcontactPoint ?ocontactPoint .
+ ?identifier ?pidentifier ?oidentifier .
+ ?structuredIdentifier ?pstructuredIdentifier ?ostructuredIdentifier .
+ }
+} WHERE {
+ GRAPH {
+ BIND( as ?bestuur)
+
+ ?bestuur ?pbestuur ?obestuur .
+
+ OPTIONAL {
+
+ ?bestuur org:hasPrimarySite ?primarySite .
+
+ OPTIONAL {
+ ?primarySite organisatie:bestaatUit ?address .
+ ?address ?paddress ?oaddress .
+ }
+ OPTIONAL {
+ ?primarySite org:siteAddress ?contactPoint .
+ ?contactPoint ?pcontactPoint ?ocontactPoint .
+ }
+
+ ?primarySite ?pprimarySite ?oprimarySite .
+
+ }
+ OPTIONAL {
+
+ ?bestuur adms:identifier ?identifier .
+
+ OPTIONAL {
+ ?identifier generiek:gestructureerdeIdentificator ?structuredIdentifier .
+ ?structuredIdentifier ?pstructuredIdentifier ?ostructuredIdentifier .
+ }
+
+ ?identifier ?pidentifier ?oidentifier .
+
+ }
+ }
+}
diff --git a/config/migrations/2023/20230124100000-delete-person-mandatarissen.sparql b/config/migrations/2023/20230124100000-delete-person-mandatarissen.sparql
new file mode 100644
index 0000000..9deef26
--- /dev/null
+++ b/config/migrations/2023/20230124100000-delete-person-mandatarissen.sparql
@@ -0,0 +1,59 @@
+PREFIX mandaat:
+PREFIX schema:
+PREFIX locn:
+PREFIX org:
+
+DELETE {
+ GRAPH {
+ ?mandatarissen ?pMandatarissen ?oMandatarissen .
+ ?mandaat ?pMandaat ?oMandaat .
+ ?person ?pPerson ?oPerson .
+ ?contactPoint ?pContactPoint ?oContactPoint .
+ ?address ?pAddress ?oAddress .
+ }
+} WHERE {
+ GRAPH {
+ VALUES ?mandatarissen {
+ #1
+ #2
+ }
+
+ ?mandatarissen org:holds ?mandaat ;
+ mandaat:isBestuurlijkeAliasVan ?person ;
+ ?pMandatarissen ?oMandatarissen .
+
+ OPTIONAL {
+ ?mandatarissen schema:contactPoint ?contactPoint .
+ OPTIONAL {
+ ?contactPoint locn:address ?address ;
+ ?pContactPoint ?oContactPoint .
+ ?address ?pAddress ?oAddress .
+ }
+ }
+
+ ?person ?pPerson ?oPerson .
+ ?mandaat ?pMandaat ?oMandaat .
+ }
+}
+
+# An associated call to trigger a reindex is:
+
+# curl --location --request POST '172.32.0.21/update' \
+# --header 'Content-Type: application/vnd.api+json' \
+# --data-raw ' [
+# {
+# "deletes": [
+# {
+# "subject": { "type": "uri", "value": "http://data.lblod.info/id/mandatarissen/807a3e07c95fe40962d64695069af946" },
+# "predicate": { "type": "uri", "value": "http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan" },
+# "object": { "type": "uri", "value": "http://data.lblod.info/id/personen/620523C451BFC225E4ECFA97" }
+# },
+# {
+# "subject": { "type": "uri", "value": "http://data.lblod.info/id/mandatarissen/40ed3cb19f9fa33e47b39016780dce1d" },
+# "predicate": { "type": "uri", "value": "http://data.vlaanderen.be/ns/mandaat#isBestuurlijkeAliasVan" },
+# "object": { "type": "uri", "value": "http://data.lblod.info/id/personen/620523C451BFC225E4ECFA97" }
+# }
+# ],
+# "inserts": []
+# }
+# ]'
\ No newline at end of file
diff --git a/config/migrations/2023/20230125140612-add-missing-governing-body.sparql b/config/migrations/2023/20230125140612-add-missing-governing-body.sparql
new file mode 100644
index 0000000..2eb46bb
--- /dev/null
+++ b/config/migrations/2023/20230125140612-add-missing-governing-body.sparql
@@ -0,0 +1,35 @@
+PREFIX mu:
+PREFIX org:
+PREFIX besluit:
+PREFIX generiek:
+
+# OP-2070
+INSERT DATA {
+ GRAPH {
+
+ a ;
+ mu:uuid "56c71a29-bff0-4b67-804d-2c98fd4bd10f";
+ besluit:bestuurt ;
+ org:classification .
+ a ;
+ mu:uuid "54f16d44-2f2c-45df-83c1-5a9fbe4756ca";
+ generiek:isTijdspecialisatieVan .
+ }
+}
+
+;
+
+# OP-2084
+
+INSERT DATA {
+ GRAPH {
+
+ a ;
+ mu:uuid "1179426b-69d4-4974-8aa2-c4d46a22c9cc";
+ besluit:bestuurt ;
+ org:classification .
+ a ;
+ mu:uuid "b3db6a8d-d6cb-4b78-af87-b80dfda580c7";
+ generiek:isTijdspecialisatieVan .
+ }
+}
diff --git a/config/migrations/2023/20230131100000-add-city-change-event.sparql b/config/migrations/2023/20230131100000-add-city-change-event.sparql
new file mode 100644
index 0000000..aeee525
--- /dev/null
+++ b/config/migrations/2023/20230131100000-add-city-change-event.sparql
@@ -0,0 +1,26 @@
+PREFIX rdf:
+PREFIX org:
+PREFIX mu:
+PREFIX ext:
+PREFIX ch:
+PREFIX code:
+
+INSERT DATA {
+ GRAPH {
+
+
+ rdf:type code:VeranderingsgebeurtenisResultaat;
+ mu:uuid "0b2f1b62-a15d-11ed-a8fc-0242ac120002" ;
+ code:resulterendeStatus ;
+ ext:resultingOrganization .
+
+
+ rdf:type org:ChangeEvent ;
+ mu:uuid "63D7E7E07A8167ED439EC88E" ;
+ ch:typeWijziging ;
+ org:resultingOrganization ;
+ org:originalOrganization ;
+ code:veranderingsgebeurtenisResultaat .
+
+ }
+}
diff --git a/config/migrations/2023/20230131172200-delete-region.sparql b/config/migrations/2023/20230131172200-delete-region.sparql
new file mode 100644
index 0000000..2c549fb
--- /dev/null
+++ b/config/migrations/2023/20230131172200-delete-region.sparql
@@ -0,0 +1,25 @@
+PREFIX rdf:
+PREFIX besluit:
+PREFIX geo:
+
+DELETE {
+ GRAPH {
+
+ ?werkingsgebied geo:sfWithin ?locatie .
+
+ }
+} WHERE {
+ GRAPH {
+
+ VALUES ?bestuurseenheid {
+ # OP-2033
+ # OP-1994
+ }
+
+ ?bestuurseenheid rdf:type besluit:Bestuurseenheid ;
+ besluit:werkingsgebied ?werkingsgebied .
+
+ ?werkingsgebied geo:sfWithin ?locatie .
+
+ }
+}
\ No newline at end of file
diff --git a/config/migrations/2023/20230202100000-change-kbo-number.sparql b/config/migrations/2023/20230202100000-change-kbo-number.sparql
new file mode 100644
index 0000000..a63d2e1
--- /dev/null
+++ b/config/migrations/2023/20230202100000-change-kbo-number.sparql
@@ -0,0 +1,18 @@
+PREFIX generiek:
+
+DELETE {
+ GRAPH ?g {
+
+ generiek:lokaleIdentificator ?kbo .
+ }
+} INSERT {
+ GRAPH ?g {
+
+ generiek:lokaleIdentificator "0655698422" .
+ }
+} WHERE {
+ GRAPH ?g {
+
+ generiek:lokaleIdentificator ?kbo .
+ }
+}
\ No newline at end of file
diff --git a/config/migrations/2023/20230213113324-add-new-codelist.sparql b/config/migrations/2023/20230213113324-add-new-codelist.sparql
new file mode 100644
index 0000000..ca4a6d3
--- /dev/null
+++ b/config/migrations/2023/20230213113324-add-new-codelist.sparql
@@ -0,0 +1,18 @@
+
+PREFIX org:
+PREFIX ere:
+PREFIX skos:
+PREFIX mu:
+
+
+INSERT DATA {
+ graph {
+ a ;
+ mu:uuid "7d8e0c15-7726-4196-9416-6dc40ed858bb";
+ skos:prefLabel "Waarnemende Imam";
+ ;
+ .
+ }
+}
+
+
diff --git a/config/migrations/2023/20230214163952-clear-admin-unit-producer-data.sparql b/config/migrations/2023/20230214163952-clear-admin-unit-producer-data.sparql
new file mode 100644
index 0000000..e5938f6
--- /dev/null
+++ b/config/migrations/2023/20230214163952-clear-admin-unit-producer-data.sparql
@@ -0,0 +1,61 @@
+DELETE {
+ GRAPH ?g {
+ ?s ?p ?o .
+ }
+} WHERE {
+ GRAPH ?g {
+ ?s a ;
+ ;
+ ?p ?o .
+ }
+}
+;
+DELETE {
+ GRAPH ?g {
+ ?s ?p ?o .
+ }
+} WHERE {
+ GRAPH ?g {
+ ?s a ;
+ ;
+ ?p ?o .
+ }
+}
+;
+DELETE {
+ GRAPH ?g {
+ ?s ?p ?o .
+ }
+} WHERE {
+ GRAPH ?g {
+ ?s a ;
+ ;
+ ?p ?o .
+ }
+}
+;
+DELETE {
+ GRAPH ?g {
+ ?s ?p ?o .
+ }
+} WHERE {
+ GRAPH ?g {
+ ?s a ;
+ ;
+ ?p ?o .
+ }
+}
+;
+DELETE {
+ GRAPH ?g {
+ ?s ?p ?o .
+ }
+} WHERE {
+ GRAPH ?g {
+ ?s a ;
+ ;
+ ?p ?o .
+ }
+}
+;
+CLEAR GRAPH
diff --git a/config/migrations/2023/20230215094055-add-missing-position.graph b/config/migrations/2023/20230215094055-add-missing-position.graph
new file mode 100644
index 0000000..00b1762
--- /dev/null
+++ b/config/migrations/2023/20230215094055-add-missing-position.graph
@@ -0,0 +1 @@
+http://mu.semte.ch/graphs/organisatieportaal
diff --git a/config/migrations/2023/20230215094055-add-missing-position.ttl b/config/migrations/2023/20230215094055-add-missing-position.ttl
new file mode 100644
index 0000000..f385e01
--- /dev/null
+++ b/config/migrations/2023/20230215094055-add-missing-position.ttl
@@ -0,0 +1,613 @@
+@prefix ns0: .
+@prefix ns1: .
+@prefix ns2: .
+@prefix rdf: .
+@prefix ns4: .
+@prefix ns5: .
+
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:e06b3e3d005d25e4a23459dd5773c00e .
+
+ ns0:wordtBediendDoor ns1:a3d7cda7f4acad34682b8086d13ea397 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:a6735a9f75e9f30f8d31198e18e39192 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:e39958a6e2d38e23b5669a3b9ae1e719 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:c1efedae090d2c4be97d529c73b5ae87 .
+
+ ns0:wordtBediendDoor ns1:ef9ebb3d9429b24c87a6576bfe302d85 .
+
+ ns0:wordtBediendDoor .
+ns2:ef77bb3094fdc4a7ed7e09551500acfe
+ ns0:wordtBediendDoor .
+ns2:a8faa182c59167da7551f40979dc5022
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:c924a44f9163ec6c946505f5f687708d .
+ns2:ca0daee18a29e187017bf236e26f1ec2
+ ns0:wordtBediendDoor ns1:cb4bf613bd82f99785df7aedb65b3367 .
+ns2:f95b761af55091b491fd62bd6bed11dc
+ ns0:wordtBediendDoor ns1:d1dd10ca84303e547546f7e7a502dc6c .
+
+ ns0:wordtBediendDoor .
+ns2:c1c334a2cc56ac501badce5e879aec65
+ ns0:wordtBediendDoor ns1:b74b9e77b49bbe8f5be5766be677c9bb .
+
+ ns0:wordtBediendDoor ns1:bfe1868d6a41e073f114dd2efdcf51a5 .
+
+ ns0:wordtBediendDoor .
+ns2:a6e0531c6c4b5885552604163cfabfbc
+ ns0:wordtBediendDoor ns1:cdb151adeceb026fc5e81ea80d729391 .
+
+ ns0:wordtBediendDoor ns1:c94d252366917f598a19df33680bbb29 .
+ns2:cd7d4208e8e6291d75b33d89e3a0a439
+ ns0:wordtBediendDoor .
+ns2:a8d9f1a45c11c6761306bdf680349593
+ ns0:wordtBediendDoor ns1:fad9626cd2ab433ce884ef75d06e840b .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:d5ef4ca7efebfdafc4d28d2d8ab019b1 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+ns2:a8880f3d8b482788c5f3adbf58f01b4f
+ ns0:wordtBediendDoor .
+ns2:adeaab8a02815bf2c5816165a45ad4c5
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+ns2:c7d6827eb88cd977146e72583461071b
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+ns2:b81199eddd02f291bd4c1a0e29e5b9c8
+ ns0:wordtBediendDoor ns1:cf320c8fb2e9db3a488b0ac016440f33 .
+ns2:db46915e77fbf8f083e9861c802b2b13
+ ns0:wordtBediendDoor ns1:b6c9aeea4bf9daa1520156b9fe5a49e5 .
+ns2:fd4ae252fffca29852354b12ef37b086
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+ns2:b540096ac8be2c9c72dafd59e61080c5
+ ns0:wordtBediendDoor ns1:f9a134e17b7ac4a42a66b7b66d86d00b .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:d4505963c15a4dd1cc77b34977b727c0 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:f90bc6678d032b1203c3e003b05a903e .
+
+ ns0:wordtBediendDoor ns1:a1a4364ce6767907e600d8025c2f8cb9 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:baa288870012628b450bd134175cb91a .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:f1ac3ad7a3cf88917b6ff453bcdae693 .
+
+ ns0:wordtBediendDoor ns1:e3c51e910902a9b4087f9d2dfe8629a2 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:ad8e06f595ccd82c799c81e7838db45e .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:e32bf54030b9a31d84249386a289287a .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:cf701aabf06d091083135506f7d8b785 .
+
+ ns0:wordtBediendDoor ns1:f484ae309f3f981489724334f7a9e90b .
+
+ ns0:wordtBediendDoor ns1:ebfd92d4fa2fb375fb407070e5275bc1 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor ns1:d82546b18b55081cc9c8e46aff579c75 .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ ns0:wordtBediendDoor .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "72c14871c7a0f28cd52ebeb73d6d0fee" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "203b6f9c7e6eec3f62860b378e8371b0" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "79a1d65018cd0f86fa5757f9594ed52b" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "6436abc14a9615cfaa26f4dc7609bef8" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "116c6e00577975a5f41d4789166549d4" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "4a0c024fae6dcfb732006eeacf926c1c" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "0cde683248e90e543936deea015ec7f8" ;
+ ns0:functie .
+ns1:e06b3e3d005d25e4a23459dd5773c00e
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "e06b3e3d005d25e4a23459dd5773c00e" ;
+ ns0:functie .
+ns1:a3d7cda7f4acad34682b8086d13ea397
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "a3d7cda7f4acad34682b8086d13ea397" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "16c09cdc3608605b3ee88bf9ab9c7dac" ;
+ ns0:functie .
+ns1:a6735a9f75e9f30f8d31198e18e39192
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "a6735a9f75e9f30f8d31198e18e39192" ;
+ ns0:functie .
+
+ rdf:type ns4:Post , ns0:PositieBedienaar ;
+ ns5:uuid "0351db31503375a8fb31b7089c65ec83" ;
+ ns0:functie