diff --git a/.gitignore b/.gitignore
index 8eaa314..cc42a73 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,3 +28,4 @@ out.json
security.yml
config/proxy-https/proxy_ssl.conf
/config/search/update-handler.store
+/config/search/dev/update-handler.store
diff --git a/README.md b/README.md
index d4741e2..a59e0e3 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-# Contact Hub
+# Organization portal
-Backend for the Contact Hub application based on the mu.semte.ch microservices stack.
+Backend for the organization portal application, based on the mu.semte.ch microservices stack.
## How to
diff --git a/config/authorization/config.ex b/config/authorization/config.ex
index d1784cb..fb10aaa 100644
--- a/config/authorization/config.ex
+++ b/config/authorization/config.ex
@@ -10,6 +10,7 @@ defmodule Acl.UserGroups.Config do
@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",
"http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
"http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
@@ -68,7 +69,7 @@ defmodule Acl.UserGroups.Config do
defp sparql_query_for_access_role( group_string ) do
"PREFIX ext:
PREFIX mu:
- SELECT ?session_group ?session_role WHERE {
+ SELECT distinct ?session_group ?session_role WHERE {
ext:sessionGroup/mu:uuid ?session_group;
ext:sessionRole ?session_role.
FILTER( ?session_role = \"#{group_string}\" )
@@ -116,30 +117,6 @@ defmodule Acl.UserGroups.Config do
}
]
},
- %GroupSpec{
- name: "ch-lezer",
- useage: [:read],
- access: access_by_role( "ABBOrganisatiePortaalGebruiker-lezer" ),
- graphs: [ %GraphSpec{
- graph: "http://mu.semte.ch/graphs/organisatieportaal",
- constraint: %ResourceConstraint{
- resource_types: @protected_resource_type } } ] },
- %GroupSpec{
- name: "ch-editeerder",
- useage: [:read, :write, :read_for_write],
- access: access_by_role( "ABBOrganisatiePortaalGebruiker-editeerder" ),
- graphs: [ %GraphSpec{
- graph: "http://mu.semte.ch/graphs/organisatieportaal",
- constraint: %ResourceConstraint{
- resource_types: @protected_resource_type } } ] },
- %GroupSpec{
- name: "ch-beheerder",
- useage: [:read, :write, :read_for_write],
- access: access_by_role( "ABBOrganisatiePortaalGebruiker-beheerder" ),
- graphs: [ %GraphSpec{
- graph: "http://mu.semte.ch/graphs/organisatieportaal",
- constraint: %ResourceConstraint{
- resource_types: @protected_resource_type } } ] },
%GroupSpec{
name: "public",
useage: [:read],
diff --git a/config/delta-producer/dump-file-publisher/config.json b/config/delta-producer/dump-file-publisher/config.json
index 66391ca..5f0fd27 100644
--- a/config/delta-producer/dump-file-publisher/config.json
+++ b/config/delta-producer/dump-file-publisher/config.json
@@ -2,21 +2,37 @@
"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"
+ "fileBaseName": "dump-administrative-units",
+ "compression": 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"
+ "fileBaseName": "dump-administrative-units",
+ "compression": 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",
- "fileBaseName": "dump-organizations"
+ "fileBaseName": "dump-organizations",
+ "compression": true
},
"http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations" : {
"dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/OrganizationsCacheGraphDump",
"targetGraph": "http://redpencil.data.gift/id/deltas/producer/organizations",
- "fileBaseName": "dump-organizations"
+ "fileBaseName": "dump-organizations",
+ "compression": true
+ },
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/public" : {
+ "dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/PublicCacheGraphDump",
+ "targetGraph": "http://redpencil.data.gift/id/deltas/producer/public",
+ "fileBaseName": "dump-public",
+ "compression": false
+ },
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public" : {
+ "dcatDataSetSubject": "http://data.lblod.info/datasets/delta-producer/dumps/PublicCacheGraphDump",
+ "targetGraph": "http://redpencil.data.gift/id/deltas/producer/public",
+ "fileBaseName": "dump-public",
+ "compression": false
}
}
diff --git a/config/delta-producer/public/export.json b/config/delta-producer/public/export.json
new file mode 100644
index 0000000..49d2931
--- /dev/null
+++ b/config/delta-producer/public/export.json
@@ -0,0 +1,270 @@
+{
+ "conceptScheme": "http://lblod.data.gift/concept-schemes/10caf4a4-1ff5-4c05-917e-56489910d68b",
+ "export": [
+ {
+ "type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst",
+ "strictTypeExport": "true",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#altLabel",
+ "http://www.w3.org/ns/adms#identifier",
+ "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#changedBy",
+ "http://www.w3.org/ns/org#resultedFrom",
+ "http://www.w3.org/ns/org#hasPost",
+ "http://www.w3.org/ns/org#linkedTo",
+ "http://www.w3.org/ns/org#hasSubOrganization",
+ "http://www.w3.org/ns/org#classification",
+ "http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur",
+ "http://mu.semte.ch/vocabularies/ext/werkingsgebiedNiveau",
+ "http://data.lblod.info/vocabularies/erediensten/denominatie",
+ "http://data.lblod.info/vocabularies/erediensten/grensoverschrijdend",
+ "http://data.lblod.info/vocabularies/erediensten/wordtBediendDoor",
+ "http://data.lblod.info/vocabularies/erediensten/typeEredienst"
+ ]
+ },
+ {
+ "type": "http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst",
+ "strictTypeExport": "true",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel",
+ "http://www.w3.org/2004/02/skos/core#altLabel",
+ "http://www.w3.org/ns/adms#identifier",
+ "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#changedBy",
+ "http://www.w3.org/ns/org#resultedFrom",
+ "http://www.w3.org/ns/org#hasPost",
+ "http://www.w3.org/ns/org#linkedTo",
+ "http://www.w3.org/ns/org#hasSubOrganization",
+ "http://www.w3.org/ns/org#classification",
+ "http://data.lblod.info/vocabularies/erediensten/betrokkenBestuur",
+ "http://mu.semte.ch/vocabularies/ext/werkingsgebiedNiveau",
+ "http://data.lblod.info/vocabularies/erediensten/typeEredienst"
+ ]
+ },
+ {
+ "type": "http://www.w3.org/ns/org#Site",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "^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://www.w3.org/ns/org#siteAddress",
+ "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/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "^https://data.vlaanderen.be/ns/organisatie#bestaatUit",
+ "^http://www.w3.org/ns/org#hasPrimarySite",
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+
+ ],
+ "properties": [
+ "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",
+ "https://data.vlaanderen.be/ns/adres#land",
+ "http://www.w3.org/ns/locn#fullAddress",
+ "https://data.vlaanderen.be/ns/adres#verwijstNaar",
+ "http://purl.org/dc/terms/source"
+ ]
+ },
+ {
+ "type": "http://schema.org/ContactPoint",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "^http://www.w3.org/ns/org#siteAddress",
+ "^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",
+ "http://www.w3.org/ns/locn#address",
+ "http://xmlns.com/foaf/0.1/page",
+ "http://schema.org/faxNumber",
+ "http://schema.org/contactType",
+ "http://xmlns.com/foaf/0.1/page",
+ "http://schema.org/email",
+ "http://schema.org/telephone"
+
+ ]
+ },
+ {
+ "type": "http://www.w3.org/ns/adms#Identifier",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "^http://www.w3.org/ns/adms#identifier",
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#notation",
+ "https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator"
+ ]
+ },
+ {
+ "type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "^https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator",
+ "^http://www.w3.org/ns/adms#identifier",
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "https://data.vlaanderen.be/ns/generiek#lokaleIdentificator"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan",
+ "strictTypeExport": "true",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/ns/org#classification",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://data.vlaanderen.be/ns/mandaat#bindingEinde",
+ "http://data.vlaanderen.be/ns/mandaat#bindingStart",
+ "http://data.vlaanderen.be/ns/besluit#bestuurt",
+ "http://www.w3.org/ns/org#classification",
+ "https://data.vlaanderen.be/ns/generiek#isTijdspecialisatieVan"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://www.w3.org/ns/org#ChangeEvent",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://data.lblod.info/vocabularies/contacthub/typeWijziging",
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://purl.org/dc/terms/date",
+ "http://purl.org/dc/terms/description",
+ "http://data.lblod.info/vocabularies/contacthub/typeWijziging",
+ "http://www.w3.org/ns/org#resultedFrom",
+ "http://www.w3.org/ns/org#changedBy",
+ "http://lblod.data.gift/vocabularies/organisatie/veranderingsgebeurtenisResultaat",
+ "http://www.w3.org/ns/org#originalOrganization",
+ "http://www.w3.org/ns/org#resultingOrganization",
+ "http://data.europa.eu/m8g/hasFormalFramework"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ },
+ {
+ "type": "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging",
+ "graphsFilter": [
+ "http://mu.semte.ch/graphs/organisatieportaal"
+ ],
+ "pathToConceptScheme": [
+ "http://www.w3.org/2004/02/skos/core#inScheme"
+ ],
+ "properties": [
+ "http://www.w3.org/2004/02/skos/core#prefLabel"
+ ]
+ }
+ ]
+}
diff --git a/config/delta/rules.js b/config/delta/rules.js
index c1d5575..15a2309 100644
--- a/config/delta/rules.js
+++ b/config/delta/rules.js
@@ -16,6 +16,23 @@ export default [
ignoreFromSelf: true
}
},
+ {
+ match: {
+ graph: {
+ type: "uri",
+ value: "http://mu.semte.ch/graphs/organisatieportaal"
+ }
+ },
+ callback: {
+ url: 'http://resource/.mu/delta',
+ method: 'POST'
+ },
+ options: {
+ resourceFormat: "v0.0.1",
+ gracePeriod: 250,
+ ignoreFromSelf: true
+ }
+ },
{
match: {
predicate: {
@@ -104,6 +121,41 @@ export default [
optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
}
},
+ {
+ match: {
+ },
+ callback: {
+ url: 'http://delta-producer-pub-graph-maintainer-public/delta',
+ method: 'POST'
+ },
+ options: {
+ resourceFormat: 'v0.0.1',
+ gracePeriod: 1000,
+ ignoreFromSelf: true,
+ optOutMuScopeIds: [
+ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync",
+ "http://redpencil.data.gift/id/concept/muScope/deltas/publicationGraphMaintenance"
+ ]
+ }
+ },
+ {
+ match: {
+ graph: {
+ type: 'uri',
+ value: 'http://redpencil.data.gift/id/deltas/producer/public'
+ }
+ },
+ callback: {
+ url: 'http://delta-producer-json-diff-publisher-public/delta',
+ method: 'POST'
+ },
+ options: {
+ resourceFormat: 'v0.0.1',
+ gracePeriod: 1000,
+ ignoreFromSelf: true,
+ optOutMuScopeIds: [ "http://redpencil.data.gift/id/concept/muScope/deltas/initialSync" ]
+ }
+ },
{
match: {
predicate: {
diff --git a/config/dispatcher/dispatcher.ex b/config/dispatcher/dispatcher.ex
index b155a18..0adabb7 100644
--- a/config/dispatcher/dispatcher.ex
+++ b/config/dispatcher/dispatcher.ex
@@ -195,6 +195,9 @@ defmodule Dispatcher do
Proxy.forward conn, path, "http://cache/decisions/"
end
+ match "/decision-activities/*path", %{ accept: [:json], layer: :api} do
+ Proxy.forward conn, path, "http://cache/decision-activities/"
+ end
###############
# LOGIN
@@ -251,6 +254,14 @@ defmodule Dispatcher do
forward conn, path, "http://privacy/person-information-requests"
end
+ match "/person-information-ask/*path", %{ layer: :api_services, accept: %{ json: true } } do
+ forward conn, path, "http://privacy/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/"
+ end
+
get "/uri-info/*path", %{ layer: :api_services, accept: %{ json: true } } do
forward conn, path, "http://uri-info/"
end
diff --git a/config/jobs-controller/config.json b/config/jobs-controller/config.json
index 317c490..928128b 100644
--- a/config/jobs-controller/config.json
+++ b/config/jobs-controller/config.json
@@ -62,5 +62,37 @@
"nextIndex": "0"
}
]
+ },
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public": {
+ "tasksConfiguration": [
+ {
+ "currentOperation": null,
+ "nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/initialPublicationGraphSyncing",
+ "nextIndex": "0"
+ },
+ {
+ "currentOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/initialPublicationGraphSyncing",
+ "nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/deltaDumpFileCreation",
+ "nextIndex": "1"
+ }
+ ]
+ },
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public": {
+ "tasksConfiguration": [
+ {
+ "currentOperation": null,
+ "nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/healing/patchPublicationGraph",
+ "nextIndex": "0"
+ }
+ ]
+ },
+ "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/public": {
+ "tasksConfiguration": [
+ {
+ "currentOperation": null,
+ "nextOperation": "http://redpencil.data.gift/id/jobs/concept/TaskOperation/deltas/deltaDumpFileCreation",
+ "nextIndex": "0"
+ }
+ ]
}
}
diff --git a/config/migrations/20210701120000-meta.ttl b/config/migrations/2021/20210701120000-meta.ttl
similarity index 100%
rename from config/migrations/20210701120000-meta.ttl
rename to config/migrations/2021/20210701120000-meta.ttl
diff --git a/config/migrations/20210729182256-bestuurseenheid-classificatie-code-uuid.ttl b/config/migrations/2021/20210729182256-bestuurseenheid-classificatie-code-uuid.ttl
similarity index 100%
rename from config/migrations/20210729182256-bestuurseenheid-classificatie-code-uuid.ttl
rename to config/migrations/2021/20210729182256-bestuurseenheid-classificatie-code-uuid.ttl
diff --git a/config/migrations/20210729182256-bestuurseenheid-classificatie-code.ttl b/config/migrations/2021/20210729182256-bestuurseenheid-classificatie-code.ttl
similarity index 100%
rename from config/migrations/20210729182256-bestuurseenheid-classificatie-code.ttl
rename to config/migrations/2021/20210729182256-bestuurseenheid-classificatie-code.ttl
diff --git a/config/migrations/20210729182256-geslacht-code.ttl b/config/migrations/2021/20210729182256-geslacht-code.ttl
similarity index 100%
rename from config/migrations/20210729182256-geslacht-code.ttl
rename to config/migrations/2021/20210729182256-geslacht-code.ttl
diff --git a/config/migrations/20210729182256-mandataris-status-code-uuid.ttl b/config/migrations/2021/20210729182256-mandataris-status-code-uuid.ttl
similarity index 100%
rename from config/migrations/20210729182256-mandataris-status-code-uuid.ttl
rename to config/migrations/2021/20210729182256-mandataris-status-code-uuid.ttl
diff --git a/config/migrations/20210729182256-mandataris-status-code.ttl b/config/migrations/2021/20210729182256-mandataris-status-code.ttl
similarity index 100%
rename from config/migrations/20210729182256-mandataris-status-code.ttl
rename to config/migrations/2021/20210729182256-mandataris-status-code.ttl
diff --git a/config/migrations/20210729182257-reason-code.ttl b/config/migrations/2021/20210729182257-reason-code.ttl
similarity index 100%
rename from config/migrations/20210729182257-reason-code.ttl
rename to config/migrations/2021/20210729182257-reason-code.ttl
diff --git a/config/migrations/20210830174500-delete-label-from-bestuurseenheid.sparql b/config/migrations/2021/20210830174500-delete-label-from-bestuurseenheid.sparql
similarity index 100%
rename from config/migrations/20210830174500-delete-label-from-bestuurseenheid.sparql
rename to config/migrations/2021/20210830174500-delete-label-from-bestuurseenheid.sparql
diff --git a/config/migrations/20210831193441-codelist-nationality.ttl b/config/migrations/2021/20210831193441-codelist-nationality.ttl
similarity index 100%
rename from config/migrations/20210831193441-codelist-nationality.ttl
rename to config/migrations/2021/20210831193441-codelist-nationality.ttl
diff --git a/config/migrations/20210902170100-rename-location-fusion.sparql b/config/migrations/2021/20210902170100-rename-location-fusion.sparql
similarity index 100%
rename from config/migrations/20210902170100-rename-location-fusion.sparql
rename to config/migrations/2021/20210902170100-rename-location-fusion.sparql
diff --git a/config/migrations/20210906150000-fix-classification-property.sparql b/config/migrations/2021/20210906150000-fix-classification-property.sparql
similarity index 100%
rename from config/migrations/20210906150000-fix-classification-property.sparql
rename to config/migrations/2021/20210906150000-fix-classification-property.sparql
diff --git a/config/migrations/20210909152600-fix-percentage-sort-part-1.sparql b/config/migrations/2021/20210909152600-fix-percentage-sort-part-1.sparql
similarity index 100%
rename from config/migrations/20210909152600-fix-percentage-sort-part-1.sparql
rename to config/migrations/2021/20210909152600-fix-percentage-sort-part-1.sparql
diff --git a/config/migrations/20210909152630-fix-percentage-sort-part-2.sparql b/config/migrations/2021/20210909152630-fix-percentage-sort-part-2.sparql
similarity index 100%
rename from config/migrations/20210909152630-fix-percentage-sort-part-2.sparql
rename to config/migrations/2021/20210909152630-fix-percentage-sort-part-2.sparql
diff --git a/config/migrations/20211119151700-move-reason-codes.sparql b/config/migrations/2021/20211119151700-move-reason-codes.sparql
similarity index 100%
rename from config/migrations/20211119151700-move-reason-codes.sparql
rename to config/migrations/2021/20211119151700-move-reason-codes.sparql
diff --git a/config/migrations/20211120120000-create-mock-group.sparql b/config/migrations/2021/20211120120000-create-mock-group.sparql
similarity index 100%
rename from config/migrations/20211120120000-create-mock-group.sparql
rename to config/migrations/2021/20211120120000-create-mock-group.sparql
diff --git a/config/migrations/20211120130000-create-mock-user.sparql b/config/migrations/2021/20211120130000-create-mock-user.sparql
similarity index 100%
rename from config/migrations/20211120130000-create-mock-user.sparql
rename to config/migrations/2021/20211120130000-create-mock-user.sparql
diff --git a/config/migrations/20211120140000-auth.sparql b/config/migrations/2021/20211120140000-auth.sparql
similarity index 100%
rename from config/migrations/20211120140000-auth.sparql
rename to config/migrations/2021/20211120140000-auth.sparql
diff --git a/config/migrations/20211120150000-remove-acmidm-account-from-public.sparql b/config/migrations/2021/20211120150000-remove-acmidm-account-from-public.sparql
similarity index 100%
rename from config/migrations/20211120150000-remove-acmidm-account-from-public.sparql
rename to config/migrations/2021/20211120150000-remove-acmidm-account-from-public.sparql
diff --git a/config/migrations/20211120160000-source-crab.sparql b/config/migrations/2021/20211120160000-source-crab.sparql
similarity index 100%
rename from config/migrations/20211120160000-source-crab.sparql
rename to config/migrations/2021/20211120160000-source-crab.sparql
diff --git a/config/migrations/20211123120000-private-data.sparql b/config/migrations/2021/20211123120000-private-data.sparql
similarity index 100%
rename from config/migrations/20211123120000-private-data.sparql
rename to config/migrations/2021/20211123120000-private-data.sparql
diff --git a/config/migrations/20211203120000-bestuur-admidm.sparql b/config/migrations/2021/20211203120000-bestuur-admidm.sparql
similarity index 100%
rename from config/migrations/20211203120000-bestuur-admidm.sparql
rename to config/migrations/2021/20211203120000-bestuur-admidm.sparql
diff --git a/config/migrations/20211203130000-clear-mock-data.sparql b/config/migrations/2021/20211203130000-clear-mock-data.sparql
similarity index 100%
rename from config/migrations/20211203130000-clear-mock-data.sparql
rename to config/migrations/2021/20211203130000-clear-mock-data.sparql
diff --git a/config/migrations/20211206120000-mock-user-roles.sparql b/config/migrations/2021/20211206120000-mock-user-roles.sparql
similarity index 100%
rename from config/migrations/20211206120000-mock-user-roles.sparql
rename to config/migrations/2021/20211206120000-mock-user-roles.sparql
diff --git a/config/migrations/20211206130000-move-graph.sparql b/config/migrations/2021/20211206130000-move-graph.sparql
similarity index 100%
rename from config/migrations/20211206130000-move-graph.sparql
rename to config/migrations/2021/20211206130000-move-graph.sparql
diff --git a/config/migrations/20220110120000-delete-old-change-events.sparql b/config/migrations/2022/20220110120000-delete-old-change-events.sparql
similarity index 100%
rename from config/migrations/20220110120000-delete-old-change-events.sparql
rename to config/migrations/2022/20220110120000-delete-old-change-events.sparql
diff --git a/config/migrations/20220120100418-remove-old-reasons.sparql b/config/migrations/2022/20220120100418-remove-old-reasons.sparql
similarity index 100%
rename from config/migrations/20220120100418-remove-old-reasons.sparql
rename to config/migrations/2022/20220120100418-remove-old-reasons.sparql
diff --git a/config/migrations/20220120101318-insert-new-reasons.sparql b/config/migrations/2022/20220120101318-insert-new-reasons.sparql
similarity index 100%
rename from config/migrations/20220120101318-insert-new-reasons.sparql
rename to config/migrations/2022/20220120101318-insert-new-reasons.sparql
diff --git a/config/migrations/2022/20220317100000-remove-bestuurseenheden-op-1075.sparql b/config/migrations/2022/20220317100000-remove-bestuurseenheden-op-1075.sparql
new file mode 100644
index 0000000..ca963b3
--- /dev/null
+++ b/config/migrations/2022/20220317100000-remove-bestuurseenheden-op-1075.sparql
@@ -0,0 +1,36 @@
+DELETE {
+ GRAPH ?g {
+ ?representatieveOrgaan ?bestuur .
+ ?bestuur ?pbestuur ?obestuur .
+ ?primarySite ?pprimarySite ?oprimarySite .
+ ?address ?paddress ?oaddress .
+ ?contactPoint ?pcontactPoint ?ocontactPoint .
+ ?identifier ?pidentifier ?oidentifier .
+ ?structuredIdentifier ?pstructuredIdentifier ?ostructuredIdentifier .
+ }
+} WHERE {
+ GRAPH ?g {
+ VALUES ?bestuur {
+
+
+ }
+
+ ?bestuur ?primarySite ;
+ ?identifier ;
+ ?pbestuur ?obestuur .
+
+ ?primarySite ?address ;
+ ?contactPoint ;
+ ?pprimarySite ?oprimarySite .
+
+ ?address ?paddress ?oaddress .
+
+ ?contactPoint ?pcontactPoint ?ocontactPoint .
+
+ ?identifier ?structuredIdentifier ;
+ ?pidentifier ?oidentifier .
+
+ ?structuredIdentifier ?pstructuredIdentifier ?ostructuredIdentifier .
+ }
+}
+
diff --git a/config/migrations/2022/20220328171923-update-date-change-event-Eeklo.sparql b/config/migrations/2022/20220328171923-update-date-change-event-Eeklo.sparql
new file mode 100644
index 0000000..9739adf
--- /dev/null
+++ b/config/migrations/2022/20220328171923-update-date-change-event-Eeklo.sparql
@@ -0,0 +1,15 @@
+PREFIX dct:
+
+DELETE {
+ GRAPH ?g {
+ dct:date "2018-06-09"^^xsd:date .
+ }
+} INSERT {
+ GRAPH ?g {
+ dct:date "2018-06-15"^^xsd:date .
+ }
+} WHERE {
+ GRAPH ?g {
+ dct:date "2018-06-09"^^xsd:date .
+ }
+}
diff --git a/config/migrations/2022/20220328172743-update-date-change-event-Glabbeek.sparql b/config/migrations/2022/20220328172743-update-date-change-event-Glabbeek.sparql
new file mode 100644
index 0000000..314a72c
--- /dev/null
+++ b/config/migrations/2022/20220328172743-update-date-change-event-Glabbeek.sparql
@@ -0,0 +1,15 @@
+PREFIX dct:
+
+DELETE {
+ GRAPH ?g {
+ dct:date "2021-02-04"^^xsd:date .
+ }
+} INSERT {
+ GRAPH ?g {
+ dct:date "2022-02-04"^^xsd:date .
+ }
+} WHERE {
+ GRAPH ?g {
+ dct:date "2021-02-04"^^xsd:date .
+ }
+}
diff --git a/config/migrations/2022/20220329114750-remove-kbo-of-Centraal-Comite-van-de-Anglicaanse-Eredienst-in-Belgie.sparql b/config/migrations/2022/20220329114750-remove-kbo-of-Centraal-Comite-van-de-Anglicaanse-Eredienst-in-Belgie.sparql
new file mode 100644
index 0000000..a888347
--- /dev/null
+++ b/config/migrations/2022/20220329114750-remove-kbo-of-Centraal-Comite-van-de-Anglicaanse-Eredienst-in-Belgie.sparql
@@ -0,0 +1,19 @@
+DELETE {
+ GRAPH ?g {
+
+ ?identifier .
+ ?identifier
+ ?structuredIdentifier ;
+ ?pidentifier ?oidentifier .
+ ?structuredIdentifier ?pstructuredIdentifier ?ostructuredIdentifier .
+ }
+} WHERE {
+ GRAPH ?g {
+
+ ?identifier .
+ ?identifier
+ ?structuredIdentifier ;
+ ?pidentifier ?oidentifier .
+ ?structuredIdentifier ?pstructuredIdentifier ?ostructuredIdentifier .
+ }
+}
diff --git a/config/migrations/2022/20220329150729-delete-positions-Protestantse-Kerk-van-Kortrijk.sparql b/config/migrations/2022/20220329150729-delete-positions-Protestantse-Kerk-van-Kortrijk.sparql
new file mode 100644
index 0000000..3cd75ec
--- /dev/null
+++ b/config/migrations/2022/20220329150729-delete-positions-Protestantse-Kerk-van-Kortrijk.sparql
@@ -0,0 +1,38 @@
+DELETE {
+ GRAPH ?g {
+
+ ?post .
+
+ ?post ?ppost ?opost .
+
+ ?role ?post ;
+ ?contactPoint ;
+ ?prole ?orole .
+
+ ?contactPoint ?address ;
+ ?pcontactPoint ?ocontactPoint .
+
+ ?address ?paddress ?oaddress .
+ }
+} WHERE {
+ GRAPH ?g {
+
+ ?post .
+
+ ?post ?ppost ?opost .
+
+ ?role ?post ;
+ ?prole ?orole .
+
+ OPTIONAL {
+ ?role ?contactPoint .
+
+ ?contactPoint ?pcontactPoint ?ocontactPoint .
+
+ OPTIONAL {
+ ?contactPoint ?address .
+ ?address ?paddress ?oaddress .
+ }
+ }
+ }
+}
diff --git a/config/migrations/2022/20220329154322-delete-positions-ckb-staden.sparql b/config/migrations/2022/20220329154322-delete-positions-ckb-staden.sparql
new file mode 100644
index 0000000..32cb92e
--- /dev/null
+++ b/config/migrations/2022/20220329154322-delete-positions-ckb-staden.sparql
@@ -0,0 +1,38 @@
+DELETE {
+ GRAPH ?g {
+
+ ?post .
+
+ ?post ?ppost ?opost .
+
+ ?role ?post ;
+ ?contactPoint ;
+ ?prole ?orole .
+
+ ?contactPoint ?address ;
+ ?pcontactPoint ?ocontactPoint .
+
+ ?address ?paddress ?oaddress .
+ }
+} WHERE {
+ GRAPH ?g {
+
+ ?post .
+
+ ?post ?ppost ?opost .
+
+ ?role ?post ;
+ ?prole ?orole .
+
+ OPTIONAL {
+ ?role ?contactPoint .
+
+ ?contactPoint ?pcontactPoint ?ocontactPoint .
+
+ OPTIONAL {
+ ?contactPoint ?address .
+ ?address ?paddress ?oaddress .
+ }
+ }
+ }
+}
diff --git a/config/migrations/2022/20220401162146-fix-wrongly-formatted-kbo.sparql b/config/migrations/2022/20220401162146-fix-wrongly-formatted-kbo.sparql
new file mode 100644
index 0000000..41a491a
--- /dev/null
+++ b/config/migrations/2022/20220401162146-fix-wrongly-formatted-kbo.sparql
@@ -0,0 +1,51 @@
+PREFIX generiek:
+
+DELETE {
+ GRAPH ?g {
+ generiek:lokaleIdentificator ?kbo1 .
+ generiek:lokaleIdentificator ?kbo2 .
+ generiek:lokaleIdentificator ?kbo3 .
+ generiek:lokaleIdentificator ?kbo4 .
+ generiek:lokaleIdentificator ?kbo5 .
+ generiek:lokaleIdentificator ?kbo6 .
+ generiek:lokaleIdentificator ?kbo7 .
+ generiek:lokaleIdentificator ?kbo8 .
+ generiek:lokaleIdentificator ?kbo9 .
+ generiek:lokaleIdentificator ?kbo10 .
+ generiek:lokaleIdentificator ?kbo11 .
+ generiek:lokaleIdentificator ?kbo12 .
+ generiek:lokaleIdentificator ?kbo13 .
+ }
+} INSERT {
+ GRAPH ?g {
+ generiek:lokaleIdentificator "0777683642" .
+ generiek:lokaleIdentificator "0780386972" .
+ generiek:lokaleIdentificator "0408140861" .
+ generiek:lokaleIdentificator "0408472839" .
+ generiek:lokaleIdentificator "0409677223" .
+ generiek:lokaleIdentificator "0409771253" .
+ generiek:lokaleIdentificator "0410195380" .
+ generiek:lokaleIdentificator "0412914944" .
+ generiek:lokaleIdentificator "0413234648" .
+ generiek:lokaleIdentificator "0464533790" .
+ generiek:lokaleIdentificator "0687815914" .
+ generiek:lokaleIdentificator "0864330673" .
+ generiek:lokaleIdentificator "0898987189" .
+ }
+} WHERE {
+ GRAPH ?g {
+ generiek:lokaleIdentificator ?kbo1 .
+ generiek:lokaleIdentificator ?kbo2 .
+ generiek:lokaleIdentificator ?kbo3 .
+ generiek:lokaleIdentificator ?kbo4 .
+ generiek:lokaleIdentificator ?kbo5 .
+ generiek:lokaleIdentificator ?kbo6 .
+ generiek:lokaleIdentificator ?kbo7 .
+ generiek:lokaleIdentificator ?kbo8 .
+ generiek:lokaleIdentificator ?kbo9 .
+ generiek:lokaleIdentificator ?kbo10 .
+ generiek:lokaleIdentificator ?kbo11 .
+ generiek:lokaleIdentificator ?kbo12 .
+ generiek:lokaleIdentificator ?kbo13 .
+ }
+}
diff --git a/config/migrations/2022/20220405084015-delete-triples-pointing-towards-werkingsgebieden.sparql b/config/migrations/2022/20220405084015-delete-triples-pointing-towards-werkingsgebieden.sparql
new file mode 100644
index 0000000..7e20f97
--- /dev/null
+++ b/config/migrations/2022/20220405084015-delete-triples-pointing-towards-werkingsgebieden.sparql
@@ -0,0 +1,9 @@
+DELETE {
+ GRAPH ?g {
+ ?s ?o .
+ }
+} WHERE {
+ GRAPH ?g {
+ ?s ?o .
+ }
+}
diff --git a/config/migrations/2022/20220406100547-add-link-gemeente-provincie.sparql b/config/migrations/2022/20220406100547-add-link-gemeente-provincie.sparql
new file mode 100644
index 0000000..0c58b23
--- /dev/null
+++ b/config/migrations/2022/20220406100547-add-link-gemeente-provincie.sparql
@@ -0,0 +1,319 @@
+INSERT DATA {
+ GRAPH {
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+ .
+