From cac8ffd2488b73b670205783c9caa7cd54221d72 Mon Sep 17 00:00:00 2001 From: felix Date: Tue, 15 Sep 2026 23:25:07 +0200 Subject: [PATCH] all other things needed for chat assistent --- .../20260915120000-chat-assistant.graph | 1 + .../20260915120000-chat-assistant.ttl | 10 + config/report-profiles/erediensten.ttl | 433 ++++++++++++++ config/report-profiles/mandaten.ttl | 302 ++++++++++ config/report-profiles/organisaties.ttl | 543 ++++++++++++++++++ config/report-profiles/report-spec-readme.md | 67 +++ config/report-profiles/report-spec-shapes.ttl | 188 ++++++ config/resources/chat-domain.json | 184 ++++++ 8 files changed, 1728 insertions(+) create mode 100644 config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.graph create mode 100644 config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.ttl create mode 100644 config/report-profiles/erediensten.ttl create mode 100644 config/report-profiles/mandaten.ttl create mode 100644 config/report-profiles/organisaties.ttl create mode 100644 config/report-profiles/report-spec-readme.md create mode 100644 config/report-profiles/report-spec-shapes.ttl create mode 100644 config/resources/chat-domain.json diff --git a/config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.graph b/config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.graph new file mode 100644 index 0000000..092c3a9 --- /dev/null +++ b/config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.graph @@ -0,0 +1 @@ +http://mu.semte.ch/graphs/public diff --git a/config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.ttl b/config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.ttl new file mode 100644 index 0000000..72805ff --- /dev/null +++ b/config/migrations/2026/20260915120000-chat-assistant/20260915120000-chat-assistant.ttl @@ -0,0 +1,10 @@ +@prefix prov: . +@prefix foaf: . +@prefix dct: . +@prefix mu: . + + + a prov:SoftwareAgent , foaf:Agent ; + mu:uuid "802f9924-1933-4884-90eb-3f3f6dd1905f" ; + foaf:name "Rapportassistent" ; + dct:description "Stel je vraag over de gegevens in het Organisatieportaal. Ik maak er een rapport van." . diff --git a/config/report-profiles/erediensten.ttl b/config/report-profiles/erediensten.ttl new file mode 100644 index 0000000..c8e8dfe --- /dev/null +++ b/config/report-profiles/erediensten.ttl @@ -0,0 +1,433 @@ +# Profiel "Erediensten": eredienstbestuurseenheden (besturen van de +# eredienst, centrale besturen), representatieve organen, eredienst- +# mandatarissen, bedienaren (ministers) met hun posities, voorwaarden +# en financiering, betrokken lokale besturen. +# +# Bron: config/resources/domain.json is de autoriteit (worship- +# administrative-units, worship-services, central-worship-services, +# representative-bodies, worship-mandatories, ministers, +# minister-positions, minister-conditions en de bijhorende codes), +# aangevuld met de contact- en mandaatvelden van de oudertypes. +# +# Datatypes volgen de resource-config (number → xsd:decimal, +# datetime → xsd:dateTime, boolean → xsd:boolean). De triplestore stond +# niet aan tijdens het opstellen; waar de data afwijkt wint later de data. +# +# Niet opgenomen (geen rapportvelden): harvest-velden en vendor-relaties. +@prefix sh: . +@prefix rdfs: . +prefix owl: . +@prefix xsd: . +@prefix dct: . +@prefix skos: . +@prefix org: . +@prefix locn: . +@prefix adres: . +@prefix schema: . +@prefix foaf: . +@prefix persoon: . +@prefix person: . +@prefix mandaat: . +@prefix besluit: . +@prefix generiek: . +@prefix lblodlg: . +@prefix ch: . +@prefix ere: . +@prefix code: . +@prefix regorg: . +@prefix ext: . +@prefix geo: . +@prefix prov: . +@prefix ent: . + + + a owl:Ontology ; + dct:title "Erediensten" ; + sh:prefixes [ + sh:declare [ sh:prefix "ere" ; sh:namespace "http://data.lblod.info/vocabularies/erediensten/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "mandaat" ; sh:namespace "http://data.vlaanderen.be/ns/mandaat#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "besluit" ; sh:namespace "http://data.vlaanderen.be/ns/besluit#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "org" ; sh:namespace "http://www.w3.org/ns/org#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "persoon" ; sh:namespace "http://data.vlaanderen.be/ns/persoon#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "person" ; sh:namespace "http://www.w3.org/ns/person#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "foaf" ; sh:namespace "http://xmlns.com/foaf/0.1/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "skos" ; sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "schema" ; sh:namespace "http://schema.org/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ch" ; sh:namespace "http://data.lblod.info/vocabularies/contacthub/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "code" ; sh:namespace "http://lblod.data.gift/vocabularies/organisatie/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ext" ; sh:namespace "http://mu.semte.ch/vocabularies/ext/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "regorg" ; sh:namespace "http://www.w3.org/ns/regorg#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "geo" ; sh:namespace "http://www.opengis.net/ont/geosparql#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "generiek" ; sh:namespace "http://data.vlaanderen.be/ns/generiek#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "lblodlg" ; sh:namespace "http://data.lblod.info/vocabularies/leidinggevenden/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "dct" ; sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "rdfs" ; sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "xsd" ; sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ] ; + ] . + +ent:EredienstBestuurseenheid + a sh:NodeShape ; + rdfs:label "eredienstbestuurseenheid" ; + sh:targetClass ere:EredienstBestuurseenheid ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path regorg:legalName ; sh:name "juridische naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuur" ; + sh:node ent:BestuurseenheidClassificatie ] ; + sh:property [ sh:path regorg:orgStatus ; sh:name "organisatiestatus" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path ere:typeEredienst ; sh:name "type eredienst" ; + sh:description "Bv. rooms-katholiek, anglicaans, ..." ; + sh:node ent:TypeEredienst ] ; + sh:property [ sh:path besluit:werkingsgebied ; sh:name "werkingsgebied" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path geo:sfWithin ; sh:name "ligt in" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath besluit:bestuurt ] ; sh:name "bestuursorganen" ; + sh:description "De bestuursorganen van deze eredienst" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path ere:wordtBediendDoor ; sh:name "wordt bediend door" ; + sh:description "De posities waarop bedienaren deze eredienst bedienen" ; + sh:node ent:PositieBedienaar ] ; + sh:property [ sh:path ere:betrokkenBestuur ; sh:name "betrokken lokale besturen" ; + sh:description "De lokale besturen waarin deze eredienst betrokken is" ; + sh:node ent:BetrokkenLokaleBesturen ] ; + sh:property [ sh:path [ sh:inversePath org:organization ] ; sh:name "is betrokken bij" ; + sh:description "De betrokkenheden waar deze eredienst het eredienstbestuur van is" ; + sh:node ent:BetrokkenLokaleBesturen ] . + +ent:BestuurVanDeEredienst + a sh:NodeShape ; + rdfs:label "bestuur van de eredienst" ; + sh:targetClass ere:BestuurVanDeEredienst ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path regorg:legalName ; sh:name "juridische naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuur" ; + sh:node ent:BestuurseenheidClassificatie ] ; + sh:property [ sh:path regorg:orgStatus ; sh:name "organisatiestatus" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path ere:typeEredienst ; sh:name "type eredienst" ; + sh:node ent:TypeEredienst ] ; + sh:property [ sh:path ere:denominatie ; sh:name "denominatie" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ere:grensoverschrijdend ; sh:name "grensoverschrijdend" ; + sh:description "Of het bestuur over de landsgrens werkt" ; + sh:datatype xsd:boolean ] ; + sh:property [ sh:path besluit:werkingsgebied ; sh:name "werkingsgebied" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath besluit:bestuurt ] ; sh:name "bestuursorganen" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path ere:wordtBediendDoor ; sh:name "wordt bediend door" ; + sh:node ent:PositieBedienaar ] ; + sh:property [ sh:path ere:betrokkenBestuur ; sh:name "betrokken lokale besturen" ; + sh:node ent:BetrokkenLokaleBesturen ] . + +ent:CentraalBestuurVanDeEredienst + a sh:NodeShape ; + rdfs:label "centraal bestuur van de eredienst" ; + sh:targetClass ere:CentraalBestuurVanDeEredienst ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path regorg:legalName ; sh:name "juridische naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuur" ; + sh:node ent:BestuurseenheidClassificatie ] ; + sh:property [ sh:path regorg:orgStatus ; sh:name "organisatiestatus" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path ere:typeEredienst ; sh:name "type eredienst" ; + sh:node ent:TypeEredienst ] ; + sh:property [ sh:path besluit:werkingsgebied ; sh:name "werkingsgebied" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath besluit:bestuurt ] ; sh:name "bestuursorganen" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path ere:wordtBediendDoor ; sh:name "wordt bediend door" ; + sh:node ent:PositieBedienaar ] . + +ent:RepresentatiefOrgaan + a sh:NodeShape ; + rdfs:label "representatief orgaan" ; + sh:targetClass ere:RepresentatiefOrgaan ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "classificatie" ; + sh:node ent:RepresentatiefOrgaanClassificatie ] ; + sh:property [ sh:path ere:typeEredienst ; sh:name "type eredienst" ; + sh:node ent:TypeEredienst ] ; + sh:property [ sh:path [ sh:inversePath ere:behoort ] ; sh:name "bedienaren" ; + sh:description "De posities van bedienaren die bij dit orgaan horen" ; + sh:node ent:PositieBedienaar ] . + +ent:RepresentatiefOrgaanClassificatie + a sh:NodeShape ; + rdfs:label "representatief orgaan classificatie" ; + sh:targetClass ext:RepresentatiefOrgaanClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] . + +ent:TypeEredienst + a sh:NodeShape ; + rdfs:label "type eredienst" ; + sh:targetClass code:TypeEredienst ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:BestuurseenheidClassificatie + a sh:NodeShape ; + rdfs:label "soort bestuur" ; + sh:targetClass code:BestuurseenheidClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:OrganisatieStatus + a sh:NodeShape ; + rdfs:label "organisatiestatus" ; + sh:targetClass code:OrganisatieStatusCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Werkingsgebied + a sh:NodeShape ; + rdfs:label "werkingsgebied" ; + sh:targetClass prov:Location ; + sh:property [ sh:path rdfs:label ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ext:werkingsgebiedNiveau ; sh:name "niveau" ; + sh:datatype xsd:string ] . + +ent:Bestuursorgaan + a sh:NodeShape ; + rdfs:label "bestuursorgaan" ; + sh:targetClass besluit:Bestuursorgaan ; + sh:property [ sh:path mandaat:bindingStart ; sh:name "binding start" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:bindingEinde ; sh:name "binding einde" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuursorgaan" ; + sh:node ent:BestuursorgaanClassificatie ] ; + sh:property [ sh:path besluit:bestuurt ; sh:name "bestuurt" ; + sh:node ent:EredienstBestuurseenheid ] ; + sh:property [ sh:path generiek:isTijdspecialisatieVan ; sh:name "is tijdspecialisatie van" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path [ sh:inversePath generiek:isTijdspecialisatieVan ] ; sh:name "heeft tijdsspecialisaties" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path org:hasPost ; sh:name "bevat mandaat" ; + sh:node ent:Mandaat ] . + +ent:BestuursorgaanClassificatie + a sh:NodeShape ; + rdfs:label "soort bestuursorgaan" ; + sh:targetClass code:BestuursorgaanClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Mandaat + a sh:NodeShape ; + rdfs:label "mandaat" ; + sh:targetClass mandaat:Mandaat ; + sh:property [ sh:path mandaat:aantalHouders ; sh:name "aantal houders" ; + sh:datatype xsd:decimal ] ; + sh:property [ sh:path org:role ; sh:name "bestuursfunctie" ; + sh:node ent:BestuursfunctieCode ] ; + sh:property [ sh:path [ sh:inversePath org:hasPost ] ; sh:name "zit in bestuursorgaan" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path [ sh:inversePath org:holds ] ; sh:name "bekleders" ; + sh:node ent:EredienstMandataris ] . + +ent:BestuursfunctieCode + a sh:NodeShape ; + rdfs:label "bestuursfunctie" ; + sh:targetClass code:BestuursfunctieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:EredienstMandataris + a sh:NodeShape ; + rdfs:label "eredienstmandataris" ; + sh:targetClass ere:EredienstMandataris ; + sh:property [ sh:path mandaat:start ; sh:name "start" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:einde ; sh:name "einde" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path ere:geplandeEinddatumAanstelling ; sh:name "geplande einddatum aanstelling" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path ere:redenVanStopzetting ; sh:name "reden van stopzetting" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path mandaat:status ; sh:name "status" ; + sh:node ent:MandatarisStatus ] ; + sh:property [ sh:path ere:typeHelft ; sh:name "type helft" ; + sh:description "Bv. eerste helft, tweede helft van de bestuursperiode" ; + sh:node ent:HelftVerkiezing ] ; + sh:property [ sh:path mandaat:isBestuurlijkeAliasVan ; sh:name "persoon" ; + sh:node ent:Persoon ] ; + sh:property [ sh:path org:holds ; sh:name "bekleedt mandaat" ; + sh:node ent:Mandaat ] ; + sh:property [ sh:path schema:contactPoint ; sh:name "contact" ; + sh:node ent:ContactPunt ] . + +ent:MandatarisStatus + a sh:NodeShape ; + rdfs:label "status" ; + sh:targetClass code:MandatarisStatusCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:HelftVerkiezing + a sh:NodeShape ; + rdfs:label "helft verkiezing" ; + sh:targetClass code:HelftVerkiezing ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Persoon + a sh:NodeShape ; + rdfs:label "persoon" ; + sh:targetClass person:Person ; + sh:property [ sh:path foaf:givenName ; sh:name "voornaam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path foaf:familyName ; sh:name "achternaam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path persoon:gebruikteVoornaam ; sh:name "gebruikte voornaam" ; + sh:datatype xsd:string ] . + +ent:PositieBedienaar + a sh:NodeShape ; + rdfs:label "positie" ; + sh:targetClass ere:PositieBedienaar ; + sh:property [ sh:path ere:functie ; sh:name "functie" ; + sh:description "Het beroep van de bedienaar, bv. pastoor, imam" ; + sh:node ent:EredienstBeroep ] ; + sh:property [ sh:path [ sh:inversePath org:holds ] ; sh:name "bedienaren" ; + sh:description "De bedienaren die deze positie bekleden" ; + sh:node ent:Bedienaar ] ; + sh:property [ sh:path [ sh:inversePath ere:wordtBediendDoor ] ; sh:name "eredienstbestuur" ; + sh:description "Het eredienstbestuur dat door deze positie bediend wordt" ; + sh:node ent:EredienstBestuurseenheid ] ; + sh:property [ sh:path ere:behoort ; sh:name "representatief orgaan" ; + sh:node ent:RepresentatiefOrgaan ] . + +ent:EredienstBeroep + a sh:NodeShape ; + rdfs:label "beroep" ; + sh:targetClass code:EredienstBeroepen ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ere:vanToepassingBijStatus ; sh:name "van toepassing bij status" ; + sh:description "De organisatiestatussen waarbij dit beroep voorkomt" ; + sh:node ent:OrganisatieStatus ] . + +ent:Bedienaar + a sh:NodeShape ; + rdfs:label "bedienaar" ; + sh:targetClass ere:RolBedienaar ; + sh:property [ sh:path ch:startdatum ; sh:name "startdatum" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path ch:eindedatum ; sh:name "eindedatum" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path org:holds ; sh:name "bekleedt positie" ; + sh:description "De functiepositie die de bedienaar bekleedt" ; + sh:node ent:PositieBedienaar ] ; + sh:property [ sh:path ere:financiering ; sh:name "financiering" ; + sh:node ent:BedienaarFinancieringCode ] ; + sh:property [ sh:path ere:voldoetAan ; sh:name "voldoet aan" ; + sh:description "De voorwaarden waaraan de bedienaar voldoet" ; + sh:node ent:VoorwaardenBedienaar ] . + +ent:BedienaarFinancieringCode + a sh:NodeShape ; + rdfs:label "financiering" ; + sh:targetClass code:BedienaarFinancieringCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:VoorwaardenBedienaar + a sh:NodeShape ; + rdfs:label "voorwaarde" ; + sh:targetClass ere:VoorwaardenBedienaar ; + sh:property [ sh:path ere:voldaan ; sh:name "voldaan" ; + sh:datatype xsd:boolean ] ; + sh:property [ sh:path ere:criterium ; sh:name "criterium" ; + sh:node ent:VoorwaardenBedienaarCriterium ] ; + sh:property [ sh:path ere:criteriumbewijsstuktype ; sh:name "bewijsstuktype" ; + sh:node ent:BedienaarCriteriumBewijsstuk ] . + +ent:VoorwaardenBedienaarCriterium + a sh:NodeShape ; + rdfs:label "criterium" ; + sh:targetClass code:VoorwaardenBedienaarCriterium ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:BedienaarCriteriumBewijsstuk + a sh:NodeShape ; + rdfs:label "bewijsstuktype" ; + sh:targetClass code:BedienaarCriteriumBewijsstuk ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:BetrokkenLokaleBesturen + a sh:NodeShape ; + rdfs:label "betrokken lokale besturen" ; + sh:targetClass ere:BetrokkenLokaleBesturen ; + sh:property [ sh:path ere:financieringspercentage ; sh:name "financieringspercentage" ; + sh:datatype xsd:decimal ] ; + sh:property [ sh:path ere:typebetrokkenheid ; sh:name "type betrokkenheid" ; + sh:node ent:TypeBetrokkenheid ] ; + sh:property [ sh:path org:organization ; sh:name "eredienstbestuur" ; + sh:description "Het eredienstbestuur dat betrokken is" ; + sh:node ent:EredienstBestuurseenheid ] ; + sh:property [ sh:path [ sh:inversePath ere:betrokkenBestuur ] ; sh:name "bestuurseenheid" ; + sh:description "Het lokale bestuur waar de eredienst bij betrokken is" ; + sh:node ent:Bestuurseenheid ] . + +ent:TypeBetrokkenheid + a sh:NodeShape ; + rdfs:label "type betrokkenheid" ; + sh:targetClass code:TypeBetrokkenheid ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Bestuurseenheid + a sh:NodeShape ; + rdfs:label "bestuurseenheid" ; + sh:targetClass besluit:Bestuurseenheid ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuur" ; + sh:node ent:BestuurseenheidClassificatie ] . + +ent:ContactPunt + a sh:NodeShape ; + rdfs:label "contactpunt" ; + sh:targetClass schema:ContactPoint ; + sh:property [ sh:path schema:email ; sh:name "email" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:telephone ; sh:name "telefoon" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:contactType ; sh:name "contactsoort" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:address ; sh:name "adres" ; + sh:node ent:Adres ] . + +ent:Adres + a sh:NodeShape ; + rdfs:label "adres" ; + sh:targetClass locn:Address ; + sh:property [ sh:path locn:thoroughfare ; sh:name "straat" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:Adresvoorstelling.huisnummer ; sh:name "huisnummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:Adresvoorstelling.busnummer ; sh:name "busnummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:postCode ; sh:name "postcode" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:gemeentenaam ; sh:name "gemeente" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:land ; sh:name "land" ; + sh:datatype xsd:string ] . diff --git a/config/report-profiles/mandaten.ttl b/config/report-profiles/mandaten.ttl new file mode 100644 index 0000000..f3f33cc --- /dev/null +++ b/config/report-profiles/mandaten.ttl @@ -0,0 +1,302 @@ +# Profiel "Mandaten": bestuursorganen (in tijd), mandaten, +# bestuursfuncties, mandatarissen, functionarissen (leidinggevenden), +# personen en hun contacten. +# +# Bron: config/resources/domain.json is de autoriteit (governing-bodies, +# mandates, board-positions, mandatories, functionaries, people, +# agents-in-position, posts en de status- en classificatiecodes). +# +# Datatypes volgen de resource-config (number → xsd:decimal, +# datetime → xsd:dateTime). De triplestore stond niet aan tijdens het +# opstellen; waar de data afwijkt wint later de data. +# +# Keten: bestuurseenheid <- bestuursorgaan ("bestuurt", omgekeerd) -> +# bestuursorgaan in tijd (generiek:isTijdspecialisatieVan, +# mandaat:bindingStart/-Einde) -> mandaat (org:hasPost) -> mandataris +# (org:holds) -> persoon (mandaat:isBestuurlijkeAliasVan). +# +# Bestuursorgaan en bestuursorgaanInTijd delen besluit:Bestuursorgaan als +# sh:targetClass; rep:discriminator houdt ze in de seed uit elkaar (een +# orgaan in tijd heeft generiek:isTijdspecialisatieVan, een vast orgaan +# heeft die niet). Een spec kiest er één met rep:entity. +# +# Niet opgenomen (geen rapportvelden): harvest-velden en vendor-relaties. +# Een generiek org:Post (posts) deelt org:role met het mandaat; hier wint +# de lezing van het mandaat (bestuursfunctie). De eredienst-varianten +# (EredienstMandataris) staan in erediensten.ttl. +@prefix sh: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . +@prefix dct: . +@prefix skos: . +@prefix org: . +@prefix locn: . +@prefix adres: . +@prefix schema: . +@prefix foaf: . +@prefix persoon: . +@prefix person: . +@prefix mandaat: . +@prefix besluit: . +@prefix generiek: . +@prefix lblodlg: . +@prefix ch: . +@prefix code: . +@prefix ext: . +@prefix rep: . +@prefix ent: . + + + a owl:Ontology ; + dct:title "Mandaten" ; + sh:prefixes [ + sh:declare [ sh:prefix "mandaat" ; sh:namespace "http://data.vlaanderen.be/ns/mandaat#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "besluit" ; sh:namespace "http://data.vlaanderen.be/ns/besluit#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "org" ; sh:namespace "http://www.w3.org/ns/org#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "generiek" ; sh:namespace "https://data.vlaanderen.be/ns/generiek#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "persoon" ; sh:namespace "https://data.vlaanderen.be/ns/persoon#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "person" ; sh:namespace "http://www.w3.org/ns/person#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "foaf" ; sh:namespace "http://xmlns.com/foaf/0.1/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "skos" ; sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "schema" ; sh:namespace "http://schema.org/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "lblodlg" ; sh:namespace "http://data.lblod.info/vocabularies/leidinggevenden/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ch" ; sh:namespace "http://data.lblod.info/vocabularies/contacthub/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "code" ; sh:namespace "http://lblod.data.gift/vocabularies/organisatie/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ext" ; sh:namespace "http://mu.semte.ch/vocabularies/ext/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "locn" ; sh:namespace "http://www.w3.org/ns/locn#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "adres" ; sh:namespace "https://data.vlaanderen.be/ns/adres#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "dct" ; sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "rdfs" ; sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "xsd" ; sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ] ; + ] . + +ent:Bestuursorgaan + a sh:NodeShape ; + rdfs:label "bestuursorgaan" ; + sh:targetClass besluit:Bestuursorgaan ; + rep:discriminator [ sh:path generiek:isTijdspecialisatieVan ; sh:maxCount 0 ] ; + sh:property [ sh:path besluit:bestuurt ; sh:name "bestuurt" ; + sh:description "De bestuurseenheid die door dit orgaan bestuurd wordt" ; + sh:node ent:Bestuurseenheid ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuursorgaan" ; + sh:description "Bv. gemeenteraad, college van burgemeester en schepenen" ; + sh:node ent:BestuursorgaanClassificatie ] ; + sh:property [ sh:path [ sh:inversePath generiek:isTijdspecialisatieVan ] ; sh:name "heeft tijdsspecialisaties" ; + sh:description "De organen in tijd die bij dit vaste orgaan horen" ; + sh:node ent:BestuursorgaanInTijd ] . + +ent:BestuursorgaanInTijd + a sh:NodeShape ; + rdfs:label "bestuursorgaanInTijd" ; + sh:targetClass besluit:Bestuursorgaan ; + rep:discriminator [ sh:path generiek:isTijdspecialisatieVan ; sh:minCount 1 ] ; + sh:property [ sh:path mandaat:bindingStart ; sh:name "binding start" ; + sh:description "Start van de bestuursperiode; orgaan in tijd" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:bindingEinde ; sh:name "binding einde" ; + sh:description "Einde van de bestuursperiode; orgaan in tijd" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path ; sh:name "is tijdspecialisatie van" ; + sh:description "Het vaste orgaan waarvan dit orgaan in tijd een periode is" ; + sh:node ent:Bestuursorgaan ] ; + sh:property [ sh:path org:hasPost ; sh:name "bevat mandaat" ; + sh:description "De mandaten die dit orgaan bevat" ; + sh:node ent:Mandaat ] ; + sh:property [ sh:path lblodlg:heeftBestuursfunctie ; sh:name "bevat bestuursfunctie" ; + sh:description "De leidinggevende functies van dit orgaan, bv. secretaris" ; + sh:node ent:LeidinggevendeBestuursfunctie ] . + +ent:BestuursorgaanClassificatie + a sh:NodeShape ; + rdfs:label "soort bestuursorgaan" ; + sh:targetClass code:BestuursorgaanClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ext:appliesWithin ; sh:name "geldt binnen" ; + sh:description "De soorten bestuur waarbinnen deze orgaanclassificatie voorkomt" ; + sh:node ent:BestuurseenheidClassificatie ] . + +ent:BestuurseenheidClassificatie + a sh:NodeShape ; + rdfs:label "soort bestuur" ; + sh:targetClass code:BestuurseenheidClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Bestuurseenheid + a sh:NodeShape ; + rdfs:label "bestuurseenheid" ; + sh:targetClass besluit:Bestuurseenheid ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuur" ; + sh:node ent:BestuurseenheidClassificatie ] ; + sh:property [ sh:path [ sh:inversePath besluit:bestuurt ] ; sh:name "bestuursorganen" ; + sh:description "De bestuursorganen van deze bestuurseenheid" ; + sh:node ent:Bestuursorgaan ] . + +ent:Mandaat + a sh:NodeShape ; + rdfs:label "mandaat" ; + sh:targetClass mandaat:Mandaat ; + sh:property [ sh:path mandaat:aantalHouders ; sh:name "aantal houders" ; + sh:description "Aantal mandatarissen dat het mandaat kan hebben" ; + sh:datatype xsd:decimal ] ; + sh:property [ sh:path org:role ; sh:name "bestuursfunctie" ; + sh:description "De functie waarvoor het mandaat geldt, bv. burgemeester" ; + sh:node ent:BestuursfunctieCode ] ; + sh:property [ sh:path [ sh:inversePath org:hasPost ] ; sh:name "zit in bestuursorgaan" ; + sh:description "Het bestuursorgaan (in tijd) dat dit mandaat bevat" ; + sh:node ent:BestuursorgaanInTijd ] ; + sh:property [ sh:path [ sh:inversePath org:holds ] ; sh:name "bekleders" ; + sh:description "De mandatarissen die dit mandaat bekleden" ; + sh:node ent:Mandataris ] . + +ent:BestuursfunctieCode + a sh:NodeShape ; + rdfs:label "bestuursfunctie" ; + sh:targetClass code:BestuursfunctieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ext:appliesTo ; sh:name "geldt voor" ; + sh:description "De orgaanclassificaties waarop deze functie van toepassing is" ; + sh:node ent:BestuursorgaanClassificatie ] . + +ent:Mandataris + a sh:NodeShape ; + rdfs:label "mandataris" ; + sh:targetClass mandaat:Mandataris ; + sh:property [ sh:path mandaat:start ; sh:name "start" ; + sh:description "Start van de aanstelling" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:einde ; sh:name "einde" ; + sh:description "Einde van de aanstelling" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:status ; sh:name "status" ; + sh:description "Status van de mandataris, bv. effectief, verhindering" ; + sh:node ent:MandatarisStatus ] ; + sh:property [ sh:path mandaat:isBestuurlijkeAliasVan ; sh:name "persoon" ; + sh:description "De persoon achter de mandataris" ; + sh:node ent:Persoon ] ; + sh:property [ sh:path org:holds ; sh:name "bekleedt mandaat" ; + sh:description "Het mandaat dat de mandataris bekleedt" ; + sh:node ent:Mandaat ] ; + sh:property [ sh:path schema:contactPoint ; sh:name "contact" ; + sh:node ent:ContactPunt ] . + +ent:MandatarisStatus + a sh:NodeShape ; + rdfs:label "status" ; + sh:targetClass code:MandatarisStatusCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:LeidinggevendeBestuursfunctie + a sh:NodeShape ; + rdfs:label "bestuursfunctie" ; + sh:targetClass lblodlg:Bestuursfunctie ; + sh:property [ sh:path org:role ; sh:name "functie" ; + sh:description "De leidinggevende functie, bv. secretaris, financieel directeur" ; + sh:node ent:BestuursfunctieCode ] ; + sh:property [ sh:path schema:contactPoint ; sh:name "contact" ; + sh:node ent:ContactPunt ] ; + sh:property [ sh:path [ sh:inversePath lblodlg:heeftBestuursfunctie ] ; sh:name "in bestuursorgaan" ; + sh:description "Het bestuursorgaan waar deze functie bij hoort" ; + sh:node ent:Bestuursorgaan ] . + +ent:Functionaris + a sh:NodeShape ; + rdfs:label "functionaris" ; + sh:targetClass lblodlg:Functionaris ; + sh:property [ sh:path mandaat:start ; sh:name "start" ; + sh:description "Start van de aanstelling" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:einde ; sh:name "einde" ; + sh:description "Einde van de aanstelling" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path mandaat:status ; sh:name "status" ; + sh:node ent:FunctionarisStatus ] ; + sh:property [ sh:path mandaat:isBestuurlijkeAliasVan ; sh:name "persoon" ; + sh:description "De persoon achter de functionaris" ; + sh:node ent:Persoon ] ; + sh:property [ sh:path org:holds ; sh:name "bekleedt bestuursfunctie" ; + sh:description "De leidinggevende functie die de functionaris bekleedt" ; + sh:node ent:LeidinggevendeBestuursfunctie ] . + +ent:FunctionarisStatus + a sh:NodeShape ; + rdfs:label "status" ; + sh:targetClass lblodlg:FunctionarisStatusCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Persoon + a sh:NodeShape ; + rdfs:label "persoon" ; + sh:targetClass person:Person ; + sh:property [ sh:path foaf:givenName ; sh:name "voornaam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path foaf:familyName ; sh:name "achternaam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path persoon:gebruikteVoornaam ; sh:name "gebruikte voornaam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path [ sh:inversePath mandaat:isBestuurlijkeAliasVan ] ; sh:name "mandatarissen" ; + sh:description "De mandatarissen van deze persoon" ; + sh:node ent:Mandataris ] ; + sh:property [ sh:path [ sh:inversePath mandaat:isBestuurlijkeAliasVan ] ; sh:name "functionarissen" ; + sh:description "De leidinggevende functies van deze persoon" ; + sh:node ent:Functionaris ] ; + sh:property [ sh:path [ sh:inversePath org:heldBy ] ; sh:name "posities" ; + sh:description "De posities (agent-in-positie) van deze persoon" ; + sh:node ent:AgentInPositie ] . + +ent:AgentInPositie + a sh:NodeShape ; + rdfs:label "agent in positie" ; + sh:targetClass ch:AgentInPositie ; + sh:property [ sh:path ch:startdatum ; sh:name "startdatum" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path ch:eindedatum ; sh:name "eindedatum" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path org:heldBy ; sh:name "persoon" ; + sh:node ent:Persoon ] ; + sh:property [ sh:path schema:contactPoint ; sh:name "contact" ; + sh:node ent:ContactPunt ] . + +ent:ContactPunt + a sh:NodeShape ; + rdfs:label "contactpunt" ; + sh:targetClass schema:ContactPoint ; + sh:property [ sh:path schema:email ; sh:name "email" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:telephone ; sh:name "telefoon" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:faxNumber ; sh:name "fax" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path foaf:page ; sh:name "website" ; + sh:description "URI van de website" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:contactType ; sh:name "contactsoort" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:address ; sh:name "adres" ; + sh:node ent:Adres ] . + +ent:Adres + a sh:NodeShape ; + rdfs:label "adres" ; + sh:targetClass locn:Address ; + sh:property [ sh:path locn:thoroughfare ; sh:name "straat" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:Adresvoorstelling.huisnummer ; sh:name "huisnummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:Adresvoorstelling.busnummer ; sh:name "busnummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:postCode ; sh:name "postcode" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:gemeentenaam ; sh:name "gemeente" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:land ; sh:name "land" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:fullAddress ; sh:name "volledig adres" ; + sh:datatype xsd:string ] . diff --git a/config/report-profiles/organisaties.ttl b/config/report-profiles/organisaties.ttl new file mode 100644 index 0000000..a37d905 --- /dev/null +++ b/config/report-profiles/organisaties.ttl @@ -0,0 +1,543 @@ +# Profiel "Organisaties": organisaties (incl. bestuurseenheden en +# geregistreerde organisaties), vestigingen, adressen, contacten, +# identificatoren, werkingsgebieden, KBO-gegevens, lidmaatschappen en +# veranderingsgebeurtenissen. +# +# Bron: config/resources/domain.json is de autoriteit (organizations, +# administrative-units, registered-organizations, kbo-organizations, +# sites, addresses, contact-points, identifiers, locations, memberships, +# concepts, sectors, nace-bel-codes en de classificatie- en statuscodes), +# aangevuld met config/resources/change-events.json (change-events, +# change-event-results, change-event-types, decisions, +# decision-activities). +# +# Datatypes volgen de resource-config (number → xsd:decimal, +# datetime → xsd:dateTime, date → xsd:date, boolean → xsd:boolean). +# De triplestore stond niet aan tijdens het opstellen; waar de data afwijkt +# wint later de data. +# +# Niet opgenomen (geen rapportvelden): sync- en harvest-velden +# (prov:wasGeneratedBy, owl:sameAs, task:modifiedOn, task:modifiedBy, +# rdfs:seeAlso), vendor-relaties (muAccount:canActOnBehalfOf, +# prov:wasAssociatedWith). De eredienst-tak van het organigram staat in +# erediensten.ttl; de bestuursorgaan-/mandaatketen in mandaten.ttl. +@prefix sh: . +@prefix rdfs: . +@prefix owl: . +@prefix xsd: . +@prefix dct: . +@prefix skos: . +@prefix org: . +@prefix regorg: . +@prefix foaf: . +@prefix ere: . +@prefix locn: . +@prefix adres: . +@prefix adms: . +@prefix prov: . +@prefix schema: . +@prefix organisatie: . +@prefix generiek: . +@prefix lblodgeneriek: . +@prefix code: . +@prefix ext: . +@prefix ch: . +@prefix nacebel: . +@prefix geo: . +@prefix m8g: . +@prefix besluit: . +@prefix eli: . +@prefix besluitvorming: . +@prefix dossier: . +@prefix ent: . + + + a owl:Ontology ; + dct:title "Organisaties" ; + sh:prefixes [ + sh:declare [ sh:prefix "org" ; sh:namespace "http://www.w3.org/ns/org#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "besluit" ; sh:namespace "http://data.vlaanderen.be/ns/besluit#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "regorg" ; sh:namespace "http://www.w3.org/ns/regorg#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "skos" ; sh:namespace "http://www.w3.org/2004/02/skos/core#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "dct" ; sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "locn" ; sh:namespace "http://www.w3.org/ns/locn#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "adres" ; sh:namespace "https://data.vlaanderen.be/ns/adres#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "adms" ; sh:namespace "http://www.w3.org/ns/adms#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "prov" ; sh:namespace "http://www.w3.org/ns/prov#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "schema" ; sh:namespace "http://schema.org/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "organisatie" ; sh:namespace "https://data.vlaanderen.be/ns/organisatie#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "generiek" ; sh:namespace "http://data.vlaanderen.be/ns/generiek#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "lblodgeneriek" ; sh:namespace "https://data.lblod.info/vocabularies/generiek/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "code" ; sh:namespace "http://lblod.data.gift/vocabularies/organisatie/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ext" ; sh:namespace "http://mu.semte.ch/vocabularies/ext/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ch" ; sh:namespace "http://data.lblod.info/vocabularies/contacthub/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "ere" ; sh:namespace "http://data.lblod.info/vocabularies/erediensten/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "foaf" ; sh:namespace "http://xmlns.com/foaf/0.1/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "geo" ; sh:namespace "http://www.opengis.net/ont/geosparql#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "nacebel" ; sh:namespace "http://data.gift/vocabularies/nace-bel/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "m8g" ; sh:namespace "http://data.europa.eu/m8g/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "eli" ; sh:namespace "http://data.europa.eu/eli/ontology#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "besluitvorming" ; sh:namespace "https://data.vlaanderen.be/ns/besluitvorming#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "dossier" ; sh:namespace "https://data.vlaanderen.be/ns/dossier#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "rdfs" ; sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "xsd" ; sh:namespace "http://www.w3.org/2001/XMLSchema#"^^xsd:anyURI ] ; + ] . + +ent:Organisatie + a sh:NodeShape ; + rdfs:label "organisatie" ; + sh:targetClass org:Organization ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:description "Officiële naam van de organisatie" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path regorg:legalName ; sh:name "juridische naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path lblodgeneriek:geplandeEindDatum ; sh:name "geplande einddatum" ; + sh:description "Geplande einddatum van de organisatie (fusies)" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path org:purpose ; sh:name "doel" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort organisatie" ; + sh:node ent:OrganisatieClassificatie ] ; + sh:property [ sh:path organisatie:rechtsvorm ; sh:name "rechtsvorm" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:inhoudelijkThema ; sh:name "inhoudelijk thema" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:bijkomendeKwalificatie ; sh:name "bijkomende kwalificatie" ; + sh:node ent:BijkomendeKwalificatie ] ; + sh:property [ sh:path adms:identifier ; sh:name "identificator" ; + sh:description "Identificatoren van de organisatie, bv. het KBO-nummer zit in de notatie" ; + sh:node ent:Identificator ] ; + sh:property [ sh:path regorg:orgStatus ; sh:name "organisatiestatus" ; + sh:description "Bv. Actief, In oprichting" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path org:hasPrimarySite ; sh:name "hoofdvestiging" ; + sh:node ent:Vestiging ] ; + sh:property [ sh:path org:hasSite ; sh:name "vestiging" ; + sh:node ent:Vestiging ] ; + sh:property [ sh:path [ sh:inversePath org:member ] ; sh:name "is lid via" ; + sh:description "De lidmaatschappen waarin deze organisatie het lid is" ; + sh:node ent:Lidmaatschap ] ; + sh:property [ sh:path [ sh:inversePath org:organization ] ; sh:name "bevat lidmaatschappen" ; + sh:description "De lidmaatschappen die bij deze organisatie horen" ; + sh:node ent:Lidmaatschap ] ; + sh:property [ sh:path dct:isPartOf ; sh:name "sector" ; + sh:node ent:Sector ] ; + sh:property [ sh:path regorg:orgActivity ; sh:name "activiteit" ; + sh:description "NaceBel-activiteit van de organisatie" ; + sh:node ent:NaceBelCode ] ; + sh:property [ sh:path [ sh:inversePath owl:sameAs ] ; sh:name "kbo-organisatie" ; + sh:description "De KBO-gegevens die met deze organisatie gelijkgesteld zijn" ; + sh:node ent:KboOrganisatie ] ; + sh:property [ sh:path [ sh:inversePath org:originalOrganization ] ; sh:name "veranderd door" ; + sh:description "De veranderingsgebeurtenis waarvan deze organisatie het oorspronkelijke bestuur is" ; + sh:node ent:Veranderingsgebeurtenis ] ; + sh:property [ sh:path [ sh:inversePath org:resultingOrganization ] ; sh:name "resulteerde uit" ; + sh:description "De veranderingsgebeurtenis waaruit deze organisatie is voortgekomen" ; + sh:node ent:Veranderingsgebeurtenis ] ; + sh:property [ sh:path [ sh:inversePath ext:resultingOrganization ] ; sh:name "veranderingsresultaat van" ; + sh:description "De veranderingsresultaten die naar deze organisatie wijzen" ; + sh:node ent:VeranderingsgebeurtenisResultaat ] . + +ent:Bestuurseenheid + a sh:NodeShape ; + rdfs:label "bestuurseenheid" ; + sh:targetClass besluit:Bestuurseenheid ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:description "Officiële naam van de bestuurseenheid" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path regorg:legalName ; sh:name "juridische naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path lblodgeneriek:geplandeEindDatum ; sh:name "geplande einddatum" ; + sh:description "Geplande einddatum van de bestuurseenheid (fusies)" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path org:purpose ; sh:name "doel" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort bestuur" ; + sh:description "Classificatie: gemeente, OCMW, provincie, ..." ; + sh:node ent:BestuurseenheidClassificatie ] ; + sh:property [ sh:path organisatie:rechtsvorm ; sh:name "rechtsvorm" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:inhoudelijkThema ; sh:name "inhoudelijk thema" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:bijkomendeKwalificatie ; sh:name "bijkomende kwalificatie" ; + sh:node ent:BijkomendeKwalificatie ] ; + sh:property [ sh:path adms:identifier ; sh:name "identificator" ; + sh:description "Identificatoren van de bestuurseenheid, bv. het KBO-nummer zit in de notatie" ; + sh:node ent:Identificator ] ; + sh:property [ sh:path regorg:orgStatus ; sh:name "organisatiestatus" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path org:hasPrimarySite ; sh:name "hoofdvestiging" ; + sh:node ent:Vestiging ] ; + sh:property [ sh:path org:hasSite ; sh:name "vestiging" ; + sh:node ent:Vestiging ] ; + sh:property [ sh:path besluit:werkingsgebied ; sh:name "werkingsgebied" ; + sh:description "Het territorium waar de bestuurseenheid over gaat" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path geo:sfWithin ; sh:name "ligt in" ; + sh:description "Het gebied waar de bestuurseenheid in ligt" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path skos:exactMatch ; sh:name "exacte match" ; + sh:node ent:Concept ] ; + sh:property [ sh:path [ sh:inversePath org:member ] ; sh:name "is lid via" ; + sh:node ent:Lidmaatschap ] ; + sh:property [ sh:path [ sh:inversePath org:organization ] ; sh:name "bevat lidmaatschappen" ; + sh:node ent:Lidmaatschap ] ; + sh:property [ sh:path dct:isPartOf ; sh:name "sector" ; + sh:node ent:Sector ] ; + sh:property [ sh:path regorg:orgActivity ; sh:name "activiteit" ; + sh:node ent:NaceBelCode ] ; + sh:property [ sh:path [ sh:inversePath owl:sameAs ] ; sh:name "kbo-organisatie" ; + sh:node ent:KboOrganisatie ] ; + sh:property [ sh:path [ sh:inversePath org:originalOrganization ] ; sh:name "veranderd door" ; + sh:node ent:Veranderingsgebeurtenis ] ; + sh:property [ sh:path [ sh:inversePath org:resultingOrganization ] ; sh:name "resulteerde uit" ; + sh:node ent:Veranderingsgebeurtenis ] ; + sh:property [ sh:path [ sh:inversePath ext:resultingOrganization ] ; sh:name "veranderingsresultaat van" ; + sh:node ent:VeranderingsgebeurtenisResultaat ] . + +ent:GeregistreerdeOrganisatie + a sh:NodeShape ; + rdfs:label "geregistreerde organisatie" ; + sh:targetClass regorg:RegisteredOrganization ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path regorg:legalName ; sh:name "juridische naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path lblodgeneriek:geplandeEindDatum ; sh:name "geplande einddatum" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path org:purpose ; sh:name "doel" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path org:classification ; sh:name "soort organisatie" ; + sh:node ent:GeregistreerdeOrganisatieClassificatie ] ; + sh:property [ sh:path organisatie:rechtsvorm ; sh:name "rechtsvorm" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:inhoudelijkThema ; sh:name "inhoudelijk thema" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:bijkomendeKwalificatie ; sh:name "bijkomende kwalificatie" ; + sh:node ent:BijkomendeKwalificatie ] ; + sh:property [ sh:path adms:identifier ; sh:name "identificator" ; + sh:node ent:Identificator ] ; + sh:property [ sh:path regorg:orgStatus ; sh:name "organisatiestatus" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path org:hasPrimarySite ; sh:name "hoofdvestiging" ; + sh:node ent:Vestiging ] ; + sh:property [ sh:path org:hasSite ; sh:name "vestiging" ; + sh:node ent:Vestiging ] ; + sh:property [ sh:path dct:spatial ; sh:name "werkingsgebied" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath org:member ] ; sh:name "is lid via" ; + sh:node ent:Lidmaatschap ] ; + sh:property [ sh:path [ sh:inversePath org:organization ] ; sh:name "bevat lidmaatschappen" ; + sh:node ent:Lidmaatschap ] ; + sh:property [ sh:path dct:isPartOf ; sh:name "sector" ; + sh:node ent:Sector ] ; + sh:property [ sh:path regorg:orgActivity ; sh:name "activiteit" ; + sh:node ent:NaceBelCode ] ; + sh:property [ sh:path [ sh:inversePath owl:sameAs ] ; sh:name "kbo-organisatie" ; + sh:node ent:KboOrganisatie ] . + +ent:KboOrganisatie + a sh:NodeShape ; + rdfs:label "kbo-organisatie" ; + sh:targetClass ext:KboOrganisatie ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ext:rechtsvorm ; sh:name "rechtsvorm" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ext:startDate ; sh:name "startdatum" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path dct:modified ; sh:name "gewijzigd" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path owl:sameAs ; sh:name "organisatie" ; + sh:description "De organisatie in dit portaal die aan dit KBO-record gekoppeld is" ; + sh:node ent:Organisatie ] . + +ent:OrganisatieClassificatie + a sh:NodeShape ; + rdfs:label "organisatieclassificatie" ; + sh:targetClass ext:OrganizationClassificationCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] . + +ent:BestuurseenheidClassificatie + a sh:NodeShape ; + rdfs:label "soort bestuur" ; + sh:targetClass code:BestuurseenheidClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] . + +ent:GeregistreerdeOrganisatieClassificatie + a sh:NodeShape ; + rdfs:label "soort geregistreerde organisatie" ; + sh:targetClass ext:GeregistreerdeOrganisatieClassificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] . + +ent:OrganisatieStatus + a sh:NodeShape ; + rdfs:label "organisatiestatus" ; + sh:targetClass code:OrganisatieStatusCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Vestiging + a sh:NodeShape ; + rdfs:label "vestiging" ; + sh:targetClass org:Site ; + sh:property [ sh:path dct:description ; sh:name "omschrijving" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ere:vestigingstype ; sh:name "type vestiging" ; + sh:node ent:TypeVestiging ] ; + sh:property [ sh:path organisatie:bestaatUit ; sh:name "adres" ; + sh:node ent:Adres ] ; + sh:property [ sh:path org:siteAddress ; sh:name "contact" ; + sh:node ent:ContactPunt ] ; + sh:property [ sh:path [ sh:inversePath org:hasPrimarySite ] ; sh:name "hoofdvestiging van" ; + sh:node ent:Organisatie ] ; + sh:property [ sh:path [ sh:inversePath org:hasSite ] ; sh:name "vestiging van" ; + sh:node ent:Organisatie ] . + +ent:TypeVestiging + a sh:NodeShape ; + rdfs:label "type vestiging" ; + sh:targetClass code:TypeVestiging ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:Adres + a sh:NodeShape ; + rdfs:label "adres" ; + sh:targetClass locn:Address ; + sh:property [ sh:path locn:thoroughfare ; sh:name "straat" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:Adresvoorstelling.huisnummer ; sh:name "huisnummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:Adresvoorstelling.busnummer ; sh:name "busnummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:postCode ; sh:name "postcode" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:gemeentenaam ; sh:name "gemeente" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:adminUnitL2 ; sh:name "provincie" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:land ; sh:name "land" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:fullAddress ; sh:name "volledig adres" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path adres:verwijstNaar ; sh:name "verwijst naar" ; + sh:description "URI van het adres in het adressenregister" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path [ sh:inversePath organisatie:bestaatUit ] ; sh:name "vestiging van" ; + sh:node ent:Vestiging ] . + +ent:ContactPunt + a sh:NodeShape ; + rdfs:label "contactpunt" ; + sh:targetClass schema:ContactPoint ; + sh:property [ sh:path schema:email ; sh:name "email" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:telephone ; sh:name "telefoon" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:faxNumber ; sh:name "fax" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path foaf:page ; sh:name "website" ; + sh:description "URI van de website" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path schema:contactType ; sh:name "contactsoort" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path locn:address ; sh:name "adres" ; + sh:node ent:Adres ] . + +ent:Identificator + a sh:NodeShape ; + rdfs:label "identificator" ; + sh:targetClass adms:Identifier ; + sh:property [ sh:path skos:notation ; sh:name "notatie" ; + sh:description "De waarde van de identificator, bv. het KBO-nummer" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path generiek:gestructureerdeIdentificator ; sh:name "gestructureerde identificator" ; + sh:node ent:GestructureerdeIdentificator ] . + +ent:GestructureerdeIdentificator + a sh:NodeShape ; + rdfs:label "gestructureerde identificator" ; + sh:targetClass generiek:GestructureerdeIdentificator ; + sh:property [ sh:path generiek:lokaleIdentificator ; sh:name "lokale identificator" ; + sh:datatype xsd:string ] . + +ent:Werkingsgebied + a sh:NodeShape ; + rdfs:label "werkingsgebied" ; + sh:targetClass prov:Location ; + sh:property [ sh:path rdfs:label ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ext:werkingsgebiedNiveau ; sh:name "niveau" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path geo:sfWithin ; sh:name "ligt in" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath geo:sfWithin ] ; sh:name "bevat" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath geo:sfWithin ] ; sh:name "bestuurseenheden" ; + sh:description "De bestuurseenheden die in dit gebied liggen" ; + sh:node ent:Bestuurseenheid ] ; + sh:property [ sh:path skos:exactMatch ; sh:name "exacte match" ; + sh:node ent:Concept ] . + +ent:Concept + a sh:NodeShape ; + rdfs:label "concept" ; + sh:targetClass skos:Concept ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:notation ; sh:name "notatie" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:altLabel ; sh:name "andere naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path sh:order ; sh:name "volgorde" ; + sh:datatype xsd:decimal ] ; + sh:property [ sh:path skos:inScheme ; sh:name "in schema" ; + sh:node ent:ConceptSchema ] . + +ent:ConceptSchema + a sh:NodeShape ; + rdfs:label "conceptschema" ; + sh:targetClass skos:ConceptScheme ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:BijkomendeKwalificatie + a sh:NodeShape ; + rdfs:label "bijkomende kwalificatie" ; + sh:targetClass code:BijkomendeKwalificatieCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:notation ; sh:name "notatie" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path code:rechtsgrond ; sh:name "rechtsgrond" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:definition ; sh:name "definitie" ; + sh:datatype xsd:string ] . + +ent:Sector + a sh:NodeShape ; + rdfs:label "sector" ; + sh:targetClass code:Sector ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:NaceBelCode + a sh:NodeShape ; + rdfs:label "nace-bel-code" ; + sh:targetClass nacebel:NaceBelCode ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:notation ; sh:name "code" ; + sh:datatype xsd:string ] . + +ent:Lidmaatschap + a sh:NodeShape ; + rdfs:label "lidmaatschap" ; + sh:targetClass org:Membership ; + sh:property [ sh:path org:member ; sh:name "lid" ; + sh:description "De organisatie die lid is" ; + sh:node ent:Organisatie ] ; + sh:property [ sh:path org:organization ; sh:name "organisatie" ; + sh:description "De organisatie waar het lidmaatschap bij hoort" ; + sh:node ent:Organisatie ] ; + sh:property [ sh:path org:role ; sh:name "rol" ; + sh:node ent:LidmaatschapRol ] ; + sh:property [ sh:path m8g:memberDuring ; sh:name "periode" ; + sh:node ent:Periode ] . + +ent:LidmaatschapRol + a sh:NodeShape ; + rdfs:label "lidmaatschapsrol" ; + sh:targetClass org:Role ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path skos:broader ; sh:name "bredere rol" ; + sh:node ent:LidmaatschapRol ] . + +ent:Periode + a sh:NodeShape ; + rdfs:label "periode" ; + sh:targetClass ; + sh:property [ sh:path ; sh:name "start" ; + sh:datatype xsd:dateTime ] ; + sh:property [ sh:path ; sh:name "einde" ; + sh:datatype xsd:dateTime ] . + +ent:Veranderingsgebeurtenis + a sh:NodeShape ; + rdfs:label "veranderingsgebeurtenis" ; + sh:targetClass org:ChangeEvent ; + sh:property [ sh:path dct:date ; sh:name "datum" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path dct:description ; sh:name "beschrijving" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path ch:typeWijziging ; sh:name "type" ; + sh:node ent:VeranderingsgebeurtenisType ] ; + sh:property [ sh:path org:resultingOrganization ; sh:name "resulterende organisaties" ; + sh:node ent:Organisatie ] ; + sh:property [ sh:path org:originalOrganization ; sh:name "oorspronkelijke organisaties" ; + sh:node ent:Organisatie ] ; + sh:property [ sh:path code:veranderingsgebeurtenisResultaat ; sh:name "resultaten" ; + sh:node ent:VeranderingsgebeurtenisResultaat ] ; + sh:property [ sh:path m8g:hasFormalFramework ; sh:name "besluit" ; + sh:node ent:Besluit ] . + +ent:VeranderingsgebeurtenisType + a sh:NodeShape ; + rdfs:label "type veranderingsgebeurtenis" ; + sh:targetClass code:Veranderingsgebeurtenis ; + sh:property [ sh:path skos:prefLabel ; sh:name "naam" ; + sh:datatype xsd:string ] . + +ent:VeranderingsgebeurtenisResultaat + a sh:NodeShape ; + rdfs:label "veranderingsresultaat" ; + sh:targetClass code:VeranderingsgebeurtenisResultaat ; + sh:property [ sh:path ext:resultingOrganization ; sh:name "resulterende organisatie" ; + sh:node ent:Organisatie ] ; + sh:property [ sh:path code:resulterendeStatus ; sh:name "resulterende status" ; + sh:node ent:OrganisatieStatus ] ; + sh:property [ sh:path code:resulterendeRechtsvorm ; sh:name "resulterende rechtsvorm" ; + sh:node ent:Concept ] ; + sh:property [ sh:path code:resulterendWerkingsgebied ; sh:name "resulterend werkingsgebied" ; + sh:node ent:Werkingsgebied ] ; + sh:property [ sh:path [ sh:inversePath code:veranderingsgebeurtenisResultaat ] ; sh:name "resulteert uit" ; + sh:node ent:Veranderingsgebeurtenis ] . + +ent:Besluit + a sh:NodeShape ; + rdfs:label "besluit" ; + sh:targetClass besluit:Besluit ; + sh:property [ sh:path eli:date_publication ; sh:name "publicatiedatum" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path foaf:page ; sh:name "documentlink" ; + sh:description "URI van het besluitdocument" ; + sh:datatype xsd:string ] ; + sh:property [ sh:path [ sh:inversePath prov:generated ] ; sh:name "beslissingsactiviteit" ; + sh:node ent:Beslissingsactiviteit ] . + +ent:Beslissingsactiviteit + a sh:NodeShape ; + rdfs:label "beslissingsactiviteit" ; + sh:targetClass besluitvorming:Beslissingsactiviteit ; + sh:property [ sh:path dossier:Activiteit.einddatum ; sh:name "einddatum" ; + sh:datatype xsd:date ] ; + sh:property [ sh:path prov:generated ; sh:name "geeft aanleiding tot" ; + sh:node ent:Besluit ] . diff --git a/config/report-profiles/report-spec-readme.md b/config/report-profiles/report-spec-readme.md new file mode 100644 index 0000000..58b84ec --- /dev/null +++ b/config/report-profiles/report-spec-readme.md @@ -0,0 +1,67 @@ +# The report spec, as SHACL + +A spec is `rep:ReportSpec` + `sh:NodeShape`. The shape half selects +the subjects and is real SHACL; the `rep:` half says what the CSV holds, +which SHACL has no word for. This file is the spec format's own shapes graph: +a machine-readable definition that doubles as reference documentation. + +The namespace: + +``` +rep: → http://mu.semte.ch/vocabularies/reporting/ +``` + +File: `config/report-profiles/report-spec-shapes.ttl`. + +## What it defines + +One `sh:NodeShape` per term: + +- **ReportSpec** — the document. `dct:title`, `rep:profile` (which profile it + was written against), `sh:targetClass`, `rep:entity` (optional; picks the + shape when two entities share one `sh:targetClass`), `sh:property` (the + filters), `rep:columns` (the CSV, in order, an rdf:List). +- **Filter** — a `sh:property` on the ReportSpec: `sh:path` plus exactly one + condition (`sh:hasValue`, `sh:in`, `sh:minCount`/`sh:maxCount`, + `sh:min/maxInclusive`/`sh:min/maxExclusive`, `sh:pattern` + `sh:flags`, + `rep:anyOf`). A path with no condition is refused by the validator. +- **Column** — a list item: `sh:path` (hops, or `rep:self` for the row's own + subject), `rdfs:label` (unique, required), optional `rep:collect` + (`sh:groupConcat` default, `rep:row`, `sh:min`, `sh:max`), optional + `sh:separator`. No constraints on a column — `sh:hasValue` and friends + belong in filters. + +## What it cannot say (and the runner enforces anyway) + +A shapes graph cannot express "a column must end on a value field" (that +needs the profile), "a path resolves hop by hop" (needs the profile walk), +"at most 24 anyOf terms" (cardinality over list contents), or "anyOf takes +words, not URIs" (term typing). Those live in the service's `src/runner/check.js`. + +## Not yet + +`sh:count`, `sh:sum`, `sh:orderBy`, `sh:limit`, `sh:offset` (SHACL-AF names for when counting and ordering arrive), `rep:graph` (regex the subject's +graph must match). + +## Example + +```turtle + a rep:ReportSpec , sh:NodeShape ; + dct:title "Meldingen met bijlagen" ; + rep:profile ; + sh:targetClass meb:Submission ; + sh:property [ sh:path ( pav:createdBy skos:prefLabel ) ; + sh:hasValue "West-Vlaanderen" ] ; + rep:columns ( + [ sh:path rep:self ; rdfs:label "melding" ] + [ sh:path nmo:sentDate ; rdfs:label "datumVerstuurd" ] + [ sh:path ( prov:generated dct:hasPart nfo:fileName ) ; + rdfs:label "bestandsnamen" ; rep:collect rep:row ] + ) . +``` + +## Validating a spec against these shapes + +The shapes are self-describing documentation. `validate_spec` (the MCP tool) +does more: it walks every path through the mounted profile and refuses +what a shapes graph cannot see. Both together are the spec contract. \ No newline at end of file diff --git a/config/report-profiles/report-spec-shapes.ttl b/config/report-profiles/report-spec-shapes.ttl new file mode 100644 index 0000000..5c2d395 --- /dev/null +++ b/config/report-profiles/report-spec-shapes.ttl @@ -0,0 +1,188 @@ +# Shapes for the report spec itself (rep:ReportSpec). +# Reference definition of the spec format: a machine-readable +# contract that doubles as documentation. validate_spec does more than this +# graph can express: it walks every path through the mounted profile and +# refuses what shapes alone cannot see (columns ending on a link, unresolved +# hops, anyOf term limits, filters without a condition). +# +# Not yet: sh:count, sh:sum, sh:orderBy, sh:limit, sh:offset, rep:graph. +@prefix sh: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix owl: . +@prefix dct: . +@prefix rep: . + + + a owl:Ontology ; + dct:title "Report spec shapes" ; + sh:prefixes [ + sh:declare [ sh:prefix "rep" ; sh:namespace "http://mu.semte.ch/vocabularies/reporting/"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "sh" ; sh:namespace "http://www.w3.org/ns/shacl#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "rdf" ; sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "rdfs"; sh:namespace "http://www.w3.org/2000/01/rdf-schema#"^^xsd:anyURI ] ; + sh:declare [ sh:prefix "dct" ; sh:namespace "http://purl.org/dc/terms/"^^xsd:anyURI ] ; + ] . + +rep:ReportSpecShape + a sh:NodeShape ; + rdfs:label "rapportspec" ; + sh:targetClass rep:ReportSpec ; + sh:property [ + sh:path dct:title ; + sh:name "titel" ; + sh:datatype xsd:string ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path rep:profile ; + sh:name "profiel" ; + sh:nodeKind sh:IRI ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:targetClass ; + sh:name "klasse" ; + sh:nodeKind sh:IRI ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] ; + # rep:entity picks the shape when two entities share one sh:targetClass + # (the profile lists the entity URI per entity). + sh:property [ + sh:path rep:entity ; + sh:name "entiteit" ; + sh:nodeKind sh:IRI ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:property ; + sh:name "filter" ; + sh:node rep:FilterShape ; + ] ; + sh:property [ + sh:path rep:columns ; + sh:name "kolommen" ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] . + +# A filter: a path plus exactly one condition. A path without a condition +# selects everything and is refused by check.js (filterConstraint). +rep:FilterShape + a sh:NodeShape ; + sh:property [ + sh:path sh:path ; + sh:name "pad" ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:hasValue ; + sh:name "gelijk aan" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:in ; + sh:name "in lijst" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:minInclusive ; + sh:name "vanaf" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:maxInclusive ; + sh:name "tot en met" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:minExclusive ; + sh:name "na" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:maxExclusive ; + sh:name "voor" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:pattern ; + sh:name "regex" ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:flags ; + sh:name "regex-vlaggen" ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:minCount ; + sh:name "minimaal aantal" ; + sh:datatype xsd:integer ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:maxCount ; + sh:name "maximaal aantal" ; + sh:datatype xsd:integer ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path rep:anyOf ; + sh:name "een van deze woorden" ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path rdfs:label ; + sh:name "label" ; + sh:maxCount 0 ; + ] . + +# A column: path, label, collect mode, separator. No constraints here; +# check.js refuses a constraint inside rep:columns (columnPure). +rep:ColumnShape + a sh:NodeShape ; + sh:property [ + sh:path sh:path ; + sh:name "pad" ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path rdfs:label ; + sh:name "kolomnaam" ; + sh:datatype xsd:string ; + sh:minCount 1 ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path rep:collect ; + sh:name "verzamelwijze" ; + sh:nodeKind sh:IRI ; + sh:maxCount 1 ; + ] ; + sh:property [ + sh:path sh:separator ; + sh:name "scheidingsteken" ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + ] . + +# rep:collect takes exactly these values (SHACL Core groupConcat is the +# default when absent; min/max are SHACL-AF names). A shapes graph cannot +# enumerate an IRI value set without a class; check.js enforces it (columnPure). +rep:RowShape + a sh:NodeShape ; rdfs:comment "rep:collect value: one CSV line per value" . + +# rep:self as sh:path marks the row's own subject URI: nothing to walk, +# the runner takes it from the seed. +rep:self + a rdf:Property ; + rdfs:comment "in a column's sh:path slot: the row's own subject URI" . \ No newline at end of file diff --git a/config/resources/chat-domain.json b/config/resources/chat-domain.json new file mode 100644 index 0000000..4b50668 --- /dev/null +++ b/config/resources/chat-domain.json @@ -0,0 +1,184 @@ +{ + "version": "0.1", + "prefixes": { + "sioc": "http://rdfs.org/sioc/ns#", + "sioct": "http://rdfs.org/sioc/types#", + "as": "https://www.w3.org/ns/activitystreams#", + "dct": "http://purl.org/dc/terms/", + "foaf": "http://xmlns.com/foaf/0.1/", + "mu": "http://mu.semte.ch/vocabularies/core/", + "prov": "http://www.w3.org/ns/prov#", + "org": "http://www.w3.org/ns/org#", + "besluit": "http://data.vlaanderen.be/ns/besluit#", + "skos": "http://www.w3.org/2004/02/skos/core#", + "code": "http://lblod.data.gift/vocabularies/organisatie/" + }, + "resources": { + "gebruikers": { + "class": "foaf:Person", + "attributes": { + "voornaam": { + "type": "string", + "predicate": "foaf:firstName" + }, + "achternaam": { + "type": "string", + "predicate": "foaf:familyName" + } + }, + "relationships": { + "account": { + "predicate": "foaf:account", + "target": "account", + "cardinality": "many" + }, + "bestuurseenheden": { + "predicate": "foaf:member", + "target": "bestuurseenheden", + "cardinality": "many" + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/gebruiker/" + }, + "bestuurseenheden": { + "class": "besluit:Bestuurseenheid", + "attributes": { + "naam": { + "type": "string", + "predicate": "skos:prefLabel" + } + }, + "relationships": { + "classificatie": { + "predicate": "org:classification", + "target": "bestuurseenheid-classificatie-codes", + "cardinality": "one" + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/bestuurseenheden/" + }, + "bestuurseenheid-classificatie-codes": { + "class": "code:BestuurseenheidClassificatieCode", + "attributes": { + "label": { + "type": "string", + "predicate": "skos:prefLabel" + }, + "scope-note": { + "type": "string", + "predicate": "skos:scopeNote" + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.vlaanderen.be/id/concept/BestuurseenheidClassificatieCode/" + }, + "chat-conversations": { + "name": "chat-conversation", + "class": "sioc:Thread", + "attributes": { + "title": { + "type": "string", + "predicate": "dct:title" + }, + "created": { + "type": "datetime", + "predicate": "dct:created" + }, + "last-activity": { + "type": "datetime", + "predicate": "sioc:last_activity_date" + } + }, + "relationships": { + "creator": { + "predicate": "foaf:maker", + "target": "gebruikers", + "cardinality": "one" + }, + "messages": { + "predicate": "sioc:has_container", + "target": "chat-message", + "cardinality": "many", + "inverse": true + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/chat-conversations/" + }, + "chat-messages": { + "name": "chat-message", + "class": "sioc:Post", + "attributes": { + "content": { + "type": "string", + "predicate": "sioc:content" + }, + "created": { + "type": "datetime", + "predicate": "dct:created" + }, + "maker": { + "type": "uri", + "predicate": "foaf:maker" + } + }, + "relationships": { + "conversation": { + "predicate": "sioc:has_container", + "target": "chat-conversation", + "cardinality": "one" + }, + "attachments": { + "predicate": "as:attachment", + "target": "chat-documents", + "cardinality": "many" + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/chat-messages/" + }, + "chat-instant-messages": { + "name": "chat-instant-message", + "class": "sioct:InstantMessage", + "super": ["chat-message"], + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/chat-messages/" + }, + "chat-documents": { + "class": "as:Document", + "attributes": { + "name": { + "type": "string", + "predicate": "as:name" + }, + "media-type": { + "type": "string", + "predicate": "as:mediaType" + }, + "url": { + "type": "string", + "predicate": "as:url" + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/chat-documents/" + }, + "chat-agents": { + "class": "prov:SoftwareAgent", + "attributes": { + "name": { + "type": "string", + "predicate": "foaf:name" + }, + "description": { + "type": "string", + "predicate": "dct:description" + } + }, + "features": ["include-uri"], + "new-resource-base": "http://data.lblod.info/id/chat-agents/" + } + } +}