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#> 9 10SELECT 11 ?teller 12 ?noemer 13 (?teller/?noemer AS ?indicator) 14WHERE 15{ 16 { 17 SELECT 18 (SUM(?factor) AS ?noemer) 19 WHERE 20 { 21 { 22 SELECT 23 ?persoon 24 ?start_def 25 ?end_def 26 ?start_periode 27 ?eind_periode 28 WHERE 29 { 30 { 31 SELECT 32 ?persoon 33 ?overeenkomst 34 ?start_periode 35 ?eind_periode 36 (MIN(?start_corr2) AS ?start_def) 37 (MAX(?end_corr2) AS ?end_def) 38 (MAX(?i) AS ?ignore) 39 WHERE 40 { 41 # definieer periode waarin overeenkomst geldig moet zijn 42 BIND("2022-01-01"^^xsd:date AS ?start_periode) 43 BIND("2022-12-31"^^xsd:date AS ?eind_periode) 44 45 ?overeenkomst 46 onz-pers:heeftOpdrachtnemer ?persoon ; 47 a onz-pers:ArbeidsOvereenkomst ; 48 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie ; 49 onz-g:startDatum ?start . 50 51 OPTIONAL {?overeenkomst onz-g:eindDatum ?end} 52 53 # alleen overeenkomsten in de gevraagde periode 54 FILTER (?start <= ?eind_periode && (!BOUND(?end) || ?end >= ?start_periode)) 55 56 ?other_contract 57 onz-pers:heeftOpdrachtnemer ?persoon ; 58 a onz-pers:ArbeidsOvereenkomst ; 59 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie; 60 onz-g:startDatum ?other_start . 61 62 OPTIONAL {?other_contract onz-g:eindDatum ?other_end} . 63 # alleen overeenkomsten in de gevraagde periode 64 FILTER (?other_start <= ?eind_periode && (!BOUND(?other_end) || ?other_end >= ?start_periode)) 65 66 # corrigeer wanneer start of eind van de overeenkomst buiten de gevraagde periode valt 67 BIND(IF(?start_periode > ?start, ?start_periode, ?start) AS ?start_corr) 68 BIND(IF((?eind_periode < ?end) || !BOUND(?end), ?eind_periode, ?end) AS ?end_corr) 69 BIND(IF(?start_periode > ?other_start, ?start_periode, ?other_start) AS ?other_start_corr) 70 BIND(IF((?eind_periode < ?other_end) || !BOUND(?other_end), ?eind_periode, ?other_end) AS ?other_end_corr) 71 72 BIND(IF(?other_start_corr < ?end_corr && ?other_end_corr > ?start_corr, 1, 0) AS ?o) 73 BIND(IF(?other_start_corr < ?start_corr && ?other_end_corr > ?end_corr, 1, 0) AS ?i) 74 BIND(IF(?o = 1,IF(?other_start_corr < ?start_corr,?other_start_corr,?start_corr),?start_corr) AS ?start_corr2) 75 BIND(IF(?o = 1,IF(?other_end_corr > ?end_corr,?other_end_corr,?end_corr),?end_corr) AS ?end_corr2) 76 } 77 GROUP BY ?persoon ?overeenkomst ?start_periode ?eind_periode 78 } 79 FILTER(?ignore = 0) 80 } 81 GROUP BY ?persoon ?start_def ?end_def ?start_periode ?eind_periode 82 } 83 BIND ((360 * (YEAR(?eind_periode + "P1D"^^xsd:duration) - YEAR(?start_periode))) + 84 (30 * (MONTH(?eind_periode + "P1D"^^xsd:duration) - MONTH(?start_periode))) + 85 (DAY(?eind_periode + "P1D"^^xsd:duration) - DAY(?start_periode)) AS ?dagen_periode) 86 BIND ((360 * (YEAR(?end_def + "P1D"^^xsd:duration) - YEAR(?start_def))) + 87 (30 * (MONTH(?end_def + "P1D"^^xsd:duration) - MONTH(?start_def))) + 88 (DAY(?end_def + "P1D"^^xsd:duration) - DAY(?start_def)) AS ?dagen_overeenkomst) 89 BIND (?dagen_overeenkomst/?dagen_periode AS ?factor) 90 } 91 } 92 { 93 SELECT 94 (SUM(?uren)/1692 AS ?teller) 95 WHERE 96 { 97 SELECT DISTINCT 98 ?start_periode 99 ?eind_periode 100 ?gewerkte_periode 101 ?uren 102 WHERE 103 { 104 BIND ("2022-01-01"^^xsd:date AS ?start_periode) 105 BIND ("2022-12-31"^^xsd:date AS ?eind_periode) 106 107 # selecteer aantal gewerkte uren binnen periode die gekoppeld zijn aan werkovereenkomst 108 ?gewerkte_periode 109 a onz-pers:GewerktePeriode ; 110 onz-g:hasBeginTimeStamp ?start_gewerktDT ; 111 onz-g:hasEndTimeStamp ?eind_gewerktDT ; 112 onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren ; 113 onz-g:definedBy ?overeenkomst . 114 BIND(STRDT(SUBSTR(STR(?start_gewerktDT),1,10), xsd:date) AS ?start_gewerkt) 115 BIND(STRDT(SUBSTR(STR(?eind_gewerktDT),1,10), xsd:date) AS ?eind_gewerkt) 116 117 FILTER(?start_gewerkt >= ?start_periode && ?eind_gewerkt <= ?eind_periode) 118 119 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 120 ?overeenkomst 121 a onz-pers:ArbeidsOvereenkomst ; 122 onz-g:isAbout/a onz-pers:ZorgverlenerFunctie . 123 } 124 } 125 } 126}```
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!