Metadata OData v4

Icoon computer

De metadata van een tabel geeft informatie die de inhoud en structuur van een dataset beschrijft. Er wordt hier uitgelegd hoe de metadata van de tabel Kerncijfers wijken en buurten 2017 gekoppeld kan worden aan de dataset.

De codevoorbeelden kunnen eenvoudig naar het klembord worden gekopieerd door op de knop in het codeblok te klikken. De voorbeelden op deze pagina zijn ook gebundeld te vinden op GitHub.

Keuzemenu programmeertaal:

In de snelstartgids werd de functie get_odata gedefinieerd en daarna gebruikt op de volgende manier:

library(tidyverse)
library(jsonlite)

get_odata <- function(targetUrl) {
  data <- data.frame()
  
  while(!is.null(targetUrl)){
    response <- fromJSON(url(targetUrl))
    data <- bind_rows(data,response$value)
    targetUrl <- response[["@odata.nextLink"]]
  }
  return(data)
}

tableUrl <- "https://odata4.cbs.nl/CBS/83765NED"
targetUrl <- paste0(tableUrl,"/Observations")
data <- get_odata(targetUrl)
head(data)

Dankzij het pad .../Observations worden de cellen van tabel 83765NED teruggegeven, maar ook de metadata is op te vragen via de API. Een overzicht van alle opties is te krijgen door Observations weg te halen:

get_odata(tableUrl)

Dit geeft de volgende tabel:

                   name      kind                   url
1         MeasureGroups EntitySet         MeasureGroups
2          MeasureCodes EntitySet          MeasureCodes
3            Dimensions EntitySet            Dimensions
4 WijkenEnBuurtenGroups EntitySet WijkenEnBuurtenGroups
5  WijkenEnBuurtenCodes EntitySet  WijkenEnBuurtenCodes
6          Observations EntitySet          Observations
7            Properties Singleton            Properties

De namen die eindigen op Groups horen bij tabellen die de hiërarchie van variabelen omschrijft. Het aantal inwoners van 0 tot 15 jaar valt bijvoorbeeld in de categorie "Leeftijdsgroepen". De namen die eindigen op Codes horen bij codelijsten. De tabel MeasureCodes geeft bijvoorbeeld de titels bij de codes die voorkomen in de kolom Measure van een dataset. De tabellen MeasureGroups en MeasureCodes met onze metadata zijn te downloaden met

groups <- get_odata(paste0(tableUrl,"/MeasureGroups"))
codes <- get_odata(paste0(tableUrl,"/MeasureCodes"))

De codelijsten zijn te koppelen aan de dataset met een left_join:

# Koppelen van metadata aan tabel
data <- data %>%
    left_join(codes, by=c("Measure"="Identifier"))%>%
    left_join(groups, by=c("MeasureGroupId"="Id"))

De metadata van een tabel geeft informatie die de inhoud en structuur van een dataset beschrijft. In de snelstartgids werd de functie get_odata gedefinieerd en daarna gebruikt op de volgende manier:

table_url = "https://odata4.cbs.nl/CBS/83765NED"
target_url = table_url + "/Observations"
data = get_odata(target_url)

Dankzij het pad .../Observations worden de cellen van tabel 83765NED teruggegeven, maar ook de metadata is op te vragen via de API. Een overzicht van alle opties is te krijgen door Observations weg te halen:

get_odata(table_url)

Dit geeft de volgende tabel:

        kind                   name                    url
0  EntitySet          MeasureGroups          MeasureGroups
1  EntitySet           MeasureCodes           MeasureCodes
2  EntitySet             Dimensions             Dimensions
3  EntitySet  WijkenEnBuurtenGroups  WijkenEnBuurtenGroups
4  EntitySet   WijkenEnBuurtenCodes   WijkenEnBuurtenCodes
5  EntitySet           Observations           Observations
6  Singleton             Properties             Properties

De namen die eindigen op Groups horen bij tabellen die de hiërarchie van variabelen omschrijft. Het aantal inwoners van 0 tot 15 jaar valt bijvoorbeeld in de categorie "Leeftijdsgroepen". De namen die eindigen op Codes horen bij codelijsten. De tabel MeasureCodes geeft bijvoorbeeld de titels bij de codes die voorkomen in de kolom Measure van een dataset. De tabellen MeasureGroups en MeasureCodes met onze metadata zijn te downloaden met

groups = get_odata(table_url + "/MeasureGroups")
codes = get_odata(table_url + "/MeasureCodes")

De codelijsten zijn te koppelen aan de dataset met merge uit het pandas-package:

data = pd.merge(data, codes, left_on = "Measure", right_on = "Identifier")
data = pd.merge(data, groups, left_on = "MeasureGroupId", right_on = "Id")