Skip to content

Data Modelling

In linked data zijn er twee soorten definities: klassen en eigenschappen. Deze sectie legt vast hoe deze definities gemodelleerd worden.

Generieke modelleereisen

Deze sectie behandelt de modelleereisen die zowel voor klassen alsook voor eigenschappen worden toegepast.

Verplichte eigenschappen:

skos:definition
Deze relatie moet worden gebruik om een menselijk leesbare definitie van de klasse vast te leggen. Deze eigenschap is vereist omdat anders niet duidelijk is wat door de klasse wordt aangeduid.
skos:prefLabel
Deze relatie moet worden gebruikt om de officiële naam van een klasse vast te leggen. Iedere klasse moet precies één officiële naam hebben. De waardes van deze eigenschap moeten een taal code (bijvoorbeeld @nl) hebben.

Toegestane eigenschappen:

dct:source
Deze eigenschap wordt gebruikt om de bron op te geven waar deze definitie wordt vastgelegd.
rdfs:seeAlso
Deze relatie geeft een link naar een intern of extern document waarin deze klasse wordt beschreven. Deze relatie is met name nuttig wanneer een data model al elders (maar niet als linked data) is vastgelegd. Zo is het linked data model optimaal verbonden met andere modellen en documentatie. De waarde van deze eigenschap moet van het type `xsd:anyURI` zijn.
skos:altLabel
Deze relatie moet worden gebruikt om alle alternatieve namen van een klasse vast te leggen. Een alternatieve naam is iedere naam die niet de geprefereerde naam is. Wanneer een klasse geen alternatieve namen heeft zal deze eigenschap voor die klasse ontbreken. De waardes van deze eigenschap moeten een taal code (bijvoorbeeld @nl) hebben.

Modelleereisen voor klassen

Deze sectie behandelt de modelleereisen voor klassen. Deze eisen zijn aanvullend ten opzichte van de vastgelegde generieke eisen.

Voor iedere verzameling van objecten die in een dataset voorkomt moet een klasse worden aangemaakt. Of een term X die in een dataset voorkomt een verzameling van objecten aanduidt kan herkend worden door het volgende zinnetje te maken: "Er zijn twee X-en." Wanneer dit zinnetje betekenisvol is hebben we te maken met een klasse. Als voorbeeld nemen we X="gebouw"; het zinnetje wordt dan: "Er zijn twee gebouwen". Dit zinnetje is betekenisvol, dus "gebouw" is een klasse.

Verplichte eigenschappen:

rdfs:subClassOf
Deze relatie geeft aan onder welke generiekere klasse een klasse behoort. Hierbij is het van belang dat de meer specifieke generiekere klasse wordt opgegeven. Het is mogelijk om meer dan één generiekere klasse op te geven, maar dit is meestal niet wenselijk. Iedere klasse moet een generiekere klasse hebben, desnoods kan de meest generieke klasse rdfs:Resource worden gebruikt.

Hier volgt een volledig uitgewerkt voorbeeld van een klasse vastlegging:

brt:Gebouw
  rdfs:seeAlso "https://kadaster.github.io/imbrt/#75-objectklasse-gebouw"^^xsd:anyURI;
  rdfs:subClassOf nen3610:Top10nlObject;
  skos:definition "Vrijstaande, overdekte en geheel of gedeeltelijk met wanden omsloten toegankelijke ruimte of door pilaren ondersteunde dakconstructie, die direct of indirect met de grond is verbonden."@nl;
  skos:prefLabel "Gebouw"@nl;
  skos:scopeNote """
<section lang="nl">
  <h1>Inwinningscriteria</h1>
  <p>Met ingang van april 2020 is het muteren van gebouwen in de BRT gebaseerd op mutaties in de Basisregistraties Adressen en Gebouwen (BAG). Alle mutaties die in de BAG plaatsvinden worden in enigszins gegeneraliseerde vorm overgenomen in de BRT. Als peildatum voor de BAG-mutaties is hierbij 1 juni gebruikt, omdat dit het beste aansluit bij de luchtfoto’s waarmee de andere elementen in de BRT worden bijgewerkt.</p>
  <p>Een gebouw moet een permanent karakter hebben en bedoeld zijn voor verblijf, handel, verkeer en/of arbeid.</p>
  <p>De orthogonale projectie van de uiterste buitenrand inclusief carports en passages (overbouwing van een weg reikend van gebouw tot gebouw, enkel bestaand uit een al dan niet licht doorlatend dak), exclusief luifels, op onderliggend terrein, wegen of water wordt opgenomen. Een stationsoverkapping wordt ingewonnenn als gebouw, een overkapping van alleen een perron op een station wordt niet opgenomen. Bebouwing boven (hoge) poorten maakt onderdeel uit van de opgaande bebouwing. Bebouwing, geheel of gedeeltelijk gelegen over een ander object, wordt als bebouwing aangegeven.</p>
  <p>De minimumgrootte voor een gebouwvlak is 9 m².</p>
  <p>Gebouwen, gelegen onder de projectie van andere gebouwen wordt niet opgenomen. Is echter een deel van het gebouw wel zichtbaar dan wordt het gehele gebouw op basis van interpretatie zo goed mogelijk aangegeven waarbij het gebouwdeel gelegen onder het object een hoogteniveau kleiner dan nul krijgt.</p>
  <p>Twee stukken bebouwing worden samengevoegd indien de afstand tussen de orthogonale projecties 2 meter of minder bedraagt, behalve als er tussen de gebouwen een weg of water voorkomt en als de gebouwen in verschillende rijen van bebouwing staan, gezien vanaf de ontsluitingsweg.</p>
  <p>Uitbouwsels tot plm. 3x3 meter en luifels worden verwaarloosd. Inspringingen tot plm. 3x3 meter worden aangegeven als onderdeel van de bebouwing. Een loopgang of loopbrug wordt als onderdeel van het gebouw opgenomen indien deze 3 meter of breder is. Bij openingen groter dan plm. 3 meter wordt het hierdoor ontsloten binnenterrein wel gegeven, waarna een nieuwe afweging gemaakt wordt of er sprake is van een gebouw dan wel een bebouwd oppervlak.</p>
  <p>Een open gedeelte binnen bebouwing (waarbij loopgangen buiten beschouwing worden gelaten), niet direct bereikbaar vanaf de openbare weg, kleiner dan ongeveer 1000 m² wordt niet opgenomen. Deze regel geldt echter niet voor boerderijen met ommuurde binnenplaats zoals deze in Limburg voorkomen.</p>
  <p>Het al dan niet aangegeven van een gebouw is afhankelijk van de omgeving waarin dit gebouw staat. In een gebied met weinig bebouwing wordt elk gebouw aangegeven (vanwege de oriënterende waarde).</p>
  <p>In een gebied met drukke bebouwing worden gebouwen kleiner dan 50 m² achter de eerste rij gebouwen gezien vanaf de ontsluitingsweg niet opgenomen.</p>
  <p>Boothuizen worden als gebouw ingewonnen.</p>
  <p>Op een volkstuincomplex worden de gebouwen gegeneraliseerd weergegeven.</p>
  <p>Een kas wordt aangegeven als een gebouw van het type kas, warenhuis, indien groter dan 200 m².</p>
  <p>Hooibergen worden niet opgenomen. Echter wordt een carport, al dan niet vrijstaand, wel opgenomen.</p>
  <p>Bij een steeg (nauwe straat binnen bebouwd gebied, smaller dan 2 meter) wordt de weg als vlak i.p.v. als lijn ingewonnen en worden de gebouwen vertekend opgenomen.</p>
  <p>De torens van een stormvloedkering worden als gebouw ingewonnen.</p>
  <p>Een tribune die een geheel vormt met de bebouwing wordt als gebouw ingewonnen.</p>
  <p>Voor bestaande bebouwing gelden, in tegenstelling tot nieuw in te winnen gebouwen, afwijkende inwinregels. Kleinere mutaties in de vorm van het gebouw, zoals een aanbouw of carport, worden bij de actualisering genegeerd. Deze regel is geïntroduceerd vanwege het gebruik van de TOP10NL gebouwen door het CBS en nu nog actief vanwege de komst van de BAG als bron voor de gebouwen in TOP10NL.</p>
  <p>Drijvende bebouwing met het voorkomen van een huis en met een permanente (flexibele) verankering (waterwoning) wordt aangegeven als normale bebouwing. Het onderliggende waterdeel wordt overkluisd gegeven. Woonboten worden, ongeacht de verschijningsvorm, niet aangegeven.</p>
  <p>Loopstallen ten behoeve van stalling van rundvee (ook wel ligboxenstal genoemd), zowel voorkomend met een open als een gesloten (dak)constructie worden als gebouw ingewonnen.</p>
  <p>Op een volkstuincomplex worden de gebouwen gegeneraliseerd weergegeven.</p>
</section>"""^^rdf:HTML.

brt:GebouwRegistratie
  rdfs:subClassOf brt:Registratie;
  skos:definition """
<section lang="nl">
  <p>Een registratie van een <a href="https://brt.basisregistraties.overheid.nl/top10nl/def/Gebouw">gebouw</a>.</p>
</section>"""^^rdf:HTML;
  skos:prefLabel "Gebouw registratie"@nl.

Modelleereisen voor eigenschappen

Linked data eigenschappen worden gebruikt om attributen en relaties mee aan te duiden.

Een attribuut wordt gebruikt om waardes aan objecten te relateren. In linked data zijn deze waardes altijd voorzien van een datatype. Een voorbeeld van een attribuut is de naam van een gegeven. De naam wordt v (datatype: string). Een ander voorbeeld is het aantal inwoners (datatype: natuurlijk getal).

Een relatie wordt gebruikt om objecten aan objecten te relateren. In linked data zijn de gerelateerde objecten gerepresenteerd als IRIs. Een voorbeeld van een relatie is

Verplichte eigenschappen:

rdf:type
Eigenschappen die attributen aanduiden moeten van het type owl:DatatypeProperty zijn. Eigenschappen die relaties aanduiden moeten van het type owl:ObjectProperty zijn.
rdfs:domain
Het domein geeft het type aan van de instanties waarop deze eigenschap wordt toegepast.
rdfs:range
De range geeft het type aan van de waardes die deze eigenschap kan hebben.

Hier volgt een volledig uitgewerkt voorbeeld van een eigenschap die een attribuut aanduidt:

brt:aantalInwoners
  a owl:DatatypeProperty;
  rdfs:domain brt:PlaatsRegistratie;
  rdfs:range xsd:nonNegativeInteger;
  rdfs:seeAlso "https://kadaster.github.io/imbrt/#attribuut-aantal-inwoners"^^xsd:anyURI;
  skos:definition "Het aantal inwoners dat in een plaats woont."@nl;
  skos:prefLabel "heeft aantal inwoners"@nl;
  skos:scopeNote """
<section lang="nl">
  <p>Het aantal inwoners van een topografische bebouwde kom is het totaal van alle mensen die als bewoner op een van de binnen het vlak gelegen adressen geregistreerd staan in de Basisregistratie Personen (BRP) op peildatum 1 juli van het jaar waarin de luchtfoto’s genomen zijn, die gebruikt zijn voor het intekenen van de vlakken.  Omdat voor de vlakbegrenzing de oever van een water als grens is aangehouden, waardoor woonboten langs een oever niet binnen een vlak vallen, is het inwoneraantal van het vlak vermeerderd met de mensen die als bewoner van een woonboot grenzend aan een vlak geregistreerd staan.  Hiervoor is een buffer van 25 meter aangehouden gerekend vanaf de vlakgrens.</p>
  <p>Bij deze telling moet opgemerkt dat niet alle in de BRP geregistreerde inwoners van Nederland gekoppeld zijn aan een adreslocatie.  Het gaat echter om minder dan 0,1% van de in de BRP geregistreerde inwoners die niet bij de berekening wordt meegenomen.</p>
  <p>De berekening en telling van het aantal inwoners van de topografische bebouwde kommen wordt uitgevoerd door het Centraal Bureau voor de Statistiek (CBS), dat toegang heeft tot de BRP-gegevens.</p>
</section>"""^^rdf:HTML.

Hier volgt een volledig uitgewerkt voorbeeld van een eigenschap die een relatie aanduidt:

bag:ligtAan
  a owl:ObjectProperty;
  dct:source "Grondslagen Basis Registratie Adressen versie 2.0"@nl;
  rdfs:domain bag:NummeraanduidingRegistratie;
  rdfs:range bag:OpenbareRuimte;
  rdfs:seeAlso "https://imbag.github.io/catalogus/hoofdstukken/attributen--relaties#7312-relatie-ligt-aan-gerelateerde-openbare-ruimte"^^xsd:anyURI;
  skos:altLabel "heeft gerelateerde openbare ruimte"@nl;
  skos:definition "De unieke aanduiding van een Openbare ruimte waaraan een adresseerbaar object is gelegen."@nl;
  skos:prefLabel "ligt aan"@nl;
  skos:scopeNote "Een adresseerbaar object ligt in een woonplaats."@nl.