---
"@type": Article
"@id": "https://helloloam.dev/nl/principes/schema-als-data"
"@source": "https://helloloam.dev/data/article/schema-as-data.json"
"@stamp": "2026-11-03T23:08:16+00:00"
about:
  "@type": DefinedTerm
  "@id": "https://helloloam.dev/data/definedterm/schema-as-data.json"
  name: Schema als data
  identifier: schema-as-data
  inDefinedTermSet:
    "@type": DefinedTermSet
    "@id": "https://helloloam.dev/data/definedtermset/basics.json"
    name: Basis
    identifier: basics
author: {"@id":"https://helloloam.dev/#organization"}
datePublished: "2026-10-03"
description: Elk stuk content is een Schema.org-record — het vocabulaire dat zoekmachines, browsers en taalmodellen al spreken.
headline: Schema als data
identifier: schema-as-data
inLanguage: nl
publisher: {"@id":"https://helloloam.dev/#organization"}
url: "https://helloloam.dev/nl/principes/schema-als-data"
---

# Schema als data

[English](https://helloloam.dev/data/article/schema-as-data.md) • [Nederlands](https://helloloam.dev/nl/data/article/schema-as-data.md)

## Een vocabulaire dat het web al spreekt

De meeste contentsystemen verzinnen een eigen model dat niemand buiten hen begrijpt. loam leent het model waar het web het al over eens is. Een artikel is een `Article` met een `headline` en een `author`. Een bedrijf is een `Organization` met een `address`. Een evenement is een `Event` met een `startDate`.

Niet als export, niet als optie: het record *is* de content. De pagina, de machineweergaven en wat je agent begrijpt, draaien er allemaal omheen. Het is de enige keuze in loam die niet aan jou is — en de keuze die elk ander onderdeel eenvoudiger maakt.

## Wat loam toevoegt: mechaniek, geen woorden

loam voegt geen eigen vocabulaire toe. Het voegt vier regels toe voor hoe records samenleven:

| Mechaniek | Regel |
| --- | --- |
| **Identiteit** | Elke entiteit heeft een `identifier`; dat is ook de bestandsnaam. |
| **Verwijzingen** | Entiteiten wijzen naar elkaar met kleine verwijzingen die worden opgelost als de pagina gelezen wordt — nooit een kopie. |
| **Pagina's** | Een entiteit met een `slug` is een pagina. Een lijst nooit: dat is curatie, getoond door een pagina die hem leest. |
| **Verplichte velden** | Een handvol per type, zodat een pagina nooit live gaat zonder wat hij nodig heeft. |

## Bewaakt, nooit gecontroleerd op inhoud

De engine bewaakt die mechaniek: een verwijzing naar niets, een ontbrekend verplicht veld, een bestand dat niet parseert. Elk ervan houdt een publicatie tegen en zegt waarom. Hij controleert nooit de betekenis — hij zal je niet vertellen dat je `Service` eigenlijk een `Product` zou moeten zijn. Wat iets is, bepaal jij.

## Eén record, elke lezer

Omdat de velden die de pagina renderen dezelfde velden zijn die de gestructureerde data voeden, kan de machineweergave alleen claimen wat de pagina laat zien. Hetzelfde record is de pagina die een bezoeker leest, de JSON-LD [die een zoekmachine indexeert](/nl/principes/seo-vriendelijk), het bestand op `/data/<type>/<naam>.json` en de regel in de index die een assistent doorzoekt. Niets wordt gemapt, geëxporteerd of met de hand in de pas gehouden.

## In de praktijk

“Maak een pagina voor onze workshop op 12 maart” wordt een `Event` met een `startDate`, een `location` en een slug — je agent weet wat een evenement heeft zonder dat je het zegt, omdat hij er miljoenen gezien heeft. Voordat hij een nieuw soort ding maakt, vraagt hij de site naar de vorm van dat type: welke velden er zijn en welke verplicht. De template leest dezelfde woorden.

## Wat het kost

Schema.org heeft voor sommige dingen onhandige woorden. De regel: houd de publieke term waar de mechaniek er niet om geeft, en voeg een klein veld alleen voor de weergave toe waar de pagina iets nodig heeft wat het vocabulaire mist — weggehaald uit de machineweergave zodat de claim waar blijft. Een moment nadenken per type, tegenover een privétaal waar elke lezer voor altijd voor zou betalen.
