Code gekopieerd
...Kopieer naar klembord
1# Indicator: ODB Personele samenstelling 2.1.6 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 11SELECT 12 ?teller 13 ?noemer 14 (?teller/?noemer AS ?indicator) 15WHERE 16{ 17 { 18 SELECT 19 (SUM(?factor_totaal) AS ?noemer) 20 { 21 SELECT #alle factoren bij elkaar optellen, max per persoon beperken tot 1 22 ?persoon 23 (IF(SUM(?dagen_indicator/?dagen_periode) > 1, 1,SUM(?dagen_indicator/?dagen_periode))AS ?factor_totaal) 24 { 25 SELECT DISTINCT #functies die op dezelfde dag starten, samenvoegen op de functie met de meeste dagen 26 ?persoon 27 ?dagen_periode 28 ?start_functie_corr 29 (MAX(?dagen_functie) AS ?dagen_indicator) 30 { 31 # definieer periode waarin overeenkomst geldig moet zijn 32 BIND("2023-01-01"^^xsd:date AS ?start_periode_datum) 33 BIND("2023-12-31"^^xsd:date AS ?eind_periode_datum) 34 ?start_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode . 35 ?eind_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode . 36 BIND(?eind_periode - ?start_periode + 1 AS ?dagen_periode) 37 38 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 39 ?functie 40 a onz-pers:ZorgverlenerFunctie ; 41 onz-g:startDatum ?start_functie_datum . 42 OPTIONAL { 43 ?functie onz-g:eindDatum ?eind_functie_datum . 44 } 45 FILTER(?start_functie_datum <= ?eind_periode_datum && (?eind_functie_datum >= ?start_periode_datum || !BOUND(?eind_functie_datum))) 46 BIND(IF(?start_functie_datum < ?start_periode_datum, ?start_periode_datum, ?start_functie_datum) AS ?start_functie_datum_corr) 47 BIND(IF(!BOUND(?eind_functie_datum) || ?eind_functie_datum > ?eind_periode_datum, ?eind_periode_datum, ?eind_functie_datum) AS ?eind_functie_datum_corr) 48 ?start_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_functie_corr . 49 ?eind_functie_datum_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_functie_corr . 50 BIND(?eind_functie_corr - ?start_functie_corr + 1 AS ?dagen_functie) 51 52 ?overeenkomst 53 a onz-pers:ArbeidsOvereenkomst ; 54 onz-g:isAbout ?functie ; 55 onz-pers:heeftOpdrachtnemer ?persoon . 56 } 57 GROUP BY ?persoon ?dagen_periode ?start_functie_corr 58 ORDER BY ?persoon 59 } 60 GROUP BY ?persoon 61 } 62 } 63 { 64 SELECT 65 (SUM(?aantal) AS ?teller) 66 WHERE 67 { 68 { 69 SELECT DISTINCT 70 ?start_periode_datum 71 ?eind_periode_datum 72 ?gewerkte_periode 73 ?uren 74 WHERE 75 { 76 BIND ("2023-01-01"^^xsd:date AS ?start_periode_datum) 77 BIND ("2023-12-31"^^xsd:date AS ?eind_periode_datum) 78 79 # selecteer zorgverlenerfuncties die geldig zijn binnen de periode 80 ?functie a onz-pers:ZorgverlenerFunctie ; 81 onz-g:startDatum ?start_functie . 82 OPTIONAL { 83 ?functie onz-g:eindDatum ?eind_functie 84 } 85 FILTER (?start_functie <= ?eind_periode_datum && (?eind_functie >= ?start_periode_datum || !BOUND(?eind_functie))) 86 BIND(IF(?start_functie < ?start_periode_datum, ?start_periode_datum, ?start_functie) AS ?start_functie_corr) 87 BIND(IF(!BOUND(?eind_functie) || ?eind_functie > ?eind_periode_datum, ?eind_periode_datum, ?eind_functie) AS ?eind_functie_corr) 88 # selecteer de arbeidsovereenkomst die hoort bij de functie 89 ?overeenkomst 90 onz-g:isAbout ?functie ; 91 a onz-pers:ArbeidsOvereenkomst ; 92 onz-g:isAbout ?gewerkte_periode . 93 94 # selecteer aantal gewerkte uren binnen periode die gekoppeld zijn aan werkovereenkomst 95 ?gewerkte_periode 96 a onz-pers:GewerktePeriode ; 97 onz-g:hasBeginTimeStamp ?start_gewerktDT ; 98 onz-g:hasEndTimeStamp ?eind_gewerktDT ; 99 onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren . 100 BIND(STRDT(SUBSTR(STR(?start_gewerktDT),1,10), xsd:date) AS ?start_gewerkt) 101 BIND(STRDT(SUBSTR(STR(?eind_gewerktDT),1,10), xsd:date) AS ?eind_gewerkt) 102 # selecteer gewerkte tijd in de gevraagde periode 103 FILTER(?start_gewerkt >= ?start_functie_corr && ?eind_gewerkt <= ?eind_functie_corr) 104 } 105 } 106 107 # rapporteer in de eenheid fte_36 (1 fte = 36 uur/week) 108 onz-pers:fte_36 109 onz-g:hasDataValue ?corr_factor . 110 111 # bereken aantal dagen in de periode 112 ?start_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode . 113 ?eind_periode_datum ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode . 114 BIND(?eind_periode - ?start_periode + 1 AS ?dagen_periode) 115 116 # bereken fte (1 fte is volledig als 47 weken per jaar is gewerkt) 117 BIND (?uren/(?dagen_periode/365*47)/?corr_factor AS ?aantal) 118 } 119 120 } 121}
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!