Code gekopieerd
...Kopieer naar klembord
1# Indicator: ODB Personele samenstelling 2.1.1 2# Parameters: - 3# Ontologie: versie 2.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-pers: <http://purl.org/ozo/onz-pers#> 7PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 8PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 9 10SELECT 11 (SUM(?factor) AS ?indicator) 12WHERE 13{ 14 { 15 SELECT 16 ?persoon 17 ?start_def 18 ?end_def 19 ?start_periode 20 ?eind_periode 21 WHERE 22 { 23 { 24 SELECT 25 ?persoon 26 ?overeenkomst 27 ?start_periode ?eind_periode 28 (MIN(?start_corr2) AS ?start_def) 29 (MAX(?end_corr2) AS ?end_def) 30 (MAX(?i) AS ?ignore) 31 WHERE 32 { 33 # definieer periode waarin overeenkomst geldig moet zijn 34 BIND("2022-01-01"^^xsd:date AS ?start_periode) 35 BIND("2022-12-31"^^xsd:date AS ?eind_periode) 36 37 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 38 ?overeenkomst 39 onz-pers:heeftOpdrachtnemer ?persoon ; 40 a onz-pers:ArbeidsOvereenkomst ; 41 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 42 onz-g:startDatum ?start . 43 OPTIONAL {?overeenkomst onz-g:eindDatum ?end} 44 45 # alleen overeenkomsten in de gevraagde periode 46 FILTER (?start <= ?eind_periode && (!BOUND(?end) || ?end >= ?start_periode)) 47 48 ?other_contract 49 onz-pers:heeftOpdrachtnemer ?persoon ; 50 a onz-pers:ArbeidsOvereenkomst ; 51 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 52 onz-g:startDatum ?other_start . 53 OPTIONAL {?other_contract onz-g:eindDatum ?other_end} . 54 55 # alleen overeenkomsten in de gevraagde periode 56 FILTER (?other_start <= ?eind_periode && (!BOUND(?other_end) || ?other_end >= ?start_periode)) 57 58 # corrigeer wanneer start of eind van de overeenkomst buiten de gevraagde periode valt 59 BIND(IF(?start_periode > ?start, ?start_periode, ?start) AS ?start_corr) 60 BIND(IF((?eind_periode < ?end) || !BOUND(?end), ?eind_periode, ?end) AS ?end_corr) 61 BIND(IF(?start_periode > ?other_start, ?start_periode, ?other_start) AS ?other_start_corr) 62 BIND(IF((?eind_periode < ?other_end) || !BOUND(?other_end), ?eind_periode, ?other_end) AS ?other_end_corr) 63 64 BIND(IF(?other_start_corr < ?end_corr && ?other_end_corr > ?start_corr, 1, 0) AS ?o) 65 BIND(IF(?other_start_corr < ?start_corr && ?other_end_corr > ?end_corr, 1, 0) AS ?i) 66 BIND(IF(?o = 1,IF(?other_start_corr < ?start_corr,?other_start_corr,?start_corr),?start_corr) AS ?start_corr2) 67 BIND(IF(?o = 1,IF(?other_end_corr > ?end_corr,?other_end_corr,?end_corr),?end_corr) AS ?end_corr2) 68 } 69 GROUP BY ?persoon ?overeenkomst ?start_periode ?eind_periode 70 } 71 FILTER(?ignore = 0) 72 } 73 GROUP BY ?persoon ?start_def ?end_def ?start_periode ?eind_periode 74 } 75 BIND ((360 * (YEAR(?eind_periode + "P1D"^^xsd:duration) - YEAR(?start_periode))) + 76 (30 * (MONTH(?eind_periode + "P1D"^^xsd:duration) - MONTH(?start_periode))) + 77 (DAY(?eind_periode + "P1D"^^xsd:duration) - DAY(?start_periode)) AS ?dagen_periode) 78 BIND ((360 * (YEAR(?end_def + "P1D"^^xsd:duration) - YEAR(?start_def))) + 79 (30 * (MONTH(?end_def + "P1D"^^xsd:duration) - MONTH(?start_def))) + 80 (DAY(?end_def + "P1D"^^xsd:duration) - DAY(?start_def)) AS ?dagen_overeenkomst) 81 BIND (?dagen_overeenkomst/?dagen_periode AS ?factor) 82}
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!