Uitwisselprofiel Ministerie van VWS Directie Macro-Economische Vraagstukken en Arbeidsmarkt

Over Uitwisselprofiel Ministerie van VWS Directie Macro-Economische Vraagstukken en Arbeidsmarkt

0.0.1-acc


Publicatiedatum:
18-09-2025

Inwerkingtreding:
18-09-2025

2.3. Wat is het aantal werknemers met een zorgverlener functie per kwalificatieniveau per soort werkovereenkomst?

Concepten

Relaties

Eigenschappen

SPARQL query

Code gekopieerd

...

Kopieer naar klembord

1# Indicator: MEVA 2.3
2# Parameters: ?jaar, ?kwartaal
3# Ontologie: versie 3.0 of nieuwer
4
5
6PREFIX onz-org: <http://purl.org/ozo/onz-org#>
7PREFIX onz-g: <http://purl.org/ozo/onz-g#>
8PREFIX onz-pers: <http://purl.org/ozo/onz-pers#>
9PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
10PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
11
12SELECT  ?vestiging
13        ?zk_regio_code
14		?kwalificatie_niveau
15        (COUNT(DISTINCT ?persoon_onbepaald) AS ?Aantal_ZV_medewerkers_onbepaalde_tijd) 
16        (COUNT(DISTINCT ?persoon_bepaald) AS ?Aantal_ZV_medewerkers_bepaalde_tijd)
17        (COUNT(DISTINCT ?persoon_oproep) AS ?Aantal_ZV_medewerkers_oproep)
18        (COUNT(DISTINCT ?persoon_bbl) AS ?Aantal_ZV_medewerkers_BBL) 
19        (COUNT(DISTINCT ?persoon_inhuur)  AS ?Aantal_ZV_medewerkers_inhuur)
20        (COUNT(DISTINCT ?persoon_uitzend) AS ?Aantal_ZV_medewerkers_uitzend)
21        (COUNT(DISTINCT ?persoon_stage)  AS ?Aantal_ZV_medewerkers_stage)
22        (COUNT(DISTINCT ?persoon_vrijwilliger) AS ?Aantal_ZV_medewerkers_vrijwilliger)
23		(COUNT(DISTINCT ?persoon) AS ?Totaal)
24WHERE {
25    # Parameters / periode
26    #BIND(2024 AS ?jaar)
27    #BIND("Q1" AS ?kwartaal)
28    BIND(
29    IF(?kwartaal = "Q1", xsd:date(CONCAT(STR(?jaar), "-01-01")),
30    IF(?kwartaal = "Q2", xsd:date(CONCAT(STR(?jaar), "-04-01")),
31    IF(?kwartaal = "Q3", xsd:date(CONCAT(STR(?jaar), "-07-01")),
32    IF(?kwartaal = "Q4", xsd:date(CONCAT(STR(?jaar), "-10-01")), ""))))
33    AS ?start_periode
34    )
35    BIND(?start_periode + "P3M"^^xsd:duration + "-P1D"^^xsd:duration AS ?eind_periode)
36
37    # Overeenkomsten & afspraken
38    ?type_overeenkomst rdfs:subClassOf onz-pers:WerkOvereenkomst .
39    FILTER(?type_overeenkomst != onz-pers:ArbeidsOvereenkomst && ?type_overeenkomst != onz-pers:WerkOvereenkomst)
40
41    ?overeenkomst a ?type_overeenkomst ;
42                onz-pers:heeftOpdrachtnemer ?persoon ;
43                onz-g:hasPart ?overeenkomst_afspraak .
44
45    ?overeenkomst_afspraak a onz-pers:WerkOvereenkomstAfspraak ;
46                            onz-g:startDatum ?start_afspraak ;
47                            onz-g:isAbout ?functie, ?locatie .
48    OPTIONAL { ?overeenkomst_afspraak onz-g:eindDatum ?eind_afspraak }
49
50    FILTER( ?start_afspraak <= ?eind_periode && ( !BOUND(?eind_afspraak) || ?eind_afspraak >= ?start_periode ) )
51
52    ?functie a onz-pers:ZorgverlenerFunctie ;
53            onz-g:hasQuality / onz-g:hasQualityValue ?functie_niveau .
54    ?functie_niveau a onz-pers:ODBKwalificatieWaarde ;
55                    rdfs:label ?kwalificatie_niveau .
56
57    # Koppel locatie -> vestiging
58    ?locatie a onz-g:StationaryArtifact ;
59            onz-g:partOf* ?vestiging_uri .
60
61    {
62    # Tak 1: echte vestiging + afleiding zorgkantoorregio
63    ?vestiging_uri a onz-org:Vestiging ;
64                    onz-g:identifiedBy ?vest_nr ;
65                    onz-g:hasLocalizableArea/onz-g:identifiedBy/onz-g:hasPart/onz-g:hasPart ?postcode_6 .
66    ?vest_nr a onz-org:Vestigingsnummer ; onz-g:hasDataValue ?vestiging .
67
68    BIND(IRI(SUBSTR(STR(?postcode_6), 1, STRLEN(STR(?postcode_6)) - 2)) AS ?postcode)
69    ?pc_gebied onz-g:identifiedBy ?postcode ;
70                onz-g:partOf+ ?zk_regio .
71    ?zk_regio a onz-org:ZorgkantoorRegio .
72    }
73    UNION
74    {
75    # Tak 2: totaal organisatie, laat ?zk_regio ongebonden (leeg in output)
76    ?vestiging_uri onz-org:vestigingVan ?organisatie_uri .
77    BIND("Totaal organisatie" AS ?vestiging)
78    # Let op: GEEN patronen die ?zk_regio binden in deze tak
79    }
80
81    BIND(
82    IF(BOUND(?zk_regio),
83        STRAFTER(STR(?zk_regio), "/onz-org/"),
84        ?unbound
85    ) AS ?zk_regio_code
86    )
87
88    # Type-specifieke projecties (Fuseki-vriendelijk)
89    BIND(IF(?type_overeenkomst = onz-pers:ArbeidsOvereenkomstOnbepaaldeTijd, ?persoon, ?unbound) AS ?persoon_onbepaald)
90    BIND(IF(?type_overeenkomst = onz-pers:ArbeidsOvereenkomstBepaaldeTijd,   ?persoon, ?unbound) AS ?persoon_bepaald)
91    BIND(IF(?type_overeenkomst = onz-pers:OproepOvereenkomst,               ?persoon, ?unbound) AS ?persoon_oproep)
92    BIND(IF(?type_overeenkomst = onz-pers:ArbeidsOvereenkomstBBL,           ?persoon, ?unbound) AS ?persoon_bbl)
93    BIND(IF(?type_overeenkomst = onz-pers:InhuurOvereenkomst,               ?persoon, ?unbound) AS ?persoon_inhuur)
94    BIND(IF(?type_overeenkomst = onz-pers:UitzendOvereenkomst,              ?persoon, ?unbound) AS ?persoon_uitzend)
95    BIND(IF(?type_overeenkomst = onz-pers:StageOvereenkomst,                ?persoon, ?unbound) AS ?persoon_stage)
96    BIND(IF(?type_overeenkomst = onz-pers:VrijwilligersOvereenkomst,        ?persoon, ?unbound) AS ?persoon_vrijwilliger)
97}
98GROUP BY ?vestiging ?zk_regio_code ?kwalificatie_niveau
99ORDER BY ?vestiging ?zk_regio_code ?kwalificatie_niveau