Code gekopieerd
...Kopieer naar klembord
1# Indicator: Zorgkantoren 6.1 2# Parameters: $(start_periode), $(eind_periode) 3# Ontologie: versie 2.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-org: <http://purl.org/ozo/onz-org#> 7PREFIX onz-pers: <http://purl.org/ozo/onz-pers#> 8PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 9PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 10 11SELECT 12 ?vestiging 13 ?kwalificatie_niveau 14 (?kwalificatie_uren AS ?ingezette_uren) 15 ((?kwalificatie_uren/?totaal_uren)*100 AS ?percentage) 16WHERE 17{ 18 # subquery: bereken het aantal ingezette uren per kwalificatieniveau en vestiging 19 { 20 SELECT 21 ?vestiging 22 ?kwalificatie_niveau 23 (SUM(?uren) AS ?kwalificatie_uren) 24 WHERE 25 { 26 # selecteer alle geregistreerde uren van de werknemers per 27 SELECT DISTINCT 28 ?gewerkte_periode 29 ?start_werk 30 ?eind_werk 31 ?uren 32 ?kwalificatie_niveau 33 ?vestiging 34 WHERE 35 { 36 BIND ('2024-01-01'^^xsd:date AS ?start_periode) 37 BIND ('2024-03-31'^^xsd:date AS ?eind_periode) 38 39 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 40 ?functie 41 a onz-pers:ZorgverlenerFunctie ; 42 a/ onz-g:hasQuality /onz-g:hasQualityValue ?functie_niveau ; 43 onz-g:startDatum ?start_functie . 44 OPTIONAL { ?functie onz-g:eindDatum ?eind_functie . } 45 46 FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie)))) 47 BIND(IF(!BOUND(?eind_functie), ?eind_periode, 48 IF(?eind_functie < ?eind_periode, ?eind_functie, ?eind_periode) 49 ) AS ?eind_functie_reken) 50 BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken) 51 52 ?overeenkomst 53 a onz-pers:ArbeidsOvereenkomst ; 54 onz-pers:heeftOpdrachtnemer ?medewerker ; 55 onz-g:isAbout ?locatie_contract ; 56 onz-g:isAbout ?functie . 57 58 ?functie_niveau 59 a onz-pers:ODBKwalificatieWaarde ; 60 rdfs:label ?kwalificatie_niveau . 61 62 # selecteer uren van gewerkte periode binnen periode 63 ?gewerkte_periode 64 a onz-pers:GewerktePeriode ; 65 onz-g:definedBy ?overeenkomst ; 66 onz-g:hasBeginTimeStamp ?start_werk_datetime ; 67 onz-g:hasEndTimeStamp ?eind_werk_datetime ; 68 onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren_voor_correctie . 69 OPTIONAL{?gewerkte_periode onz-g:hasPerdurantLocation ?locatie_werk .} 70 # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period 71 BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk) 72 BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk) 73 FILTER(?start_werk >= ?start_functie_reken && ?eind_werk <= ?eind_functie_reken) 74 75 ?locatie_contract a onz-g:StationaryArtifact 76 BIND(IF(!BOUND(?locatie_werk), ?locatie_contract, ?locatie_werk) AS ?locatie) 77 78 # selecteer locatie met bijbehorende vestiging 79 { 80 ?locatie onz-g:partOf* ?vestiging_uri . 81 ?vestiging_uri 82 a onz-org:Vestiging ; 83 onz-g:identifiedBy ?vest_nr. 84 ?vest_nr a onz-org:Vestigingsnummer ; 85 onz-g:hasDataValue ?vestiging . 86 } UNION { 87 # Includeer ook de organisatie als geheel en label deze als vestiging 88 ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri . 89 ?organisatie_uri 90 a onz-g:Business ; 91 rdfs:label ?Organisatie . 92 BIND(CONCAT('Totaal ',?Organisatie) AS ?vestiging) 93 } 94 95 BIND(IF(!BOUND(?locatie_werk) && BOUND(?vestiging_uri), 0, 1) AS ?correctie) 96 BIND(?uren_voor_correctie * ?correctie AS ?uren) 97 } 98 } 99 GROUP BY ?vestiging ?kwalificatie_niveau 100 } 101 # subquery: bereken het aantal ingezette uren per vestiging 102 { 103 SELECT 104 ?vestiging 105 (SUM(?uren) AS ?totaal_uren) 106 # selecteer alle geregistreerde uren van de werknemers per vestiging 107 WHERE 108 { 109 SELECT DISTINCT 110 ?gewerkte_periode 111 ?start_werk 112 ?eind_werk 113 ?uren 114 ?vestiging 115 WHERE 116 { 117 BIND ('2024-01-01'^^xsd:date AS ?start_periode) 118 BIND ('2024-03-31'^^xsd:date AS ?eind_periode) 119 120 # selecteer werkovereenkomsten waarbij werknemer een zorgverlenerfunctie heeft 121 ?functie 122 a onz-pers:ZorgverlenerFunctie ; 123 onz-g:startDatum ?start_functie . 124 OPTIONAL { ?functie onz-g:eindDatum ?eind_functie . } 125 126 FILTER(?start_functie <= ?eind_periode && ((?eind_functie >= ?start_periode) || (!BOUND(?eind_functie)))) 127 BIND(IF(!BOUND(?eind_functie), ?eind_periode, 128 IF(?eind_functie < ?eind_periode, ?eind_functie, ?eind_periode) 129 ) AS ?eind_functie_reken) 130 BIND(IF(?start_functie < ?start_periode, ?start_periode, ?start_functie) AS ?start_functie_reken) 131 132 ?overeenkomst 133 a onz-pers:ArbeidsOvereenkomst ; 134 onz-pers:heeftOpdrachtnemer ?medewerker ; 135 onz-g:isAbout ?locatie_contract ; 136 onz-g:isAbout ?functie . 137 138 # selecteer uren van gewerkte periode binnen periode 139 ?gewerkte_periode 140 a onz-pers:GewerktePeriode ; 141 onz-g:definedBy ?overeenkomst ; 142 onz-g:hasBeginTimeStamp ?start_werk_datetime ; 143 onz-g:hasEndTimeStamp ?eind_werk_datetime ; 144 onz-g:hasQuality / onz-g:hasQualityValue / onz-g:hasDataValue ?uren_voor_correctie . 145 OPTIONAL{?gewerkte_periode onz-g:hasPerdurantLocation ?locatie_werk .} 146 # Als begin- en endTimeStamp van type dateTime zijn dan omzetten zodat vergeleken kan worden met start en eind period 147 BIND(STRDT(SUBSTR(STR(?start_werk_datetime), 1, 10), xsd:date) AS ?start_werk) 148 BIND(STRDT(SUBSTR(STR(?eind_werk_datetime), 1, 10), xsd:date) AS ?eind_werk) 149 FILTER(?start_werk >= ?start_functie_reken && ?eind_werk <= ?eind_functie_reken) 150 151 ?locatie_contract a onz-g:StationaryArtifact 152 BIND(IF(!BOUND(?locatie_werk), ?locatie_contract, ?locatie_werk) AS ?locatie) 153 154 # selecteer locatie met bijbehorende vestiging 155 { 156 ?locatie onz-g:partOf* ?vestiging_uri . 157 ?vestiging_uri 158 a onz-org:Vestiging ; 159 onz-g:identifiedBy ?vest_nr. 160 ?vest_nr a onz-org:Vestigingsnummer ; 161 onz-g:hasDataValue ?vestiging . 162 } UNION { 163 # Includeer ook de organisatie als geheel en label deze als vestiging 164 ?locatie onz-g:partOf*/onz-org:vestigingVan ?organisatie_uri . 165 ?organisatie_uri 166 a onz-g:Business ; 167 rdfs:label ?Organisatie . 168 BIND(CONCAT('Totaal ',?Organisatie) AS ?vestiging) 169 } 170 171 BIND(IF(!BOUND(?locatie_werk) && BOUND(?vestiging_uri), 0, 1) AS ?correctie) 172 BIND(?uren_voor_correctie * ?correctie AS ?uren) 173 } 174 } 175 GROUP BY ?vestiging 176 } 177} 178ORDER BY ?vestiging ?kwalificatie_niveau 179
Loopt u tegen een issue of vraag aan bij het KIK-V product? Neem dan contact met ons op!