Uitwisselprofiel Ministerie van VWS Beleidsontwikkeling over Macro-Economische Vraagstukken en Arbeidsmarkt

Over Uitwisselprofiel Ministerie van VWS Beleidsontwikkeling over Macro-Economische Vraagstukken en Arbeidsmarkt


Publicatiedatum:
22-01-2026

Inwerkingtreding:
01-03-2026

2.28. Wat is het percentage doorstroom van personeel in loondienst naar oplopend kwalificatieniveau?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: MEVA 2.28
2# Parameters: ?jaar
3# Ontologie: versie 3.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 xsd:     <http://www.w3.org/2001/XMLSchema#>
9PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
10
11SELECT
12    ?Periode
13    ("Totaal organisatie" as ?Indeling)
14    ?Aantal_PIL_met_oplopend_kwalificatieniveau
15    ?Procent_PIL_met_oplopend_kwalificatieniveau
16WHERE {
17    {
18        # Kwartaalgegevens
19        SELECT
20            ?Periode
21            (SUM(?teller_waarde) AS ?Aantal_PIL_met_oplopend_kwalificatieniveau)
22            (SUM(?noemer_waarde) AS ?noemer)
23            (IF(SUM(?noemer_waarde) = 0,
24                "Ongedefinieerd",
25                ROUND( (100.0 * SUM(?teller_waarde) / SUM(?noemer_waarde)) * 100 ) / 100
26               ) AS ?Procent_PIL_met_oplopend_kwalificatieniveau)
27        WHERE {
28            {
29                SELECT
30                    ?Periode
31                    ?werknemer
32                    (IF(MAX(?op_peildatum_later) > 0 && MAX(?op_peildatum_eerder) > 0, 1, 0) AS ?noemer_waarde)
33                    (IF(?noemer_waarde = 1 && MAX(?op_peildatum_eerder) < MAX(?op_peildatum_later), 1, 0) AS ?teller_waarde)
34                {
35                    #BIND(2024 AS ?jaar)
36                    VALUES ?kw { 1 2 3 4 0 }   # 0 = Totaal jaar
37                    BIND(xsd:integer(?jaar) AS ?_jaar)
38                    
39                    # Eerste dag van het kwartaal
40                    BIND( IF(?kw=0,
41                           xsd:date(CONCAT(STR(?_jaar), "-01-01")),
42                           xsd:date(CONCAT(STR(?_jaar), "-",
43                                           IF(?kw=1,"01-01",
44                                           IF(?kw=2,"04-01",
45                                           IF(?kw=3,"07-01","10-01")))))
46                    ) AS ?p_start )
47                    
48                    # Eerste dag van het opvolgende kwartaal
49                    BIND( IF(?kw=0, xsd:date(CONCAT(STR(?_jaar), "-12-31")),
50                             ?p_start + "P3M"^^xsd:duration)
51                     AS ?p_next )
52
53                    BIND( IF(?kw=0, "Totaal jaar", CONCAT("Q", STR(?kw))) AS ?Periode )
54
55                    
56                    # Alle werknemers met een zorgverlenerfunctie
57                    ?overeenkomst
58                        a onz-pers:ArbeidsOvereenkomst ;
59                        onz-pers:heeftOpdrachtnemer ?werknemer ;
60                        onz-g:hasPart ?overeenkomst_afspraak .
61                    ?overeenkomst_afspraak
62                        a onz-pers:WerkOvereenkomstAfspraak ;
63                        onz-g:isAbout ?functie ;
64                        onz-g:startDatum ?start_afspraak .
65                    OPTIONAL {
66                        ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak
67                    }
68                    ?functie 
69                        a onz-pers:ZorgverlenerFunctie ;
70                        onz-g:hasQuality /onz-g:hasQualityValue ?functie_niveau .
71                    ?overeenkomst_afspraak
72                        onz-g:isAbout ?locatie .
73                    ?locatie 
74                        a onz-g:StationaryArtifact ;
75                        onz-g:partOf* ?vestiging_uri .
76                    ?vestiging_uri a onz-org:Vestiging ;
77                        onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
78                    BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
79                    ?pc_gebied 
80                        onz-g:identifiedBy ?postcode ;
81                        onz-g:partOf+ ?zk_regio .
82                    ?zk_regio a onz-org:ZorgkantoorRegio .
83                    ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
84                
85                    # selecteer kwalificatie niveau en converteer naar integer
86                    ?functie_niveau
87                        a onz-pers:ODBKwalificatieWaarde ;
88                        rdfs:label ?niveau .
89                    BIND(xsd:integer(REPLACE(?niveau, "\\D+", "")) AS ?niveau_number)
90                    
91                    # filter medewerkers met kwalificatieniveau 1 t/m 6
92                    FILTER((?niveau_number >=1) && (?niveau_number <=6))
93                    
94                    # Geldig op eerste dag van het kwartaal (noemer)
95                    BIND(IF(?start_afspraak <= ?p_start && ((?eind_afspraak >= ?p_start)||(!BOUND(?eind_afspraak))), ?niveau_number, 0) AS ?op_peildatum_eerder)
96                    
97                    # Geldig op eerste dag van het volgende kwartaal (voor UITSTROOM moet dit 0 worden)
98                    BIND(IF(?start_afspraak <= ?p_next && ((?eind_afspraak >= ?p_next)||(!BOUND(?eind_afspraak))), ?niveau_number, 0) AS ?op_peildatum_later)
99                }
100                GROUP BY ?Periode ?werknemer
101            }
102        } GROUP BY ?Periode
103    }
104}
105ORDER BY ?Periode
106