Uitwisselprofiel Ministerie van VWS Beleidsontwikkeling over Macro Economische Vraagstukken en Arbeidsmarkt

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


Publicatiedatum:
19-11-2025

Inwerkingtreding:
19-11-2025

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    ("Organisatie" as ?Organisatie)
14    ?Aantal_PIL_met_oplopend_kwalificatieniveau
15    ?Percentage_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 ?Percentage_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                    # -- Periode (kwartalen + totaal jaar) --
36                    #BIND(2024 AS ?jaar)
37                    VALUES ?kw { 1 2 3 4 0 }   # 0 = Totaal jaar
38                    BIND(xsd:integer(?jaar) AS ?_jaar)
39                    
40                    # Eerste dag van het kwartaal
41                    BIND( IF(?kw=0,
42                           xsd:date(CONCAT(STR(?_jaar), "-01-01")),
43                           xsd:date(CONCAT(STR(?_jaar), "-",
44                                           IF(?kw=1,"01-01",
45                                           IF(?kw=2,"04-01",
46                                           IF(?kw=3,"07-01","10-01")))))
47                    ) AS ?p_start )
48                    
49                    # Eerste dag van het opvolgende kwartaal
50                    BIND( IF(?kw=0, xsd:date(CONCAT(STR(?_jaar), "-12-31")),
51                             ?p_start + "P3M"^^xsd:duration)
52                     AS ?p_next )
53
54                    BIND( IF(?kw=0, "Totaal jaar", CONCAT("Q", STR(?kw))) AS ?Periode )
55
56                    
57                    # Alle werknemers met een zorgverlenerfunctie
58                    ?overeenkomst
59                        a onz-pers:ArbeidsOvereenkomst ;
60                        onz-pers:heeftOpdrachtnemer ?werknemer ;
61                        onz-g:hasPart ?overeenkomst_afspraak .
62                    ?overeenkomst_afspraak
63                        a onz-pers:WerkOvereenkomstAfspraak ;
64                        onz-g:isAbout ?functie ;
65                        onz-g:startDatum ?start_afspraak .
66                    OPTIONAL {
67                        ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak
68                    }
69                    ?functie 
70                        a onz-pers:ZorgverlenerFunctie ;
71                        onz-g:hasQuality /onz-g:hasQualityValue ?functie_niveau .
72                    ?overeenkomst_afspraak
73                        onz-g:isAbout ?locatie .
74                    ?locatie 
75                        a onz-g:StationaryArtifact ;
76                        onz-g:partOf* ?vestiging_uri .
77                    ?vestiging_uri a onz-org:Vestiging ;
78                        onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
79                    BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
80                    ?pc_gebied 
81                        onz-g:identifiedBy ?postcode ;
82                        onz-g:partOf+ ?zk_regio .
83                    ?zk_regio a onz-org:ZorgkantoorRegio .
84                    ?zorgkantoor onz-g:hasOperatingRange ?zk_regio .
85                
86                    # selecteer kwalificatie niveau en converteer naar integer
87                    ?functie_niveau
88                        a onz-pers:ODBKwalificatieWaarde ;
89                        rdfs:label ?niveau .
90                    BIND(xsd:integer(REPLACE(?niveau, "\\D+", "")) AS ?niveau_number)
91                    
92                    # filter medewerkers met kwalificatieniveau 1 t/m 6
93                    FILTER((?niveau_number >=1) && (?niveau_number <=6))
94                    
95                    # Geldig op eerste dag van het kwartaal (noemer)
96                    BIND(IF(?start_afspraak <= ?p_start && ((?eind_afspraak >= ?p_start)||(!BOUND(?eind_afspraak))), ?niveau_number, 0) AS ?op_peildatum_eerder)
97                    
98                    # Geldig op eerste dag van het volgende kwartaal (voor UITSTROOM moet dit 0 worden)
99                    BIND(IF(?start_afspraak <= ?p_next && ((?eind_afspraak >= ?p_next)||(!BOUND(?eind_afspraak))), ?niveau_number, 0) AS ?op_peildatum_later)
100                }
101                GROUP BY ?Periode ?werknemer
102            }
103        } GROUP BY ?Periode
104    }
105}
106ORDER BY ?Periode
107