Over Uitwisselprofiel Ministerie van VWS Beleidsontwikkeling over Macro-Economische Vraagstukken en Arbeidsmarkt
- Publicatiedatum:
- 22-01-2026
- Inwerkingtreding:
- 01-03-2026
2.2. Wat is het gemiddeld aantal personeelsleden?
Concepten
- Arbeidsovereenkomst
- Functie in organisatie-rol
- Inhuurovereenkomst
- Onverplaatsbaar artefact
- Uitzendovereenkomst
- Vestiging
- Vestigingsnummer
- Werkovereenkomst afspraak
- Zorgverlener (functie)
Relaties
- deel van
- gaat over
- geïdentificeerd door
- heeft deel
- heeft lokaliseerbaar gebied
- heeft opdrachtnemer
- vestiging van
Eigenschappen
SPARQL query
Code gekopieerd
...Kopieer naar klembord
1# Indicator: MEVA 2.2 2# Parameters: ?jaar 3# Ontologie: versie 3.0.0 of nieuwer 4 5PREFIX onz-g: <http://purl.org/ozo/onz-g#> 6PREFIX onz-pers:<http://purl.org/ozo/onz-pers#> 7PREFIX onz-org: <http://purl.org/ozo/onz-org#> 8PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 9PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 10PREFIX time: <http://www.w3.org/2006/time#> 11 12SELECT ?Periode 13 (?vestiging AS ?Indeling) 14 (ROUND(SUM(IF(?maanden_periode <= 0, 0, IF(?zorg_aandeel / ?maanden_periode > 1, 1, ?zorg_aandeel / ?maanden_periode))) * 100) / 100 AS ?Zorg) 15 (ROUND(SUM(IF(?maanden_periode <= 0, 0, IF(?niet_zorg_aandeel / ?maanden_periode > 1, 1, ?niet_zorg_aandeel / ?maanden_periode))) * 100) / 100 AS ?Niet_zorg) 16 (ROUND(SUM(IF(?maanden_periode <= 0, 0, IF((?zorg_aandeel + ?niet_zorg_aandeel) / ?maanden_periode > 1, 1, (?zorg_aandeel + ?niet_zorg_aandeel) / ?maanden_periode))) * 100) / 100 AS ?Totaal) 17 18WHERE { 19 # ------------------------------- 20 # MIDDENLAAG: per persoon × vestiging 21 # ------------------------------- 22 SELECT ?Periode 23 ?vestiging 24 ?persoon 25 ?maanden_periode 26 # MERGE/UNION: aantal unieke maanden met dekking per categorie 27 (SUM(?zorg_maanden_uni) AS ?zorg_aandeel) 28 (SUM(?niet_zorg_maanden_uni) AS ?niet_zorg_aandeel) 29 WHERE { 30 # ------------------------------- 31 # BINNENLAAG: knip afspraken, tel unieke dagen per categorie 32 # ------------------------------- 33 { 34 SELECT ?Periode 35 ?vestiging 36 ?persoon 37 ?maanden_periode 38 (COUNT(DISTINCT ?maand_id_zorg) AS ?zorg_maanden_uni) 39 (COUNT(DISTINCT ?maand_id_nietzorg) AS ?niet_zorg_maanden_uni) 40 WHERE { 41 # ---- Parameters & periode ---- 42 #BIND(2024 AS ?jaar) 43 VALUES ?kw { 1 2 3 4 0 } 44 45 BIND( xsd:date(CONCAT(STR(?jaar), "-", 46 IF(?kw=1,"01-01", IF(?kw=2,"04-01", IF(?kw=3,"07-01", IF(?kw=4,"10-01", "01-01")))) 47 )) AS ?start_periode ) 48 BIND( xsd:date(CONCAT(STR(?jaar), "-", 49 IF(?kw=1,"03-31", IF(?kw=2,"06-30", IF(?kw=3,"09-30","12-31"))) 50 )) AS ?eind_periode ) 51 BIND( IF(?kw = 0, "Totaal jaar", CONCAT("Q", STR(?kw))) AS ?Periode ) 52 53 ?start_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_periode_numeriek . 54 ?eind_periode ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?eind_periode_numeriek . 55 BIND(IF(?kw = 0, 12, 3) AS ?maanden_periode) 56 57 # ---- Geldige werkovereenkomsten ---- 58 VALUES ?personeels_overeenkomst { 59 onz-pers:ArbeidsOvereenkomst 60 onz-pers:UitzendOvereenkomst 61 onz-pers:InhuurOvereenkomst 62 } 63 64 # ---- Afspraken + knippen ---- 65 ?overeenkomst a ?personeels_overeenkomst ; 66 onz-pers:heeftOpdrachtnemer ?persoon ; 67 onz-g:hasPart ?overeenkomst_afspraak . 68 OPTIONAL { ?overeenkomst onz-g:eindDatum ?overeenkomst_eind } 69 70 ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ; 71 onz-g:startDatum ?start_afspraak ; 72 onz-g:isAbout ?functie ; 73 onz-g:isAbout ?locatie . 74 OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak } 75 FILTER( ?start_afspraak <= ?eind_periode && ( ?eind_afspraak >= ?start_periode || !BOUND(?eind_afspraak) ) ) 76 77 BIND( IF(?start_afspraak < ?start_periode, ?start_periode, ?start_afspraak) AS ?start_afspraak_corr ) 78 BIND( IF(!BOUND(?eind_afspraak), IF(BOUND(?overeenkomst_eind) && ?overeenkomst_eind < ?eind_periode, ?overeenkomst_eind, ?eind_periode), 79 IF(?eind_afspraak > ?eind_periode, ?eind_periode, ?eind_afspraak)) AS ?eind_afspraak_corr ) 80 FILTER(?start_afspraak_corr <= ?eind_afspraak_corr) 81 82 # ---- Categorie & vestiging ---- 83 ?functie a onz-g:OccupationalPositionRole . 84 BIND( IF(EXISTS { ?functie a onz-pers:ZorgverlenerFunctie }, 1, 0) AS ?zorg_boolean ) 85 86 ?locatie a onz-g:StationaryArtifact ; 87 onz-g:partOf* ?vestiging_uri . 88 { 89 # Tak 1: echte vestiging + afleiding zorgkantoorregio 90 ?vestiging_uri a onz-org:Vestiging ; 91 onz-g:identifiedBy ?vest_nr ; 92 onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 . 93 ?vest_nr a onz-org:Vestigingsnummer ; 94 onz-g:hasDataValue ?vestiging . 95 96 BIND( IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode ) 97 ?pc_gebied onz-g:identifiedBy ?postcode ; 98 onz-g:partOf+ ?zk_regio . 99 } 100 UNION 101 { 102 # Tak 2: totaal organisatie, laat zorgkantoorregio leeg 103 ?vestiging_uri onz-org:vestigingVan ?organisatie_uri . 104 BIND("Totaal organisatie" AS ?vestiging) 105 } 106 107 # ---- Kalender: maanden (max 12) ---- 108 # Jaar-start numeriek (1 jan) 109 BIND(xsd:date(CONCAT(STR(?jaar), "-01-01")) AS ?jan1) 110 ?jan1 ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?jan1_num . 111 112 # Schrikkeljaar (gregoriaans) 113 BIND(xsd:integer(?jaar) AS ?y) 114 BIND( xsd:integer(?y - (400 * FLOOR(?y / 400))) AS ?r400 ) 115 BIND( xsd:integer(?y - ( 4 * FLOOR(?y / 4))) AS ?r4 ) 116 BIND( xsd:integer(?y - (100 * FLOOR(?y / 100))) AS ?r100 ) 117 BIND( ( (?r400 = 0) || ( (?r4 = 0) && (?r100 != 0) ) ) AS ?isSchrikkel ) 118 BIND(IF(?isSchrikkel, 1, 0) AS ?schrikkelAdd) 119 120 # Maanden 1..12 met start/eind dag-in-jaar (baseline is een niet schikkeljaar '_ns') 121 VALUES (?maand ?start_dag_ns ?eind_dag_ns){ 122 (1 1 31) # januari 31 dagen 123 (2 32 59) # februari 28/29 dagen 124 (3 60 90) # maart 31 dagen 125 (4 91 120) # april 30 dagen 126 (5 121 151) # mei 31 dagen 127 (6 152 181) # juni 30 dagen 128 (7 182 212) # juli 31 dagen 129 (8 213 243) # augustus 31 dagen 130 (9 244 273) # september 30 dagen 131 (10 274 304) # oktober 31 dagen 132 (11 305 334) # november 30 dagen 133 (12 335 365) # december 31 dagen 134 } 135 136 # Corrigeer dagen voor schrikkeljaar (alle maanden na februari +1 dag) 137 BIND(?start_dag_ns + IF(?maand > 2, ?schrikkelAdd, 0) AS ?start_dag) 138 BIND(?eind_dag_ns + IF(?maand > 2, ?schrikkelAdd, 0) AS ?eind_dag) 139 140 # Maand start/eind numeriek 141 BIND(?jan1_num + (?start_dag - 1) AS ?maand_start_num) 142 BIND(?jan1_num + (?eind_dag - 1) AS ?maand_eind_num) 143 144 # Houd alleen maanden die in de periode vallen 145 FILTER(?maand_eind_num >= ?start_periode_numeriek && ?maand_start_num <= ?eind_periode_numeriek) 146 147 # Unieke maand-id (voor DISTINCT) 148 BIND(CONCAT(STR(?jaar), "-", IF(?maand < 10, CONCAT("0", STR(?maand)), STR(?maand))) AS ?maand_id) 149 150 # # ---- Maand binnen deze afspraak? Zo ja, tel voor de juiste categorie ---- 151 ?start_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?start_num . 152 ?eind_afspraak_corr ^time:inXSDDate/time:inTemporalPosition/time:numericPosition ?end_num . 153 154 # ---- Overlap: afspraak overlapt maand? ---- 155 FILTER(?start_num <= ?maand_eind_num && ?end_num >= ?maand_start_num) 156 157 # DISTINCT in de COUNT voorkomt dubbeltelling bij overlap op dezelfde dag 158 BIND(IF(?zorg_boolean = 1, ?maand_id, ?unbound) AS ?maand_id_zorg) 159 BIND(IF(?zorg_boolean = 0, ?maand_id, ?unbound) AS ?maand_id_nietzorg) 160 } 161 GROUP BY ?Periode ?vestiging ?persoon ?maanden_periode 162 } 163 } 164 GROUP BY ?Periode ?vestiging ?persoon ?maanden_periode 165} 166GROUP BY ?Periode ?vestiging 167ORDER BY ?Periode ?vestiging 168