From 8750fddb2dd2d8ef49f14473fd50b19cd54bea2d Mon Sep 17 00:00:00 2001 From: felix Date: Fri, 17 Jan 2025 10:23:41 +0100 Subject: [PATCH] added mapping rules --- .../queries/dl2op/data-cleanup/phone.rq | 23 +++++++++++++++++++ .../queries/dl2op/inheritance/Agent.rq | 14 +++++++++++ .../dl2op/inheritance/AgentInPositie.rq | 12 ++++++++++ .../queries/dl2op/inverse/holds-to-held-by.rq | 8 +++++++ .../mapping/queries/dl2op/pass/address.sparql | 6 +++++ .../queries/dl2op/pass/bestuursfunctie.sparql | 7 ++++++ .../queries/dl2op/pass/contactpoint.sparql | 7 ++++++ .../queries/dl2op/pass/functionaris.sparql | 6 +++++ .../mapping/queries/dl2op/pass/person.sparql | 11 +++++++++ .../mapping/queries/dl2op/predicate/names.rq | 22 ++++++++++++++++++ 10 files changed, 116 insertions(+) create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/data-cleanup/phone.rq create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/Agent.rq create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/AgentInPositie.rq create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inverse/holds-to-held-by.rq create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/address.sparql create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/bestuursfunctie.sparql create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/contactpoint.sparql create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/functionaris.sparql create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/person.sparql create mode 100644 config/loket-consumer/leidinggevenden/mapping/queries/dl2op/predicate/names.rq diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/data-cleanup/phone.rq b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/data-cleanup/phone.rq new file mode 100644 index 0000000..3ffc95a --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/data-cleanup/phone.rq @@ -0,0 +1,23 @@ +PREFIX schema: + +CONSTRUCT { + ?s schema:telephone ?cleanedPhoneNumber . +} WHERE { + ?s schema:telephone ?phoneNumber . + + # Remove all non digits + BIND(REPLACE(?phoneNumber, """[^+\\d]""", "") AS ?scrapeResult) + + # Replace leading 00 with + + BIND(REPLACE(?scrapeResult, """^00""", "+") AS ?replacedZeroZero) + + BIND(REPLACE(?replacedZeroZero, """^0""", "+32") AS ?defaultBe) + + BIND(REPLACE(?defaultBe, """\\+320""", "+32") AS ?extendedDefaultBe) + + BIND(REPLACE(?extendedDefaultBe, """^320""", "+32") AS ?finalResult) + + FILTER(REGEX(?finalResult, """^\\+((32\\d{8})|(324\\d{8})|((?!32)\\d+))$""")) + + BIND(CONCAT("tel:", ?finalResult) as ?cleanedPhoneNumber) +} diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/Agent.rq b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/Agent.rq new file mode 100644 index 0000000..8252a85 --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/Agent.rq @@ -0,0 +1,14 @@ +PREFIX dc_terms: +PREFIX lblodlg: +PREFIX person: + +CONSTRUCT { + ?s a dc_terms:Agent . +} WHERE { + VALUES ?type { + lblodlg:Functionaris + person:Person + } + + ?s a ?type . +} diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/AgentInPositie.rq b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/AgentInPositie.rq new file mode 100644 index 0000000..2505191 --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inheritance/AgentInPositie.rq @@ -0,0 +1,12 @@ +PREFIX ch: +PREFIX lblodlg: + +CONSTRUCT { + ?s a ch:AgentInPositie . +} WHERE { + VALUES ?type { + lblodlg:Functionaris + } + + ?s a ?type . +} diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inverse/holds-to-held-by.rq b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inverse/holds-to-held-by.rq new file mode 100644 index 0000000..0b373ed --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/inverse/holds-to-held-by.rq @@ -0,0 +1,8 @@ +PREFIX org: + +CONSTRUCT { + ?o org:heldBy ?s. +} +WHERE { + ?s org:holds ?o. +} diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/address.sparql b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/address.sparql new file mode 100644 index 0000000..7d72f5a --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/address.sparql @@ -0,0 +1,6 @@ +CONSTRUCT { + ?s ?p ?o. +} WHERE { + ?s a ; + ?p ?o. +} \ No newline at end of file diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/bestuursfunctie.sparql b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/bestuursfunctie.sparql new file mode 100644 index 0000000..238cd07 --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/bestuursfunctie.sparql @@ -0,0 +1,7 @@ +CONSTRUCT { + ?s ?contactpoint. +} +WHERE { + ?s a . + ?s ?contactpoint. +} \ No newline at end of file diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/contactpoint.sparql b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/contactpoint.sparql new file mode 100644 index 0000000..839fbd4 --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/contactpoint.sparql @@ -0,0 +1,7 @@ +CONSTRUCT { + ?s ?p ?o. +} WHERE { + ?s a ; + ?p ?o. + FILTER (?p NOT IN ()) +} \ No newline at end of file diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/functionaris.sparql b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/functionaris.sparql new file mode 100644 index 0000000..c339689 --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/functionaris.sparql @@ -0,0 +1,6 @@ +CONSTRUCT { + ?s ?p ?o. +} WHERE { + ?s a ; + ?p ?o. +} \ No newline at end of file diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/person.sparql b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/person.sparql new file mode 100644 index 0000000..60d28ac --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/pass/person.sparql @@ -0,0 +1,11 @@ +CONSTRUCT { + ?s ?p ?o. +} WHERE { + ?s a ; + ?p ?o. + + FILTER (?p IN ( + , + + )) +} \ No newline at end of file diff --git a/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/predicate/names.rq b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/predicate/names.rq new file mode 100644 index 0000000..cd33077 --- /dev/null +++ b/config/loket-consumer/leidinggevenden/mapping/queries/dl2op/predicate/names.rq @@ -0,0 +1,22 @@ +PREFIX foaf: +PREFIX persoon: +PREFIX persoon_loket: +PREFIX person: + +# DL and OP both use persoon:gebruikteVoornaam but with different semantics (!) + +# First name: persoon:gebruikteVoornaam => foaf:givenName +# Alternatieve voornaam: foaf:name => persoon:gebruikteVoornaam + +# We do both in one query with an OPTIONAL because they need to happen simultaneously +# not to end up in a loop + +CONSTRUCT { + ?s foaf:givenName ?gebruikteVoornaam . + ?s persoon:gebruikteVoornaam ?name . +} WHERE { + ?s a person:Person . + + OPTIONAL { ?s persoon_loket:gebruikteVoornaam ?gebruikteVoornaam . } + OPTIONAL { ?s foaf:name ?name . } +}