Let op: dit is een oudere versie van deze publicatie. Ga naar de laatste versie
Code gekopieerd
...Kopieer naar klembord
1# Indicator: ODB Personele samenstelling 2.3.2 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#> 9PREFIX time: <http://www.w3.org/2006/time#> 10 11# Verzuimfrequentie. Let op: datums periode op twee plekken aanpassen! 12 13SELECT 14 ?teller 15 ?noemer 16 (?teller/?noemer AS ?verzuimfrequentie) 17{ 18 { 19 SELECT (COUNT(?ziekte) as ?teller) 20 { 21 SELECT DISTINCT ?ziekte 22 WHERE 23 { 24 # definieer periode waarin overeenkomst geldig moet zijn 25 BIND("2023-01-01"^^xsd:date AS ?start_periode) 26 BIND("2023-12-31"^^xsd:date AS ?eind_periode) 27 28 # selecteer alle functies die onz-pers:ZorgverlenerFunctie zijn 29 ?functie 30 a onz-pers:ZorgverlenerFunctie ; 31 onz-g:startDatum ?start_functie . 32 OPTIONAL {?functie a onz-pers:ZorgverlenerFunctie ; 33 onz-g:eindDatum ?eind_functie} 34 FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie)))) 35 36 BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken) 37 BIND(IF(!BOUND(?eind_functie), ?eind_periode, ?eind_functie) AS ?eind_functie_reken) 38 39 # selecteer alle bijbehorende arbeidsovereenkomsten 40 ?overeenkomst 41 onz-g:isAbout ?functie ; 42 a onz-pers:ArbeidsOvereenkomst ; 43 onz-pers:heeftOpdrachtnemer ?persoon . 44 45 # selecteer personen met ziekteperiode 46 ?persoon onz-g:isParticipantIn ?ziekte . 47 ?ziekte 48 a onz-pers:ZiektePeriode ; 49 onz-g:startDatum ?start_ziekte . 50 FILTER (?start_ziekte >= ?start_functie_reken && ?start_ziekte <= ?eind_functie_reken) 51 } 52 } 53 } 54 55 { 56 SELECT 57 (SUM(?factor_totaal) AS ?noemer) 58 { 59 SELECT #alle factoren bij elkaar optellen, max per persoon beperken tot 1 60 ?persoon 61 (IF(SUM(?dagen_indicator/?dagen_periode) > 1, 1,SUM(?dagen_indicator/?dagen_periode))AS ?factor_totaal) 62 { 63 SELECT DISTINCT #functies die op dezelfde dag starten, samenvoegen op de functie met de meeste dagen 64 ?persoon 65 ?dagen_periode 66 ?start_functie_corr 67 (MAX(?dagen_functie) AS ?dagen_indicator) 68 { 69 # definieer periode waarin overeenkomst geldig moet zijn 70 BIND("2023-01-01"^^xsd:date AS ?start_periode_datum) 71 BIND("2023-12-31"^^xsd:date AS ?eind_periode_datum) 72 ?start_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode . 73 ?eind_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode . 74 BIND(?eind_periode - ?start_periode + 1 AS ?dagen_periode) 75 76 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 77 ?functie 78 a onz-pers:ZorgverlenerFunctie ; 79 onz-g:startDatum ?start_functie_datum . 80 OPTIONAL { 81 ?functie onz-g:eindDatum ?eind_functie_datum . 82 } 83 FILTER(?start_functie_datum <= ?eind_periode_datum && (?eind_functie_datum >= ?start_periode_datum || !BOUND(?eind_functie_datum))) 84 BIND(IF(?start_functie_datum < ?start_periode_datum, ?start_periode_datum, ?start_functie_datum) AS ?start_functie_datum_corr) 85 BIND(IF(!BOUND(?eind_functie_datum) || ?eind_functie_datum > ?eind_periode_datum, ?eind_periode_datum, ?eind_functie_datum) AS ?eind_functie_datum_corr) 86 ?start_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_functie_corr . 87 ?eind_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_functie_corr . 88 BIND(?eind_functie_corr - ?start_functie_corr + 1 AS ?dagen_functie) 89 90 ?overeenkomst 91 a onz-pers:ArbeidsOvereenkomst ; 92 onz-g:isAbout ?functie ; 93 onz-pers:heeftOpdrachtnemer ?persoon . 94 } 95 GROUP BY ?persoon ?dagen_periode ?start_functie_corr 96 ORDER BY ?persoon 97 } 98 GROUP BY ?persoon 99 } 100 } 101}
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!