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..30364c4 100644 --- a/config/authorization/config.ex +++ b/config/authorization/config.ex @@ -8,70 +8,86 @@ 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 +96,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 +186,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/dump-file-publisher/config.json b/config/delta-producer/dump-file-publisher/config.json index a73ccad..42c183f 100644 --- a/config/delta-producer/dump-file-publisher/config.json +++ b/config/delta-producer/dump-file-publisher/config.json @@ -31,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", @@ -39,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 49d2931..2cbfa05 100644 --- a/config/delta-producer/public/export.json +++ b/config/delta-producer/public/export.json @@ -5,7 +5,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" ], "pathToConceptScheme": [ "http://www.w3.org/ns/org#classification", @@ -36,7 +37,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" ], "pathToConceptScheme": [ "http://www.w3.org/ns/org#classification", @@ -63,13 +65,13 @@ { "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" ], "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", @@ -80,14 +82,14 @@ { "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/administrative-unit" ], "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", @@ -105,7 +107,9 @@ { "type": "http://schema.org/ContactPoint", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/shared", + "http://mu.semte.ch/graphs/worship-service", + "http://mu.semte.ch/graphs/administrative-unit" ], "pathToConceptScheme": [ "^http://www.w3.org/ns/org#siteAddress", @@ -122,13 +126,14 @@ "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" + "http://mu.semte.ch/graphs/shared", + "http://mu.semte.ch/graphs/worship-service", + "http://mu.semte.ch/graphs/administrative-unit" ], "pathToConceptScheme": [ "^http://www.w3.org/ns/adms#identifier", @@ -143,7 +148,9 @@ { "type": "https://data.vlaanderen.be/ns/generiek#GestructureerdeIdentificator", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/shared", + "http://mu.semte.ch/graphs/worship-service", + "http://mu.semte.ch/graphs/administrative-unit" ], "pathToConceptScheme": [ "^https://data.vlaanderen.be/ns/generiek#gestructureerdeIdentificator", @@ -158,7 +165,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "pathToConceptScheme": [ "http://www.w3.org/2004/02/skos/core#inScheme" @@ -171,7 +178,9 @@ "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", + "http://mu.semte.ch/graphs/administrative-unit" ], "pathToConceptScheme": [ "http://www.w3.org/ns/org#classification", @@ -188,7 +197,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "pathToConceptScheme": [ "http://www.w3.org/2004/02/skos/core#inScheme" @@ -200,7 +209,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "pathToConceptScheme": [ "http://www.w3.org/2004/02/skos/core#inScheme" @@ -212,7 +221,9 @@ { "type": "http://www.w3.org/ns/org#ChangeEvent", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/shared", + "http://mu.semte.ch/graphs/worship-service", + "http://mu.semte.ch/graphs/administrative-unit" ], "pathToConceptScheme": [ "http://data.lblod.info/vocabularies/contacthub/typeWijziging", @@ -233,7 +244,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/Veranderingsgebeurtenis", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "pathToConceptScheme": [ "http://www.w3.org/2004/02/skos/core#inScheme" @@ -245,7 +256,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "pathToConceptScheme": [ "http://www.w3.org/2004/02/skos/core#inScheme" @@ -257,7 +268,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "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 83a173d..ef2656a 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", @@ -14,7 +15,8 @@ { "type": "http://data.lblod.info/vocabularies/erediensten/BestuurVanDeEredienst", "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", @@ -32,7 +34,8 @@ { "type": "http://data.lblod.info/vocabularies/erediensten/CentraalBestuurVanDeEredienst", "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", @@ -49,7 +52,9 @@ { "type": "http://data.vlaanderen.be/ns/besluit#Bestuurseenheid", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/shared", + "http://mu.semte.ch/graphs/administrative-unit", + "http://mu.semte.ch/graphs/worship-service" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -67,7 +72,8 @@ { "type": "http://data.vlaanderen.be/ns/besluit#Bestuursorgaan", "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", @@ -84,7 +90,8 @@ { "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", @@ -95,7 +102,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://mu.semte.ch/vocabularies/core/uuid", @@ -106,7 +114,8 @@ { "type": "http://data.lblod.info/vocabularies/erediensten/RepresentatiefOrgaan", "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", @@ -122,7 +131,8 @@ { "type": "http://www.w3.org/ns/org#Site", "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", @@ -133,7 +143,8 @@ { "type": "http://www.w3.org/ns/locn#Address", "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", @@ -150,7 +161,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/BestuurseenheidClassificatieCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -161,7 +172,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursorgaanClassificatieCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -172,7 +183,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/TypeVestiging", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -182,7 +193,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/OrganisatieStatusCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -192,7 +203,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/TypeBetrokkenheid", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -202,7 +213,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/TypeEredienst", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -212,7 +223,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/BestuursfunctieCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -222,7 +233,7 @@ { "type": "http://lblod.data.gift/vocabularies/organisatie/EredienstBeroepen", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -232,7 +243,7 @@ { "type": "http://mu.semte.ch/vocabularies/ext/GeslachtCode", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", @@ -242,7 +253,7 @@ { "type": "http://publications.europa.eu/ontology/euvoc#Country", "graphsFilter": [ - "http://mu.semte.ch/graphs/organisatieportaal" + "http://mu.semte.ch/graphs/public" ], "properties": [ "http://mu.semte.ch/vocabularies/core/uuid", diff --git a/config/delta/rules.js b/config/delta/rules.js index 2b2899f..6d9ffc6 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,7 +85,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"] } }, { @@ -63,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" + ] } }, { @@ -83,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"] } }, { @@ -98,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" + ] } }, { @@ -118,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"] } }, { @@ -133,9 +170,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 +190,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 +206,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 +230,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 7f5dbb7..e72e468 100644 --- a/config/dispatcher/dispatcher.ex +++ b/config/dispatcher/dispatcher.ex @@ -225,6 +225,9 @@ defmodule Dispatcher do 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 @@ -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 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/2023/20230401132400-hard-split/20230401132500-delete-elastic-index.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132500-delete-elastic-index.sparql new file mode 100644 index 0000000..8d7e1b4 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132500-delete-elastic-index.sparql @@ -0,0 +1 @@ +delete where { graph ?g{ ?s a ; ?p ?o } } diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132600-move-all-worship-types.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132600-move-all-worship-types.sparql new file mode 100644 index 0000000..7a791af --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132600-move-all-worship-types.sparql @@ -0,0 +1,44 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + + +DELETE { + GRAPH { + ?s ?p ?o + } +} +INSERT { + GRAPH { + ?s ?p ?o + } +} + +WHERE { + GRAPH { + ?s a ?type; ?p ?o. + + filter (?type in ( + ere:EredienstMandataris, + ere:BestuurVanDeEredienst, + ere:PositieBedienaar, + ere:BetrokkenLokaleBesturen, + ere:VerbondenJuridischeStructuren, + ere:RolBedienaar, + ere:EredienstBestuurseenheid, + ere:VoorwaardenBedienaar, + ere:CentraalBestuurVanDeEredienst, + ere:RepresentatiefOrgaan + )) + + } +} diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132601-move-all-worsip-governing-bodies.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132601-move-all-worsip-governing-bodies.sparql new file mode 100644 index 0000000..ef16265 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132601-move-all-worsip-governing-bodies.sparql @@ -0,0 +1,90 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + + +DELETE { + GRAPH { + ?governingBody ?p ?o. + } +} +INSERT { + GRAPH { + ?governingBody ?p ?o. + } +} + +WHERE { + GRAPH { + ?governingBody ?post; ?p ?o. + + filter exists { + GRAPH { + ?mandatories ?post. + + } + } + } + +} + +; + +DELETE { + GRAPH { + ?specialization ?specializationP ?specializationO. + } +} +INSERT { + GRAPH { + ?specialization ?specializationP ?specializationO. + } +} + +WHERE { + GRAPH { + ?specialization ?specializationP ?specializationO. + + filter exists { + GRAPH { + ?governingBody generiek:isTijdspecialisatieVan ?specialization. + } + } + } + +} + +; + +DELETE { + GRAPH { + ?bestuur ?bestuurP ?bestuurO. + } +} +INSERT { + GRAPH { + ?bestuur ?bestuurP ?bestuurO. + } +} + +WHERE { + GRAPH { + ?bestuur ?bestuurP ?bestuurO. + filter exists { + GRAPH { + + ?specialization besluit:bestuurt ?bestuur. + } + } + } + +} diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132602-move-all-worsip-governing-bodies-2.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132602-move-all-worsip-governing-bodies-2.sparql new file mode 100644 index 0000000..173d4dc --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132602-move-all-worsip-governing-bodies-2.sparql @@ -0,0 +1,73 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + + +DELETE { + GRAPH { + ?governingBody ?p ?o. + } +} +INSERT { + GRAPH { + ?governingBody ?p ?o. + } +} + +WHERE { + GRAPH { + ?governingBody + ?post; ?p ?o. + + filter exists { + GRAPH { + ?mandatories ?post. + + } + } + } + +} +; + + +DELETE { + GRAPH { + ?post a ?type; + mu:uuid ?uuid; + ?role. + } +} +INSERT { + GRAPH { + ?post a ?type; mu:uuid ?uuid; + ?role. + } +} + +WHERE { + GRAPH { + ?post a ?type; + mu:uuid ?uuid; + + ?role. + + filter exists { + GRAPH { + ?mandatories ?post. + + } + } + } + +} + diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132603-move-all-worsip-governing-bodies-3.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132603-move-all-worsip-governing-bodies-3.sparql new file mode 100644 index 0000000..e4ece33 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132603-move-all-worsip-governing-bodies-3.sparql @@ -0,0 +1,93 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + + +DELETE { + GRAPH { + ?governingBody ?p ?o. + } +} +INSERT { + GRAPH { + ?governingBody ?p ?o. + } +} + +WHERE { + GRAPH { + ?governingBody ?post; ?p ?o. + + filter exists { + GRAPH { + ?mandatories ?post. + + } + } + } + +} + +; + +DELETE { + GRAPH { + ?specialization ?specializationP ?specializationO. + } +} +INSERT { + GRAPH { + ?specialization ?specializationP ?specializationO. + } +} + +WHERE { + GRAPH { + ?specialization ?specializationP ?specializationO. + + filter exists { + GRAPH { + ?governingBody generiek:isTijdspecialisatieVan ?specialization. + } + } + } + +} + +; + + +PREFIX besluit: + +DELETE { + GRAPH { + ?bestuur ?bestuurP ?bestuurO. + } +} +INSERT { + GRAPH { + ?bestuur ?bestuurP ?bestuurO. + } +} + +WHERE { + GRAPH { + ?bestuur besluit:bestuurt ?s;?bestuurP ?bestuurO. + filter exists { + GRAPH { + + ?s ?p ?o. + } + } + } + +} diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132604-move-bestrokken.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132604-move-bestrokken.sparql new file mode 100644 index 0000000..62a10af --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132604-move-bestrokken.sparql @@ -0,0 +1,36 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + + +DELETE { + GRAPH { + ?s ?bestrokke. + } +} +INSERT { + GRAPH { + ?s ?bestrokke. + } +} + +WHERE { + GRAPH { + + ?s ?bestrokke. + + } + +} + + + diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132605-move-all-worsip-change-events.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132605-move-all-worsip-change-events.sparql new file mode 100644 index 0000000..b07ee2f --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132605-move-all-worsip-change-events.sparql @@ -0,0 +1,87 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + + +DELETE { + GRAPH { + ?s ?p ?o. + } +} +INSERT { + GRAPH { + ?s ?p ?o. + } +} + +WHERE { + GRAPH { + ?resultingOrganization a ?type. + + } + GRAPH { + + ?s ext:resultingOrganization ?resultingOrganization. + ?s ?p ?o. + } + +} +; + +DELETE { + GRAPH { + ?s ?p ?o. + } +} +INSERT { + GRAPH { + ?s ?p ?o. + } +} + +WHERE { + GRAPH { + ?resultingOrganization a ?type. + + } + GRAPH { + + ?s ?resultingOrganization. + ?s ?p ?o. + } + +} +; +DELETE { + GRAPH { + ?s ?p ?o. + } +} +INSERT { + GRAPH { + ?s ?p ?o. + } +} + +WHERE { + GRAPH { + ?resultingOrganization a ?type. + + } + GRAPH { + + ?s org:resultingOrganization ?resultingOrganization. + ?s ?p ?o. + } + +} + diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132606-duplicate-person.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132606-duplicate-person.sparql new file mode 100644 index 0000000..6ccb0ab --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132606-duplicate-person.sparql @@ -0,0 +1,76 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: + +INSERT { + graph { + ?person a person:Person; + mu:uuid ?uuid; + foaf:givenName ?givenName; + foaf:familyName ?familyName; + ?isAangesteldAls; + persoon:gebruikteVoornaam ?firstNameUsed. + } + +} +WHERE { + graph { + ?person a person:Person; + mu:uuid ?uuid; + foaf:givenName ?givenName; + foaf:familyName ?familyName. + optional {?person persoon:gebruikteVoornaam ?firstNameUsed. } + optional {?person ?isAangesteldAls.} + + filter (exists + { + graph { + ?mandatories ?person. + } + } + + || exists { + graph { + ?ministers ?person. + } + }) + + } +} +; + +# delete orphans +DELETE { + graph { + ?person a person:Person; + foaf:givenName ?givenName; + foaf:familyName ?familyName; + ?isAangesteldAls; + persoon:gebruikteVoornaam ?firstNameUsed. + } + +} +WHERE { + graph { + ?person a person:Person; + foaf:givenName ?givenName; + foaf:familyName ?familyName. + optional{?person persoon:gebruikteVoornaam ?firstNameUsed.} + optional {?person ?isAangesteldAls.} + + FILTER((NOT EXISTS { ?mandatories ?person. }) + && (NOT EXISTS { ?ministers ?person. })) + + } +} + + diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132607-move-shared-types.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132607-move-shared-types.sparql new file mode 100644 index 0000000..1376169 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132607-move-shared-types.sparql @@ -0,0 +1,290 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: +PREFIX ere: +PREFIX mandaat: +PREFIX org: +PREFIX generiek: +PREFIX skos: +PREFIX schema: +PREFIX organisatie: +PREFIX locn: +# move geboorte to private graph + +DELETE { + GRAPH { + ?s ?p ?o + } +} + INSERT { + GRAPH { + ?s ?p ?o + } +} +WHERE { + + GRAPH { + ?s a ; ?p ?o. + } +} + +; + +DELETE { + graph { + ?contactPoint ?p ?o. + ?addr ?x ?y. + } +} +insert { + graph { + ?contactPoint ?p ?o. + ?addr ?x ?y. + + } +} +where { + graph { + + ?contactPoint ?p ?o. + optional { + ?contactPoint ?addr. + ?addr ?x ?y. + } + filter (exists { + graph { + ?s ?contactPoint. + } + }) + } +} +; + + +DELETE { + GRAPH { + ?primarySite ?siteAddr; ?p ?o. + ?siteAddr ?x ?y. + ?addr ?addrP ?addrO. + ?locAddr ?locP ?locO + } +} +INSERT { + GRAPH { + ?primarySite ?siteAddr; ?p ?o. + ?siteAddr ?x ?y. + ?addr ?addrP ?addrO. + ?locAddr ?locP ?locO + } +} +Where { + Graph { + ?primarySite ?siteAddr; + ?p ?o. + ?siteAddr ?x ?y. + optional { + ?siteAddr locn:address ?locAddr . + ?locAddr ?locP ?locO. + } + optional { + ?primarySite organisatie:bestaatUit ?addr. + ?addr ?addrP ?addrO. + } + + + filter (exists { + graph { + ?s ?primarySite. + } + } + ) + + + } +} +; + +DELETE { + GRAPH { + ?s a ?type; ?p ?o. + } +} +INSERT { + GRAPH { + ?s a ?type; ?p ?o. + } +} +Where { + Graph { + ?s a ?type; ?p ?o. + filter (?type in(, + , + + ) + && exists { + graph { + ?x ?y ?z. + filter(?z=?s) + } + } + ) + + + } +} + +; + +DELETE { + GRAPH { + + ?primarySite ?bestaatUit; ?p ?o. + ?bestaatUit ?bestaatUitP ?bestaatUitO. + + } +} +INSERT { + GRAPH { + + ?primarySite ?bestaatUit; ?p ?o. + ?bestaatUit ?bestaatUitP ?bestaatUitO. +} +} +Where { + Graph { + ?primarySite ?bestaatUit; ?p ?o. + ?bestaatUit ?bestaatUitP ?bestaatUitO. + + + filter (exists { + graph { + ?unit ?primarySite. + } + } + ) + + + } +} +; + +DELETE { + GRAPH { + ?s a ?type; ?p ?o. + } +} +INSERT { + GRAPH { + ?s a ?type; ?p ?o. + } +} + +Where { + Graph { + ?s a ?type; ?p ?o. + filter (?type in(, + , + , + + ) + ) + + + } +} + + + +; + +DELETE { + GRAPH { + ?s a ; + mu:uuid ?uuid; + ?classification; + org:hasSubOrganization ?subOrg; + skos:prefLabel ?name. + + + } +} +INSERT { + GRAPH { + ?s a ; + mu:uuid ?uuid; + ?classification; + org:hasSubOrganization ?subOrg; + skos:prefLabel ?name. + + } +} + +WHERE { + GRAPH { + ?s a ; + ?classification; + mu:uuid ?uuid; + org:hasSubOrganization ?subOrg; + skos:prefLabel ?name. + + filter(?classification in ( + , + + )) + + + } +} + +; + +DELETE { + GRAPH { + ?s a ; + mu:uuid ?uuid; + ?classification; + skos:prefLabel ?name. + + + } +} +INSERT { + GRAPH { + ?s a ; + mu:uuid ?uuid; + ?classification; + + skos:prefLabel ?name. + + } +} + +WHERE { + GRAPH { + ?s a ; + ?classification; + mu:uuid ?uuid; + skos:prefLabel ?name. + + + filter(?classification in ( + , + + )&& exists { + + graph { + + ?subOrg org:hasSubOrganization ?s . +} + +}) + + + } +} + diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132608-move-public-types.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132608-move-public-types.sparql new file mode 100644 index 0000000..9b929d1 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132608-move-public-types.sparql @@ -0,0 +1,40 @@ +delete { + graph { + ?s ?p ?o + } +} +insert { + graph { + ?s ?p ?o + } +} +where { + graph { + ?s a ?type; ?p ?o. + filter (?type in ( + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + + + + )) + } +} diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132609-move-to-administrative-unit.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132609-move-to-administrative-unit.sparql new file mode 100644 index 0000000..bab2563 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132609-move-to-administrative-unit.sparql @@ -0,0 +1,3 @@ +# must be the latest to run + +MOVE TO diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132610-add-mock-user-1.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132610-add-mock-user-1.sparql new file mode 100644 index 0000000..192c7b5 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132610-add-mock-user-1.sparql @@ -0,0 +1,44 @@ +PREFIX ext: + PREFIX besluit: + PREFIX mu: + PREFIX skos: + PREFIX dcterms: + PREFIX foaf: + + INSERT DATA { + GRAPH { + besluit:Bestuurseenheid . + mu:uuid "141d9d6b-54af-4d17-b313-8d1c30bc3f5b" . + skos:prefLabel "Agentschap Binnenlands Bestuur" . + dcterms:identifier "OVO001835" . + foaf:Person . + mu:uuid "d39fe09e-d339-4e43-8680-dbbcfb3d3470" . + foaf:firstName "Josephine" . + foaf:familyName "Lezer" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "3a91ff60-07c1-4136-ac5e-55cf401e0989" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalGebruiker-lezer" . + foaf:Person . + mu:uuid "d39fe09e-d339-4e43-8680-dbbcfb3d3471" . + foaf:firstName "Josephine" . + foaf:familyName "Editeerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "3a91ff60-07c1-4136-ac5e-55cf401e0957" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalGebruiker-editeerder" . + foaf:Person . + mu:uuid "d39fe09e-d339-4e43-8680-dbbcfb3d3472" . + foaf:firstName "Josephine" . + foaf:familyName "Beheerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "3a91ff60-07c1-4136-ac5e-55cf401e0958" . + foaf:accountServiceHomepage . + } + } diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132611-add-mock-user-2.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132611-add-mock-user-2.sparql new file mode 100644 index 0000000..361ea9e --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132611-add-mock-user-2.sparql @@ -0,0 +1,42 @@ +PREFIX ext: + PREFIX besluit: + PREFIX mu: + PREFIX skos: + PREFIX dcterms: + PREFIX foaf: + + INSERT DATA { + GRAPH { + ext:sessionRole "ABBOrganisatiePortaalGebruiker-beheerder" . + foaf:Person . + mu:uuid "2fe9885b-d058-4059-b036-69b54444273d" . + foaf:firstName "Josephine" . + foaf:familyName "WorshipLezer" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "8d411fea-5bf0-4925-ba97-14b2223f65ea" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-lezer" . + foaf:Person . + mu:uuid "4925580c-a1a9-43d4-b3f6-10bd7ff57e25" . + foaf:firstName "Josephine" . + foaf:familyName "WorshipEditeerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "fe45b266-715c-481e-9a97-a70f6121166c" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-editeerder" . + foaf:Person . + mu:uuid "f3610493-f6e1-4490-9723-628fe0213491" . + foaf:firstName "Josephine" . + foaf:familyName "WorshipBeheerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "2a88a4b4-4672-45eb-b072-c930bf3b40ae" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-beheerder" . + } + } diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132612-add-mock-user-3.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132612-add-mock-user-3.sparql new file mode 100644 index 0000000..33e912c --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132612-add-mock-user-3.sparql @@ -0,0 +1,30 @@ +PREFIX ext: + PREFIX besluit: + PREFIX mu: + PREFIX skos: + PREFIX dcterms: + PREFIX foaf: + + INSERT DATA { + GRAPH { + foaf:Person . + mu:uuid "d39fe09e-d339-4e43-8680-dbbcfb3d3470" . + foaf:firstName "Josephine" . + foaf:familyName "Lezer" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "3a91ff60-07c1-4136-ac5e-55cf401e0989" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalGebruiker-lezer" . + foaf:Person . + mu:uuid "d39fe09e-d339-4e43-8680-dbbcfb3d3471" . + foaf:firstName "Josephine" . + foaf:familyName "Editeerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "3a91ff60-07c1-4136-ac5e-55cf401e0957" . + foaf:accountServiceHomepage . + } + } diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132613-add-mock-user-4.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132613-add-mock-user-4.sparql new file mode 100644 index 0000000..68534f9 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132613-add-mock-user-4.sparql @@ -0,0 +1,53 @@ +PREFIX ext: + PREFIX besluit: + PREFIX mu: + PREFIX skos: + PREFIX dcterms: + PREFIX foaf: + + INSERT DATA { + GRAPH { + ext:sessionRole "ABBOrganisatiePortaalGebruiker-editeerder" . + foaf:Person . + mu:uuid "d39fe09e-d339-4e43-8680-dbbcfb3d3472" . + foaf:firstName "Josephine" . + foaf:familyName "Beheerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "3a91ff60-07c1-4136-ac5e-55cf401e0958" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalGebruiker-beheerder" . + foaf:Person . + mu:uuid "2fe9885b-d058-4059-b036-69b54444273d" . + foaf:firstName "Josephine" . + foaf:familyName "WorshipLezer" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "8d411fea-5bf0-4925-ba97-14b2223f65ea" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-lezer" . + foaf:Person . + mu:uuid "4925580c-a1a9-43d4-b3f6-10bd7ff57e25" . + foaf:firstName "Josephine" . + foaf:familyName "WorshipEditeerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "fe45b266-715c-481e-9a97-a70f6121166c" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-editeerder" . + foaf:Person . + mu:uuid "f3610493-f6e1-4490-9723-628fe0213491" . + foaf:firstName "Josephine" . + foaf:familyName "WorshipBeheerder" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "2a88a4b4-4672-45eb-b072-c930bf3b40ae" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-beheerder" . + +} + } diff --git a/config/migrations/2023/20230401132400-hard-split/20230401132614-move-privacy-data.sparql b/config/migrations/2023/20230401132400-hard-split/20230401132614-move-privacy-data.sparql new file mode 100644 index 0000000..ea64b74 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230401132614-move-privacy-data.sparql @@ -0,0 +1,128 @@ +PREFIX xsd: +PREFIX mu: +PREFIX persoon: +PREFIX ext: +PREFIX person: +PREFIX session: +PREFIX foaf: +PREFIX besluit: + + + + +insert { + +GRAPH { + ?person persoon:heeftGeboorte ?heeftGeboorte. + ?heeftGeboorte ?p ?o. + ?person persoon:registratie ?registration. + ?registration ?identificator. + ?identificator ?x ?y. + ?registration ?t ?j. + ?person persoon:geslacht ?geslacht. + ?person persoon:heeftNationaliteit ?nationaliteit. + + +} + +} + where { + GRAPH { + optional { + ?person persoon:heeftGeboorte ?heeftGeboorte. + ?heeftGeboorte ?p ?o. + } + optional { + ?person persoon:registratie ?registration. + ?registration ?identificator. + ?identificator ?x ?y. + ?registration ?t ?j. + } + optional { + ?person persoon:geslacht ?geslacht. + } + optional { + ?person persoon:heeftNationaliteit ?nationaliteit. + } + + filter (exists + { + graph { + ?mandatories ?person. + } + } + + || exists { + graph { + ?ministers ?person. + } + }) + + + + } + + + } + + ; + + + + + +insert { + +GRAPH { + ?person persoon:heeftGeboorte ?heeftGeboorte. + ?heeftGeboorte ?p ?o. + ?person persoon:registratie ?registration. + ?registration ?identificator. + ?identificator ?x ?y. + ?registration ?t ?j. + ?person persoon:geslacht ?geslacht. + ?person persoon:heeftNationaliteit ?nationaliteit. + + +} + +} + where { + GRAPH { + optional { + ?person persoon:heeftGeboorte ?heeftGeboorte. + ?heeftGeboorte ?p ?o. + } + optional { + ?person persoon:registratie ?registration. + ?registration ?identificator. + ?identificator ?x ?y. + ?registration ?t ?j. + } + optional { + ?person persoon:geslacht ?geslacht. + } + optional { + ?person persoon:heeftNationaliteit ?nationaliteit. + } + + filter (exists + { + graph { + ?mandatories ?person. + } + } + + || exists { + graph { + ?ministers ?person. + } + }) + + + + } + + + } + diff --git a/config/migrations/2023/20230401132400-hard-split/20230402105324-move-jobs-to-specific-graph.sparql b/config/migrations/2023/20230401132400-hard-split/20230402105324-move-jobs-to-specific-graph.sparql new file mode 100644 index 0000000..9cf2b5b --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230402105324-move-jobs-to-specific-graph.sparql @@ -0,0 +1,21 @@ +DELETE { + GRAPH ?g { + ?s ?p ?o . + } +} INSERT { + GRAPH { + ?s ?p ?o . + } +} WHERE { + GRAPH ?g { + VALUES ?type { + + + + + } + + ?s a ?type ; + ?p ?o . + } +} diff --git a/config/migrations/2023/20230401132400-hard-split/20230403132612-add-mock-user-5.sparql b/config/migrations/2023/20230401132400-hard-split/20230403132612-add-mock-user-5.sparql new file mode 100644 index 0000000..c87920f --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230403132612-add-mock-user-5.sparql @@ -0,0 +1,23 @@ +PREFIX ext: + PREFIX besluit: + PREFIX mu: + PREFIX skos: + PREFIX dcterms: + PREFIX foaf: + + INSERT DATA { + GRAPH { + foaf:Person . + mu:uuid "6928a160-f3fc-4b46-bae8-fb72a0ae833e" . + foaf:firstName "Josephine" . + foaf:familyName "BothRoles" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "cd52ed34-7bcd-41df-a7d4-c805c1d1a197" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-beheerder", + "ABBOrganisatiePortaalGebruiker-beheerder" . + + } + } diff --git a/config/migrations/2023/20230401132400-hard-split/20230403132613-add-mock-user-6.sparql b/config/migrations/2023/20230401132400-hard-split/20230403132613-add-mock-user-6.sparql new file mode 100644 index 0000000..1f3e984 --- /dev/null +++ b/config/migrations/2023/20230401132400-hard-split/20230403132613-add-mock-user-6.sparql @@ -0,0 +1,22 @@ +PREFIX ext: + PREFIX besluit: + PREFIX mu: + PREFIX skos: + PREFIX dcterms: + PREFIX foaf: + + INSERT DATA { + GRAPH { + foaf:Person . + mu:uuid "6928a160-f3fc-4b46-bae8-fb72a0ae833e" . + foaf:firstName "Josephine" . + foaf:familyName "BothRoles" . + foaf:member . + foaf:account . + foaf:OnlineAccount . + mu:uuid "cd52ed34-7bcd-41df-a7d4-c805c1d1a197" . + foaf:accountServiceHomepage . + ext:sessionRole "ABBOrganisatiePortaalErediensten-beheerder", "ABBOrganisatiePortaalGebruiker-beheerder" . + + } + } diff --git a/config/resources/domain.json b/config/resources/domain.json index a763d2a..4eba5e7 100644 --- a/config/resources/domain.json +++ b/config/resources/domain.json @@ -122,7 +122,9 @@ }, "mandatories": { "class": "mandaat:Mandataris", - "super": ["agents-in-position"], + "super": [ + "agents-in-position" + ], "attributes": { "start-date": { "type": "date", @@ -165,12 +167,16 @@ "predicate": "skos:prefLabel" } }, - "features": ["include-uri"], + "features": [ + "include-uri" + ], "new-resource-base": "http://data.vlaanderen.be/id/concept/MandatarisStatusCode/" }, "worship-mandatories": { "class": "ere:EredienstMandataris", - "super": ["mandatories"], + "super": [ + "mandatories" + ], "attributes": { "expected-end-date": { "type": "date", @@ -235,7 +241,9 @@ }, "mandates": { "class": "mandaat:Mandaat", - "super": ["posts"], + "super": [ + "posts" + ], "relationships": { "role-board": { "predicate": "org:role", @@ -259,7 +267,9 @@ }, "agents": { "class": "lblodlg:Functionaris", - "super": ["agents-in-position"], + "super": [ + "agents-in-position" + ], "attributes": { "start-date": { "type": "datetime", @@ -297,12 +307,16 @@ "predicate": "skos:prefLabel" } }, - "features": ["include-uri"], + "features": [ + "include-uri" + ], "new-resource-base": "http://data.vlaanderen.be/id/concept/functionarisStatusCode/" }, "board-positions": { "class": "lblodlg:Bestuursfunctie", - "super": ["posts"], + "super": [ + "posts" + ], "relationships": { "role-board": { "predicate": "org:role", @@ -433,7 +447,9 @@ }, "administrative-units": { "class": "besluit:Bestuurseenheid", - "super": ["organizations"], + "super": [ + "organizations" + ], "relationships": { "classification": { "predicate": "org:classification", @@ -481,7 +497,9 @@ }, "worship-administrative-units": { "class": "ere:EredienstBestuurseenheid", - "super": ["administrative-units"], + "super": [ + "administrative-units" + ], "relationships": { "recognized-worship-type": { "predicate": "ere:typeEredienst", @@ -504,7 +522,9 @@ }, "worship-services": { "class": "ere:BestuurVanDeEredienst", - "super": ["worship-administrative-units"], + "super": [ + "worship-administrative-units" + ], "attributes": { "denomination": { "type": "string", @@ -529,12 +549,16 @@ }, "central-worship-services": { "class": "ere:CentraalBestuurVanDeEredienst", - "super": ["worship-administrative-units"], + "super": [ + "worship-administrative-units" + ], "new-resource-base": "http://data.lblod.info/id/centraleBesturenVanDeEredienst/" }, "representative-bodies": { "class": "ere:RepresentatiefOrgaan", - "super": ["organizations"], + "super": [ + "organizations" + ], "relationships": { "recognized-worship-type": { "predicate": "ere:typeEredienst", @@ -765,7 +789,9 @@ "predicate": "skos:prefLabel" } }, - "features": ["include-uri"], + "features": [ + "include-uri" + ], "new-resource-base": "http://lblod.data.gift/concepts/" }, "locations": { @@ -818,7 +844,9 @@ }, "ministers": { "class": "ere:RolBedienaar", - "super": ["agents-in-position"], + "super": [ + "agents-in-position" + ], "relationships": { "minister-position": { "predicate": "org:holds", @@ -886,7 +914,9 @@ }, "minister-positions": { "class": "ere:PositieBedienaar", - "super": ["posts"], + "super": [ + "posts" + ], "relationships": { "function": { "predicate": "ere:functie", diff --git a/config/search/config.json b/config/search/config.json index 6649ae8..e62d951 100644 --- a/config/search/config.json +++ b/config/search/config.json @@ -48,15 +48,7 @@ [ { "variables": [], - "name": "acmidm-beheerder" - }, - { - "variables": [], - "name": "acmidm-editeerder" - }, - { - "variables": [], - "name": "acmidm-lezer" + "name": "acmidm-worship-beheerder" }, { "variables": [], @@ -70,11 +62,7 @@ [ { "variables": [], - "name": "acmidm-editeerder" - }, - { - "variables": [], - "name": "acmidm-lezer" + "name": "acmidm-worship-lezer" }, { "variables": [], @@ -88,29 +76,7 @@ [ { "variables": [], - "name": "acmidm-editeerder" - }, - { - "variables": [], - "name": "acmidm-beheerder" - }, - { - "variables": [], - "name": "clean" - }, - { - "variables": [], - "name": "public" - } - ], - [ - { - "variables": [], - "name": "acmidm-lezer" - }, - { - "variables": [], - "name": "acmidm-beheerder" + "name": "acmidm-worship-editeerder" }, { "variables": [], @@ -122,19 +88,19 @@ } ] ], - "default_settings" : { + "default_settings": { "analysis": { "normalizer": { "custom_sort_normalizer": { - "type": "custom", - "char_filter": [], - "filter": [ - "lowercase", - "trim", - "asciifolding" - ] + "type": "custom", + "char_filter": [], + "filter": [ + "lowercase", + "trim", + "asciifolding" + ] } - } + } } }, "types": [ diff --git a/config/search/dev/config.json b/config/search/dev/config.json index 153ec14..6dd6b9e 100644 --- a/config/search/dev/config.json +++ b/config/search/dev/config.json @@ -1,26 +1,12 @@ { "automatic_index_updates": true, "persist_indexes": true, - "number_of_threads": 8, + "number_of_threads": 6, "eager_indexing_groups": [ [ { "variables": [], - "name": "acmidm-lezer" - }, - { - "variables": [], - "name": "clean" - }, - { - "variables": [], - "name": "public" - } - ], - [ - { - "variables": [], - "name": "acmidm-editeerder" + "name": "acmidm-worship-beheerder" }, { "variables": [], diff --git a/config/tlsproxy-mock/Caddyfile b/config/tlsproxy-mock/Caddyfile new file mode 100644 index 0000000..b041c33 --- /dev/null +++ b/config/tlsproxy-mock/Caddyfile @@ -0,0 +1,4 @@ +https://{$OP_ADDRESS} { + reverse_proxy identifier:80 + tls internal +} diff --git a/data/db/virtuoso.ini b/data/db/virtuoso.ini deleted file mode 100755 index e69de29..0000000 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index c793b9d..52c53e8 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,4 +1,4 @@ -version: '3.4' +version: "3.4" services: identifier: @@ -40,7 +40,9 @@ services: restart: "no" accountdetail: restart: "no" - privacy: + privacy-unit: + restart: "no" + privacy-worship: restart: "no" adressenregister: restart: "no" @@ -71,3 +73,13 @@ services: restart: "no" delta-producer-pub-graph-maintainer-worship-posts: restart: "no" + # use this to test acmidm + # tlsproxy: + # image: caddy:2 + # restart: "no" + # ports: + # - "443:443" + # environment: + # OP_ADDRESS: "organisaties.abb.lblod.info" + # volumes: + # - ./config/tlsproxy-mock/Caddyfile:/etc/caddy/Caddyfile diff --git a/docker-compose.yml b/docker-compose.yml index 2f35a1f..2e4f940 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -148,14 +148,26 @@ services: - db:database restart: always logging: *default-logging - privacy: + privacy-worship: image: lblod/privacy-centric-service:0.6.0 labels: - "logging=true" environment: - DEFAULT_GRAPH: "http://mu.semte.ch/graphs/privacy-centric-graph" + DEFAULT_GRAPH: "http://mu.semte.ch/graphs/worship-privacy-centric-graph" SESSION_GRAPH: "http://mu.semte.ch/graphs/sessions" - APP_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + APP_GRAPH: "http://mu.semte.ch/graphs/public" + restart: always + logging: *default-logging + links: + - db:database + privacy-unit: + image: lblod/privacy-centric-service:0.6.0 + labels: + - "logging=true" + environment: + DEFAULT_GRAPH: "http://mu.semte.ch/graphs/administrative-unit-privacy-centric-graph" + SESSION_GRAPH: "http://mu.semte.ch/graphs/sessions" + APP_GRAPH: "http://mu.semte.ch/graphs/public" restart: always logging: *default-logging links: @@ -232,11 +244,11 @@ services: delta-producer-bg-jobs-initiator-organizations: image: lblod/delta-producer-background-jobs-initiator:0.3.1 environment: - JOBS_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations" - CRON_PATTERN_DUMP_JOB: "40 * * * *" # At minute 40 every hour + CRON_PATTERN_DUMP_JOB: "42 * * * *" # At minute 42 every hour CRON_PATTERN_HEALING_JOB: "0 0 4 * * *" # everyday at 4 AM START_INITIAL_SYNC: "false" # prefer to disable it now. We want to have feeling with how the DB acts. labels: @@ -249,7 +261,7 @@ services: image: lblod/delta-producer-publication-graph-maintainer:0.7.0 environment: MAX_BODY_SIZE: "50mb" - JOBS_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/organizations" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/organizations" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations" @@ -258,8 +270,6 @@ services: USE_VIRTUOSO_FOR_EXPENSIVE_SELECTS: "true" # some queries are just too expensive SKIP_MU_AUTH_INITIAL_SYNC: "true" HEALING_PATCH_GRAPH_BATCH_SIZE: 500 - FILES_GRAPH: "http://redpencil.data.gift/id/deltas/producer/organizations-deltas" - ACCOUNT: "http://data.lblod.info/foaf/account/id/8df6f1e4-869f-4223-9834-961b01a7bd48" volumes: - ./config/delta-producer/organizations:/config - ./data/files/:/share @@ -272,7 +282,7 @@ services: image: lblod/delta-producer-json-diff-file-publisher:0.2.3 environment: MAX_BODY_SIZE: "50mb" - ERROR_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/organizations" PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/organizations" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/organizations" @@ -296,7 +306,7 @@ services: delta-producer-bg-jobs-initiator-public: image: lblod/delta-producer-background-jobs-initiator:0.3.1 environment: - JOBS_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/public" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public" @@ -313,7 +323,7 @@ services: image: lblod/delta-producer-publication-graph-maintainer:0.15.1 environment: MAX_BODY_SIZE: "50mb" - JOBS_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/public" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/public" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public" @@ -334,7 +344,7 @@ services: image: lblod/delta-producer-json-diff-file-publisher:0.2.3 environment: MAX_BODY_SIZE: "50mb" - ERROR_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/public" PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/public" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/public" @@ -358,7 +368,7 @@ services: delta-producer-bg-jobs-initiator-worship-posts: image: lblod/delta-producer-background-jobs-initiator:0.3.1 environment: - JOBS_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/worship-posts" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/worship-posts" @@ -375,7 +385,7 @@ services: image: lblod/delta-producer-publication-graph-maintainer:0.15.1 environment: MAX_BODY_SIZE: "50mb" - JOBS_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/worship-posts" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/worship-posts" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/worship-posts" @@ -388,7 +398,7 @@ services: PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/worship-posts" DELTA_INTERVAL_MS: 10000 PRETTY_PRINT_DIFF_JSON: "true" - ERROR_GRAPH: "http://mu.semte.ch/graphs/organisatieportaal" + ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs" volumes: - ./config/delta-producer/worship-posts:/config - ./data/files/:/share @@ -516,10 +526,18 @@ services: links: - db:database + roles: + image: lblod/select-role-service + labels: + - "logging=true" + links: + - db:database + restart: always + logging: *default-logging -################################################################################### -# MU SCRIPTS -# ################################################################################# + ################################################################################### + # MU SCRIPTS + # ################################################################################# project-scripts: image: semtech/mu-scripts:1.0.0 volumes: