MIM - Metamodel Informatie Modellering

Versie 1.2

Geonovum Standaard
Versie ter vaststelling

Deze versie:
https://docs.geostandaarden.nl/mim/vv-st-mim-20240408
Laatst gepubliceerde versie:
https://docs.geostandaarden.nl/mim/mim/
Laatste werkversie:
https://geonovum.github.io/MIM-Werkomgeving/
Vorige versie:
https://docs.geostandaarden.nl/mim/cv-st-mim-20231018
Redacteurs:
Paul Janssen (Geonovum)
Dick Krijtenburg (Geonovum)
Gerard Trouborst (Geonovum)
Auteurs:
Lennart van Bergen (Belastingdienst)
Johan Boer (VNG Realisatie)
Marco Brattinga (Ordina)
Paul Janssen (Geonovum)
Pano Maria (Skemu)
Thies Mesdag (Kadaster)
Doe mee:
GitHub Geonovum/MIM-Werkomgeving
Dien een melding in
Revisiehistorie
Pull requests

Samenvatting

Metamodel voor het beschrijven van informatiemodellen (MIM), versie 1.2.

Met MIM, het Metamodel voor Informatie Modellering, wordt een metamodel beschreven waar informatiemodellen mee gemaakt kunnen worden. Het beschrijft de metaklassen, metastructuur en metagegevens als grondslag voor een informatiemodel. Doel hiervan is standaardiseren van de methode van informatiemodelleren waarmee afstemming tussen informatiemodellen, vergelijkbaarheid in publicatie en gebruik van gemeenschappelijke tooling mogelijk wordt. MIM faciliteert hiermee het ontstaan van een stelsel van samenhangende informatiemodellen.

MIM wordt conceptueel beschreven en hierna uitgewerkt in een aantal modelleertalen, in deze versie uitgewerkt voor een toepassing in UML en in Linked Data. De beschrijving van MIM kent sinds versie 1.1 een algemeen conceptueel deel, een deel in UML en nieuw toegevoegd in versie 1.1 is het hoofdstuk Metamodel in Linked Data (LD). Verder zijn er een aantal nieuwe mogelijkheden toegevoegd die voorzien in gebruikerswensen. Versie 1.1.1 is gebruikt om een verzameling kleine verbeteringen door te voeren.

In versie 1.2 zijn een groot aantal aanpassingen doorgevoerd die vanuit de community waren aangedragen. Tegelijkertijd is er een redactionele slag over het document gegaan om het geheel consistenter te maken. De versielog aan het eind van het document, geeft een overzicht van de aanpassingen.

Status van dit document

Dit is de definitieve conceptversie van dit document. Wijzigingen naar aanleiding van consultaties zijn doorgevoerd.

Voorwoord

Informatie is een belangrijke motor voor het functioneren van de overheid in Nederland. Steeds meer wordt er samengewerkt en uitgewisseld tussen verschillende overheidslagen en instanties. Daarom is het van groot belang dat we hetzelfde verstaan onder de gegevens die we gebruiken en gemeenschappelijke afspraken maken over de wijze van beschrijven van gegevens en de manier waarop we deze uitwisselen.

Bij huidige ontwikkelingen als het Digitaal Stelsel Omgevingswet (DSO) en de Basisregistratie Ondergrond (BRO) komt duidelijk naar voren dat veel gegevensverzamelingen uit verschillende domeinen bij elkaar komen in informatievraagstukken. Daarbij komen ook de wereld van de geografische gegevens en de wereld van de meer administratieve registraties bij elkaar. Dit geeft niet alleen extra mogelijkheden om informatie slim te combineren maar maakt ook een aantal verschillende uitgangspunten zichtbaar in de werkwijze binnen de overheid als het gaat om het modelleren van informatie.

Met het voorliggende MIM-metamodel hebben we een gemeenschappelijk vertrekpunt voor het opstellen van informatiemodellen. Het voorziet enerzijds in duidelijke afspraken die over meerdere bestuurslagen heen gaan over het vastleggen van gegevensspecificaties en biedt anderzijds ruimte aan de verschillende niveaus van modellering.

Versie 1.2 van MIM is uitgebracht om een groot aantal aanpassingen te doen die vanuit de community waren aangedragen. Daarnaast is er een redactionele slag over het document gegaan om het geheel consistenter te maken. Een beknopt overzicht van de aanpassingen met verwijzingen naar de bijbehorende issues zijn terug te vinden in de versielog.

Dick Krijtenburg, Geonovum

1. Inleiding

Voor u ligt het metamodel voor informatiemodellering (MIM), voor het beschrijven van informatiemodellen. Met het metamodel hebben we een gemeenschappelijk vertrekpunt opgesteld voor het maken van informatiemodellen. Het model bevat duidelijke afspraken over het vastleggen van gegevensspecificaties en biedt tegelijkertijd ruimte aan de verschillende niveaus van modellering. Bijzonder aan het model is dat de afspraken over meerdere bestuurslagen heen gaan. Dit document is opgesteld met kennis die is aangedragen door de MIM-community. Kadaster, Geonovum, VNG Realisatie, DUO en andere partijen hebben hun bijdrage geleverd.

1.1 Toepassingsgebied

Het metamodel biedt de modelleringstaal waarmee een informatiemodel gemaakt, gelezen en begrepen kan worden. Het doel hiervan is:

Voor informatiemodellen die op basis van dit metamodel zijn beschreven geldt:

1.2 Doelgroep

Dit document is primair bestemd voor informatiemodelleurs en informatiearchitecten die deze informatiemodellen maken; informatieanalisten die willen weten wat de betekenis en definitie van informatieobjecten is, en mensen die model-driven verder werken op basis van het informatiemodel en er implementaties van maken. Kennis van informatiemodellering is een vereiste. Enige kennis van UML [UML] of [Linked-Data] is een pré maar niet noodzakelijk. Dit metamodel richt zich in het bijzonder op de informatievoorziening binnen het overheidsdomein, al is het ook in bredere context inzetbaar.

1.3 Leeswijzer

Het metamodel beschrijven we in vijf hoofdstukken en een bijlage. Lees de Inleiding verder voor inzicht in wat we onder een informatiemodel en onder een metamodel verstaan, hoe deze modellen zich verhouden tot UML en de vier lagen metamodel architectuur van de Object Management Group [OMG], Linked Data en de internetstandaarden van de W3C en welke overige standaarden worden toegepast.

Het hoofdstuk Metamodel Algemeen bevat de beschrijving van alle bouwstenen c.q. de modelelementen van het metamodel, in de vorm van definities en specificaties. De betekenis en toelichting van de modelelementen van het metamodel vormt het materiaal waarmee een uitputtende modelspecificatie kan worden opgesteld. De afbeeldingen in dit algemene hoofdstuk zijn weliswaar gemaakt in UML, maar het metamodel beperkt zich zeker niet tot UML. Er zijn aparte hoofdstukken voor de implementatie van MIM in UML en Linked Data.

Het hoofdstuk Metamodel in UML beschrijft hoe de implementatie van MIM in [UML] er uit ziet. In dit hoofdstuk wordt beschreven hoe het metamodel zich verhoudt tot het UML metamodel, welke uitbreidingen c.q. verbijzonderingen van het UML metamodel zijn aangebracht.

Het hoofdstuk Metamodel in Linked Data (LD) beschrijft hoe de implementatie van MIM in [Linked-Data] er uit ziet. In dit hoofdstuk wordt beschreven hoe het metamodel zich verhoudt tot het Linked Data metamodel. Daarbij is een strikte vertaling gemaakt. Dit betekent dat het betreffende Linked Data model alleen als MIM model te gebruiken is. Voor een model dat gebruikt kan worden om daadwerkelijk Linked Data in uit te drukken, is een vertaalslag nodig die beschreven is in de bijlage Transformatie MIM - RDFS/OWL/SHACL. Op deze wijze kan een dergelijk RDFS/OWL/SHACL model ook gezien worden als een MIM model.

In het hoofdstuk Afspraken & Regels gaan we in detail in op een aantal aspecten. Het is een uitgebreidere toelichting, in aanvulling op het hoofdstuk Metamodel Algemeen, bestaande uit nadere afspraken, regels, richtlijnen en aanbevelingen bij het toepassen van het metamodel.

Tot slot zijn er een aantal bijlagen beschikbaar. Dit zijn hulpmiddelen of aanvullingen op het MIM.

1.4 Gebruikswijzer

Met de bouwstenen oftewel de modelelementen die in dit metamodel beschreven zijn is een informatiemodel te maken. Om zo'n informatiemodel te maken volstaat het veelal om het hoofdstuk Metamodel Algemeen door te nemen, te kiezen voor modellering met ofwel UML ofwel linked data, en het bijbehorende hoofdstuk te lezen. De andere hoofdstukken kan je behandelen als naslagwerk, voor als er tijdens het modelleren vragen ontstaan. Neem vervolgens uw favoriete modelleertool en ga aan de slag. Voor bepaalde modelleertools zijn er hulpmiddelen gemaakt, zodat je met deze hulpmiddelen de modelelementen kan aanmaken door erop te klikken en bijvoorbeeld naar een diagram kan slepen en ook kan valideren of je model correct het MIM volgt (wat automatisch gaat als je de hulpmiddelen gebruikt). Tot slot is het mogelijk om naar informatiemodellen te kijken van organisaties die al een MIM informatiemodel hebben gepubliceerd. Voor specifieke modelleringen en vragen zullen er ook uitgewerkte voorbeelden worden gemaakt.

1.5 Wat is een informatiemodel

Wanneer we informatie over bepaalde onderwerpen willen inwinnen, registreren of uitwisselen, dan is het van belang om deze informatie eerst goed te beschrijven. We doen dit zodat het voor eenieder die met de informatie aan de slag gaat helder en eenduidig is:

We doen dit door een model te maken van de informatie. Een informatiemodel beschrijft daarom de structuur, semantiek en de eigenschappen van informatie over dingen in de werkelijkheid. De beschrijving van de informatie heeft de vorm van een model dat een gestructureerde weergave is van die werkelijkheid. Een dergelijk model is noodzakelijk om deze informatie te kunnen beheren en gebruiken (door mensen en machines) bij het communiceren over deze werkelijkheid, in registraties of anderszins, zoals het specificeren van de tussen registraties uit te wisselen gegevens of van de te bevragen informatie uit een registratie.

1.5.1 Modelbeschrijving

Het beschrijven vindt plaats door de informatie van de objecten die we beschouwden te modelleren als informatieobjecten, met hun kenmerken en hun onderlinge relaties. Aan de hand van een voorbeeld werken we dit principe verder uit.

1.5.2 Belangrijke aandachtspunten

Merk op dat we hier veelal spreken over een registratie, omdat dit in de praktijk vaak voorkomt. Er zijn echter ook toepassingen van een informatiemodel waarin er alleen gegevens worden uitgewisseld, bijvoorbeeld in berichtenverkeer, of waarbij er sprake is van gewoon de beschrijving van informatie, ongeacht of deze wel of niet in een registratie is opgenomen. Alleen onderwerpen van gesprek, kenmerken en relaties die relevant zijn voor een bepaald domein worden in het informatiemodel beschreven, zoals gebouwen binnen het domein Basisregistratie Topografie en personen binnen het domein Basisregistratie Personen. Een domein kan van alles zijn maar in het kader van MIM gaat het om (beleids-)sectoren die omwille van bestuurlijke en beheersmatige redenen geïdentificeerd en georganiseerd zijn. Voorbeelden: omgevingswet, grootschalige topografie, kadastrale informatie of gemeentelijk domein.

Het is de bedoeling dat een informatiemodel de betekenis en definitie van de informatie zelf beschrijft, onafhankelijk van een mogelijke (technische) implementatie of toepassingsomgeving. Zodat het primair helder is wat de informatie betekent, ongeacht waar je deze informatie tegenkomt en ongeacht de gebruikte techniek. Anders gezegd: in koppelvlakken, ketens en implementaties is het vrij om elk technisch uitwisselingsformaat (of bijvoorbeeld database-technologie) te kiezen, door het informatiemodel daarin uit te drukken. Er worden geen regels toegepast die gerelateerd zijn aan de manier waarop de gegevens ingewonnen, opgeslagen, beheerd en uitgewisseld worden.

De opname in een registratie kent vaak een inwinningsproces om gegevens conform het informatiemodel in de registratie op te nemen. Dit is een belangrijk proces, maar valt buiten scope van het informatiemodel (scheiding proces en informatie, het proces is niet in scope van deze standaard).

1.6 Typering van modellen gekoppeld aan beschouwingsniveaus

Bij het modelleren van een domein zijn er een aantal beschouwingsniveaus, variërend van een zo getrouw mogelijke beschrijving van de betekenis en bedoeling van de woorden en termen die mensen gebruiken als ze het ergens over hebben tot een specificatie van de wijze van registratie en uitwisseling van data. In het MIM onderscheiden we variaties in vier verschillende beschouwingsniveaus. Dit is vooral bedoeld om de scope van MIM duidelijk af te bakenen. Het MIM concentreert zich namelijk op het tweede en derde niveau. Hieronder lichten we de verschillende niveaus verder toe.

De modellering van een bepaald domein start in principe met het beschrijven van kennis, te weten de begrippen die een rol spelen in een domein, uitgedrukt in een (meestal) domein specifieke terminologie. In MIM wordt dit beschouwingsniveau 1 genoemd en voor MIM heeft dit niveau 1 niet de focus en is dit niveau buiten scope. Op dit niveau is de notie van welke informatie er geregistreerd en uitgewisseld moet worden nog niet aanwezig of op de achtergrond. Op dit niveau is er nog geen sprake van een informatiemodel, omdat deze modellen kennis modelleren en zich (nog) niet richten op het modelleren van informatie (informatie, zoals bedoeld in Wat is een informatiemodel).

Het modelleren van informatie gebeurt met en in een informatiemodel. Hierin wordt aangegeven welke objecten welke kenmerken/eigenschappen hebben en of deze kenmerken/eigenschappen in het toepassingsdomein verplicht zijn of optioneel zijn enzovoorts. Het informatiemodel geeft hierbij aan welke informatie wordt geregistreerd of uitgewisseld kan worden. Het beschrijft alle informatie, en het beschrijft ook niet meer dan dat. Hierbij kan er ook gekozen worden om het domein onder te verdelen in meerdere informatiedomeinen en voor elk informatiedomein scherp te definiëren welke informatieobjecten in scope zijn en welke niet. In MIM valt een informatiemodel onder beschouwingsniveau 2 of 3. Het informatiemodel is hierbij altijd techniek onafhankelijk.

Het informatiemodel kan vervolgens uitgewerkt worden in verschillende soorten technische datamodellen en schema's (zoals XML of JSON of specifieke invullingen hiervan). In MIM wordt dit beschouwingsniveau 4 genoemd. Dit niveau heeft voor MIM niet de focus en valt buiten de scope. Wel staat MIM een model-gedreven werkwijze voor waarbij de modellen van niveau 4 gegenereerd kunnen worden vanuit niveau 2 of 3.

Hoewel MIM zich primair richt op de beschouwingsniveaus 2 en 3 is het van belang om alle vier de niveaus te definieren en de relatie tussen de niveaus aan te geven. Elk niveau heeft een eigen type model.

1.6.1 Beschouwingsniveau 1 - Model van begrippen

Dit niveau beschrijft de werkelijkheid binnen het beschouwde domein (de ‘universe of discourse’) door middel van de beschrijving van de daarin gehanteerde begrippen en hun relaties tot elkaar. Een model van begrippen beschrijft de informatieinhoud van dit niveau. Een begrip wordt ook wel een concept genoemd, iets waar mensen aan denken en over praten. Er zijn verschillende manieren om begrippen te beschrijven, zoals in een woordenboek, of in een formele taal of vocabulaire, of in een taxonomie of in een model van begrippen waarin de onderlinge samenhang is aangegeven en er zijn nog andere manieren - maar geen van allen zijn een informatiemodel.

Het doel is dat actoren binnen een domein elkaar begrijpen en dezelfde taal spreken. Een model van begrippen wordt opgesteld voor gebruik door mensen, met name ‘de business’.

Dit niveau valt niet binnen de scope van MIM en wordt om die reden slechts beknopt beschreven. Het dient vooral ter afbakening van de scope. Er kan meer in zitten dan hier beschreven en er gaat meer aan vooraf. Ten aanzien van begrippen en informatiemodellen en het verschil hiertussen zijn de belangrijkste punten:

  • Een begrip is de combinatie van een term of woord en een definitie. Begrippen worden door mensen gebruikt om mentaal de werkelijkheid te beschouwen en te begrijpen. Het is zeker niet zo dat elk begrip terugkomt in het conceptueel informatiemodel (zie ook de opmerking in de volgende paragraaf).
  • Van een aantal begrippen ('concepten') zal later blijken dat het een eigenschap is van een object waarover we informatie zullen gaan bijgehouden, maar dit zal zeker niet voor alle begrippen zo zijn, begrippen beschrijven een domein vaak veel breder dan een informatiemodel dit doet. Een aantal begrippen zullen in het informatiemodel beschouwd gaan worden als informatieobjecten, een aantal begrippen worden een kenmerk/eigenschap van deze informatieobjecten, en een heel aantal begrippen zullen geen rol spelen in het informatiemodel omdat er geen data van is of komt.
  • Voor het bijhouden van informatie wordt een gedetailleerde eenduidige structuur en betekenis aangebracht die data gericht is, maar bij het modelleren van begrippen wordt dit nog niet gedaan. De samenhang tussen informatie is hierbij vaak (bewust) beperkter dan de samenhang tussen begrippen.

1.6.2 Beschouwingsniveau 2 - Conceptueel informatiemodel

Op dit niveau wordt de informatie beschreven (data met betekenis en structuur) die een rol speelt in werkelijkheid binnen het beschouwde domein. Het conceptuele informatiemodel bevat deze informatie. Het model is hierbij onafhankelijk van het ontwerp van en de implementatie in systemen. Het geeft een zo getrouw mogelijke beschrijving van die werkelijkheid en is in natuurlijke taal geformuleerd.

Een conceptuele informatiemodel richt zich speciefiek op de semantiek van dingen en hun eigenschappen. Het definieert het ‘wat’: welke 'onderwerpen van gesprek' ('concepten', 'dingen’) worden onderscheiden in de beschouwde werkelijkheid, wat betekenen zij, hoe verhouden ze zich tot elkaar en welke informatie is daarvan relevant. Deze informatie wordt gemodelleerd als informatieobjecten met eigenschappen/kenmerken, oftewel waarover data beschikbaar is (of zal zijn) en wordt ondergebracht in een informatiemodel. Dit informatiemodel dient als taal waarmee domeinexperts kunnen communiceren met informatieanalisten en verschaft een eenduidige interpretatie van die werkelijkheid ten behoeve van deze communicatie.

Met conceptueel wordt niet bedoeld abstract of hoog over, de beschrijvingen van de informatie die beschikbaar is zijn heel precies en concreet.

Een conceptueel informatiemodel wordt opgesteld voor gebruik door mensen, zodat ‘de business’ en de ICT-specialisten elkaar (gaan) begrijpen voor wat betreft de informatie die in het domein wordt geregistreerd en/of kan worden uitgewisseld.

Dit niveau is volledig in scope van MIM.

Ten aanzien van het begrippenmodel:

  • De onderwerpen van gesprek, eigenschappen en relaties uit het conceptueel informatiemodel hebben een relatie met één of meerdere begrippen uit het begrippenmodel: zo is duidelijk welke begrippen (met betekenis) er gebruikt zijn bij het modelleren van de informatie die we willen weten over de onderwerpen van gesprek, zoals gemodelleerd in het conceptueel informatiemodel.
  • Het is niet zo dat elk begrip uit een begrippenmodel terug moet komen in het conceptueel informatiemodel. Bijvoorbeeld omdat we niet geïnteresseerd zijn in informatie hierover. De direct gerelateerde begrippen zijn van invloed op de betekenis van de informatie. De anderen begrippen zijn minder relevant. Hoewel sommige begrippen die indirect gerelateerd zijn aan de gemodelleerde informatie alsnog wel handig kunnen zijn voor het nog wat beter begrijpen van de gemodelleerde informatie.

Ten aanzien van logische informatiemodellen:

  • Een conceptueel informatiemodel is onafhankelijk van standaarden voor gegevensuitwisseling. Een logisch informatiemodel past deze wel toe (denk aan identificaties, geometrie versies, tijdlijnen van historie)
  • Een conceptueel informatiemodel beschrijft de informatie in een informatiemdomein en is onafhankelijk van een koppelvlak of keten, oftewel is keten of koppelvlak overstijgend. Een logisch informatiemodel is specifiek voor een koppelvlak of keten of een bepaalde toepassing (met bijbehorende implementatie, database en interfaces).

1.6.3 Beschouwingsniveau 3 - Logisch informatie- of gegevensmodel

Op dit niveau wordt beschreven hoe concepten gebruikt worden bij de interactie tussen systemen en hun gebruikers en tussen systemen onderling. Anders gezegd, een model van de representatie van informatie over de werkelijkheid in digitale registraties en in de uitwisseling daartussen. Het logische informatiemodel of het gegevensmodel modelleert dit niveau. Het gaat hierbij, in tegenstelling tot een conceptueel model, dus veel meer om het ‘hoe’. Het slaat de brug tussen werkelijkheid en systemen maar beschrijft nog niet de implementatie in die systemen. Een dergelijk model wordt in een formele taal beschreven en wordt waar mogelijk gegenereerd vanuit het conceptueel model.

Het logisch model wordt opgesteld voor ICT-interoperabiliteit, voor gebruik door met name de ontwerpers, ontwikkelaars en beheerders van ICT-voorzieningen.

Dit niveau is volledig in scope van MIM.

Ten aanzien van fysieke of technische datamodellen:

  • Een logisch informatiemodel is implementatie onafhankelijk en kan in meerdere technische modellen of formaten worden geïmplementeerd. Een fysiek of technisch datamodel is afhankelijk van de gekozen techniek of tooling die wordt gebruikt en wordt daadwerkelijk technische geïmplementeerd.

1.6.4 Beschouwingsniveau 4 - Fysiek of technisch gegevens- of datamodel

Op dit niveau wordt de structuur en eigenschappen van de technologie beschreven waarin de informatie wordt vastgelegd of uitgewisseld. Dit is sterk afhankelijk van de gebruikte opslagtechnologie zoals een specifieke database of de servicetechnologie zoals [xml], [gml], [SOAP], REST, [GeoJSON], [Linked-Data] e.d. Een technisch gegevensmodel kan tevens informatie bevatten over de manier waarop berichten ‘verpakt’ worden, het (internet)protocol en de logistiek van het berichtenverkeer. De technische specificaties worden over het algemeen zoveel als mogelijk gegenereerd uit het logisch informatiemodel.

Deze specificaties worden opgesteld voor ‘machines’, te gebruiken door softwareontwikkelaars.

Dit niveau is niet in scope van MIM. Dit niveau is niet volledig beschreven maar is ter illustratie in deze paragraaf opgenomen. Er kan meer in zitten dan hier beschreven en er kan meer na volgen.

1.6.5 Aanvullende opmerkingen bij de onderkende beschouwingsniveaus en gebruik van verschillende typen modellen.

  • In algemeenheid geldt dat het begrijpen van onderwerpen of dingen die een rol spelen in een 'universe of discourse' altijd vooraf gaat aan de modellering ervan, welk niveau deze modellering ook betreft en welke typen modellen je besluit om wel of niet toe te maken of op te leveren.
  • Deze standaard geeft niet normatief een volgorde of werkwijze aan voor de invulling van de 4 niveaus. Je kan bijvoorbeeld besluiten om wel of niet begrippen te definiëren en/of te modelleren. Wanneer je dan later een informatiemodel gaat maken dan is het nuttig om deze hierbij mee te nemen als input en hiermee consistent te blijven. Let wel, de definities op beide niveaus zijn niet altijd hetzelfde. De definitie in het informatiemodel moet soms preciezer zijn om preciezer de betekenis van de geregistreerde of uitgewisselde data te definiëren.
  • Het voorliggende metamodel voor het modelleren van informatie (MIM) is bedoeld voor de informatiemodellen voor beschouwingsniveau 2 en 3: t.b.v. een conceptueel informatiemodel (2) en t.b.v. een logisch informatiemodel (3). Het moge duidelijk zijn dat het altijd het één of het ander is, conceptueel of logisch. Een combinatie van beide in één model leidt tot verwarring. Voor eenzelfde domein verschilt de structuur van het informatiemodel naar gelang het type en bevat het logisch informatiemodel meer, vooral datagerichte, specificaties dan een conceptueel informatiemodel.
  • 6.1.2 Modelelementen en metagegevens als diagram verschaft een overzicht van de metadata-constructen en -elementen die per type model van toepassing zijn. Het is daarom van belang om voorafgaand aan het opstellen van een informatiemodel expliciet te bepalen welk van beide typen beoogd is en de modellering conform het gekozen type toe te passen. In de beschrijving van het informatiemodel moet vermeld worden om welk van beide typen het gaat: conceptueel of logisch.
  • Het is voor de hand liggend maar niet persé noodzakelijk om voor een domein eerst een conceptueel en daarna een logisch informatiemodel op te stellen. Met name bij een informatievoorziening waarbij er meerdere koppelvlakken en/of doelgroepen betrokken zijn met elk eigen informatiebehoeftes is het aan te bevelen om eerst een conceptueel informatiemodel te maken, zonder zich al te richten naar een specifiek koppelvlak of een specifieke doelgroep. Wanneer alle logische informatiemodellen een correcte uitwerking zijn van het conceptuele informatiemodel dan zijn ze allemaal naar elkaar transformeerbaar via transformatiespecificaties.
  • Een organisatie kan er voor kiezen om alleen een logisch informatiemodel op te stellen of om een conceptueel informatiemodel als basis te nemen en enkel uit te breiden met logische aspecten.

1.7 Wat is het metamodel voor informatiemodellering

Een metamodel is een model van een model. Het definieert een verzameling van modelleerconstructies in de vorm van bouwstenen, oftewel modelelementen zoals een objecttype, relatiesoort en attribuutsoort, met bijbehorende betekenis en met bijbehorende afspraken omtrent hoe deze toe te passen. Hiermee kan vervolgens een informatiemodel gemaakt worden. Een metamodel en dus ook het MIM is daarmee de modelleertaal waarin een informatiemodel is uitgedrukt. Deze metataal beschrijft als het ware de grammatica en de syntax van de modelleertaal.

Vaak zie je dat het metamodel niet expliciet beschreven is en dat het metamodel een onderdeel van de domeinkennis is geworden. De syntax en de gramatica zit dan alleen in de hoofden van mensen en wordt impliciet toegepast in informatiemodellen. Bij domein overstijgende harmonisatie wordt het dan moeilijk om modellen met elkaar te vergelijken en op basis daarvan gegevens uit te wisselen. Beschrijving van het metamodel is daarom een randvoorwaarde indien er sprake is van een stelsel van samenhangende informatiemodellen. Anders gezegd, met (alleen) de in het metamodel opgenomen set van modelleerconstructies worden informatiemodellen gemaakt. Door het beschrijven van modelleertalen (zoals [UML]) in een metataal (zoals MOF) wordt gegarandeerd dat alle toepassingen van die talen op een standaard manier zijn opgebouwd en daardoor alom toe te passen en te begrijpen zijn. De metataal beschrijft als het ware de grammatica van de modelleertaal. Het metamodel in dit document, het MIM, is uitgewerkt voor modellering met UML en voor modellering met linked data.

1.8 Uitdrukken in UML

Zowel het metamodel als informatiemodellen kunnen worden uitgedrukt in UML. Registraties en afnemers hiervan kunnen deze gebruiken voor de inrichting van hun situatie specifieke gegevenshuishouding. Belangrijk is dat de lezer eerst begrijpt wat we onder een informatiemodel en een metamodel verstaan en verder is het van belang om de modellen in de juiste context te plaatsen. Dit laatste doen we aan de hand van de vier lagen metamodel architectuur van de Object Management Group [OMG]. In deze paragaaf gaan we op deze concepten in.

Vier lagen metamodel architectuur OMG
Voor de specificatie van het MIM is gebruik gemaakt van dezelfde formele taal als waarin informatiemodellen kunnen worden beschreven, namelijk UML. Het metamodel van deze informatiemodellen is een uitbreiding op het basale UML-metamodel.

Het basale UML-metamodel is een metamodel dat onderdeel uitmaakt van de vier lagen metamodel architectuur van OMG namelijk M0, M1, M2 en M3.

Metaniveau Omschrijving Elementen
M3 MOF, verzameling van constructies voor definiëren van metamodellen MOF klasse, MOF attribuut, MOF Associatie, MOF operatie, etc.
M2 Metamodellen (UML, CWM, etc.), bestaande uit instanties van MOF constructies UML klasse, UML associatie, UML attribuut, etc.
M1 Modellen, bestaande uit instanties van M2 metamodel constructies Klasse “Order”, klasse “Klant”, attribuut “naam” etc.
M0 Objecten en data, de instanties van M1 model constructies Order 43123, Artikel 8RB31, etc.

Tabel 1 Vier lagen metamodel OMG

Elke laag is een instantie van de laag daarboven (met uitzondering van de M3 laag) en maakt gebruik van in de naast hoger gelegen laag gespecificeerde uitdrukkingsmogelijkheden teneinde een specificatie in een andere laag te vormen. De M3 laag definieert de basisconstructies, de taal waarin de onderliggende laag is uitgedrukt. Metamodel Meta Object Facility (MOF) is een voorbeeld van een M3 laag. MOF is de basislaag voor de UML laag. De metamodel laag (M2) is een instantie van de M3 laag. Op deze laag bevindt zich onder meer het metamodel UML. M.a.w. UML is een instantie van MOF. Deze laag is taaltechnisch rijker dan de M3 laag. De M2 laag definieert de semantiek en syntax van de modelconstructies in de M1 laag. De M1 laag is de laag waarop zich het informatiemodel bevindt om een bedrijfscontext modelmatig te beschrijven. Deze M1 laag is een instantie van de M2 laag. Tenslotte is er nog de M0 laag waarop zich de objecten en data bevinden, de instanties van de M1 modelconstructies die een representatie van de concrete werkelijkheid op een specifiek tijdsmoment vormen.

Het MIM in UML is een UML profiel op basis van het UML metamodel en bevindt zich op de M2-laag. Het UML metamodel is daarbij uitgebreid met speciale elementen, die geen onderdeel uitmaken van het basale UML-metamodel (M2). Deze nieuwe elementen zijn noodzakelijk voor het definiëren van de semantiek en syntax van de modelconstructies zoals we die in onze informatiemodellen hanteren. De informatiemodellen waarover we het hier in dit document hebben bevinden zich op de M1-laag, het maakt daarbij niet uit of het een conceptueel- of logischmodel betreft.

Het UML metamodel (M2) is een ‘read only’ model. Dat wil zeggen dat we geen bestaande metaclass mogen wijzigen en geen nieuw basis metaclass als alternatief voor een bestaande UML metaclass mogen specificeren. Maar via Profiles (van de InfrastructureLibrary) kunnen bestaande metaclasses uitgebreid worden zonder dat er nieuwe metaclasses gedefinieerd hoeven te worden en dus zonder aanpassing van het basale UML-metamodel (M2). De extensiemechanismen hiervoor zijn stereotypes, tagged values en constraints.

Nadrukkelijk moet daarbij worden vermeld dat het MIM metamodel geen semantiek overneemt van UML. Met het uitdrukken van het MIM metamodel in een UML profiel wordt het alleen mogelijk gemaakt om, zonder verlies van de originele semantiek van het MIM, een MIM model uit te drukken in UML. Met dit gebruik van een UML profiel volgen wij het gebruik van een UML profiel zoals de OMG heeft op gesteld voor het Ontology Definition Metamodel [ODM]:

The goal of a UML profile from the ODM perspective is to provide a bridge between the UML and knowledge representation communities on a well-grounded, semantic basis, with a broader goal of relating software and logical approaches to representing information. Profiles facilitate implementation using common notation on existing UML tools. They support renaming and specializing UML model elements in consistent ways, so that an instance of a UML model can be seen as an extended metamodel. Profiles allow a developer to leverage UML experience and tools while moving to integrating with an ontology represented in another metamodel." (sectie 8.4.2).

1.9 Uitdrukken in Linked Data

Zowel het metamodel als informatiemodellen kunnen worden uitgedrukt in Linked Data. Registraties en afnemers hiervan kunnen deze gebruiken voor de inrichting van hun situatie specifieke gegevenshuishouding. Belangrijk is dat de lezer eerst begrijpt wat we onder een informatiemodel en een metamodel verstaan en verder is het van belang de modellen in de juiste context te plaatsen. Dit laatste doen we aan de hand van de W3C open standaarden voor het specificeren van een ontologie.

Linked Data geeft een specifieke invulling aan de niveaus waarin we begrippen, informatie beschrijven:

  1. Beschouwingsniveau 1: model van begrippen wordt in Linked Data uitgedrukt met behulp van vooral de SKOS vocabulaire.
  2. Beschouwingsniveau 2: conceptueel informatiemodel wordt in Linked Data uitgedrukt met behulp van een metamodel vocabulaire. Deze vocabulaire, het metamodel van het informatiemodel, kan een eigen vocabulaire zijn (zoals de MIM-vocabulaire) of uitgaan van de bestaande vocabulaires. In deze laatste situatie, is het conceptueel informatiemodel ook direct een logisch informatiemodel.
  3. Beschouwingsniveau 3: logisch informatiemodel wordt in Linked Data uitgedrukt met behulp van de standaard vocabulaires RDF/RDFS ([RDF11-PRIMER]), OWL ([OWL2-PRIMER]) en [SHACL]. Daarbij geldt dat dit logisch informatiemodel OOK een conceptueel informatiemodel is. Doordat in Linked Data de representatie van informatie is gestandaardiseerd op basis van het RDF model, is er feitelijk geen of nauwelijks verschil tussen het conceptueel of logisch informatiemodel.

Indien een MIM model wordt getypeerd als "logisch informatiemodel" dan kan dit model slechts zinvol in Linked Data worden uitgedrukt indien bij de opzet van dit model rekening gehouden is met de betekenis die dergelijke modelelementen in de standaard Linked Data vocabulaires hebben. Zie hiervoor de bijlage Transformatie van MIM modellen. Voor modellen die zowel een UML als een Linked Data implementatie vereisen kan beter gekozen worden voor het type "conceptueel informatiemodel".

1.9.1 Een ontologie voor het metamodel

Met een ontologie bedoelen we een model waarin we betekenis geven aan de termen die in een specifiek domein worden gebruikt. In geval van het MIM metamodel betreft dit het MIM-domein zelf. We geven betekenis aan de termen door enerzijds een voor mensen leesbare definitie te koppelen aan een term (de "zachte semantiek") en anderzijds door relaties te leggen naar eerder gedefinieerde termen of relaties tussen termen in onze ontologie (de "harde semantiek"). We maken hierbij vooral gebruik van de bestaande wereldwijd geaccepteerde internetstandaarden RDF, RDFS, SKOS en OWL. Daarnaast beschrijven we ook welke constructies we wel en niet willen toestaan op het moment dat een modelleur een MIM model in Linked Data opstelt. Hiervoor maken we gebruik van de wereldwijd geaccepteerde internetstandaard SHACL.

1.9.2 Een informatiemodel

Het (conceptueel) informatiemodel zien we als een invulling van de MIM ontologie. Dit betekent dat de elementen in het informatiemodel exemplaren zijn van de klassen die in de MIM ontologie zijn gedefinieerd. Zo is onderstaand voorbeeld een voorbeeld waarin het modelelement vb:Schip wordt gedefinieerd als exemplaar van de klasse mim:Objecttype. Een vb:Schip is dus een mim:Objecttype.

vb:Schip a mim:Objecttype;
  rdfs:label "Schip"@nl;
.

1.9.3 Een ontologie voor een informatiemodel

Omdat een informatiemodel als invulling van de MIM ontologie zelf al exemplaren betreft, is het niet direct mogelijk om op basis van dit informatiemodel ook daadwerkelijk Linked Data in uit te drukken. Hiervoor is het nodig om de exemplaren uit het MIM informatiemodel zelf te transformeren, te "promoveren", naar klassen. Zo is onderstaand voorbeeld een voorbeeld van de transformatie van het exemplaar vb:Schip naar de klasse vbo:Schip. Vervolgens is het mogelijk om exemplaren van deze klasse te specificeren, zoals bijvoorbeeld de pakjesboot van Sinterklaas.

vbo:Schip a rdfs:Class;
  rdfs:seeAlso vb:Schip;
.

vb:Pakjesboot12 a vbo:Schip.

Een informatiemodel uitgedrukt in Linked Data wordt geacht te voldoen aan het MIM als sprake is van één of beide van onderstaande criteria:

  1. Het informatiemodel is uitgedrukt in de MIM vocabulaire, zoals beschreven in 4. Metamodel in Linked Data (LD);
  2. Het informatiemodel is uitgedrukt in RDF, RDFS, OWL en SHACL en is te transformeren naar de MIM vocabulaire op basis van de transformatieregels beschreven in bijlage, 6.4 Transformatie MIM - RDFS/OWL/SHACL.

1.10 Een eigen extensie op het metamodel

Indien er extra metamodelconstructies nodig zijn voor een informatiemodel, zoals een extra metamodel element of extra metagegevens, dan kan dit metamodel uitgebreid worden met een aanvulling oftewel extensie (in de vorm van een extra bijlage) die door de betreffende organisatie toegevoegd wordt aan het onderhavige document.

De spelregel bij een extensie is dat deze geen onderwerpen vervangt die in dit metamodel beschreven zijn, maar alleen echte uitbreidingen omvat. Indien meerdere organisaties hierin geïnteresseerd zijn, kan een modelelement uit een extensie ook toegevoegd worden aan dit metamodel.

Het is ook mogelijk om in de extensie aan te geven welke elementen uit dit metamodel niet ingezet worden in een informatiemodel. Denk hierbij bijvoorbeeld aan een bepaald modelelement die niet gebruikt wordt. Of aan bepaalde metadata aspecten die niet ingewonnen worden voor specifieke domein informatiemodellen en daarom buiten scope worden geplaatst (ongeacht of deze optioneel of verplicht zijn in MIM).

Een extensie wordt door een domein zelf en dus buiten MIM beheerd. Voor meer informatie over een specifieke extensie kan contact opgenomen worden met de beheerder van deze extensie. Wanneer meerdere organisaties gebruik willen maken van metamodel constructies die in extensies beschreven zijn dan kan er gekeken worden of het wenselijk is om deze op te nemen in MIM. Desgewenst kan een extensie gepubliceerd worden bij MIM-beheer of kan ernaar verwezen worden vanuit MIM-beheer.

Noot: Scope van extensies op het metamodel informatiemodelleren

1.11 Alternatieven

In het MIM is op één punt sprake van een keuze tussen twee modelleringsalternatieven, waarvan de modelleur van een informatiemodel één van beide alternatieven kiest. Welke toegepast is wordt aangegeven. Dit betreft: Relatiesoort en relatierol, beide te gebruiken, maar welke is verplicht/leidend 3.2.2 Relaties in UML. Indien gewenst kun je hier vragen over stellen aan de beheerders van MIM voordat je een keuze maakt.

1.12 Beheer

Het beheer van het MIM vindt plaats door Geonovum met ondersteuning van het Kadaster. Voor vragen, suggesties of opmerkingen kunt u contact opnemen met de MIM helpdesk van Geonovum: mim@geonovum.nl

1.13 Normreferenties

# Naam Referentie
1. Unified Modeling Language (UML) [UML]
2. OMG Unified Modeling Language TM versie 2.5 [OMG]
3. RDF Concepts and abstract syntax [RDF11-CONCEPTS]
4. Shape Constraint Language [SHACL]
5. Stelselcatalogus [SCAT]
6. GAB [GAB]
7. Handreiking gegevensbeschrijving (NORA) [NORA]
8. ISO 11404 [ISO-11404]
9. ISO 8601 [ISO-8601]
10. Formeel patroon (Reguliere Expressies) [PERLRE]
11. OCL [OCL]
12. NEN 3610 Basismodel Geo-informatie (vanaf /A1:2016) [NEN3610]

De Stelselcatalogus [SCAT], het GAB [GAB] en de Handreiking gegevensbeschrijving [NORA] raken elkaar op een aantal vlakken maar er kunnen op deze raakvlakken verschillen zijn in de gemaakte afspraken. Voor het metamodel hanteren we daarom de volgende spelregel: de Stelselcatalogus is zoveel als mogelijk leidend, vervolgens het GAB en als laatste de handreiking.

Noot: Versienummer normreferenties

2. Metamodel Algemeen

Dit hoofdstuk beschrijft de modelelementen van het MIM voor het maken van een informatiemodel. De eerste paragraaf bevat enkele diagrammen die een overzicht geven van de modelelementen die op metamodelniveau worden onderkend en hun onderlinge verhouding. De paragraaf geeft een algemene beschrijving van alle modelelementen, dat wil zeggen: onhankelijk van een modelleertaal. Wanneer u liever de beschrijvingen eerst leest, kunt u ook met de paragraaf objecttypen en attribuutsoorten beginnen. De laatste paragraaf bevat de metagegevens die worden bijgehouden over de modelelementen in een informatiemodel.

Ter illustratie van de relatie tussen een metamodel en een informatiemodel: in de Basisregistratie Kadaster (BRK) wordt een Perceel gemodelleerd als een «Objecttype». De grens van een perceel wordt gemodelleerd als een «Attribuutsoort». «Objecttype» en «Attribuutsoort» zijn de modelelementen uit het MIM. Perceel en grens zijn de modelleringen op het niveau van het specifieke informatiemodel. In dit geval de BRK. Door Perceel een «Objecttype» te noemen en grens een «Attribuutsoort», is aangegeven hoe ze geïnterpreteerd moeten worden.

2.1 Uitgangspunten voor het metamodel

Het metamodel informatiemodellering hanteert een aantal uitgangspunten die aan de basis ligt van de totstandkoming en het gebruik van het model.

  1. Elk modelelement heeft een naam en een eigen MIM-metaclass, waaraan je het modelelement overal kan herkennen.
  2. De modelelementen worden eerst uitgelegd zonder een specifieke modelleertaal te gebruiken. Dit is zodat we hierna kunnen aangeven hoe je het modelelement uitdrukt per specifieke modelleertaal, te weten in UML of in W3C-specificatietechnieken.
  3. Een toolonafhankelijke beschrijving van het metamodel. Wel is er, omdat VNG Realisatie, Kadaster en Geonovum en veel andere organisaties Sparx Enterprise Architect gebruiken, aanvullend aangegeven hoe het metamodel in Enterprise Architect toegepast wordt. Hiermee borgen we deze relatie.
  4. Uniforme toepassing van het metamodel in informatiemodellen. Anders gezegd, uitbreiden mag, afwijken niet. Maak voor hetzelfde doel geen alternatieve constructies.
  5. Datatypen zijn onderdeel van het metamodel en beschrijven de structuur van de data, maar niet de semantiek/betekenis. De aanbeveling is dan ook om eerst een informatiemodel te maken zonder datatypen. De regel is dat als alle datatypen uit het model worden weggelaten, er geen semantische betekenis verloren mag gaan.

Hierna volgen eerst diagrammen met een overzicht van de modelelementen. In de paragrafen erna wordt de betekenis van elk van deze modelelementen beschreven met een definitie en een toelichting en een voorbeeld. Tot slot volgt een paragraaf met metadata die bijgehouden wordt, of kan worden, bij een modelelement.

2.2 Structuur metamodel

Deze paragraaf bevat een overzicht van het MIM, en geeft alle modelelementen weer. De beschrijving van de modelelementen staat in de volgende paragraaf. De modelelementen zijn verdeeld over een aantal diagrammen, die elk een eigen view op een deel van het metamodel tonen. Elk view toont een aantal van de modelelementen, inclusief hun onderlinge samenhang. Alle views samen vormen het metamodel als geheel:

Elk modelelement heeft een «MIM metaclass» met een naam. Hieraan is elk modelelement te herkennen in alle diagrammen, in de tekst én in elke modelleertaal die een uitdrukking is van dit metamodel. Bij de modelelementen zijn in deze diagrammen geen beschrijvende kenmerken opgenomen (bijvoorbeeld metagegevens zoals: naam, definitie, enzovoorts). In bijlage 6.1 Diagrammen zijn deze wel opgenomen.

2.2.1 Modelelement

De klasse modelelement is de superklasse van alle metaklassen in het MIM-metamodel.

Toelichting: De identiteit van een modelelement wordt bepaald door zijn identificatie. Modelelement heeft een algemene definitie die zowel op metamodel- als op modelniveau geldt. Voor een metamodel beschrijft een modelelement een klasse van modelelementen, een metaklasse. Alle metaklassen in het MIM zijn modelelementen zoals bijvoorbeeld «MIM metaclass»: Objecttype, «MIM metaclass»: Attribuutsoort, «MIM metaclass»: Generalisatie. De metagegevens van de metaklassen worden niet gezien als modelelementen.

2.2.2 Kern

De kern van het metamodel bestaat uit de volgende modelelementen. Het diagram toont hoe ze onderling met elkaar samenghangen. Een uitgebreide beschrijving per element is opgenomen in de paragraaf modelelementen.

  1. «MIM metaclass»: Objecttype
  2. «MIM metaclass»: Attribuutsoort
  3. «MIM metaclass»: Gegevensgroep
  4. «MIM metaclass»: Gegevensgroeptype
  5. «MIM metaclass»: Generalisatie
  6. «MIM metaclass»: Relatiesoort
  7. «MIM metaclass»: Relatieklasse
  8. «MIM metaclass»: Relatierol
  9. «MIM metaclass»: Relatierol doel
  10. «MIM metaclass»: Datatype
Figuur 2 Diagram: Kern zonder UML en metagegevens

In het diagram geven de verbindingen tussen de modelelementen aan welke combinaties kunnen voorkomen op metamodelniveau, oftewel welke modelelementen in een informatiemodel met elkaar gecombineerd kunnen worden. Bijvoorbeeld:

  • Een Objecttype kan verbonden worden met een Attribuutsoort. In een informatiemodel kan je attribuutsoorten dus aan een Objecttype toekennen. Een Attribuutsoort kan in het informatiemodel vervolgens weer als type een Datatype krijgen.
  • Een Objecttype kan verbonden worden met een Relatiesoort en deze Relatiesoort kan weer verbonden worden met een Objecttype. Dit geeft aan dat de Relatiesoort een modelelement is dat twee objecttypen met elkaar verbindt. Een Objecttype kan dus niet rechtstreeks verbonden worden met een ander Objecttype.
  • Een Objecttype kan verbonden worden met een Gegevensgroep en deze Gegevensgroep kan weer verbonden worden met een Gegevensgroeptype. Een Objecttype kan dus niet rechtstreeks verbonden worden met een Gegevensgroeptype. In een informatiemodel is een Gegevensgroep een eigenschap van het Objecttype en kan je aangeven dat deze Gegevensgroep als type een Gegevensgroeptype heeft.

2.2.3 Datatypen

Het MIM kent verschillende manieren om een datatype toe te kennen aan een modelelement. Het onderstaande overzicht toont welke typen beschikbaar zijn, inclusief de onderdelen waaruit sommige typen worden opgebouwd.

  1. «MIM metaclass»: Primitief datatype
  2. «MIM metaclass»: Gestructureerd datatype
  3. «MIM metaclass»: Data-element
  4. «MIM metaclass»: Enumeratie
  5. «MIM metaclass»: Enumeratiewaarde
  6. «MIM metaclass»: Referentielijst
  7. «MIM metaclass»: Referentie-element
  8. «MIM metaclass»: Codelijst

Het diagram toont de onderlinge samenhang en structuur. Daarin is zichtbaar dat een Gestructureerd datatype wordt opgebouwd uit twee of meer Data-elementen, een Enumeratie bestaat uit Enumeratiewaarden en een Referentielijst uit Referentie-elementen. In de paragrafen datatypen en waardelijsten worden deze typen uitgebreid toelicht.

Figuur 3 Diagram: Datatypen zonder UML en metagegevens

2.2.4 Overige modelelementen

Naast de kernelementen en de datatypen, kent het MIM nog een aantal andere modelelementen. Deze modelelementen vallen uiteen in een aantal categorieën, waarvan de functie en structuur binnen het MIM in de volgende paragrafen verder wordt toegelicht.

  1. «MIM metaclass»: Constraint
  2. «MIM metaclass»: Keuze
  3. «MIM metaclass»: Relatierol
  4. «MIM metaclass»: Relatierol bron
  5. «MIM metaclass»: Relatierol doel
  6. «MIM metaclass»: Externe koppeling
  7. «MIM metaclass»: Informatiemodel
  8. «MIM metaclass»: Domein
  9. «MIM metaclass»: Extern
  10. «MIM metaclass»: View
2.2.4.1 Constraint en Keuze

De Keuze en de Constraint zijn verschillende manieren om een voorwaarde of een beperking op te leggen aan een modelelement. Beide methoden hebben voor- en nadelen. Meer informatie daarover in de paragrafen constraint en keuze. In de volgende alinea's wordt verder toegelicht hoe ze toegepast worden.

Constraint in het kort

Een Constraint legt voorwaarden of beperkingen op aan een modelelement. Meer informatie daarover in de paragraaf over Constraint. Het diagram toont aan dat op alle modelelementen een Contraint kan worden toegepast.

Figuur 4 Diagram: Constraint zonder UML en metagegevens

Keuze in het kort

Het modelelement keuze bepaalt dat er meerdere opties mogelijk zijn, waarvan er één gekozen moet worden. Er zijn vijf situaties mogelijk waarin een keuze toegepast wordt. Elke situatie heeft een eigen metamodel.

  1. een keuze tussen datatypen (diagram)
  2. een keuze tussen twee of meer attribuutsoorten (diagram)
  3. een keuze tussen meerdere manieren om één betekenisvol attribuutsoort in te vullen (diagram)
  4. een keuze tussen relatiedoelen, als nadere invulling van één betekenisvolle relatiesoort (diagram)
  5. een keuze tussen twee of meer relatiesoorten/relatierollen (elk afzonderlijk betekenisvol) (diagram)

Voor elke mogelijkheid is een aparte «MIM metaclass» beschikbaar in het metamodel.

  1. «MIM metaclass»: Datatype(keuze)
  2. «MIM metaclass»: Keuze(attribuut)
  3. «MIM metaclass»: Keuze(attribuut)
  4. «MIM metaclass»: Keuze(relatie)
  5. «MIM metaclass»: Keuze(relatie)

Voor use case zie: (use case 1: datatypekeuze).

Voor use case zie: (use case 3: attribuutkeuze_2).

Voor use case zie: (use case 4: relatiedoel keuze).

Voor use case zie: (use case 5: relatiedoel-met betekenis).

2.2.4.2 Relatiesoort en relatierol

Uitwerking van de structuur en samenhang van relatierol, bron en doel.

  1. MIM metaclass: Relatierol (abstract)
  2. MIM metaclass: Relatierol bron
  3. MIM metaclass: Relatierol doel

In diagramvorm:

Figuur 9 Diagram: Associatierollen zonder UML en metagegevens
2.2.4.3 Externe koppeling

Externe koppeling bestaat uit de volgende modelelementen:

  1. MIM metaclass: Externe koppeling

Zie: Figuur 2

2.2.4.4 Groepering

Groepering bestaat uit de volgende modelelementen:

  1. MIM metaclass: Package
  2. MIM metaclass: Modelelement
  3. MIM metaclass: Informatiemodel
  4. MIM metaclass: Domein
  5. MIM metaclass: Extern
  6. MIM metaclass: View

De betekenis van deze modelelementen en de beschrijvingen ervan staan in Packages.

In diagramvorm:

Figuur 10 Diagram: Packages zonder UML

2.3 Modelelementen

In deze paragraaf staan alle modelelementen gespecificeerd die voorkomen in het MIM-metamodel. Bij elk modelelement is een definitie en een toelichting opgenomen. Voordat alle modelelementen worden gedefinieerd, wordt eerst beschreven wat objecten en gegevens zijn en hoe deze zich verhouden tot modelelementen.

2.3.1 Objecten en gegevens

MIM kent als belangrijk modelelement het objecttype. Een objecttype is een groep van gelijksoortige objecten. Zo zijn Jan en Katrien allebei objecten die gelijksoortig zijn en beide getypeerd kunnen worden als persoon. Het zijn allebei personen, oftewel het objecttype van beiden is Persoon. In het informatiemodel nemen we Persoon op met behulp van het modelelement Objecttype.

Om duidelijk(er) te maken wat wordt bedoeld kijken we eerst naar het begrip ‘object’ en het begrip 'gegeven'.

2.3.1.1 Object
Noot: Object vs. Objecttype

Toelichting:

Met 'het beschouwde domein' wordt bedoeld dat het om onderwerpen (een ding, een iets) van gesprek gaat binnen een discipline of domein. Een object is daarbij niet altijd fysiek het kunnen ook digitale, virtuele en conceptuele dingen zijn zoals kadastrale percelen, (maatschappelijke) activiteiten en processen. Hoe een 'onderscheidbaar iets' als een object beschouwd wordt, hangt af van het domein waarvoor het relevant is. Zo wordt de gebouwde omgeving in het ene domein beschouwd als een verzameling gebouwen terwijl een ander domein daarin panden onderscheidt. Een object is voor een domein relevant als eigenschappen (kenmerken) daarvan van belang zijn voor het functioneren van dat domein.

Een object wordt ook wel een exemplaar of instantie van een objecttype genoemd (vele soortgelijke exemplaren samen zijn getypeerd naar een objecttype).

2.3.1.2 Gegeven

Een object heeft eigenschappen (ook wel kenmerken genoemd) waarover gegevens bekend zijn.

Noot: Gegeven

Toelichting:

Voorbeelden van gegevens zijn: de naam van een persoon is 'Jan', de geboortedatum van Jan is ‘1-1-1970’.

Eigenschappen van een object kun je waarnemen of beweren en vervolgens vastleggen als gegeven. Aan alleen de waarde '1-1-1970' heb je niet zo veel als je niet weet dat het om de geboortedatum van een persoon gaat (de eigenschap) en om welke persoon het precies gaat (het onderwerp van gesprek). De waarde '1-1-1970' wordt vastgelegd als de geboortedatum van een specifiek persoon. Het is dus van belang om welke eigenschap van welke specifieke persoon het gaat. Verder is het uiteraard van belang om te weten wat de betekenis is die bij het gegeven hoort.

Waarneming: een observatie die wordt waargenomen voor een eigenschap van een object. Bijvoorbeeld: de sensor waarneming dat de auto met kenteken 'AA 1234' met een snelheid van 120 kilometer per uur rijdt. Een foto dat een brug op een bepaalde plek op aarde staat, of een meting van een geluid van 50 decibel.

Bewering: een uitspraak, die meestal als waar bedoeld is maar niet per definitie waar is. Mijn geboortedatum is '1-1-1970', de waarde van dit huis is 200.000 euro (in het jaar 2018). Wie de bewering gedaan heeft is vaak relevant. Denk bij een bewering aan hetgeen waarover besloten wordt door een bevoegd gezag, of aan een persoon die een gegeven opgeeft voor een bepaald doel. Een bewering kan gedaan worden over iets dat in de werkelijkheid is waargenomen, zoals bij de aangifte van een geboortedatum van een baby. Maar een bewering hoeft niet te zijn waargenomen in de werkelijkheid, zoals wanneer er een bouwvergunning is verleend.

Vastgelegd: een gegeven kan in principe al bekend zijn zodra deze wordt waargenomen of beweerd, maar de waarneming moet eerst vastgelegd worden om bruikbaar te zijn in een informatievoorziening. De vastlegging kan op papier, in digitale vorm, op een foto, in een bericht, in een database et cetera.

Getypeerd: een model specificeert niet de gegevens zelf. Een gegeven zoals '1-1-1970' noemen we een waarde voor een attribuut van Jan. In het informatiemodel wordt dit bv. het attribuutsoort 'geboortedatum' of attribuutype 'overlijdensdatum' van een objecttype Persoon genoemd. Dat twee objecten een relatie hebben, gemodelleerd in het model als relatietype, wordt ook gezien als een eigenschap waarvoor een gegeven bekend kan zijn. De modelelementen waarmee een getypeerde eigenschap van een object gemodelleerd kan worden zijn: attribuutsoort, relatiesoort en externe koppeling. Hier kunnen gegevens over bekend zijn. Het datatype is hierbij van belang voor de waarde, en het objecttype is van belang omdat het helder moet zijn om welk object het gaat.

Waarde: de waarde '1-1-1970' is een onderdeel van het gegeven. Om zeker te zijn dat het gegeven een toegestane waarde heeft moet de waarde van het gegeven voldoen aan het opgegeven datatype en eventuele aanvullende specificaties zoals een formeel patroon of dat de waarde voorkomt in een waardelijst. Er zijn waardes die:

  • een enkelvoudige structuur hebben, zoals bij de voornaam 'Jan', of het object Natuurlijk persoon met identificatie '123';
  • een interne structuur kennen die nader onderverdeeld is, zoals bijvoorbeeld een geometrie die bestaat uit meerdere coördinaten, een coördinaten referentiesysteem, enzovoorts. De onderdelen, oftewel de data elementen, vormen samen de waarde (de dataelementen zijn zelf niet een gegeven, maar zijn slechts een onderdeel ervan).

Met de vastlegging van gegevens in een informatievoorziening wordt een model van de werkelijkheid bevroren in de tijd. Hoewel de werkelijkheid nooit stil staat, kan deze door het vastleggen van de gegevens toch worden bevroren. Bij een gegeven kunnen ook metagegevens worden vastgelegd, voor het bijhouden van historie, zoals de tijdslijn geldigheid en de tijdslijn registratie. Op deze manier weet een gebruiker van de informatievoorziening wanneer het gegeven geldig is (of is geweest) en wanneer het gegeven is vastgelegd op een bepaald medium. Met betrekking tot gestructureerde datatypes: het is (meestal) niet zinvol om voor een onderdeel van een gegeven, oftewel een afzonderlijk data element van een gestructureerde datatype, historie bij te houden, want een onderdeel van een gegeven representeert niet de gehele waarde.

2.3.2 Objecttypen en attribuutsoorten

2.3.2.1 Objecttype

Toelichting: Jan, Piet en Marie zijn mensen die vanuit het Burgerzaken-domein beschouwd worden als objecten van het «Objecttype» NatuurlijkPersoon. In een ander domein, ‘de volksmond’, noemen we dit Mens wat ook een «Objecttype» is. In weer een ander domein is Jan van het «Objecttype» Vergunninghouder en Piet en Marie niet, omdat aan hen (nog) nooit een vergunning verleend is. Objecttypen zijn een abstractie van de werkelijkheid oftewel we beogen hiermee de werkelijkheid zo getrouw mogelijk te beschrijven, binnen de context van het domein. Dit staat geheel los van het vastleggen van gegevens over objecten van een type in een registratie. Daartoe is veelal een interpretatie nodig (van die werkelijkheid cq. die objecttypen) naar eenheden die in een registratie vastgelegd kunnen worden (records, entiteiten e.d.) op basis van andere overwegingen.

De objecten die in het beschouwde domein onderkend worden zijn zelf nooit abstract. Ze behoren altijd tot een concreet «Objecttype», en niet tot een abstract «Objecttype». Een abstract «Objecttype» wordt wel gebruikt in de modellering, om generalisatie aan te duiden en de definitie. Zo kan bij het «Objecttype» Pand bijvoorbeeld aangegeven worden dat dit een 'Element in de fysieke leefomgeving' is, en dat deze laatste als een abstract «Objecttype» gezien moet worden (in ons domein). Meer over abstracte objecttypen is beschreven in Abstracte Objecttypen en concrete objecten.

2.3.2.2 Attribuutsoort

Een «Attribuutsoort» is de metaklasse waarmee kenmerken van een «Objecttype» worden vastgelegd. Het zijn de kenmerken waarvoor gegevens worden bijgehouden.

Toelichting: De gegevens "Jan" en "Katrien" worden als gelijksoortig gezien en worden daarom ondergebracht in «Attribuutsoort» naam. Je kan ook zeggen, het «Objecttype» Persoon heeft een Attribuutsoort naam en deze is geschikt om gegevens in te plaatsen. Aan elk «Objecttype» worden nul, één, of meer attribuutsoorten toegekend. In een informatiemodel wordt alleen een voor het domein relevant «Attribuutsoort» opgenomen bij een «Objecttype». Attribuutsoorten worden ook wel kenmerken of eigenschappen genoemd. Dit zijn het ook, maar ook andere modelelementen vallen onder deze omschrijving. Zo is een «Relatiesoort» ook een kenmerk of eigenschap.

2.3.2.3 Gegevensgroep

Toelichting: Dit modelelement verzorgt de modelmatige aankoppeling van een «Gegevensgroeptype» aan het «Objecttype» waartoe een «Gegevensgroeptype» onlosmakelijk behoort. De groep van gegevens is een kenmerk van een object. De «Gegevensgroep» is een betekenisvol kenmerk van een «Objecttype». De «Gegevensgroep» heeft altijd als type een «Gegevensgroeptype».

2.3.2.4 Gegevensgroeptype

Toelichting: Een «Attribuutsoort» van een «Gegevensgroeptype» is semantisch gezien een eigenschap van een «Objecttype». Echter, vanwege samenhangend gedrag (ze horen semantisch bij elkaar, ze wijzigen bijvoorbeeld gelijktijdig e.d.) zijn deze ondergebracht in een apart modelelement. Het onderbrengen van attribuutsoorten in een groep c.q. in het modelelement gegevensgroeptype, is een modelleerkeuze, het is niet perse noodzakelijk. Wanneer deze ondergebracht worden in een gegevensgroeptype dan zijn/blijven het afzonderlijke kenmerken van het object en dus attribuutsoorten van het objecttype, maar dan ondergebracht in een gegevensgroeptype. De gegevensgroep als geheel wordt daarom expliciet niet gezien als zijnde één attribuutsoort van een object.

Toelichting: bijvoorbeeld: in de BRK heeft een schip een motor en de motor heeft een aantal eigenschappen. De BRK beschouwt een persoon als eigenaar van een schip, er kunnen geen afzonderlijke eigenaren zijn van elk van de motoren van een schip. In de BRK kan het eigendom van een Motor dan ook niet worden overgedragen aan een ander persoon. Een motor wordt daarom gezien als een eigenschap van het object schip, en omdat de motor meerdere eigenschappen heeft, worden deze ondergebracht in een gegevensgroeptype. In een ander informatiemodel, zoals van een motorfabriek, zou de Motor wel een objecttype kunnen zijn, omdat het daar wel hét onderwerp van gesprek is.

Een gegevensgroeptype is meestal het type van slechts één gegevensgroep, omdat de semantiek meestal exclusief is voor één objecttype. Echter, hergebruik is mogelijk (als de semantiek niet exclusief is voor één objecttype). Voorwaarde voor hergebruik is dat de definitie (de definitie en toelichting, inclusief alle metadata aspecten) dan inderdaad gelijk zijn, voor alle objecttypes die hergebruik maken van het gegevensgroeptype.

Een gegevensgroeptype kan, naast attribuutsoorten en relatiesoorten, ook zelf weer gegevensgroeptypen bevatten.

Een gegevensgroeptype is verbonden met een objecttype, via het modelelement Gegevensgroep.

2.3.3 Relaties

Verbanden met betekenis, die gelegd zijn tussen modelelementen van het type objecttype naar het type objecttype, of van een gegevensgroeptype naar een objecttype.

Diagram: Kern

Er zijn verschillende typen relaties die elk door specifieke MIM modelelementen worden beschreven.

2.3.3.1 Generalisatie

Toelichting:

Generalisatie tussen objecttypes:

Een generalisatierelatie geeft aan dat bepaalde eigenschappen van een objecttype (vaak attribuutsoorten en/of relatiesoorten) ook gelden voor de gerelateerde objecttypen, én dat deze qua semantiek, structuur en syntax gelijk zijn. We spreken dan van een supertype met subtypen. De modelelementen die generiek gelden worden in een generiek objecttype, het supertype, gemodelleerd en deze worden overerfd door elk subtype dat de «Generalisatie» legt naar dit generieke «Objecttype».

Generalisatie tussen datatypen:

Het meer specifieke datatype brengt een verbijzondering aan in de vorm van een meer restrictieve definitie, of een meer restrictief patroon/formeel patroon. Het andere datatype is bijvoorbeeld een CharacterString, Integer, GM_Surface ofDMO en dient als basis voor een zelf te definiëren datatype (zie Datatype zelf definiëren), zoals een CharacterString Postcode, of een NietNegatiefGetal.Deze generalisatie is van toepassing op de volgende datatypen: «Primitief datatype», «Gestructureerd datatype», «Referentielijst», «Codelijst»,«Enumeratie».

Meervoudige overerving of multiple-inheritance:

Een subtype kan meerdere objecttypen als generalisatie hebben. In het diagram Kern is dit aangegeven door een «Objecttype» als subtype naar 0..* «Generalisaties» te laten verwijzen. Dat impliceert dat een subtype 0..* supertypen kan hebben.

2.3.3.2 Relatiesoort

Toelichting: Objecten hebben eigenschappen die gemodelleerd kunnen worden met attribuutsoorten maar ook met relatiesoorten naar andere objecttypen. Relatiesoort is de metaklasse waarmee deze eigenschappen worden beschreven. Als het voor het desbetreffende domein van belang is om die eigenschap te modelleren als onderdeel van een ander objecttype, dan maakt de relatiesoort die eigenschap beschikbaar voor het eerstgenoemde objecttype. Bijvoorbeeld, een attribuutsoort van het objecttype PERSOON zou kunnen zijn ‘Naam geregistreerd partner’ (naast de attribuutsoort ‘Naam’ van PERSOON). De naam van de geregistreerde partner komt evenwel ook beschikbaar met een relatiesoort van PERSOON naar PERSOON: “heeft geregistreerd partnerschap met”. Zie ook het eerder genoemde voorbeeld van SCHIP en MOTOR.

Wanneer een relatie gebruikt wordt om objecten aan elkaar te verbinden, zonder dat er eigenschappen over deze relatie worden vastgelegd, dan betreft dit de MIM-metaclass «Relatiesoort».

2.3.3.3 Relatieklasse

Toelichting: De relatieklasse geeft aan dat er een relatie is tussen twee objecten, waarbij er gegevens over deze relatie vastgelegd moeten worden. De relatie wordt in dit geval behandeld als een object, met gegevens. De gegevens over de relatie bestaan alleen zolang de relatie tussen beide objecten bestaat en zolang elk van beide objecten zelf (nog) bestaan.

Opmerking: de gegevens van de relatie worden voor één relatie vastgelegd en niet voor meerdere relaties tegelijk. Als dit laatste het geval is, dan worden de gegevens vastgelegd in een «Objecttype». Een CONTRACT kan bijvoorbeeld ook een afspraak zijn tussen twee óf méér SUBJECTen, waarbij de gegevens van de relatie voor alle betrokken objecten hetzelfde zijn. CONTRACT wordt dan gemodelleerd als objecttype, waarbij beschreven wordt wat er moet gebeuren wanneer één van de SUBJECTen niet meer bestaat.

2.3.3.4 Externe Koppeling

Toelichting:
Hiermee wordt aangegeven dat er een relatie ligt naar een informatiemodel van een ander domein. Dit kan rechtstreeks zijn, maar het is ook mogelijk om het objecttype van een ander domein over te nemen naar het eigen domein, en specifiek te maken voor hoe je deze informatie ziet vanuit je eigen domein (dit laatste noemen we ook wel een View.

Zie Koppelen met een ander informatiemodel.

2.3.3.5 Relatierol

Toelichting: Met relatie wordt in deze de volgende bedoeld: «Relatiesoort», «Relatieklasse» of «Externe koppeling». Voor «Generalisatie» speelt het niet. Een relatie heeft een bronkant, die de eigenaar is van de relatie, en is gericht naar de doelkant. De relatierol kan aan beide kanten een Naam en een Definitie krijgen.

2.3.4 Waardelijsten

Een datatype waarvan de mogelijke waarden zijn opgesomd in een lijst. De waarde van een attribuutsoort moet één van de waarden zijn uit de gespecificeerde waardelijst.

Er zijn een aantal modelelementen die elk een specifiek soort waardelijst beschrijven en onderdelen daarvan.

2.3.4.1 Referentielijst

Toelichting: De referentielijst bevat representaties van objecten, die in het informatiemodel niet als een objecttype onderwerp van gesprek zijn. De referentielijst wordt gebruikt als type van een attribuut van een object.

Het objecttype LAND uit het voorbeeld is opgenomen in een referentielijst en niet als objecttype. Maar we willen wel de structuur en betekenis van LAND vastleggen, zodat we er naar kunnen refereren. Een object dat is opgenomen in een referentielijst heeft daarom veelal meerdere attributen, zoals de naam, de ontstaansdatum, een omschrijving en de ISO code, die zijn opgenomen in de referentielijst.

Alle attributen van gerefereerde objecten uit de referentielijst gelden in de context van het informatiemodel, mits opgenomen in de «Referentielijst». In de registratie wordt vaak alleen de referentie ernaartoe opgenomen, omdat het niet de bedoeling is om alle gegevens over te nemen. De gegevens staan immers al in de referentielijst en er is bewust gekozen om een referentielijst te modelleren. Het attribuut van een objecttype dat als type een referentielijst heeft bevat in de registratie daarom (vaak) alleen een referentie naar een object uit de lijst.

2.3.4.2 Referentie-element

Toelichting: Een referentie-element kan uniek zijn, zoals een code, en is dan op zichzelf geschikt om gebruikt te worden als referentie (zoals bedoeld in de definitie van Referentielijst). Bij het referentie-element kan een definitie en toelichting worden opgenomen, die aangeven hoe de externe waardelijst in het eigen informatiemodel gebruikt wordt.

2.3.4.3 Enumeratie

Toelichting: In de registratie krijgt een attribuut één van deze waarden. De lijst is een statische lijst met constanten (meerdere attributen, zoals bij een referentielijst, zijn nooit aan de orde).

2.3.4.4 Enumeratiewaarde

Toelichting: De waarde van de data zelf. Bijvoorbeeld: Plein, Brug, Spoor, M (man).
Alleen deze waarde mag gebruikt worden.

2.3.4.5 Codelijst

Toelichting: Zowel referentielijsten als codelijsten zijn in feite waardelijsten. In tegenstelling echter tot de referentielijst wordt de structuur van een codelijst niet in het informatiemodel beschreven, omdat die niet (nader) geduid hoeft te worden in het informatiemodel. De extern gepubliceerde waardelijst die de Codelijst representeert bevat een of meer attributen, waarvan altijd één specifiek attribuut met daarin de domeinwaarden die gebruikt mogen/moeten worden in het informatiemodel. Welk specifiek attribuut dat is staat in het metagegeven Waarde-item. In het gebruik is een Codelijst daarom analoog aan een Enumeratie.

Als het wel van belang is om de structuur van een Codelijst in het model te definieren, dan moet een «Referentielijst» worden gebruikt.

2.3.5 Datatypen

2.3.5.1 Datatype

Toelichting: Zie ook Objecttypen en attribuutsoorten. Bij elke «Attribuutsoort» wordt gespecificeerd aan welk datatype de data c.q. de waarde die hiervoor vastgelegd wordt moet voldoen. Het datatype wordt gebruikt als type van een attribuutsoort. Datatypen zijn veelal op vele plekken (her)bruikbaar en kunnen daarom gespecificeerd worden bij diverse attribuutsoorten.

Diagram: Datatypen

2.3.5.2 Primitief datatype

Toelichting: Een primitief datatype is een datatype zonder verdere specificatie over de structuur. Dit datatype is enkelvoudig, oftewel niet samengesteld en wordt ook wel simpel datatype genoemd. Dit datatype kent daarom zelf geen eigen modelelementen zoals een «Data element». Ook is er geen sprake van een gelaagdheid, ook wel nesting genoemd. Een primitief datatype kan wel een patroon of formeel patroon hebben, die een nadere restrictie legt.

Een primitief datatype kan een standaard datatype zijn, zoals CharacterString, Integer enz. Het metamodel volgt hierbij de definities zoals beschreven in de ISO standaarden (zie §3.1).

  • Deze datatypen hebben altijd al een naam en definitie gekregen vanuit deze standaarden en deze worden gebruikt.
  • Deze datatypen hebben geen MIM metaclass.

Een primitief datatype kan ook in het eigen informatiemodel zelf-gedefinieerd zijn, zoals bijvoorbeeld een primitief datatype AN: een alfanumerieke CharacterString conform de MES-1 specificatie (oftewel zonder bijzondere karakters zoals een smiley en zonder bijzondere tekens uit niet Europese talen).

  • Dit is een zelf-gedefinieerde variant die als basis een van de voorgaande standaard datatypen heeft, zoals CharacterString. Dit standaard datatype moet eenduidig aangegeven worden (zie generalisatie bij datatypen, of door in een extensie aan te geven wat de default is, bv. CharacterString).
  • Hierbij hoort de MIM metaclass gespecificeerd te worden: primitief datatype.

Een informatiemodel definieert zelf datatypen als er behoefte is aan een datatype dat eenmalig gedefinieerd wordt en op meerdere plekken in het model gebruikt moet kunnen worden met altijd exact dezelfde structuur en waardenbereik (zie ook ‘patroon’ in Domeinwaarden of lijsten). Dit datatype, met een eigen naam, wordt vervolgens gebruikt als type van een attribuutsoort.

NB: Wanneer het datatype Postcode landelijk zodanig beschikbaar is gemaakt zodat hier gebruik van gemaakt kan worden in het model, middels een verwijzing, dan hoeft Postcode niet meer in het eigen model opgenomen te worden.

2.3.5.3 Gestructureerd datatype

Toelichting:

De waarde van het attribuutsoort verkoopprijs met gestructureerd datatype bedrag is uitgedrukt in een combinatie van een som en valuta zoals 35 euro. De introductie van één datatype Bedrag, uitgedrukt in som en valuta, legt dus vast dat som en valuta onlosmakelijk met elkaar zijn verbonden.

De eigenschappen in het Gestructureerd datatype tezamen zijn identificerend (een Gestructureerd datatype “identificeert zichzelf”, zoals er maar per definitie één '1 liter' bestaat, één '35 euro' en één datum '6 april 2017', met per definitie altijd dezelfde betekenis:

  • Een blik olie heeft een inhoud van "7 liter", kost "35 euro", en is verkocht op "6 april 2017".

  • Piet heeft "1 liter" bloed gedoneerd, daarvoor "35 euro" vergoeding gekregen, op "6 april 2017".

Het identificerend zijn geldt bijvoorbeeld niet voor Jan Jansen. Er zijn meerdere personen met deze naam en dat zijn verschillende personen (Jan Jansen is dan ook een gegevensgroeptype Naam met voornaam Jan en achternaam Jansen en geen Gestructureerd datatype).

2.3.5.4 Data-element

Toelichting: Het data-element is een eigenschap van een Gestructureerd datatype en beschrijft de structuur van een gegeven. Het is niet een eigenschap van een object en niet hetzelfde als een attribuutsoort. Het data-element beschrijft in combinatie met andere data-elementen de structuur van een gegeven en heeft zelf een datatype. Dit datatype is meestal een primitief datatype.

2.3.6 Packages

Er zijn verschillende modelelementen van het type package:

  • Informatiemodel
  • Domein
  • Extern
  • View

In een informatiemodel package mogen alleen domein of view packages opgenomen worden. Beide kunnen meertallig voorkomen en de volgorde is hierbij niet van belang. Een extern package bevindt zich buiten het package informatiemodel.

In een domein, view of extern package mogen de volgende MIM-elementen worden opgenomen:

  • Objecttype
  • Gegevensgroeptype
  • Datatype (alle varianten)
  • Relatieklasse
  • Keuze

De volgorde is hierbij niet van belang.

De verschillende package-typen worden hier beneden uitgelegd.

2.3.6.1 Informatiemodel

Toelichting: Het informatiemodel is een package, te weten het hoofdpackage van het informatiemodel, waar alle subpackages die een informatiemodel beschrijven onder vallen, zoals Domein en View en extern. Het informatiemodel wordt verder beschreven met metadata, zoals de aanduiding van het domein wat in het informatiemodel is gemodelleerd. Het is gangbaar om de naam van het informatiemodel te beginnen met IM, maar dit is niet verplicht.

2.3.6.2 Domein

Een informatiemodel kan onderverdeeld worden in meerdere packages, waarbij aangegeven wordt dat deze de modellering van de informatie van het domein bevatten.

Toelichting: Een domein package bevat de modelelementen waaruit een informatiemodel is samengesteld, zoals het objecttype Persoon en het objecttype Nummeraanduiding en de relatiesoort woonadres. Een informatiemodel is het hoofdpackage, en kent een aantal domein packages als subpackage. Er zijn meerdere soorten packages. Om onderscheid te maken tussen packages waarin het domein gemodelleerd is, en andere packages, heeft dit modelelement de naam Domein gekregen. Je zou ook kunnen zeggen, het informatiemodel bestaat uit de volgende subdomeinen.

2.3.6.3 Extern
2.3.6.4 View

2.3.7 Constraint en Keuze

Diagram: Overige

2.3.7.1 Constraint

Toelichting: Een Constraint wordt opgenomen om een constructie uit te drukken die niet via bestaande modelelementen is uit te drukken. De Constraint wordt dan toegevoegd om de extra informatie formeel vast te leggen. Meestal wordt een Constraint vastgelegd op het niveau van een modelelement met eigenschappen zoals een Objecttype, Gegevensgroeptype en Relatieklasse om specifieke condities over die eigenschappen vast te leggen. Een voorbeeld is de een 11-proef op een Datatype van een Attribuutsoort. Een Constraint wordt altijd in gewone tekst omschreven en kan optioneel als formele specificatie worden aangegeven.

Er zit bij een Constraint een belangrijk verschil tussen betrekken en vastleggen: betrekken bepaalt de modelelementen waar de Constraint op van toepassing is en vastleggen bepaalt wat de context van de Constraint is, het modelelement vanuit waar de Constraint geldt. Zo kan een constraint die van toepassing is op toegestane waarden van een attribuutsoort vastgelegd worden bij het objecttype dat de attribuutsoort gebruikt.

2.3.7.2 Keuze

Toelichting: Er kan altijd maar één van de mogelijkheden gekozen worden. De Keuze is voor een aantal use cases een alternatieve manier voor het modelleren van een constraint.

Een Keuze maakt het mogelijk een opsomming te geven van meerdere mogelijkheden, waarbij in een concreet geval altijd precies één van deze mogelijkheden wordt gebruikt. Er zijn verschillende plekken waar dit gebruikt kan worden.

Een belangrijk voordeel van het gebruik van de Keuze ten opzichte van een constraint is dat de kardinaliteiten zuiver gehouden kunnen worden. Bij het gebruik van een constraint zie je vaak dat de kardinaliteit van bijvoorbeeld twee kenmerken optioneel gemaakt is en om vervolgens via de constraint toch weer verplicht gemaakt te worden, voor precies één van de mogelijkheden.

Dit document beschrijft een aantal use cases waarin het modelleren met een Keuze van toegevoegde waarde is. Zonder een dergelijke modelconstructie zou het nodig moeten zijn om met een expliciete constraint de keuze aan te geven.

Bij de use cases gaat het over meerdere kenmerken, waartussen een keuze gemaakt moet worden omdat er van precies 1 sprake is/mag zijn. Dit is in MIM een keuze tussen twee (of meer) modelelementen. In de verzamelingenleer noemen we dit een XOR situatie. Hierbij is het vooral van belang dat er als gevolg van de modellering van een keuze in plaats van constraint er geen nieuwe kenmerken mogen ontstaan en ook geen kenmerken mogen wegvallen. De kenmerken van het object blijven gelijk.

Use case 1: een keuze tussen datatypen
Een objecttype heeft een attribuutsoort en het datatype hiervan is ofwel datatype D1 ofwel datatype D2. In MIM modelleren we daarom 1 attribuutsoort met als datatype een keuze tussen het datatype D1 en het datatype D2. Het maken van deze keuze is verplicht.

Figuur 11 Diagram: Voorbeeld van keuze tussen datatypen

In dit voorbeeld vormt LijnOfVlak de Keuze als geheel. De datatypen zelf zijn de keuzemogelijkheden, maar blijven in de modellering van de metaclass Datatype en behoren in deze zin niet tot de modellering van de metaclass Keuze.

Bij een modellering zonder Keuze zou je te maken krijgen met een attribuutsoort per datatype, maar met een verschillende naam, hoewel ze betrekking hebben op hetzelfde kenmerk. Ook zou de kardinialiteit niet kloppen: die zou dan 0..1 moeten worden, maar dat doet geen recht aan het feit dat er één verplicht aanwezig moet zijn, en er ook geen twee naast elkaar mogen zijn. De werkelijke kardinaliteit is 1..1.

Use case 2: een keuze tussen 2 of meer attribuutsoorten
Er is sprake van ofwel attribuutsoort A1 ofwel attribuutsoort A2. In MIM modelleren we daarom een keuze tussen de 2 attribuutsoorten A1 en A2. Het maken van deze keuze is verplicht.

Figuur 12 Diagram: Voorbeeld van keuze tussen attribuutsoorten

We modelleren daarom een Keuze BetalingskenmerkOfOmschrijving met daarin een attribuutsoort betalingskenmerk en een attribuutsoort omschrijving.

Het is bij deze use case niet de bedoeling om een derde attribuutsoort, zoals kenmerkOfOmschrijving, te introduceren als attribuutsoort van het objecttype. kenmerkOfOmschrijving staat er wel maar is geen attribuutsoort maar een Keuze. De naam daarvan is arbitrair omdat het geen betekenis heeft en bij de implementatie in data niet voorkomt. De binding van de Keuze BetalingskenmerkOfOmschrijving is daarom aan het objecttype en niet aan een attribuutsoort.

In dit voorbeeld vormt BetalingskenmerkOfOmschrijving en de binding ervan aan het objecttype de Keuze als geheel. De attribuutsoorten zelf zijn de keuze mogelijkheden, maar blijven in de modellering van de metaclass attribuutsoort en behoren in deze zin niet tot de modellering van de metaclass keuze.

Zonder de mogelijkheid van Keuze zouden beide attribuutsoorten opgenomen zijn bij het objecttype als optionele velden, met een constraint dat een van beide gevuld moet zijn. Nadeel hiervan is dat de kardinaliteit dan niet erg duidelijk gemodelleerd is: die zou dan voor beide attribuutsoorten [0..1] moeten worden, maar dat doet geen recht aan het feit dat er één verplicht aanwezig moet zijn, en er ook geen twee naast elkaar mogen zijn. De werkelijke kardinaliteit voor een gekozen attribuutsoort is [1..1]. Met een constraint is dit te specificeren en derhalve ook op zich wel correct te modelleren, maar met een modellering van een keuze is dit veel duidelijker.

Use case 3: een keuze tussen meerdere manieren om invulling te geven aan 1 betekenisvol attribuutsoort van een objecttype
Er is sprake van ofwel attribuutsoort A0 en aanvullend hierbij een keuze tussen ofwel attribuutsoort A1 ofwel attribuutsoort A2. In MIM modelleren we daarom voor A1 en A2 een keuze tussen de 2 attribuutsoorten. Het maken van deze keuze is verplicht.

Figuur 13 Diagram: Voorbeeld van een attribuutsoort gekoppeld aan een keuze tussen attribuutsoorten

We modelleren daarom een Keuze BetalingskenmerkOfOmschrijving met daarin een attribuutsoort betalingskenmerk en een attribuutsoort omschrijving. Het is bij deze use case niet de bedoeling om het attribuutsoort beschrijving kwijt te raken in de modellering. De binding van de Keuze BetalingskenmerkOfOmschrijving is daarom aan het attribuutsoort. De binding van het attribuutsoort beschrijving gebeurt door aan te geven dat BetalingskenmerkOfOmschrijving het type is van beschrijving.

In dit voorbeeld vormt BetalingskenmerkOfOmschrijving de Keuze als geheel. De attribuutsoorten zelf zijn de keuze mogelijkheden, maar blijven in de modellering van de metaclass attribuutsoort en behoren in deze zin niet tot de modellering van de metaclass keuze.

Opmerking: use case 2 en 3 zijn voor een groot deel overeenkomstig. De overeenkomst is dat de keuze tussen de twee attribuutsoorten betalingskenmerk en omschrijving hetzelfde gemodelleerd wordt, als een keuze, met bijvoorbeeld de naam BetalingskemerkOfOmschrijving. Het verschil zit in de binding tussen de keuze en het objecttype.

Use case 4: een keuze tussen relatiedoelen, als nadere invulling van een betekenisvolle relatiesoort van een objecttype
Er is sprake van een relatiesoort R0 en aanvullend hierbij een keuze tussen relatiedoel D1 of relatiedoel D2. In MIM modelleren we daarom een keuze tussen de 2 relatiedoelen D1 en D2. Het maken van deze keuze is verplicht.

Het is bij deze use case niet de bedoeling om twee nieuwe relatiesoorten, eigenaar_persoon en eigenaar_bedrijf, te introduceren en al zeker niet om de relatiesoort eigenaar kwijt te raken. We modelleren daarom 1 relatiesoort met de naam eigenaar en een Keuze tussen relatiedoelen.

Figuur 14 Diagram: Voorbeeld van keuze tussen relatiedoelen

In het voorbeeld vormen EigenaarKeuze en de twee relatiedoelen tezamen de keuze als geheel. De relatiedoelen zelf zijn de keuze mogelijkheden. De modellering van de relatiesoort eigenaar blijft hetzelfde en behoort niet tot de modellering van de metaclass keuze.

Use case 5: een keuze tussen twee of meer relatiesoorten/relatierollen (elk afzonderlijk betekenisvol)

Er is sprake van een relatiesoort R1 en een relatiesoort R2. R1 heeft als doel een object van objecttype D1 en R2 heeft als doel een object van objecttype 2. In MIM modelleren we daarom een keuze met als uitgaande relatiesoorten R1 en R2. Het maken van deze keuze is verplicht.

Figuur 15 Diagram: Voorbeeld van keuze tussen relatiesoorten die elk een betekenis hebben

In het voorbeeld heeft Vervoermiddel de verplichte keuze tussen de relatiesoorten/rollen heeft als contactpersoon/eigenaar en wordt verhuurd door/verhuurbedrijf.

2.4 Specificatie metagegevens

Bij de modelelementen in een informatiemodel kunnen metagegevens, zoals 'naam' van het modelelement, of 'datum opname' van het modelelement, worden bijgehouden. Dit zijn geen eigenschappen van een object en worden daarom niet als bijvoorbeeld een attribuutsoort van een objecttype gemodelleerd maar als metagegevens van een objecttype. In de volgende paragrafen worden de metagegevens van modelelementen in tekst beschreven. Bij elk metagegeven is de definitie opgenomen, een toelichting en de toepassing ervan bij modelelementen. In bijlage 6.1.2 Modelelementen en metagegevens als diagram is de koppeling tussen metagegevens en de modelelementen beschreven door middel van UML diagrammen. Er is daarin ook opgenomen of ze verplicht of optioneel zijn. In 2.4.5 Toegestane waarden metagegevens is het waardebereik en defaultwaarden voor een aantal metagegevens opgenomen.

2.4.1 Informatiemodel - metagegevens

We onderkennen een aantal specifieke metagegevens op het niveau van het informatiemodel zelf. Deze staan beschreven in deze paragaaf.

2.4.1.1 Metagegeven: Informatiedomein

Toelichting Bijvoorbeeld: BRK. Wanneer bepaalde definities of identificaties van het informatiemodel in de wereld niet uniek zijn, omdat een ander informatiemodel dezelfde naam hanteert voor een modelelement, of eenzelfde structuur voor een identificerende eigenschap, dan is het mogelijk om deze uniek te maken met behulp van deze aanduiding.

Toepassing: Informatiemodel (verplicht)

2.4.1.2 Metagegeven: Informatiemodeltype

Toelichting Dit kan zijn: "Conceptueel" of "Logisch". Zoals bedoeld in: 1.6 Typering van modellen gekoppeld aan beschouwingsniveaus. Er moet een keuze gemaakt worden. Dit kan bijvoorbeeld uitgebreid worden met: "Technisch" wanneer er behoefte is om niveau 4 aan te geven.

Toepassing: Informatiemodel (verplicht)

2.4.1.3 Metagegeven: Relatiemodelleringstype

Toelichting Dit kan zijn "Relatiesoort leidend" of "Relatierol leidend". Dit betreft de keuze die je maakt voor het in 1.11 Alternatieven gekozen alternatief. Er moet een keuze gemaakt worden. Deze keuze geldt primair voor de modelelementen «Relatiesoort» en «Relatierol» zoals bedoeld in 3.2.2 Relaties in UML. maar geldt in het verlengde hiervan voor het modelelement externe koppeling.

Toepassing: Informatiemodel (verplicht)

2.4.1.4 Metagegeven: MIM-versie

Toelichting Neem hiervoor een door MIM in gebruik zijnde MIM-versie. Kies bij voorkeur een zo recent mogelijke versie.

Bijvoorbeeld: "1.0.1" of "1.1" of "1.1.1"

Toepassing: Informatiemodel (verplicht)

2.4.1.5 Metagegeven: MIM-extensie

Toelichting Dit metagegeven is optioneel en alleen van toepassing als er sprake is van een extensie zoals bedoeld in 1.10 Een eigen extensie op het metamodel. Neem hiervoor een in gebruik zijnde extensie. Bijvoorbeeld: "Kadaster" of "NEN3610:2022".

Toepassing: Informatiemodel (optioneel)

2.4.1.6 Metagegeven: MIM-taal

Toelichting Bijvoorbeeld: "NL", "EN"

Toepassing: Informatiemodel (optioneel)

2.4.1.7 Metagegeven: Tekstopmaak

Toelichting

Bijvoorbeeld: "rtf", "html".

De metagegevens definitie en toelichting bevatten tekst waarvan het nuttig kan zijn om deze op te maken. De opmaak zoals hier bedoeld betreft het verhogen van de leesbaarheid van de tekst, wanneer de modelleur van het model dit nuttig of nodig acht. Deze opmaak is nadrukkelijk niet bedoeld om aan te duiden in welke vorm het model gepubliceerd moet gaan worden (zoals in html, pdf, xml enz). In de MIM gedachte hoort een model vrij te zijn van deze overweging en kan een model in elk van deze, en ook in meerdere vormen tegelijk, gepubliceerd worden.

De tekst kan en mag een bepaalde opmaak bevatten, maar dit hoeft niet. Maar als ervoor gekozen wordt, dan geldt het voor alle definities en alle toelichtingen. Wellicht is opmaak ook van belang voor andere metagegevens (zoals patroon, populatie, kwaliteit en mogelijk andere) maar in deze versie van MIM is de opmaak alleen bedoeld voor definitie en toelichting. Wel kunt u deze opmaak van toepassing verklaren op metagegevens uit uw eigen extensie (zoals bedoeld in 1.10 Een eigen extensie op het metamodel).

Toepassing: Informatiemodel (optioneel)

2.4.2 Identificatie - metagegevens

Informatiemodellen staan vaak niet op zichzelf. Ze kunnen elementen bevatten die refereren aan externe standaarden, waarin deze elementen een eigen identificatie hebben. Ook moeten de gemodelleerde elementen herbruikbaar zijn in andere modellen. Daarom is het nodig om de modelelementen uniek te kunnen identificeren. Wanneer een MIM-model uitgedrukt wordt in een Linked Data-model is het zelfs noodzakelijk om de modelelementen identificeren met een [URI]. De metagegevens Basis-URI en Identificatie maken het mogelijk om de modelelementen in een Linked Data-model te identificeren.

2.4.2.1 Metagegeven: Basis-URI

Toelichting Een uniform resource identifier (URI) is een compacte reeks tekens die een abstracte of fysieke resource identificeert. Een Basis-URI is het gemeenschappelijke deel van deze reeks tekens die voor alle elementen in het informatiemodel geldig is. De Basis-URI bevat altijd een scheme, dit kan bijvoorbeeld http:// of urn zijn. En voldoet aan een gekozen URI-strategie. Wanneer er geen basis-URI is gespecificeerd wordt deze overgenomen van de eerst bovenliggende package met een basis-URI.

Een informatiemodel moet echter ook gebruikt kunnen worden zonder dat er vastgestelde (http-)uri's beschikbaar zijn (bijvoorbeeld tijdens de ontwikkelfase). In dit geval kan een [URN] op basis van de package alias en de naam van het modelelement bepaald worden. Wanneer er geen basis-URI is gespecificeerd wordt deze overgenomen van de eerst bovenliggende package met een basis-URI. Wanneer deze er niet is, wordt er een default waarde bepaald conform het patroon urn:modelelement: + {informatiemodel.naam}: + {package.naam}:. De defaultwaarde voor de Basis-URI van een informatiemodel is dan urn:modelelement: + informatiemodel.naam, bijvoorbeeld "urn:modelelement:imbaglv". Iedere onderliggende package krijgt ook een default Basis-URI die gelijk is aan de basis-URI van het informatiemodel gevolgd door :package.naam, bijvoorbeeld "urn:modelelement:imbaglv:objecten". Dit is noodzakelijk omdat niet alle namen binnen een informatiemodel per definitie uniek zijn (denk aan een objecttype "Locatie" in een domein "Locatie"). De URI van een attribuutsoort "huisnummer" bij een "nummeraanduiding" in domein "objecten" uit het IMBAGLV model wordt dan "urn:modelelement:imbaglv:objecten:nummeraanduiding.huisnummer".

Toepassing: informatiemodel (verplicht), domein, view, extern

Noot
2.4.2.2 Metagegeven: Identificatie

De Identificatie kan bepaald worden aan de hand van de Naam van het modelelement en de Basis-URI van de package waarin het modelelement zich bevindt (op logisch niveau conform de naamgevingsconventies). Dit vormt de default waarde. In de meeste gevallen zal een modelleur dit metagegeven niet expliciet invullen maar uitgaan van de defaultwaarde.

In sommige gevallen kan de Identificatie van een modelelement niet bepaald worden aan de hand van de Basis-URI van de bijbehorende package en de Naam van een modelelement. Bijvoorbeeld als gevolg van de gekozen URI-strategie of wanneer een Attribuutsoort uit een ander informatiemodel hergebruikt wordt (e.g. nen3610-2022:identificatie). In dit geval zal de modelleur het metagegeven Identificatie wel invullen.

Toepassing: alle modelelementen

2.4.3 Modelelementen - metagegevens

We onderkennen een aantal specifieke metagegevens op het niveau van de modelelementen waarmee een informatiemodel wordt samengesteld. Deze staan beschreven in deze paragaaf.

Zo is er de Naam van het modelelement, bijvoorbeeld het objecttype met als Naam "Pand" en een bijbehorende Definitie, of de Datum opname van het modelelement in het informatiemodel, bijvoorbeeld 1-1-2012. Welke metagegevens verplicht zijn per modelelement en welke niet staat beschreven in het diagram in Metagegevens per modelelement. Dit diagram is een onderdeel van de specificatie.

Elk modelelement kent een eigen set van metagegevens, die bepaalde aspecten van het modelelement specificeren. Metagegevens kunnen verplicht of optioneel zijn. Zo is een definitie altijd verplicht voor elk modelelement die de betekenis van gegevens omschrijft, zoals een attribuutsoort of relatiesoort, maar ook voor het objecttype die de context hiervan is. Bij de meeste datatypen is de definitie daarentegen optioneel, deze worden alleen ingevuld indien nodig.

Merk op dat een aantal van deze metagegevens al meegenomen worden in een specificatietaal. Bijvoorbeeld het objecttype met de naam Pand wordt in UML gemodelleerd als Named element met als Name Pand (in UML 1.4 heette dit nog UML-Class, met een property Name). Een aantal andere metagegevens, zoals de eerder genoemde Datum opname met waarde "1-1-2012". worden als aparte data vastgelegd, in UML gebeurt dit in een Tagged value. In Linked data gebeurt dit met een owl:DatatypeProperty.

Merk op, de metagegevens aspecten zijn specifiek voor elk modelelement apart. Dus als er in H2.2 sprake is van een generalisatie, dan worden deze metagegevens niet overerft (en de ingevulde waardes worden uiteraard zeker niet overerft). De MIM metaclass Referentielijst erft dus geen metagegevens, zoals patroon, van MIM metaclass Datatype.

Voor de eenduidigheid zijn een aantal metagegevens verplicht gemaakt om te voorkomen dat het onduidelijk is wat een niet ingevulde waarde betekent. De betekenis hoort te zijn: 'niet aan de orde', wat zo is bij optionele gegevens. Wat iets anders is dan: 'nog niet ingevuld', 'zie default waarde', of 'onbekend'.

Hieronder volgen eerst de algemene metagegevens. Dit zijn metagegevens zoals Naam, Definitie en Populatie met een definitie en een toelichting. In de paragrafen hierna wordt vervolgens naar deze paragraaf verwezen. Specifieke metagegevens die maar één keer voorkomen zijn bij het modelelement zelf beschreven en zijn niet opgenomen in deze algemene lijst.

2.4.3.1 Metagegeven: Naam

Toelichting

Bijvoorbeeld: "Pand" is de naam van het modelelement «Objecttype», "bouwjaar" is de naam van het modelelement «Attribuutsoort». De modelelementen zijn limitatief opgesomd in 2. Metamodel Algemeen (en eventueel zijn in een uitbreiding extra modelelementen limitatief opgesomd).

Toepassing: alle modelelementen.

2.4.3.2 Metagegeven: Alias

Toelichting

Als de naam van iets wat in het informatiemodel gemodelleerd wordt spaties, diakrieten of verbindingstreepjes bevat, zoals een «Objecttype» "Onroerende zaak" of een «Attribuutsoort» "geïnspireerd op", dan kan er gekozen worden om deze naam in het informatiemodel zo op te schrijven dat hier in de techniek makkelijker mee te werken is. Denk aan: "geinspireerd op" (geen diakrieten) of "OnroerendeZaak" (notitiewijze: camelcase). Wanneer de originele schrijfwijze in natuurlijke taal van belang is kan deze worden opgenomen in het metagegeven Alias. Het is niet de bedoeling om (andersom) in de Alias de technische makkelijkere naam op te nemen.

De Alias wordt ook gebruikt voor een alternatieve weergave van een «Enumeratiewaarde». De ‘naam’ betreft hier een daadwerkelijk waarde, zoals "Nederlands", waarin de naam gelijk staat aan de waarde en dit moet zo blijven, maar als er sprake is van een voor documentatiedoeleinde bedoelde codering van deze «Enumeratiewaarde» dan kan deze code in de Alias worden opgenomen.

Toepassing: Objecttype, Attribuutsoort, Gegevensgroep, Relatiesoort, Relatierol, Relatieklasse, Externe Koppeling, Keuze, Enumeratie, Primitief datatype, Gestructureerd datatype, Data-element en expliciet niet voor Packages, Enumeratiewaarde, en Constraint.

Opmerking: een uitzondering is gemaakt voor UML-modellen voor de UML-EnumerationLiteral. De ‘naam’ betreft hier een daadwerkelijk waarde, waarin de naam gelijk staat aan de waarde. Het is daarom expliciet ongewenst om hiervoor een Alias te gebruiken. De Alias wordt hier, mede daarom, gebruikt voor (alleen) de modellering van het metagegeven aspect Code die aanvullend is op naam (niet een alternatief van naam).

2.4.3.3 Metagegeven: Begrip

Toelichting

Hiermee wordt aangegeven hoe een informatiemodel element zich verhoudt tot de begrippen uit het begrippenkader, zoals genoemd in 1.6 Typering van modellen gekoppeld aan beschouwingsniveaus. Dit is niet een 1 op 1 relatie. Voor meer informatie hierover, zie 5. Afspraken & Regels.

Bijvoorbeeld:

  • "Perceel";
  • "http://brk.basisregistraties.overheid.nl/id/begrip/Perceel"

Toepassing: alle modelelementen met een naam, met uitzondering van Package en Constraint.

2.4.3.4 Metagegeven: Herkomst

Toelichting

Bijvoorbeeld: de herkomst van het kenmerk begrenzing van een Perceel heeft als waarde: "BRK". BRK staat dan bijvoorbeeld in de bijbehorende documentatie uitgelegd als: de basisregistratie Kadaster.

Er wordt expliciet niet bedoeld van welke informatievoorziening of registratie de data is overgenomen. Het gaat er bij dit metagegeven expliciet om uit welk domein of bron het modelelement zijn herkomst vindt. Voor basisregistraties is de herkomst altijd het eigen informatiemodel. Dit metagegeven is vooral van belang als het modelelement is overgenomen uit een ander informatiemodel.

Bijvoorbeeld: de herkomst van het kenmerk woonadres, wat bijvoorbeeld een «Relatiesoort» is van een Persoon in de basisregistratie Personen naar een Nummeraanduiding in de basisregistratie Adressen en Gebouwen (BAG), heeft als herkomst: "BRP" (de basisregistratie Kadaster). Dit kenmerk woonadres wordt bijgehouden in de BRP en de bron kant van de relatie zit in de BRP. De Nummeraanduiding zelf heeft in de BAG veelal als herkomst: "BAG". Mochten echter de adresgegevens niet (direct of indirect) uit de BAG komen, maar bijvoorbeeld via een eigen inwinningsproces in een eigen registratie worden bijgehouden, dan de herkomst niet de BAG.

Deze definitie omvat ook de definitie van herkomst van de stelselcatalogus (De registratie in wiens catalogus het objecttype is gespecificeerd (oftewel de registratie waar het objecttype deel van uitmaakt). Deze specificatie is toegevoegd omdat het wel duidelijk moet zijn in welke (basis)registratie of informatiemodel het objecttype).

Toepassing: alle modelelementen.

2.4.3.5 Metagegeven: Definitie

Toelichting

Bijvoorbeeld: Een Pand is de kleinste, bij de totstandkoming functioneel en bouwkundig-constructief zelfstandige eenheid die direct en duurzaam met de aarde is verbonden en betreedbaar en afsluitbaar is. De definitie volgt, indien aanwezig, de catalogus van de desbetreffende (basis)registratie of informatiemodel, mits deze het modelelement definieert vanuit een informatie en informatiemodel perspectief (er zijn ook andere definities mogelijk vanuit andere perspectieven, zoals vanuit een juridisch perspectief, of vanuit het perspectief van een model van begrippen, zoals genoemd in de paragraaf Typen informatiemodellen. Dergelijke definities kunnen hetzelfde zijn, of op het moment hetzelfde, of verschillend, of aanvullend op elkaar. Het is aan de beheerder van het informatiemodel om hier zorgvuldig mee om te gaan).

Toepassing: alle modelelementen.

2.4.3.6 Metagegeven: Herkomst definitie

Toelichting

Meestal staat in dit metagegeven aangegeven "mijn IM", bijvoorbeeld "BRK" als het om het informatiemodel van de BRK gaat.

Maar de herkomst van de definitie van het kenmerk adres kan ook als waarde hebben: "BAG". Of "BAG en BRK", waarbij in de documentatie verder uitgelegd wordt wat dit betekent, zoals dat de definitie is overgenomen en vervolgens binnen het eigen informatiemodel verder aangescherpt is, of nader opgesplitst is in twee aparte definities.

Dit metagegeven is niet bedoeld voor gevallen waarin een definitie alleen geïnspireerd is door een andere definitie, of de andere definitie daadwerkelijke dermate herdefinieerd dat de oorspronkelijke definitie niet meer van toepassing is.

Het gaat erom dat het voor gebruikers helder is hoe informatie die aan dit informatiemodel voldoet zich verhoudt tot informatie die aan het andere informatiemodel voldoet. Het metagegeven Herkomst definitie schept hier duidelijkheid in.

Toepassing: alle modelelementen die het metagegeven Definitie kennen.

2.4.3.7 Metagegeven: Toelichting

Toelichting

Bijvoorbeeld: een aantal treffende voorbeelden (waardes) van het kenmerk van het object of een aanduiding van wat er niet onder de definitie valt.

Het is niet de bedoeling om andere metagegevens in de toelichting op te nemen, zoals populatie of begrip. De toelichting is op zichzelf helder en te begrijpen en is gericht op de betekenis van gegevens en/of de context van deze gegevens. De toelichting is niet gericht op de inwinning van de gegevens maar beschrijft de betekenis van hetgeen wat ingewonnen is, zodat het voor de gebruikers van de gegevens helder is wat de betekenis ervan is. Het is daarom niet de bedoeling om inwinregels of veelgestelde vragen zelf in de toelichting op te nemen. Uiteraard is het wel goed om kennis die in de inwinregels en antwoorden "verborgen" zit een plek te geven in de toelichting.

Toepassing: alle modelelementen die het metagegeven definitie kennen.

2.4.3.8 Metagegeven: Datum opname

Toelichting

Bijvoorbeeld: "1-1-2012".

Toepassing: alle modelelementen, uitgezonderd datatype elementen, packages en overig.

2.4.3.9 Metagegeven: Identificerend

Toelichting: objecten hebben, of krijgen, in een administratie of gegevensvoorziening vaak één identificerend kenmerk. Het kan ook zijn dat een aantal kenmerken in combinatie identificerend zijn, zoals twee attribuutsoorten of een attribuutsoort en een relatiesoort. De combinatie met een relatiesoort wordt alleen gedaan voor objecttypes die zelf geen unieke aanduiding hebben en daarom deze moeten samenstellen met de unieke aanduiding van een gerelateerde objecttype. Het modelelement «Referentielijst» is het enige type waardelijst die dit metagegeven kan hebben, omdat de enumeratie zelf identificerend is en de uniek identificerende code van een codelijst zich buiten het informatiemodel bevindt.

Toepassing: attribuutsoort, alle relaties (relatiesoort, relatierol, relatieklasse, externe koppeling), referentie-element.

2.4.3.10 Metagegeven: heeft tijdlijn geldigheid

Toelichting

Bijvoorbeeld: "Ja", "Nee".

Met de tijdlijn geldigheid wordt bedoeld dat er op een tijdlijn wordt bijgehouden wanneer een verandering is opgetreden in de werkelijkheid die heeft geleid tot verandering van de waarde van een kenmerk van een object. Het gegeven is vanaf een bepaald tijdsmoment geldig en dit tijdsmoment wordt op enerlei wijze als metagegeven bijgehouden bij het gegeven.

Het komt vaak voor dat er besloten wordt of bepaald wordt dat een gegeven al geldig is of werd vanaf een bepaald tijdsmoment in het verleden en het komt voor dat het gegeven pas geldig zal worden vanaf een bepaald tijdsmoment in de (nabije) toekomst. Verdere toelichting, zie 5. Afspraken & Regels.

Met te bevragen wordt bedoeld: het tijdsmoment vanaf wanneer een gegeven als geldig wordt beschouwd (en vanaf wanneer het gegeven niet meer als geldig wordt beschouwd) wordt op enerlei wijze als historie bijgehouden, en deze wijze is te bevragen. Dit metagegeven is alleen betekenisvol voor kenmerken waarvoor een waarde wordt bijgehouden. De in te vullen waarde komt uit 2.4.5 Toegestane waarden metagegevens.

Toepassing: alle modelelementen die een kenmerk (kunnen) zijn van een Objecttype, waarvoor data kan worden bijgehouden: Attribuutsoort en relaties (Relatiesoort, Relatieklasse, Externe Koppeling).

2.4.3.11 Metagegeven: Indicatie materiële historie
Noot: Opmerkingen bij 'indicatie materiële historie'

Toelichting

Bijvoorbeeld: "Ja", "Nee".

Met te bevragen wordt bedoeld, er wordt historie bijgehouden op enerlei wijze, welke op enerlei wijze te bevragen is. Dit metagegeven is alleen betekenisvol voor kenmerken waarvoor data wordt bijgehouden. De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens. Materiële historie geeft aan wanneer een verandering is opgetreden in de werkelijkheid die heeft geleid tot verandering van de attribuutwaarde. Verdere toelichting, zie 5. Afspraken & Regels. De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens

Materiële historie geeft aan wanneer een verandering is opgetreden in de werkelijkheid die heeft geleid tot verandering van de attribuutwaarde. Verdere toelichting, zie het hoofdstuk Afspraken & Regels

Toepassing: alle modelelementen die een kenmerk (kunnen) zijn van een Objecttype, waarvoor data kan worden bijgehouden: Attribuutsoort en relaties (Relatiesoort, Relatieklasse, Externe Koppeling).

2.4.3.12 Metagegeven: heeft tijdlijn registratie

Toelichting

Bijvoorbeeld: "Ja", "Nee".

Met de tijdlijn registratie wordt bedoeld dat er op een tijdlijn wordt bijgehouden wanneer een bepaalde waarde voor een kenmerk van een object vastgelegd wordt, oftewel geregistreerd wordt. Dit tijdsmoment wordt op enerlei wijze als metagegeven bijgehouden bij het gegeven. De vastlegging kan zijn op een bepaald medium of in een registratie van een informatievoorziening. Het tijdsmoment van vastlegging of registratie is altijd ten tijde van vastlegging van een gegeven in de echte tijd (de horloge tijd). Elke keer dat hetzelfde gegeven op een andere plek wordt vastgelegd is een apart tijdsmoment op de tijdlijn registatie dat relevant kan zijn om bij te houden. Verdere toelichting, zie het hoofdstuk Afspraken & Regels.

Met te bevragen wordt bedoeld: het tijdsmoment wanneer een gegeven geregistreerd is wordt op enerlei wijze als historie bijgehouden, en deze wijze is te bevragen. Dit metagegeven is alleen betekenisvol voor kenmerken waarvoor een waarde wordt bijgehouden. Merk hierbij op dat het moment van registreren in de praktijk vaak, maar niet per definitie, gelijk is aan het moment van beschikbaar komen van een gegeven voor gebruikers van de informatievoorziening. De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens

Toepassing: alle modelelementen die een kenmerk (kunnen) zijn van een Objecttype, waarvoor data kan worden bijgehouden: Attribuutsoort en relaties (Relatiesoort, Relatieklasse, Externe Koppeling).

2.4.3.13 Metagegeven: Indicatie formele historie
Noot: Opmerkingen bij 'indicatie formele historie'

Toelichting

Bijvoorbeeld: "Ja", "Nee".

Met te bevragen wordt bedoeld, er wordt historie bijgehouden op enerlei wijze, welke op enerlei wijze te bevragen is. Dit metagegeven is alleen betekenisvol voor kenmerken waarvoor data wordt bijgehouden. De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens. Formele historie geeft aan wanneer in de administratie een verandering bekend is, en is verwerkt. Verdere toelichting, zie 5. Afspraken & Regels. De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens

Formele historie geeft aan wanneer in de administratie een verandering bekend is, en is verwerkt. Verdere toelichting, zie 5. Afspraken & Regels.

Toepassing: alle modelelementen die een kenmerk (kunnen) zijn van een Objecttype, waarvoor data kan worden bijgehouden: Attribuutsoort en relaties (Relatiesoort, Relatieklasse, Externe Koppeling).

2.4.3.14 Metagegeven: Kardinaliteit

Toelichting

  1. Waarde: 1..1: Een object heeft altijd dit kenmerk. Bijvoorbeeld: geboortedatum persoon.
  2. Waarde: 1..*: Een object heeft altijd dit kenmerk en het kenmerk kan meerdere malen voorkomen. Bijvoorbeeld: aantal hoofdstukken in een boek (in dit domein is dat er altijd minimaal 1).
  3. Waarde: 0..1: Is soms niet beschikbaar. Bijvoorbeeld: tussenvoegsel achternaam.
  4. Waarde: 0..*: Is niet altijd beschikbaar maar het kenmerk kan ook meerdere malen voorkomen. Bijvoorbeeld: verblijfsobjecten die gelegen zijn in een pand (garagebox: 0, huis: 1, flat: *). Andere getallen dan 0, 1 en * zijn ook toegestaan, bijvoorbeeld 2..* of 0..2. De notatie van * verschilt per modelleertaal. Met * wordt bedoeld, veel of vele (niet nader gespecificeerd maar bijvoorbeeld 10 of 100 is toegestaan).

Indien een «Attribuutsoort» deel uit maakt van een «Gegevensgroeptype», dan wordt de kardinaliteit vermeld van het «Attribuutsoort» binnen het «Gegevensgroeptype». Voor de uiteindelijke kardinaliteit van hoe vaak een gegeven voorkomt bij het object moet rekening gehouden worden met de kardinaliteit van de gegevensgroep en met de kardinaliteit van de «Attribuutsoort».

Merk op dat het zo kan zijn dat een object het kenmerk wel degelijk heeft/zou moeten hebben, maar dat het vooralsnog niet gelukt is om dit gegeven in te winnen of te achterhalen. Het is dan bekend dat het object dit kenmerk wel degelijk heeft, maar de waarde ervan is onbekend. De kardinaliteit wordt dan niet van 1 naar 0 gezet, maar er wordt aangegeven dat er sprake is van mogelijk geen waarde. Meer hierover is beschreven in 5. Afspraken & Regels.

Een «Generalisatie» is een bijzondere vorm van een relatie. De kardinaliteit van de bron en van het doel is hier altijd en per definitie 1..1. Dit hoeft daarom nooit via een aanduiding van een kardinaliteit te worden aangegeven.

Toepassing: alle modelelementen die een kenmerk (kunnen) zijn van een Objecttype.

2.4.3.15 Metagegeven: Kardinaliteit relatie bron

Voorbeeld: een verblijfsobject ligt in een pand. De eigenaar van de relatie is het verblijfsobject (de bron van de relatie) en het doel van de relatie is een pand.

  • De kardinaliteit van het doel van de relatie geeft aan: in hoeveel panden kan één verblijfsobject liggen. Antwoord: 1..*
  • De kardinaliteit van de bron geeft aan: hoeveel verblijfsobjecten kunnen er in één pand liggen. Antwoord: 0..*

Deze kardinaliteit is vooral nuttig voor controles, deze komt op data niveau echter (meestal) niet terug omdat relaties in MIM gericht zijn.

Toelichting

De kardinaliteit van de bron van de relatie geeft aan hoeveel instanties van de bron van de relatie kunnen verwijzen naar één instantie van het doel van de relatie. Wanneer de kardinaliteit aan de bronkant van de relatie niet is gespecificeerd dan is er geen sprake van een defaultwaarde.

Toepassing: relatiesoort, externe koppeling en relatieklasse

2.4.3.16 Metagegeven: Authentiek

Toelichting

Bijvoorbeeld:"Authentiek","Basisgegeven","Landelijk kerngegeven","Gemeentelijk kerngegeven","Overig".

Authentiek is van toepassing voor bijvoorbeeld het burgerservicenummer van een natuurlijk persoon. In de wet van bijvoorbeeld een basisregistratie ligt vast welke gegevens authentiek zijn. Een kenmerk is authentiek indien de juistheid (hoogwaardige kwaliteit) van het gegeven gewaarborgd wordt via formele inwinningsprocessen en wettelijk regelingen. Authentieke gegevens moeten door alle overheidsinstellingen verplicht en zonder nader onderzoek, worden gebruikt bij de uitvoering van publiekrechtelijke taken.

De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens

Toepassing: alle modelelementen die een kenmerk (kunnen) zijn van een Objecttype.

2.4.3.17 Metagegeven: Indicatie afleidbaar

Toelichting

Bijvoorbeeld: de naam van een openbare ruimte, zoals "Burgemeester Baron van Voerst van Lyndenstraat" , wordt in de verkorte schrijfwijze de verkorte naam: "Burg Bar v V v Lyndenstr" – dit is een afgeleid gegeven. Bijvoorbeeld de eigenaar van een huis kan worden afgeleid uit bepaalde andere gegevens die binnen het informatiemodel zijn vastgelegd.

Het afgeleide gegeven is zelf geen brongegeven en moet aangepast worden als de brongegevens aangepast worden. In de beschrijving van het kenmerk zal aangegeven zijn om welke gegevens het gaat en eventueel hoe de afleiding plaatsvindt.

Hoewel de definitie het niet duidelijk stelt, blijkt uit het voorbeeld dat het gaat om afgeleide gegevens binnen de context van het model. Het metagegeven is dus met andere woorden bedoeld om een afhankelijkheid binnen het model aan te geven.

Toepassing: de modelelementen waarvoor een waarde ingevuld kan worden, te weten de modelelementen Attribuutsoort en Relatiesoort.

2.4.3.18 Metagegeven: Indicatie classificerend

Toelichting

Een «Objecttype» kan middels een «Attribuutsoort» geclassificeerd worden in subtypen. Bijvoorbeeld: type gebouw. Een "Toren", "Kerk", "Bunker", "Zwembad" zijn allemaal typen gebouwen. In een model op niveau 2 kunnen dergelijke typen als objecttypen en specialisaties van het «Objecttype» gebouw zijn gemodelleerd. Met name op niveau 3 kan het relevant zijn om deze informatie daadwerkelijk te structureren door expliciet een aspect op te nemen waarmee direct het type gebouw kan worden vastgelegd, los van de modellering van objecttypen.

Praktisch gezien kan vervolgens gekozen worden om de onderliggende objecttypen niet meer in het model op te nemen, en slechts dit aspect op te nemen. Ook kan, in combinatie met Indicatie afleidbaar, dit aspect afgeleid worden uit het meest concrete «Objecttype», indien dergelijke objecttypen wel zijn gemodelleerd. De in te vullen waarde komt uit: zie 2.4.5 Toegestane waarden metagegevens

Toepassing: Attribuutsoort.

2.4.3.19 Metagegeven: Mogelijk geen waarde

Toelichting

Het gaat er hier om dat het onduidelijk is of de waarde er is, of als het wel duidelijk is dat er een waarde is, of zou moeten zijn, dat het onduidelijk is wat de waarde dan is. Dit metagegeven geeft dan aan dat het toegestaan is dat deze onduidelijkheid mag (blijven) bestaan. Veelal mag dit alleen onder bepaalde voorwaarden, met een opgaaf van reden.

  • Bijvoorbeeld: land van herkomst. Elk mens komt uit een land, maar het kan op het moment onduidelijk zijn welk land dit is;
  • Bijvoorbeeld: RSIN van een organisatie, voor gegevens in de registratie die ingewonnen zijn voordat het RSIN bestond. Het RSIN is een verplicht veld in het actuele informatiemodel, maar voor oude gegevens is de waarde onbekend.

Toepassing: de modelelementen waarvoor een waarde ingevuld kan worden, te weten de modelelementen Attribuutsoort en Relatiesoort.

2.4.3.20 Metagegeven: Bron

Toelichting

Bijvoorbeeld: een persoon heeft een adres. Dit kun je modelleren door middel van een «Relatiesoort» tussen een «Objecttype» Persoon en een «Objecttype» Adres. Het metagegeven Bron van de «Relatiesoort» bevat dan als waarde: "Persoon".

Toepassing: Relatiesoort en Externe koppeling.

2.4.3.21 Metagegeven: Doel

Toelichting

Bijvoorbeeld: een persoon heeft een adres. Dit kun je modelleren door middel van een «Relatiesoort» tussen een «Objecttype» Persoon en een «Objecttype» Adres. Het metagegeven Doel van de «Relatiesoort» bevat dan als waarde: "Adres".

Toepassing: Relatiesoort en Externe koppeling.

2.4.3.22 Metagegeven: Unidirectioneel

Toelichting

Het is gebruikelijk om een richting aan te geven. De betekenis van A naar B is een andere dan van B naar A. Bovendien geeft het aan bij welk «Objecttype» het kenmerk wordt bijgehouden, oftewel wie de eigenaar is.

Bijvoorbeeld: een persoon heeft een postadres. De richting van de relatie is van het «Objecttype» Persoon naar het «Objecttype» Adres. De eigenaar van de relatie (de bron, in dit voorbeeld: Persoon) heeft kennis van de het gerelateerde objecttype (het doel, in dit voorbeeld: Adres).

In een modelleertaal wordt dit vaak aangegeven met een pijl. De pijl heeft als vertrekpunt de bron en heeft als pijlpunt, waar de relatie naar wijst, het gerelateerde «Objecttype». Alle relaties zijn altijd gericht van het bronobject naar het gerelateerde doelobject.

Toepassing: Relatiesoort en Externe koppeling.

2.4.3.23 Metagegeven: Aggregatietype

Toelichting

Een object kan samengesteld zijn uit samenstellende delen die ook individueel in het informatiemodel als objecttypen herkenbaar zijn. Dit wordt een aggregatie genoemd. Dit wordt gemodelleerd met een Attribuutsoort waarbij dit metagegeven is ingevuld met een type aggregatie. Er zijn twee typen: een compositie aggregatie en een gedeelde aggregatie. De aggregatie is in de basis een relatie en het aggregratietype geeft aanvullende informatie. Standaard is er bij een relatie geen sprake van een aggregatie, dan wordt bij dit metagegeven Geen ingevuld.

  • "Compositie" (Engels: "composite"): het doel object is een integraal onderdeel van het eigenaarobject en dit onderdeel wordt niet gedeeld met anderen. De eigenaar is volledig verantwoordelijk voor het beheer van de bijhouding van informatie over het onderdeel. Als de eigenaar vervalt, dan vervallen automatisch ook de onderdelen. Het doel object kan als onderdeel niet zelfstandig bestaan: het doel vervalt als de eigenaar vervalt. Wel kan je een onderdeel vervangen met behoud van het eigenaar object.
  • "Gedeeld" (Engels: "shared"): het onderdeel kan gebruikt en gedeeld worden door meerdere eigenaren. Bijvoorbeeld: een leerling maakt deel uit van verschillende klassen.

Bijvoorbeeld: een auto heeft verschillende onderdelen, waaronder een motor. In het informatiemodel gaat het vooral om de auto en is de motor alleen relevant omdat het een onderdeel is van de auto. Een motor kan in dit geval maar door één auto worden gebruikt en als een auto verdwijnt verdwijnt ook de motor. Met andere woorden een motor is een onlosmakelijk onderdeel van een auto en kan niet door een ander object worden gebruikt of zelfstandig bestaan, het is een aggregatie van het type compositie. (Aggregatietype: "Compositie").

Toepassing: Relatiesoort en Externe koppeling.

2.4.3.24 Metagegeven: Locatie

Toelichting

De plek is een gepubliceerde plek waar gebruikers bij kunnen. Indien mogelijk is dit metagegeven gevuld met (heeft als waarde) een URI of een URL (als er geen URI is, dan kan dit een URL zijn, waar de waardelijst op basis van de naam van de waardelijst te vinden is), bijvoorbeeld: Locatie: http://www.organisatie.nl/schemas/waardelijsten/NaamWaardelijst.

Toepassing: Codelijst en Referentielijst.

2.4.3.25 Metagegeven: Doelformaat

Toelichting

Voor de hand liggende formaten waarin een waardelijst is gepubliceerd zijn onder andere SKOS en CSV.

Toepassing: Codelijst en Referentielijst.

2.4.3.26 Metagegeven: Waarde-item

Toelichting

Als een «Codelijst» een structuur heeft wordt hiermee aangegeven welk item in de «Codelijst» de waarde representeert.

Toepassing: Codelijst

2.4.3.27 Metagegeven: Profielspecificatie

Toelichting

MIM zegt niets over de technische implementatie van de codelijst. Om een referentie naar informatie over de technische implementatie wel in het model op te nemen is er de mogelijkheid om met het metagegeven Profielspecificatie de specifieke technische toepassing van de codelijst te beschrijven. Bij voorkeur is de referentie door middel van een url.

Toepassing: Codelijst

2.4.3.28 Metagegeven: Type

Het domein van een waarde van een gegeven.

Toelichting

  • Bijvoorbeeld: het Type van het kenmerk geometrie is het «Datatype» VlakOfMultivlak;
  • Bijvoorbeeld: het Type van het kenmerk achternaam is het «Datatype» CharacterString.

Een «Attribuutsoort» heeft een «Datatype» voor de specificatie van het toegestane waardetype. Hetzelfde geldt voor een «Data-element», een «Referentie-element» en een «Keuze». Dit is altijd conform een datatype uit dit metamodel (of een extensie ervan) of een «Primitief datatype» die extern is aan dit model. Betreft het een waarde uit een dynamische waardentabel, dan wordt de naam van de desbetreffende «Referentielijst» of «Codelijst» als type vermeld. Indien het een waarde uit een statische opsomming van waarden betreft, dan wordt de naam van de desbetreffende «Enumeratie» als type vermeld.

Toepassing: Alle informatie elementen die een attribuut modelleren: Attribuutsoort, Data-element, Referentie-element, Datatypekeuze, Doelkeuze.

2.4.3.29 Metagegeven: Lengte

De notatiewijze en de betekenis is als volgt:

Voor karakters:

Notatie Betekenis
"1" De lengte is precies 1
"2.." De lengte is minimaal 2 (inclusief 2) of meer (onbegrensd)
"2..9" De lengte is minimaal 2 en maximaal 9 (inclusief 9)

Voor getallen:

Notatie Betekenis
"3" De lengte is maximaal 3 (inclusief 3, dus 1, 2 of 3) voor de komma
"3,2" De lengte is maximaal 3 (inclusief 3, dus 1, 2 of 3) voor de komma, en maximaal 2 getallen na de komma

Andere getallen dan "1", "2", "3" of "9" kunnen uiteraard gebruikt worden om er de lengte mee te specificeren.

Toelichting

Het gaat bij deze lengte om hoe lang een gegeven in functionele zin mag zijn. Dus, hoeveel karakters en hoeveel getallen voor en na de komma. De lengte heeft betrekking op data waar een modelelement over gaat. Bij een «Attribuutsoort» gaat het om de lengte van de data van het attribuut. Bij een «Gestructureerd datatype» krijgt elk «Data-element» een eigen lengte en gaat het om de lengte van alleen dit «Data-element».

Bijvoorbeeld:

  • Een naam van een persoon met minimale lengte 2 en onbegrensd: CharacterString, lengte: "2.."
  • Een naam van een openbare ruimte met minimale lengte 2 en maximale lengte 80: CharacterString, lengte: "2..80"
  • Een identificatie als getal, van maximaal lengte 16: Integer, lengte: "16"
  • Een identificatie van precies lengte 16, met voorloopnullen: CharacterString, lengte: "16"
  • Een percentage met 2 getallen achter de komma: Decimal, lengte: "3,2"

Voorheen vaak gebruikt:

  • AN80 komt overeen met CharacterString, lengte: "1..80"
  • N8 komt overeen met Integer, lengte: "8" (dus van "-99999999" tot en met "+99999999")
  • N3,2 komt overeen met Decimal, lengte: "3,2"

Veel voorkomende maximumwaarden voor CharacterString zijn: "80", "200", "4000".

Een getal dat voorloopnullen mag hebben, zoals gemeentecode: "0060", wordt gespecificeerd als een CharacterString. Het getal "0001" bestaat namelijk niet, dit is het getal "1".

De lengte geldt voor gegevens indien er sprake is van een gegeven. Gegevens die optioneel zijn worden leeggelaten, het is daarom niet de bedoeling om voor optionele gegevens een lengte van minimaal "0" te specificeren. Als het gegeven ingevuld is, dan is de lengte minimaal "1".

Het "-"-teken bij een negatief heeft geen gevolgen voor de specificatie van de lengte.

Niet alle eisen aan een gegevens kunnen gespecificeerd worden met een lengte. Gebruik in dat geval Patroon of Formeel patroon of een andere specificatie van de minimale en/of maximale waarde. Bijvoorbeeld:

  • Één of twee cijfers achter de komma kan niet gespecificeerd worden met lengte;
  • Één of twee cijfers voor de komma kan niet gespecificeerd worden met lengte;
  • Een exacte lengte voor een getal, oftewel lengte precies 16 waarbij lengte 1 of 15 niet mag;
  • Het waardenbereik van een gegeven, "binnen" deze lengte;
  • Of een getal negatief of positief mag zijn.

Toepassing: Attribuutsoort, Primitief datatype (alleen als dit datatype in het IM zelf-gedefinieerd is), Data-element, Referentie-element.

2.4.3.30 Metagegeven: Patroon

Toelichting

De structuur is in woorden beschreven. Bijvoorbeeld: "Conform de Nederlandse standaard voor het beschrijven van een postcode". Het specificeren van een patroon is alleen van toepassing wanneer de specificatie aangeeft dat de waarde (direct of indirect) een «Primitief datatype» betreft, zoals een CharacterString.

Toepassing: De modelelementen uit de groep Datatype en Attribuutsoort.

2.4.3.31 Metagegeven: Formeel patroon

Toelichting

De structuur is in een reguliere expressie beschreven.

Bijvoorbeeld: "[1-9][0-9][0-9][0-9][A-Z][A-Z]"

Het specificeren van een patroon is alleen van toepassing wanneer de specificatie aangeeft dat de waarde (direct of indirect) een «Primitief datatype» betreft, zoals een CharacterString.

Toepassing: De modelelementen uit de groep Datatype en Attribuutsoort.

2.4.3.32 Metagegeven: Code

Toepassing: Enumeratiewaarde.

2.4.3.33 Metagegeven: Indicatie abstract object
Noot

Toelichting

Niet-abstract wordt ook wel concreet genoemd. Bijvoorbeeld het abstracte «Objecttype» "Voertuig", met concrete specialisaties "Auto", "Fiets" en "Bromfiets". Dit betekent dat er geen voertuigen mogen bestaan die alleen maar een voertuig zijn en waarbij in het midden gelaten mag worden of het een auto, fiets, bromfiets betreft. Als het "Voertuig" daarentegen niet als abstract is gemodelleerd, dan mogen er wel voertuigen bestaan die alleen maar een voertuig zijn en niet specifiek herkenbaar als een auto, fiets of bromfiets. In beide gevallen kan er over de objecten gesproken worden als zijnde een voertuig en kunnen deze objecten in algemene zin als zodanig behandeld worden (zoals een «Generalisatie» bedoeld is).

Wanneer een «Objecttype» niet abstract is, oftewel concreet, dan kunnen er objecten bestaan die een instantie van «Objecttype» zijn.

Wanneer een «Objecttype» wel abstract is, dan kunnen er geen objecten bestaan die een instantie van dit «Objecttype» zijn. Er moet dan altijd sprake zijn van een concreet (niet abstract) «Objecttype» die het abstracte «Objecttype» als «Generalisatie» heeft. Objecten zijn dan instanties van dit concrete «Objecttype» en geen instanties van het abstracte «Objecttype». Wel voldoen deze objecten beide «Objecttype» definities en kunnen deze objecten in algemene zin als zodanig behandeld worden.

Zie ook sectie 5.5 Abstracte objecttypes en concrete objecten waar een nadere uitleg wordt gegeven van het fenomeen abstract objecttypen.

Toepassing: Objecttype

2.4.3.34 Metagegeven: Populatie

Toelichting

De definitie van een «Objecttype» geeft aan welke exemplaren in de werkelijkheid bedoeld worden, te weten die exemplaren die aan de definitie voldoen. Het metagegeven Populatie in een (basis)registratie kan in het gebruik echter beperkter zijn, omdat niet alle examplaren die aan de definitie voldoen, worden geregistreerd. Er zijn dan dus examplaren die wel aan de definitie voldoen, maar die niet worden geregistreerd en dus ook niet opgevraagd kunnen worden.

De Populatie is een nadere afbakening op de definitie, een beschrijving van de subset van de verzameling van alle exemplaren van dit «Objecttype» die:

  • wel geregistreerd of uitgewisseld worden en/of
  • wel aan de definitie voldoen, maar die niet geregistreerd of uitgewisseld worden. Wanneer alle exemplaren die onder de definitie vallen geregistreerd zijn en/of uitgewisseld kunnen worden, dan mag de Populatie worden leeggelaten.

De Populatie kan ook gebruikt worden om aan te geven dat niet alle exemplaren van een «Objecttype» opgenomen zijn in de registratie maar alleen die welke voldoen aan een conditie. De conditie heeft verder geen effect op de definitie.

Toepassing: Objecttype

2.4.3.35 Metagegeven: Kwaliteit

Toelichting

Dit metagegeven kan een beschrijving bevattten over de kwaliteit van de inwinning van gegevens bij dit objecttype.

Toepassing: Objecttype

2.4.3.36 Metagegeven: Eenheid

Toelichting

In essentie zijn er vier componenten die een meting of een waarneming beschrijven:

  1. het onderwerp (wat wordt er gemeten)
  2. de waarde (de waarde die gemeten is)
  3. het datatype van die waarde (kwalitatief:Boolean, Characterstring, kwantitatief:Integer, Real of Decimal)
  4. de eenheid van de waarde

De eerste drie componenten zijn uit te drukken met de modelelementen «Attribuutsoort» en «Datatype». Voor de eenheid van een waarde is een apart metagegeven gecreëerd dat gekoppeld wordt aan een «Attribuutsoort» of een «Referentie-element».

Voor de invulling van het metagegeven Eenheid, sluit het MIM aan bij het Internationale Stelsel van Eenheden [SI]. Een modelleur vult bij Eenheid de unit expression van de eenheid in, bijvoorbeeld: m voor de lengtemaat meter. Een codelijst van mogelijke waarden en bijbehorende symbolen en unit expressions is beschikbaar via SI Reference Point.

Het SI-stelsel bestaat uit zeven basiseenheden. Aanvullend staat het systeem een onbeperkt aantal afgeleide eenheden toe, die altijd kunnen worden uitgedrukt als product van machten van de basiseenheden. Hiervoor zijn SI-prefixen gedefinieerd. Naast de SI-eenheden zijn er een aantal niet-SI-eenheden die wel goedgekeurd zijn voor gebruik in samenstelling met SI-eenheden, zoals: liter, uur, minuut en graden Celsius. Imperiale eenheden, zoals: pound, inch en foot zijn niet goedgekeurde SI-eenheden.

Toepassing: Attribuutsoort, Referentie-element.

2.4.3.37 Metagegeven: Minimumwaarde inclusief

Toelichting

Bijvoorbeeld de minimale waarde voor een geldigheidsdatum.

Toepassing

Gebruik op attribuutsoorten, data elementen en referentie-elementen met een primitief datatype van het type:

  • Integer
  • Decimal
  • Float
  • Real
  • DateTime
  • Date

Een modelelement mag maar één voorkomen van metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben.

2.4.3.38 Metagegeven: Minimumwaarde exclusief

Toelichting

Bijvoorbeeld de minimale inhoud van een bouwwerk.

Toepassing

Gebruik op attribuutsoorten, data elementen en referentie-elementen met een primitief datatype van het type:

  • Integer
  • Decimal
  • Float
  • Real
  • DateTime
  • Date

Een modelelement mag maar één voorkomen van metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben.

2.4.3.39 Metagegeven: Maximumwaarde inclusief

Toelichting

Bijvoorbeeld de minimale waarde voor een geldigheidsdatum.

Toepassing

Gebruik op attribuutsoorten, data elementen en referentie-elementen met een primitief datatype van het type:

  • Integer
  • Decimal
  • Float
  • Real
  • DateTime
  • Date

Een modelelement mag maar één voorkomen van metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben.

2.4.3.40 Metagegeven: Maximumwaarde exclusief

Toelichting

Bijvoorbeeld de maximale waarde voor een geldigheidsdatum.

Toepassing

Gebruik op attribuutsoorten, data elementen en referentie-elementen met een primitief datatype van het type:

  • Integer
  • Decimal
  • Float
  • Real
  • DateTime
  • Date

Een modelelement mag maar één voorkomen van metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben.

2.4.3.41 Metagegeven: Mixin

Toelichting:

Mixin kan gebruikt worden als metagegeven bij een Generalisatie bij logische gegevensmodellen indien er sprake is van multiple inheritance, d.w.z. meerdere superklassen op een subklasse. Het is opgenomen om multiple inheritance implementatie-issues op te lossen in talen/specificaties die dit niet (of niet eenvoudig) ondersteunen. Met Mixin = Ja wordt aangegeven dat deze generalisatie en ook de gerelateerde superklasse niet in de implementatie voorkomt maar dat wel eigenschappen (attribuutsoorten en relatiesoorten/rollen) worden overgenomen door de subklasse. Mixin = Ja geeft de mogelijkheid om de multiple inheritance indien gewenst, in het MIM niveau 3 model te behouden maar er in de implementatie indien nodig rekening, mee te houden. De modelleur kan hiermee aangeven welke generalisatie op een alternatieve manier wordt geïmplementeerd. Talen die multiple inheritance wel ondersteunen negeren dit metagegeven.

Figuur 16 Diagram: Voorbeeld van multiple inheritance met het metagegeven 'Mixin = "Ja"' op een generalisatie.

Toepassing: Generalisatie en alleen bij MIM niveau 3. Niet gebruiken bij generalisaties tussen datatypen.

2.4.4 Modelelementbindingen - metagegevens

Bindingen geven aan hoe modelelementen met elkaar verbonden kunnen en mogen worden.

Enkele voorbeelden:

  • Binding tussen een «Objecttype» en een «Attribuutsoort», om aan te geven dat een «Attribuutsoort» gemodelleerd kan worden als eigenschap van een «Objecttype»
  • Binding tussen een «Objecttype» en een «Generalisatie»;
  • Binding tussen een «Enumeratie» en een «Enumeratiewaarde».

Een voorbeeld van wat niet mag:

  • Binding tussen een «Attribuutsoort» en een «Relatiesoort».

Deze metagegevens zijn alleen nodig voor de binding van modelelementen aan elkaar en zijn vrijwel altijd een onderdeel van een modelleertaal (waarmee een informatiemodel gemaakt kan worden). In modelleertalen is de binding niet altijd benoemd en is dan impliciet aanwezig. Het metagegeven hoeft dan in die modelleertaal niet expliciet te worden opgenomen. Omdat dit hoofdstuk los van een modelleertaal is beschreven zijn de namen van de bindingen wel opgenomen. Mocht het relevant zijn om de namen van de verbindingen ergens te gebruiken: er zijn twee schrijfwijzen aangegeven die equivalent zijn, gescheiden door een / (forward slash). De bindingen zijn ook in diagram vorm te lezen aan het begin van dit hoofdstuk, in 2.2 Structuur metamodel.

2.4.4.1 Metagegeven: heeft attribuut

Verkorte schrijfwijze: attribuut

Toelichting

Objecttypen, gegevensgroeptypen of relatieklassen hebben attribuutsoorten (0,1,n) voor het specificeren van eigenschappen.

Toepassing: Objecttype, Gegevensgroeptype en Relatieklasse.

2.4.4.2 Metagegeven: heeft gegevensgroep

Verkorte schrijfwijze: gegevensgroep

Toelichting

Objecttypen en relatieklassen hebben gegevensgroepen (0,1,n) voor het specificeren van groepen van eigenschappen.

Toepassing: Objecttypen met Gegevensgroepen of een Gegevensgroeptype dat zelf ook weer een Gegevensgroeptype bevat.

2.4.4.3 Metagegeven: heeft gegevensgroeptype

Verkorte schrijfwijze: gegevensgroeptype

Toelichting

Een attribuut met het stereotype gegevensgroep heeft als waardetype een gegevensgroeptype.

Toepassing: Gegevensgroep.

2.4.4.4 Metagegeven: verwijst naar supertype

Verkorte schrijfwijze: supertype

Toelichting

Een subtype verwijst met een generalisatie naar een supertype.

Toepassing: Objecttype en Datatype.

2.4.4.5 Metagegeven: heeft datatype

Verkorte schrijfwijze: type

Toelichting

Een datatype wordt onder andere toegekend aan een attribuutsoort.

Toepassing: Attribuutsoort, Keuze, Referentie-element, Data-element

2.4.4.6 Metagegeven: heeft relatiesoort

Verkorte schrijfwijze: relatiesoort

Toelichting

Een objecttype kan een relatie hebben naar zichzelf of een ander objecttype.

Toepassing: Objecttype, Gegevensgroeptype.

2.4.4.7 Metagegeven: heeft externe koppeling

Verkorte schrijfwijze: externe koppeling

Toelichting

Een objecttype kan een relatie hebben met en objecttype in een extern package.

Toepassing: Objecttype, Gegevensgroeptype.

2.4.4.8 Metagegeven: heeft data-element

Verkorte schrijfwijze: data-element

Toelichting

Een gestructureerd datatype bevat meerdere data-elementen.

Toepassing: Gestructureerd datatype.

2.4.4.9 Metagegeven: bevat modelelement

Verkorte schrijfwijze: modelelement

Toelichting

Een package «Domein» met de naam Activiteiten bevat «Objecttype» Werken, Wonen etc.

Toepassing: Package, Informatiemodel, Domein, Extern, View.

2.4.4.10 Metagegeven: bevat enumeratiewaarde

Verkorte schrijfwijze: waarde

Toelichting

Een «Enumeratie» bevat «Enumeratiewaarden».

Toepassing: Enumeratie.

2.4.4.11 Metagegeven: bevat referentie-element

Verkorte schrijfwijze: referentie-element

Toelichting

Een referentielijst bevat referentie-elementen.

Toepassing: Referentielijst.

2.4.4.12 Metagegeven: heeft datatypekeuze

Verkorte schrijfwijze: datatypekeuze

Toelichting

Een attribuutsoort kan als datatype een keuze uit datatypen hebben.

Toepassing: Attribuutsoort.

2.4.4.13 Metagegeven: heeft attribuutkeuze

Verkorte schrijfwijze: attribuutkeuze

Toelichting

Een keuze tussen attribuutsoorten kan als eigenschap aan een objecttype, gegevensgroeptype of relatieklasse worden gekoppeld.

Toepassing: Objecttype, Gegevensgroeptype, Relatieklasse, Attribuutsoort.

2.4.4.14 Metagegeven: heeft keuzeattribuut

Verkorte schrijfwijze: keuzeattribuut

Toelichting

Een keuze tussen attribuutsoorten bindt 2 of meer attribuutsoorten.

Toepassing: Keuze.

2.4.4.15 Metagegeven: heeft relatiedoelkeuze

Verkorte schrijfwijze: relatiedoelkeuze

Toelichting

Een keuze tussen relatiedoelen kan als eigenschap aan een objecttype of gegevensgroeptype worden gekoppeld.

Toepassing: Objecttype, Gegevensgroeptype, Keuze.

2.4.4.16 Metagegeven: heeft relatiesoortkeuze

Verkorte schrijfwijze: relatiesoortkeuze

Toelichting

Een keuze tussen relatiesoorten kan als eigenschap aan een objecttype of gegevensgroeptype worden gekoppeld.

Toepassing: Objecttype, Gegevensgroeptype, Keuze.

2.4.4.17 Metagegeven: heeft constraint

Verkorte schrijfwijze: constraint

Toelichting

Een Constraint is gekoppeld aan de context van modelelement waarop ze van toepassing is. Een Constraint kan op alle typen modelelementen worden toegepast.

2.4.5 Toegestane waarden metagegevens

Toelichting op de toegestane waarden van (bepaalde) metagegevens.

2.4.5.1 Waardebereik

Een aantal metagegevens hebben als datatype CharacterString. Aanvullend geldt:

  • Voor lengtes geldt dat er alleen getallen in mogen (van het datatype Integer).
  • Voor datums geldt dat deze het volgende patroon volgen: jjjjmmdd
  • Voor de metagegevens Definitie en Toelichting geldt dat hiervoor tekst met opmaak (zoals vet, cursief, onderstreept en opsommingen) gebruikt mag worden. Welke opmaak precies gebruikt kan worden, is afhankelijk van de mogelijkheden van de modelleeromgeving en de beoogde toepassing van het model. Gebruik hiervoor het metagegeven tekstopmaak.

Voor de volgende metagegevens geldt een specifiek waardebereik.

Metagegeven Waardenbereik
Heeft tijdlijn registratie Ja, Nee
Heeft tijdlijn geldigheid Ja, Nee
Indicatie classificerend Ja, Nee
Indicatie abstract object Ja, Nee
Mogelijk geen waarde Ja, Nee
Mixin Ja, Nee
Aggregatietype Compositie, Gedeeld, Geen
Authentiek Authentiek, Basisgegeven, Wettelijk gegeven, Landelijk kerngegeven, Overig
Noot: Waarde = Overig

De metagegevens met Ja en Nee zijn semantisch bedoeld als een boolean (er zijn geen andere waarden mogelijk zoals onbekend, overig of geen waarde (leeg)). Voor technische implementatiedoeleinden is het toegestaan om Ja en Nee te interpreteren en eventueel te vervangen door een Boolean. Let wel, voor mens-leesbare functionele documentatie horen altijd de in de tabel aangegeven waarden Ja en Nee te worden gebruikt.

2.4.5.2 Defaultwaarden

Er zijn metagegevens die een defaultwaarde hebben. Het is echter niet nodig om deze defaultwaarde expliciet aan te geven in het informatiemodel. De default staat hier aangegeven. Alleen wanneer er afgeweken wordt van deze default wordt dit in het informatiemodel aangegeven.

Metagegeven Defaultwaarde
Heeft tijdlijn geldigheid Nee
Heeft tijdlijn registratie Nee
Indicatie materiele historie Nee
Indicatie formele historie Nee
Indicatie classificerend Nee
Indicatie abstract object Nee
Mogelijk geen waarde Nee
Identificerend Nee
Unidirectioneel Ja
Kardinaliteit («Attribuutsoort») 1
Aggregatietype Geen
Mixin Nee
Noot: Metagegevens met een defaultwaarde
Noot: Kardinaliteit van Relaties

3. Metamodel in UML

Dit hoofdstuk beschrijft hoe je met de modelelementen uit het hoofdstuk Metamodel Algemeen een informatiemodel maakt in UML.

3.1 Structuur metamodel in UML

De eerste paragraaf bevat UML-diagrammen. Elk diagram toont een aantal modelelementen. Het geheel van diagrammen, in samenhang, is opgenomen in bijlage 6.1 Diagrammen. Uitgangspunten voor het metamodel in UML zijn:

Bijna alle modelelementen hebben een UML-metaclass (UML 2.5) als basis. In de navolgende diagrammen heeft een UML-metaclass een lichtblauwe kleur. Dit is ook opgenomen in diagramvorm. Een overzicht van de diagrammen met metadata is beschikbaar in bijlage 6.1 Diagrammen.

3.1.1 Kern

Figuur 17 Diagram: Kern zonder metagegevens

In de bijlage is het UML diagram met de metagegevens opgenomen.

Kern zonder Metagegevens

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Objecttype «Objecttype» (UML) Class Class
Attribuutsoort «Attribuutsoort» (UML) Property Attribute
Gegevensgroep «Gegevensgroep» (UML) Property Attribute
Gegevensgroeptype «Gegevensgroeptype» (UML) Class Class
Generalisatie «Generalisatie» (UML) Generalization Generalization
Relatiesoort «Relatiesoort» (UML) Association Association
Relatieklasse «Relatieklasse» (UML) Association én (UML) Class Associationclass
Noot: Stereotype «Datatype» afwezig in UML

3.1.2 Datatypen

Figuur 18 Diagram: Datatypen zonder metagegevens

In de bijlage is het UML diagram met de metagegevens opgenomen.

Datatypen zonder Metagegevens

Datatypen

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Primitief datatype «Primitief datatype» (UML) Primitive Type Datatype
Gestructureerd datatype «Gestructuurd datatype» (UML) Datatype Datatype
Data-element «Data-element» (UML) Property Attribute
Enumeratie - (UML) Enumeration Enumeration
Enumeratiewaarde - (UML) EnumerationLiteral EnumerationLiteral
Referentielijst «Referentielijst» (UML) Datatype Datatype
Referentie-element «Referentie-element» (UML) Property Attribute
Codelijst «Codelijst» (UML) Datatype Datatype

3.1.3 Overige

Naast de kern en de datatypen zijn er nog een aantal andere modelelementen met voor specifieke modelconstructies.

3.1.3.1 Constraint
Figuur 19 Diagram: Constraint zonder metagegevens

Constraint

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Constraint - (UML) Constraint Constraint
3.1.3.2 Keuze

Er zijn vijf situaties waarin een keuze toegepast wordt:

  • Use case 1: een keuze tussen datatypen
  • Use case 2: een keuze tussen twee of meer attribuutsoorten
  • Use case 3: een keuze tussen meerdere manieren om één betekenisvol attribuutsoort in te vullen
  • Use case 4: een keuze tussen relatiedoelen, als nadere invulling van één betekenisvolle relatiesoort
  • Use case 5: een keuze tussen relatiesoorten/relatierollen (elk afzonderlijk betekenisvol)

Voor elke toepassing geldt een aparte subset van het metamodel. De keuzeconstructie maakt een keuze mogelijk tussen meerdere datatypen, attribuutsoorten en relatiedoelen. In UML behouden we dezelfde modellering: een datatype blijft dus een datatype, een attribuutsoort een attribuutsoort en een relatiesoort een relatiesoort. De UML-elementen die het stereotype keuze krijgen zijn zelf geen datatype, attribuutsoort of relatiedoel. Merk op dat de diagrammen op metamodelniveau zijn gemodelleerd. Hoe dit op informatiemodelniveau uitpakt is onder het diagram beschreven in tekst.

Use case 1: Keuze tussen datatypen

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype en Relatieklasse geldt hetzelfde patroon.

Figuur 20 Diagram: Keuze tussen datatypen met UML

Modellering van deze Keuze in een informatiemodel:

  • Modelleer een UML-Datatype met stereotype keuze.
  • Modelleer hierin 2 of meer MIM-Datatypen: neem hiervoor eerst een UML-attribute met stereotype keuze op in de Keuze zoals gemodelleerd in punt 1, dit UML-attribute krijgt als typering het gewenste (MIM) Datatype. Merk op dat dit extra UML-attribute is zelf geen keuze mogelijkheid is, de keuze is immers tussen de datatypen.

Gebruik de Keuze voor een (MIM) Attrituutsoort:

  • Kies een MIM-Attribuutsoort en koppel de hiervoor gemodelleerde Keuze hieraan via een typering, zoals gebruikelijk.

Use case 2: Keuze tussen 2 of meer attribuutsoorten

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype en Relatieklasse geldt hetzelfde patroon.

Figuur 21 Diagram: Keuze tussen twee of meer attribuutsoorten

Modellering van deze Keuze in een informatiemodel:

  • Modelleer in UML een UML-Class met stereotype keuze.
  • Modelleer hierin 2 of meer MIM-Attribuutsoorten: elk (MIM) Attribuutsoort wordt gemodelleerd zoals gebruikelijk, door een UML-Property (attribute) met stereotype attribuutsoort (en deze UML-Property (attribute) heeft zelf weer als typering een MIM-Datatype).

Gebruik de Keuze voor het (MIM) Objecttype of het (MIM) Gegevensgroeptype:

  • Modelleer in een (MIM) Objecttype of in een (MIM) Gegevensgroeptype een _UML-Property (attribute) met stereotype keuze en koppel de hiervoor gemodelleerde Keuze hieraan, via een typering, zoals gebruikelijk. Aan dit stereotype keuze is te zien dat deze UML-Property zelf geen (MIM) Attribuutsoort is van het objecttype. Immers, alleen de met stereotype Attribuutsoort aangeduide UML-properties (attributes) zijn een (MIM) Attribuutsoort.

Er is hier voor de aankoppeling gekozen voor een UML-Attribute en niet voor een UML-Association in navolging van de modellering van de gegevensgroep en het gegevensgroeptype.

Use case 3: Keuze tussen meerdere manieren om 1 betekenisvol attribuutsoort in te vullen

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype en Relatieklasse geldt hetzelfde patroon.

Figuur 22 Diagram: Keuze tussen meerdere manieren om één betekenisvol attribuutsoort in te vullen

Modellering van deze Keuze in een informatiemodel:

  • Modelleer in UML een UML-Class met stereotype keuze.
  • Modelleer hierin twee of meer keuze mogelijkheden door voor elke keuze mogelijkheid een UML-Property (attribute) te modelleren met stereotype keuze (en deze UML-Property heeft als datatype een MIM-Datatype). Aan dit stereotype keuze is te zien dat deze UML-Property (attribute) zelf geen (MIM) Attribuutsoort is van het objecttype. Immers, alleen een met stereotype Attribuutsoort aangeduid UML-attribute is een (MIM) Attribuutsoort.

Gebruik de Keuze voor de (MIM) Attribuutsoort:

  • Modelleer in een (MIM) Objecttype of in een (MIM) Gegevensgroeptype een MIM-Attribuutsoort zoals gebruikelijk, en koppel de hiervoor gemodelleerde Keuze hieraan, via een typering, zoals gebruikelijk.

Use case 4: Keuze tussen relatiedoelen, als nadere invulling van 1 betekenisvolle relatiesoort

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype geldt hetzelfde patroon, behalve dat een Gegevensgroeptype geen doel mag zijn van een Relatiesoort.

Figuur 23 Diagram: Keuze tussen relatiedoelen, als nadere invulling van één betekenisvolle relatiesoort

Modellering van deze Keuze in een informatiemodel:

  • Modelleer in UML een UML-Class met stereotype Keuze.
  • Modelleer hierin 2 of meer uitgaande UML-Association met stereotype Keuze die elk een (MIM) Objecttype als relatiedoel hebben. Aan dit stereotype Keuze is te zien dat deze UML-Association zelf geen relatiesoort of externe koppeling is.

Gebruik de Keuze voor het (MIM) Objecttype of het (MIM) Gegevensgroeptype:

  • Modelleer in een (MIM) Objecttype of in een (MIM) Gegevensgroeptype een (MIM) Relatiesoort of (MIM) Externe koppeling. Deze worden gemodelleerd zoals gebruikelijk.

Use case 5: Keuze tussen relatiesoorten/relatierollen (elk afzonderlijk betekenisvol)

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype geldt hetzelfde patroon, behalve dat een Gegevensgroeptype geen doel mag zijn van een Relatiesoort.

Figuur 24 Diagram: Keuze tussen relatiedoelen, als nadere invulling van één betekenisvolle relatiesoort

Modellering van deze Keuze in een informatiemodel:

  • Modelleer in UML een UML-Class met stereotype keuze.
  • Modelleer hierin 2 of meer MIM-Relatiesoorten die elk een relatiedoel hebben. Elke (MIM) Relatiesoort wordt gemodelleerd zoals gebruikelijk, door een UML-Property (association) met stereotype relatiesoort of externe koppeling en met een relatiedoel (een relatierol aan de doel/target kan van de relatie).

Gebruik de Keuze voor het (MIM) Objecttype of het (MIM) Gegevensgroeptype:

  • Modelleer in een (MIM) Objecttype of in een (MIM) Gegevensgroeptype een UML-Association met stereotype keuze en koppel de hiervoor gemodelleerde Keuze hieraan, als target van de UML-association, zoals gebruikelijk. Aan dit stereotype keuze is te zien dat deze UML-Association zelf geen relatiesoort of externe koppeling is.

De modellering van een Keuze in UML

Er zijn drie metaklassen met de naam Keuze maar elke keer als extensie van een andere UML metaklasse, waar ook uit blijkt om welke variant van de keuze het gaat.

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Keuze Keuze (UML) Class Class
Keuze Keuze (UML) Datatype Datatype
Keuze Keuze (UML) Property Attribute
  • Als een UML Class met stereotype keuze is gebruikt, dan zitten hierin alleen attribuutsoorten en/of relatiedoelen, de attribuutsoorten en relatiedoelen waaruit gekozen kan worden.
  • Als een UML Datatype met stereotype keuze is gebruikt, dan zitten hierin alleen datatypen, de datatypen waaruit gekozen kan worden.
  • Als een UML Property met stereotype keuze is gebruikt, dan is er sprake van een hulpconstructie om het modelelement Keuze aan te koppelen aan het MIM-modelelement waarvoor de keuze geldt.

Merk op dat deze tabel niet gaat over de modelelementen waaruit een keuze gemaakt moet worden. Dat zijn immers de modelelementen datatype, attribuutsoort en relatiesoort. Deze tabel gaat over de modellering van Keuze in UML oftewel de extra hulpconstructies die in UML nodig zijn om de modelelementen waaruit een keuze gemaakt moet worden aan te koppelen aan het MIM-modelelement waarvoor de keuze geldt. Deze extra hulpconstructies krijgen als stereotype keuze en dit geeft aan dat de betekenis hiervan anders is dan de betekenis van de MIM-elementen datatype, attribuutsoort en relatiesoort.

3.1.3.3 Relatierol
Figuur 25 Diagram: Associatierollen zonder metagegevens

Relatiesoort en relatierol

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Relatierol (abstract) «Relatierol» Property AssociationEnd
Relatierol source «Relatierol» Property AssociationEnd
Relatierol target «Relatierol» Property AssociationEnd
3.1.3.4 Externe koppeling

Externe koppeling

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Externe koppeling «Externe koppeling» (UML) Association Association
3.1.3.5 Packages
Figuur 26 Diagram: Packages zonder metagegevens

In de bijlage is het UML diagram met de metagegevens opgenomen.

Packages

MIM metaclass Stereotype Metaclass UML 2.5 In EA In ...
Informatiemodel «Informatiemodel» (UML) Package Package
Domein (het eigen IM) «Domein» (UML) Package Package
Extern «Extern» (UML) Package Package
View «View» (UML) Package Package

3.2 Specificatie metagegevens in UML

Deze paragraaf is een aanvulling op 2.4 Specificatie metagegevens. In de hierna volgende paragrafen worden de metagegevens per modelelement gespecificeerd in tabellen. Per metagegeven zijn de volgende onderdelen gespecificeerd:

Rode tekst betreft een standaardelement binnen EA. Zwarte tekst in de kolom betreft een uitbreiding op het UM-metamodel, via tagged values of aanvullende stereotypes.

Noot: Nadere toelichting op het metagegeven Alias
Noot: Nadere toelichting op het metagegeven Identficerend

3.2.1 Objecten en attributen in UML

3.2.1.1 «Objecttype»

De objecttypen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam√ 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie√ 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie√ 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Unieke aanduiding√ 1 De identificerende kenmerken een object die een instantie van het objecttype uniek identificeren. Deze kenmerken worden in UML gemodelleerd als attribuutsoort en/of relatie dus dit metagegeven hoeft niet apart te worden gespecificeerd bij een objecttype, het is afleidbaar. Voor objecttypen die deel uitmaken van een (basis)registratie of informatiemodel betreft dit de wijze waarop daarin voorkomende objecten (van dit type) uniek in de registratie worden aangeduid. UML isID isId bij attribuutsoort, --- of --- stereotype «isId» bij target role relatiesoort --- of --- een combinatie van deze twee, elk hiervan meer keren toepasbaar
Populatie√ 0..1 Voor objecttypen die deel uitmaken van een (basis)registratie betreft dit de beschrijving van de exemplaren van het gedefinieerde objecttype die in de desbetreffende (basis)­registratie voorhanden zijn. Tagged value
Kwaliteit√ 0..1 Beschrijving van de mate waarin in de registratie opgenomen objecten van het desbetreffende type volledig, juist, actueel, nauwkeurig en betrouwbaar zijn. Tagged value
Indicatie abstract object 1 Conceptueel model: indicatie dat het objecttype een generalisatie is, waarvan een object als specialisatie altijd voorkomt in de hoedanigheid van een (en slechts één) van de specialisaties van het betreffende objecttype. Logisch model: Indicatie dat er geen instanties (objecten) voor het betreffende objecttype mogen voorkomen. isAbstract bij de metaclass Classifier Abstract
heeft attribuut / 0..* Binding aan een attribuutsoort. owned element = UML-property attribute
heeft gegevensgroep 0..* Binding aan een gegevensgroep. owned element = UML-property attribute
heeft relatiesoort 0..* Binding aan een relatiesoort of relatieklasse. owned element = UML-Relationship association
heeft externe koppeling 0..* Binding aan een externe koppeling. owned element = UML-Relationship association
verwijst naar supertype * 0..* Binding aan een generalisatie (naar een ander objecttype). owned element = UML-Relationship association
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.1.2 «Attribuutsoort»

De attribuutsoorten worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam√ 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie√ 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie√ 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Domein (aspecten van een waarde/data) Domein is zelf geen metadata aspect. Onder het kopje ‘domein’ vallen een aantal metadata aspecten die gelden voor een waarde, oftewel de eisen waaraan een waarde van een attribuutsoort moet voldoen.
- Lengte 0..1 Algemeen metagegeven. Tagged value
- Patroon 0..1 Algemeen metagegeven. Tagged value
- Formeel Patroon 0..1 Algemeen metagegeven. Tagged value
Heeft tijdlijn geldigheid √ 1 Algemeen metagegeven. Tagged value
Indicatie materiële historie √ 1 Algemeen metagegeven. Tagged value
Heeft tijdlijn registratie √ 1 Algemeen metagegeven. Tagged value
Indicatie formele historie √ 1 Algemeen metagegeven. Tagged value
Kardinaliteit √ 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass Multiplicity Element Multiplicity
Authentiek √ 1 Algemeen metagegeven. Tagged value
Indicatie afleidbaar 1 Algemeen metagegeven. isDerived bij metaclass Property isDerived
Indicatie classificerend 1 Algemeen metagegeven. Tagged value
Mogelijk geen waarde 1 Algemeen metagegeven. Tagged value
Identificerend 0..1 Algemeen metagegeven. isID bij de metaclass Property isID
Minimumwaarde inclusief 0..1 Algemeen metagegeven. Een attribuutsoort mag of een metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben, niet beide. Tagged value
Minimumwaarde exclusief 0..1 Algemeen metagegeven. Een attribuutsoort mag of een metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben, niet beide. Tagged value
Maximumwaarde inclusief 0..1 Algemeen metagegeven. Een attribuutsoort mag of een metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben, niet beide. Tagged value
Maximumwaarde exclusief 0..1 Algemeen metagegeven. Een attribuutsoort mag of een metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben, niet beide. Tagged value
Eenheid 0..1 Toevoegen als het attribuutsoort een waarde betreft en de eenheid als metagegeven opgenomen moet worden. Tagged value
heeft datatype 1 Binding aan een datatype. datatype = UML-datatype type = datatype
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.1.3 «Gegevensgroep»

De gegevensgroepen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 0..1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Kardinaliteit 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass Multiplicity Element Multiplicity van de source role van de bijbehorende composite relatie
Authentiek 1 Algemeen metagegeven. Tagged value
heeft gegevensgroeptype 1 Binding aan een gegevensgroeptype. owned element = UML-Class type = Class
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.1.4 «Gegevensgroeptype»

De gegevensgroeptypen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Kardinaliteit 1 Algemeen metagegeven. lowerValue en upperValue van metaclass Multiplicity Element Multiplicity van de source role van de bijbehorende composite relatie
Authentiek 1 Algemeen metagegeven. Tagged value
heeft gegevensgroeptype 1 Binding aan een gegevensgroeptype. owned element = UML-Class type = Class
heeft attribuut 0..* Binding aan een attribuutsoort. owned element = UML-property attribute
heeft gegevensgroep 0..* Binding aan een gegevensgroep. owned element = UML-property attribute
heeft relatiesoort 0..* Binding aan een relatiesoort of relatieklasse. owned element = UML-Relationship association
heeft externe koppeling 0..* Binding aan een externe koppeling. owned element = UML-Relationship association
verwijst naar supertype 0..* Binding aan een generalisatie (naar een ander gegevensgroeptype). owned element = UML-Relationship association
heeft Constraint 0..* Binding aan een constraint. Constraint

3.2.2 Relaties in UML

Noot: Aanvullen met uitleg Generalisatie

Het metamodel heeft twee manieren om een relatie tussen twee objecttypen te beschrijven. Deze keuze wordt aangegeven in de eigen extensie, zoals beschreven in 1.11 Alternatieven. Alleen het gekozen alternatief is relevant voor de modellering in uw informatiemodel. Welke alternatief je ook kiest: beide hanteren «Relatiesoort» en «Relatierol», maar met andere regels voor gebruik.

Alternatief 1: Relatiesoort is leidend

Relatiesoort is verplicht, met een naam en met een definitie en deze is leidend. Metadata aspecten worden hierbij altijd vastgelegd. Het gebruik van relatierol is optioneel (zowel bij source en target). Áls er een relatierol target wordt vastgelegd, dan is de metadata hierbij wel verplicht.

Alternatief 2: Relatierol is leidend

Verplichte benoeming van de rol van de target in een relatie met de bijbehoren de metagegevens en optioneel de benoeming van de naam van de relatie.

3.2.2.1 «Relatiesoort» (alt 1: soort leidend)

De relatiesoorten worden naar de volgende aspecten gespecificeerd.

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam√ 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie√ 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie√ 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Identificerend 0..1 Algemeen metagegeven. isID bij de metaclass Property isID
Unidirectioneel 1 Algemeen metagegeven. Direction van de betreffende assiciation (van source naar target)
Bron 1 Algemeen metagegeven. /source: related Element bij Relationship Element Source
Doel 1 Algemeen metagegeven. /target: related Element bij Relationship Element Target
Aggregatietype 1 Algemeen metagegeven. AggregationKind bij metaclass Property Aggregation van de source role met waarde composite of shared
Kardinaliteit√ 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement /target Multiplicity van de target role
Kardinaliteit relatie bron 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement /source Multiplicity van de source role
Heeft tijdlijn geldigheid √ 1 Algemeen metagegeven. Tagged value
Indicatie materiële historie √ 1 Algemeen metagegeven. Tagged value
Heeft tijdlijn registratie √ 1 Algemeen metagegeven. Tagged value
Indicatie formele historie √ 1 Algemeen metagegeven. Tagged value
Authentiek√ 1 Algemeen metagegeven. Tagged value
Indicatie afleidbaar 1 Algemeen metagegeven. isDerived bij UML metaclass Assocation isDerived
Mogelijk geen waarde 1 Algemeen metagegeven. Tagged value
verwijst naar relatiedoel 0..* Binding aan een objecttype. /target: related Element bij Relationship Element = UML-Class association target = Class
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.2.2 «Relatiesoort» (alt 2: rol leidend)

De relatiesoorten worden naar de volgende aspecten gespecificeerd.

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
verwijst naar relatiedoel 0..* Binding aan een objecttype. /target: related Element bij Relationship Element = UML-Class association target = Class
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.2.3 «Relatierol» (alt 1: soort leidend)

Relatierollen worden naar de volgende aspecten gespecificeerd.

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De default naam is gelijk aan de naam van het doel-objecttype. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.2.4 «Relatierol» (alt 2: rol leidend)

Voor relatierol worden bij de target rol van een relatiesoort de volgende aspecten gespecificeerd.

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam√ 1 Algemeen metagegeven. De default naam is gelijk aan de naam van het doel-objecttype. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie√ 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie√ 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Identificerend 0..1 Algemeen metagegeven. isID bij de metaclass Property isID
Kardinaliteit√ 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass Multiplicity Element Multiplicity
Heeft tijdlijn geldigheid √ 1 Algemeen metagegeven. Tagged value
Indicatie materiële historie √ 1 Algemeen metagegeven. Tagged value
Heeft tijdlijn registratie √ 1 Algemeen metagegeven. Tagged value
Indicatie formele historie √ 1 Algemeen metagegeven. Tagged value
Authentiek√ * 1 Algemeen metagegeven. Tagged value
Mogelijk geen waarde 1 Algemeen metagegeven. Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.2.5 «Generalisatie» tussen objecttypes

De generalisaties worden naar het volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Subtype 1 De generalisatie relatie kent twee kanten, de bron kant (source) van de relatie en de doel kant (target) van de relatie. De bron kant van deze generalisatie relatie specificeert een objecttype die een subtype/specialisatie is van het via deze generalisatie relatie aangegeven supertype (zie verwijst naar supertype). Kortweg, het subtype is een specialisatie van het supertype. Het objecttype dat het subtype is van deze generalisatie is verbonden met deze generalisatie. /source: related Element bij Relationship Element Source
verwijst naar supertype 1 Binding van deze generalisatie aan een objecttype. De generalisatie relatie kent twee kanten, de bron kant (source) van de relatie en de doel kant (target) van de relatie. De doel kant van deze generalisatie relatie specificeert een objecttype die het supertype/de generalisatie is van het via deze generalisatie aangegeven subtype. Kortweg, het supertype is een generalisatie van het subtype. /target: related Element bij Relationship Element = UML-Class Target
Datum opname 1 Algemeen metagegeven Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
Mixin 1 Alleen bij MIM niveau 3, logische modellen Tagged value
3.2.2.6 «Generalisatie» tussen datatypen

De generalisaties worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Subtype 1 De generalisatie relatie kent twee kanten, de bron kant (source) van de relatie en de doel kant (target) van de relatie. De bron kant van deze generalisatie relatie specificeert een datatype die een subtype/specialisatie is van het via deze generalisatie relatie aangegeven supertype (zie verwijst naar supertype). Kortweg, het subtype is een specialisatie van het supertype. Het datatype dat het subtype is van deze generalisatie is verbonden met deze generalisatie.
/source: related Element bij Relationship Element Source
verwijst naar supertype 1 Binding van deze generalisatie aan een datatype. De generalisatie relatie kent twee kanten, de bron kant (source) van de relatie en de doel kant (target) van de relatie. De doel kant van deze generalisatie relatie specificeert een datatype die het supertype/de generalisatie is van het via deze generalisatie aangegeven subtype. Kortweg, het supertype is een generalisatie van het subtype. /target: related Element bij Relationship Element = UML-datatype Target
Datum opname 1 Algemeen metagegeven Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.2.7 «Relatieklasse»

De relatieklassen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam√ 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie√ 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Herkomst definitie√ 1 Algemeen metagegeven. Tagged value
Unidirectioneel 1 Algemeen metagegeven. Direction van de betreffende association (van source naar target)
Bron 1 Algemeen metagegeven. /source: related Element bij Relationship Element Source
Doel 1 Algemeen metagegeven. /target: related Element bij Relationship Element Target
Aggregatietype 1 Algemeen metagegeven. AggregationKind bij metaclass Property Aggregation van de source role met waarde composite of shared
Kardinaliteit√ 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement Multiplicity van de target role
Kardinaliteit relatie bron 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement /source Multiplicity van de source role
Indicatie materiële historie√ 1 Algemeen metagegeven. Tagged value
Indicatie formele historie√ 1 Algemeen metagegeven. Tagged value
Authentiek√ 1 Algemeen metagegeven. Tagged value
Indicatie afleidbaar 1 Algemeen metagegeven. isDerived bij UML metaclass Assocation isDerived
Mogelijk geen waarde 1 Algemeen metagegeven. Tagged value
heeft attribuut 0..* Binding aan een attribuutsoort. owned element = UML-property attribute
verwijst naar relatiedoel 0..* Binding aan een objecttype. /target: related Element bij Relationship Element = UML-Class association target = Class
heeft gegegevensgroep 0..* Binding aan gegevensgroep. owned element = UML-property attribute
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.2.8 «Externe koppeling»

Externe koppelingen worden naar de volgende aspecten gespecificeerd.

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam√ 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie√ 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie√ 1 Algemeen metagegeven. Tagged value
Toelichting√ 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Unidirectioneel 1 Algemeen metagegeven. Direction van de betreffende assiciation (van source naar target)
Bron 1 Algemeen metagegeven. /source: related Element bij Relationship Element Source
Doel 1 Algemeen metagegeven. /target: related Element bij Relationship Element Target
Aggregatietype 1 Algemeen metagegeven. AggregationKind bij metaclass Property Aggregation van de source role met waarde composite of shared
Kardinaliteit√ 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement Multiplicity van de target role
Kardinaliteit relatie bron 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement /source Multiplicity van de source role
Indicatie materiële historie√ 1 Algemeen metagegeven. Tagged value
Indicatie formele historie√ 1 Algemeen metagegeven. Tagged value
Authentiek√ 1 Algemeen metagegeven. Tagged value
Indicatie afleidbaar 1 Algemeen metagegeven. isDerived bij UML metaclass Assocation isDerived
Mogelijk geen waarde 1 Algemeen metagegeven. Tagged value
verwijst naar relatiedoel 0..* Binding aan een objecttype. /target: related Element bij Relationship Element = UML-Class association target = Class
heeft Constraint 0..* Binding aan een constraint. Constraint

3.2.3 Waardelijsten in UML

3.2.3.1 «Codelijst»

Voor codelijst worden de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De naam van de lijst zoals gespecificeerd in de catalogus van de desbetreffende registratie dan wel, indien het een door de eigen organisatie toegevoegde lijst betreft, de door de eigen organisatie vastgestelde naam. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Locatie 1..1 Algemeen metagegeven. tagged value
Doelformaat 1..1 Algemeen metagegeven. tagged value
Waarde-item 0..1 Algemeen metagegeven. tagged value
Profielspecificatie 0..1 Algemeen metagegeven. tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.3.2 «Enumeratie»

Enumeraties betreffen de metaclass Enumeration en worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
bevat enumeratiewaarde 1..* Binding van een enumeratiewaarde. owned element = UML-EnumerationLiteral association
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.3.3 «Enumeratiewaarde»

De enumeratiewaarde zelf betreft de metaclass UML-EnumerationLiteral en kent de volgende aspecten:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Code 0..1 De in een registratie of informatiemodel aan de enumeratiewaarde toegekend unieke code (niet te verwarren met alias, zoals bedoeld in 2.8.2). Alias van de metaclass Element Import Alias
Herkomst 0..1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 0..1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 0..1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.3.4 «Referentielijst»

Voor referentielijsten worden de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Locatie 1 Algemeen metagegeven. Tagged value
bevat referentie-element 1..* Binding aan een referentie-element. owned element = UML-property attribute
verwijst naar supertype 0..* Binding aan een generalisatie (naar een andere referentie lijst). owned element = UML-Relationship association
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.3.5 «Referentie-element»

De referentie-elementen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. Tagged value
Datum opname 1 Algemeen metagegeven. Tagged value
Domein (aspecten van een waarde/data)
- Lengte 0..1 Algemeen metagegeven. Tagged value
- Patroon 0..1 Algemeen metagegeven. Tagged value
- Formeel patroon 0..1 Algemeen metagegeven. Tagged value
Kardinaliteit 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass Multiplicity Element Multiplicity van de de target role
Identificerend 0..1 Algemeen metagegeven. isID van de metaclass Property isID bij de betreffende class
Minimumwaarde inclusief 0..1 Algemeen metagegeven. Een referentie-element mag of een metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben, niet beide. Tagged value
Minimumwaarde exclusief 0..1 Algemeen metagegeven. Een referentie-element mag of een metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben, niet beide. Tagged value
Maximumwaarde inclusief 0..1 Algemeen metagegeven. Een referentie-element mag of een metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben, niet beide. Tagged value
Maximumwaarde exclusief 0..1 Algemeen metagegeven. Een referentie-element mag of een metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben, niet beide. Tagged value
Eenheid 0..1 Toevoegen als het referentie-element een waarde betreft en de eenheid als metagegeven opgenomen moet worden.
heeft datatype 1 Binding aan een datatype. datatype = UML-datatype type = datatype
heeft Constraint 0..* Binding aan een constraint. Constraint

3.2.4 Datatypen in UML

Het betreft metagegevens voor in het informatiemodel gedefinieerde datatypen, oftewel exclusief datatypen die al buiten het model bestaan, zoals Integer, DateTime, Surface.

3.2.4.1 «Primitief datatype»

De primitieve datatypen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 0..1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 0..1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 0..1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Domein (aspecten van een waarde/data)
- Lengte 0..1 Algemeen metagegeven, in principe wordt dit metagegeven bij het attribuutsoort gespecificeerd, behalve als het generiek gespecificeerd moet worden. Tagged value
- Patroon 0..1 Algemeen metagegeven, in principe wordt dit metagegeven bij het attribuutsoort gespecificeerd, behalve als het generiek gespecificeerd moet worden. Tagged value
- Formeel patroon 0..1 Algemeen metagegeven, in principe wordt dit metagegeven bij het attribuutsoort gespecificeerd, behalve als het generiek gespecificeerd moet worden. Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.4.2 «Gestructureerd datatype»

Voor gestructureerde datatypen worden de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De naam van het domein package. name van de metaclass Namedelement Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 0..1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 0..1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 0..1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Patroon 0..1 Algemeen metagegeven. Tagged value
Formeel patroon 0..1 Algemeen metagegeven. Tagged value
bevat data-element 0..* Binding aan een data-element, 2 of meer tenzij via generalisatie verkregen. owned element = UML-property attribute
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.4.3 «Data-element»

De data-elementen worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De naam van het domein package. name van de metaclass Namedelement Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 0..1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 0..1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 0..1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Domein (aspecten van een waarde/data)
- Lengte 0..1 Algemeen metagegeven. Tagged value
- Patroon 0..1 Algemeen metagegeven. Tagged value
- Formeel patroon 0..1 Algemeen metagegeven. Tagged value
Kardinaliteit 1 Algemeen metagegeven. lowerValue en upperValue van de metaclass MultiplicityElement Multiplicity
Minimumwaarde inclusief 0..1 Algemeen metagegeven. Een data-element mag of een metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben, niet beide. Tagged value
Minimumwaarde exclusief 0..1 Algemeen metagegeven. Een data-element mag of een metagegeven Minimumwaarde inclusief of Minimumwaarde exclusief hebben, niet beide. Tagged value
Maximumwaarde inclusief 0..1 Algemeen metagegeven. Een data-element mag of een metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben, niet beide. Tagged value
Maximumwaarde exclusief 0..1 Algemeen metagegeven. Een data-element mag of een metagegeven Maximumwaarde inclusief of Maximumwaarde exclusief hebben, niet beide. Tagged value
heeft datatype 1 Binding aan een datatype. datatype = UML-datatype type = datatype
heeft Constraint 0..* Binding aan een constraint. Constraint
3.2.4.4 «Keuze»

Een Keuze worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De naam van het domein package. name van de metaclass Namedelement Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 0..1 Algemeen metagegeven. tagged value
Begrip 0..* Algemeen metagegeven. Tagged value
Definitie 0..1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 0..1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
heeft datatypekeuze 0..* Binding van een datatype, in UML via een additionale UML-property met stereotype keuze owned element = UML-property en deze heeft en datatype attribute
heeft keuzeattribuut 0..* Binding aan een attribuutsoort. owned element = UML-Property attribute
heeft keuzerelatiedoel 0..* Binding aan een relatiesoort. owned element = UML-Relationship association
heeft Constraint 0..* Binding aan een constraint. Constraint

Opmerking: de modelelementen waaruit gekozen kan worden heten sinds MIM 1.1 geen keuze-elementen meer. Keuze-element is komen te vervallen.

3.2.5 Packages in UML

3.2.5.1 «Domein»

Domein packages worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De naam van het domein package. name van de metaclass Namedelement Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
Basis-URI 0..1 Algemeen metagegeven. Het niet-unieke deel van de URI van ieder modelelement in deze package Tagged value
bevat Modelelement 0..* Binding van modelelementen die zich in package bevinden. packagedElement Browser packagestructuur
3.2.5.2 «Extern»

Externe packages worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. De naam van het domein package. name van de metaclass Namedelement Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. Bij een view is de herkomst nooit de eigen organisatie. tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Locatie 1 Algemeen metagegeven. Tagged value
Basis-URI 0..1 Algemeen metagegeven. Het niet-unieke deel van de URI van ieder modelelement in deze package Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
bevat Modelelement 0..* Binding van modelelementen die zich in package bevinden. packagedElement Browser packagestructuur
3.2.5.3 «Informatiemodel»

Informatiemodel packages worden naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Informatiemodeltype 1 Algemeen metagegeven. De beschrijving van de aard van het informatiemodel: conceptueel, logisch, technisch. Tagged value
Informatiedomein 1 Algemeen metagegeven. Aanduiding van het functionele domein waartoe het informatiemodel behoort. Tagged value
MIM versie 1 De versie van de MIM specificatie die gebruikt is om het informatiemodel in uit te drukken. Tagged value
Bijvoorbeeld: 1.0.1 of 1.1
MIM extensie 0..1 De aanduiding van een extensie op MIM. Tagged value
Bijvoorbeeld: Kadaster of NEN3610:2020
MIM taal 0..1 De aanduiding van de taal die gebruikt is voor de modelelementen. Bijvoorbeeld: EN of NL Tagged value
Relatiemodelleringstype 1 Algemeen metagegeven. Toelichting Type informatiemodel: zoals bedoeld in 1.6 Typering van modellen gekoppeld aan beschouwingsniveaus. Alle packages, oftewel «Domein» en «View», binnen het informatiemodel hebben hetzelfde type als het informatiemodel zelf. Tagged value
Tekstopmaak 0..1 Geldt voor hele model, voor de metagegevens die beschreven zijn het het metagegeven tekstopmaak. Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
Basis-URI 0..1 Algemeen metagegeven. Het niet-unieke deel van de URI van ieder modelelement in deze package Tagged value
bevat Modelelement 0..* Binding van modelelementen die zich in package bevinden. packagedElement Browser packagestructuur
3.2.5.4 «View»

View packages worden naar de volgende aspecten gespecificeerd, analoog aan «Extern»:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Identificatie 1 Identificerend metagegeven. Tagged value
Naam 1 Algemeen metagegeven. Deze is, indien mogelijk, analoog aan de naamgeving in het externe schema waar de view over gaat, eventueel met een prefix. name van de metaclass Named element Name
Alias 0..1 Algemeen metagegeven. UML-Property Alias
Herkomst 1 Algemeen metagegeven. tagged value
Definitie 1 Algemeen metagegeven. Body van de metaclass Comment Notes
Herkomst definitie 1 Algemeen metagegeven. Tagged value
Toelichting 0..1 Algemeen metagegeven. tagged value
Datum opname 1 Algemeen metagegeven. tagged value
Locatie 1 Algemeen metagegeven. Tagged value
Basis-URI 0..1 Algemeen metagegeven. Het niet-unieke deel van de URI van ieder modelelement in deze package Tagged value
heeft Constraint 0..* Binding aan een constraint. Constraint
bevat Modelelement 0..* Binding van modelelementen die zich in package bevinden. packagedElement Browser packagestructuur

3.2.6 Overige modelelementen in UML

3.2.6.1 «Constraint»

Constraint betreft de metaclass UML Constraint en wordt naar de volgende aspecten gespecificeerd:

Aspect Kardinaliteit Toelichting In UML 2.5 In EA In ...
Naam√ 1 Algemeen metagegeven. name van de metaclass Named element Name
Specificatie tekst 0..1 De specificatie van de Constraint in normale tekst. Notes (type = invariant)
Specificatie formeel 0..1 De beschrijving van de Constraint in een formele specificatietaal, in OCL. Notes (type =OCL)
Datum opname 1 Algemeen metagegeven. tagged value
van toepassing op Objecttype 0..1 Binding aan een Objecttype
van toepassing op Attribuutsoort 0..1 Binding aan een Attribuutsoort
van toepassing op Gegevensgroep 0..1 Binding aan een Gegevensgroep
van toepassing op Gegevensgroeptype 0..1 Binding aan een Gegevensgroeptype
van toepassing op Relatiesoort 0..1 Binding aan een Relatiesoort
van toepassing op Relatierol 0..1 Binding aan een Relatierol
van toepassing op Generalisatie 0..1 Binding aan een Generalisatie
van toepassing op Relatieklasse 0..1 Binding aan een Relatieklasse
van toepassing op Externe koppeling 0..1 Binding aan een Externe koppeling
van toepassing op Codelijst 0..1 Binding aan een Codelijst
van toepassing op Enumeratie 0..1 Binding aan een Enumeratie
van toepassing op Enumeratiewaarde 0..1 Binding aan een Enumeratiewaarde
van toepassing op Referentielijst 0..1 Binding aan een Referentielijst
van toepassing op Referentie-element 0..1 Binding aan een Referentie-element
van toepassing op Primitief datatype 0..1 Binding aan een Primitief datatype
van toepassing op Gestructureerd datatype 0..1 Binding aan een Gestructureerd datatype
van toepassing op Data-element 0..1 Binding aan een Data-element
van toepassing op Keuze 0..1 Binding aan een Keuze
van toepassing op Domein 0..1 Binding aan een Domein
van toepassing op Extern 0..1 Binding aan een Extern
van toepassing op Informatiemodel 0..1 Binding aan een Informatiemodel
van toepassing op View 0..1 Binding aan een View

3.3 UML Tooling

3.3.1 MIM-toolbox

Er is door de MIM-beheerder een metamodel profiel gemaakt in Sparx Enterprise Architect, dat gebruikt kan worden bij het modelleren van een informatiemodel. Dit profiel kan je inladen en daarna kan je kiezen uit de metamodelelementen. Het profiel is faciliterend en zorgt dat (de meeste) modelelementen van het informatiemodel automatisch voldoen aan dit metamodel. Dit profiel is te vinden op MIM profiel - toolbox voor EA.

3.3.2 Extensie op MIM-toolbox

Het is niet vereist om dit profiel te gebruiken. Bovendien is het ook mogelijk om het profiel uit te breiden, naar de behoefte van de eigen organisatie. Maar, het is niet toegestaan om het profiel te wijzigen; dan wordt niet meer aan MIM voldaan. De reden hiervoor is dat een dergelijk aanpassing niet beheerd kan worden door de MIM-beheerder en er ambiguïteit zal ontstaan bij de interpretatie van het model. Voor andere UML tools kan ook een MIM-profiel gemaakt worden.

3.3.3 Imvertor

Er is een tool Imvertor, waarmee je onder andere kunt controleren of een informatiemodel voldoet aan het MIM en zo niet, wat de reden daarvan is. Deze tool is open source.

4. Metamodel in Linked Data (LD)

4.1 Ontologisch metamodel in LD

Het MIM uitgedrukt in LD houdt onder ander een ontologisch metamodel in. Dit betekent dat er voor elk van de modelelementen van het MIM een klasse en/of eigenschap gedefinieerd is in termen van RDF, RDFS en OWL. In de hierop volgende paragrafen wordt deze uitwerking geven.

Het MIM is een metamodel. Dit betekent dat in termen van het MIM een concreet informatiemodel kan worden uitgewerkt, bijvoorbeeld het informatiemodel Basisregistratie Adressen en Gebouwen. Het MIM is niet bedoeld om vervolgens in termen van dit informatiemodel een concrete dataset te vormen. Zie ook 1.6 Typering van modellen gekoppeld aan beschouwingsniveaus: het MIM is niet beoogd voor een informatiemodel op niveau 4. Hiervoor is een transformatie nodig naar een (technisch) uitwisselings- of opslagmodel nodig.

Op diezelfde manier levert het toepassen van het MIM in RDF geen ontologie of vocabulaire waarin RDF kan worden uitgedrukt: slechts het informatiemodel zelf is op deze manier in RDF uitgedrukt. Voor de vertaalslag naar een ontologie is een afzonderlijke transformatie nodig.

Vanuit een Linked Data perspectief is dit bijzonder. Een kernmerk van Linked Data is namelijk dat een informatiemodel op niveau 3 ook direct, zonder aanpassingen, bruikbaar is als informatiemodel op niveau 4. Sterker nog: Linked Data modellen zijn ook bruikbaar op niveau 1 en 2. Dit is vanuit het MIM zelf niet mogelijk. Hiervoor is een vertaalslag nodig naar een "echte" Linked Data ontologie.

Zo leidt een MIM objecttype "Schip" tot de volgende weergave in RDF:

@prefix vb: <http://modellen.mim-standaard.nl/voorbeeld/> .
@prefix mim: <http://modellen.mim-standaard.nl/def/mim#> .

vb:Schip a mim:Objecttype;
  rdfs:label "Schip"@nl;
.

vb:Schip is in dit voorbeeld een voorkomen van de klasse mim:Objecttype. dit voorkomen kent zelf geen voorkomens. Hiervoor is een vertaling nodig naar een rdfs:Class, bijvoorbeeld door:

@prefix vbo: <http://modellen.mim-standaard.nl/voorbeeld/def#>.

vbo:Schip a rdfs:Class;
  mim:equivalent vb:Schip;
.
vb:Pakjesboot12 a vbo:Schip.

De transformatie van het MIM model naar deze RDF ontologie is opgenomen in 6.4 Transformatie MIM - RDFS/OWL/SHACL.

4.2 Structuur metamodel in LD

Het RDF model is opgesplitst in twee delen. Zoals gebruikelijk in RDF zijn deze modeldelen via hun URL op het internet te benaderen:

  1. de RDF vocabulaire, met de (meta)klassen en (meta)eigenschappen;
  2. de RDF Shapesgraph, met "shapes", de structuur die gelden op het gebruik van de klassen en eigenschappen.

In onderstaande paragrafen wordt zowel de vocabulaire als de structuur gezamenlijk per modelelement besproken. Een RDF representatie in turtle wordt gegeven en daarnaast ook een grafische representatie. Hiervoor wordt de verbeelding gebruikt zoals beschreven in het document: Best Practises for meaningful connected computing.

Met behulp van bovenstaande twee - machine leesbare - bestanden kan een geserialiseerd MIM model uitgedrukt in RDF (bijvoorbeeld een XML, JSON of Turtle bestand) gevalideerd worden of deze correct conform MIM is opgesteld. Hiervoor kan bijvoorbeeld dit open source java tool gebruikt worden.

Bij het opstellen van het MIM in RDF is gebruik gemaakt van de algemene, tekstuele beschrijving van het MIM uit het hoofdstuk Metamodel Algemeen. Er is een 1-op-1 omzetting gedaan, zonder enige aanpassing van de beschrijvingen. Dit maakt het mogelijk om een MIM informatiemodel om te zetten van de ene representatie (bijvoorbeeld in UML) naar de andere en weer terug, zonder verlies van informatie.

De volgende regels zijn gebruikt bij de omzetting van de MIM tekst naar RDF:

  1. Elk voorkomen van een MIM «metaclass» is omgezet naar een voorkomen van een owl:Class;
  2. Elk metagegeven van een MIM «metaclass» is omgezet naar een voorkomen van een owl:DatatypeProperty, voor zover sprake is van een metagegeven dat een waarde heeft die met een datatype is uit te drukken (zoals tekstuele, numerieke of boolean metagegevens);
  3. Elk metagegeven van een MIM «metaclass» is omgezet naar een voorkomen van een owl:ObjectProperty, voor zover sprake is van een metagegeven waarbij de waarde verwijst naar een voorkomen van een andere MIM «metaclass»;
  4. Een rdfs:label is opgenomen met de naam van de MIM «metaclass» c.q. het metagegeven;
  5. Een rdfs:comment is opgenomen met de definitie van de MIM «metaclass» c.q. het metagegeven.

Voor de omzetting van de gegevensconstraints (zoals cardinaliteiten, datatypen en properties per klasse), is op de volgende manier een SHACL shape graph gemaakt:

  1. Elk voorkomen van een MIM «metaclass» kent ook een sh:NodeShape met een sh:name die overeen komt de originele technische naam (UpperCamelCase);
  2. Voor elk voorkomen van een MIM «metaclass» zijn sh:PropertyShapes aangemaakt om aan te geven welke metagegevens zijn toegestaan voor een MIM «metaclass», de kardinaliteiten en het datatype c.q. de geassocieerde MIM «metaclass».

Ten opzichte van de UML weergave van het MIM metamodel kent het MIM in RDF alleen het gebruik van de namen van de metagegevens en niet de namen van de bindingen die bij deze metagegevens horen. Zo kent het UML metamodel voor de binding tussen Objecttype en Attribuutsoort de bindingsnaam "heeft attribuut" en de rolnaam "attribuut". Het MIM in RDF gebruikt alleen de rolnaam "attribuut" in dit geval.

4.2.1 Kern

Figuur 27 Diagram: Kern metamodel in LD

Als prefix wordt voor de vocabulaire gebruik gemaakt van mim, met de namespace http://modellen.mim-standaard.nl/def/mim#. Voor de shapes wordt als prefix gebruik gemaakt van shape, met als namespace http://modellen.mim-standaard.nl/def/mim-shapes#.

MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Objecttype mim:Objecttype shape:Objecttype grondslag
Attribuutsoort mim:Attribuutsoort shape:Attribuutsoort grondslag
Gegevensgroep mim:Gegevensgroep shape:Gegevensgroep grondslag
Gegevensgroeptype mim:Gegevensgroeptype shape:Gegevensgroeptype grondslag
Generalisatie mim:Generalisatie shape:Generalisatie grondslag
Relatiesoort mim:Relatiesoort shape:Relatiesoort grondslag
Relatieklasse mim:Relatieklasse shape:Relatieklasse grondslag

In bovenstaand figuur zijn niet alle bindingen getekend rondom mim:Relatiesoort: dit zou het figuur onnodig complex maken. De bindingen met mim:Gegevensgroeptype zijn niet getekend. Dit is afgebeeld in onderstaand figuur. Daarbij is zichtbaar dat een mim:Gegevensgroeptype wel uitgaande relaties kan hebben, maar geen inkomende relaties: dat is altijd een mim:Objecttype.

Figuur 28 Diagram: Bindingen met mim:Gegevensgroeptype in LD

4.2.2 Datatypen

Figuur 29 Diagram: Datatypen in LD
MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Datatype mim:Datatype shape:Datatype grondslag
Primitief datatype mim:PrimitiefDatatype shape:PrimitiefDatatype grondslag
Gestructureerd datatype mim:GestructuurdDatatype shape:GestructuurdDatatype grondslag
Data element mim:DataElement shape:DataElement grondslag
Enumeratie mim:Enumeratie shape:Enumeratie grondslag
Enumeratiewaarde mim:Enumeratiewaarde shape:Enumeratiewaarde grondslag
Referentielijst mim:Referentielijst shape:Referentielijst grondslag
Referentie element mim:ReferentieElement shape:ReferentieElement grondslag
Codelijst mim:Codelijst shape:Codelijst grondslag

4.2.3 Overige

4.2.3.1 Constraint
Figuur 30 Diagram: Constraint in LD
MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Constraint mim:Constraint shape:Constraint grondslag
Keuzeconstraint mim:Keuzeconstraint shape:Keuze grondslag
4.2.3.2 Keuze

De "keuze constructie" maakt een keuze mogelijk tussen meerdere attribuutsoorten, datatypen en relatiedoelen (objecttypen). Er mag aan één specifieke keuze maar één soort van deze drie worden verbonden. Indien dit datatype gekozen wordt voor een attribuutsoort of relatiedoel, dan heeft dit de volgende betekenis, afhankelijk van de verbonden soort:

  • Attribuutsoort: een keuze tussen attribuutsoorten in plaats van de attribuutsoort die deze keuze als datatype heeft;
  • Datatype: een keuze tussen datatypen in plaats van dit keuze datatype;
  • Relatiedoel: een keuze tussen objecttypen als relatiedoel in plaats van het doel van de relatieroldoel
MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Keuze mim:Keuze shape:Keuze grondslag
Datatype mim:Datatype shape:Datatype grondslag
Objecttype mim:Objecttype shape:Objecttype grondslag
Attribuutsoort mim:Attribuutsoort shape:Attribuutsoort grondslag

Datatypekeuze

Figuur 31 Diagram: Datatypekeuze in LD

Aangezien een mim:Keuze een specialisatie is van een mim:Datatype, mag een attribuutsoort via een mim:type een verwijzen naar een Keuze. Een dergelijk keuze heeft in dit geval zelf minimaal twee mim:type verwijzingen naar de 2 (of meer) datatypen waaruit gekozen wordt.

Attribuutkeuze

Figuur 32 Diagram: Attribuutkeuze in LD

Indien een mim:Keuze wordt gebruikt voor een keuze tussen attribuutsoorten, dan wordt vanuit een objecttype via een mim:attribuut niet verwezen naar een attribuutsoort, maar naar de keuze. De keuze zelf verwijst op zijn beurt naar de attribuutsoorten waartussen gekozen wordt.

Relatiedoelkeuze

Figuur 33 Diagram: Relatiedoelkeuze in LD

Indien een mim:Keuze wordt gebruikt voor een keuze tussen objecttypen die de relatiedoelen zijn voor een relatiesoort, dan wordt vanuit een relatiesoort via een mim:doel niet verwezen naar een objecttype, maar naar de keuze. De keuze zelf verwijst op zijn beurt naar de objecttypen waartussen gekozen wordt.

Relatiesoortkeuze

Figuur 34 Diagram: Relatiesoortkeuze in LD

Een keuze tussen relatiesoorten wordt gedaan op basis van een keuzeconstraint. Een keuzeconstraint is geen datatype, maar juist een constraint die in dit geval aangeeft dat er een keuze gemaakt moet worden tussen twee relatiesoorten.

4.2.3.3 Relatierol
Figuur 35 Diagram: Relatierol in LD
MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Relatierol (abstract) Relatierol shape:Relatierol grondslag
Relatierol bron RelatierolBron shape:RelatierolBron grondslag
Relatierol doel RelatierolDoel shape:RelatierolDoel grondslag
4.2.3.4 Externe koppeling
MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Externe koppeling mim:ExterneKoppeling shape:ExterneKoppeling grondslag
4.2.3.5 Packages
Figuur 36 Diagram: Packages in LD

Het metagegeven bevat modelelement geeft aan dat packages modelelementen kunnen bevatten. Dit metagegeven wordt in het Linked Data metamodel opgenomen als relatie. Welke modelelementen precies toegestaan zijn, wordt in het plaatje niet tot uitdrukking gebracht. Zie hiervoor sectie 2.6.

MIM metaclass Metaclass in RDF Shape in RDF Grondslag
Package mim:Package shape:Package grondslag
Informatiemodel mim:Informatiemodel shape:Informatiemodel grondslag
Domein (het eigen IM) mim:Domein shape:Domein grondslag
Extern mim:Extern shape:Extern grondslag
View mim:View shape:View grondslag

4.3 Specificatie metagegevens in LD

Deze paragraaf is een aanvulling op de paragraaf 2.4 Specificatie metagegevens. De betekenis van de metagegevens worden in LD gespecificeerd los van de klasse waartoe deze metagegevens behoren. Hieronder is een opsomming gegeven van alle metagegevens en de overeenkomstige meta-eigenschap in RDF. De gegevensregels (structuur) voor de metagegevens zijn wel specifiek per klasse, en worden in de betreffende paragraaf behandeld.

MIM metagegeven Meta-eigenschap in RDF RDF type Grondslag
aggregatietype mim:aggregatietype owl:ObjectProperty grondslag
alias mim:alias owl:DatatypeProperty grondslag
attribuut mim:attribuut owl:ObjectProperty grondslag
authentiek mim:authentiek owl:ObjectProperty grondslag
basis-URI mim:basisUri owl:DatatypeProperty grondslag
begrip mim:begrip owl:ObjectProperty grondslag
begripsterm mim:begripsterm owl:DatatypeProperty grondslag
bron mim:bron owl:ObjectProperty grondslag
code mim:code owl:DatatypeProperty grondslag
constraint mim:constraint owl:ObjectProperty grondslag
data-element mim:dataElement owl:ObjectProperty grondslag
datum opname mim:datumOpname owl:DatatypeProperty grondslag
definitie mim:definitie owl:DatatypeProperty grondslag
doel mim:doel owl:ObjectProperty grondslag
formeel patroon mim:formeelPatroon owl:DatatypeProperty grondslag
gegevensgroep mim:gegevensgroep owl:ObjectProperty grondslag
groeptype mim:groeptype owl:ObjectProperty grondslag
herkomst mim:herkomst owl:DatatypeProperty grondslag
herkomst definitie mim:herkomstDefinitie owl:DatatypeProperty grondslag
identificerend mim:identificerend owl:DatatypeProperty grondslag
indicatie abstract object mim:indicatieAbstractObject owl:DatatypeProperty grondslag
indicatie afleidbaar mim:indicatieAfleidbaar owl:DatatypeProperty grondslag
indicatie classificerend mim:indicatieClassificerend owl:DatatypeProperty grondslag
heeft tijdlijn geldigheid mim:heeftTijdlijnGeldigheid owl:DatatypeProperty grondslag
indicatie materiële historie mim:indicatieMaterieleHistorie owl:DatatypeProperty grondslag
heeft tijdlijn registratie mim:heeftTijdlijnRegistratie owl:DatatypeProperty grondslag
indicatie formele historie mim:indicatieFormeleHistorie owl:DatatypeProperty grondslag
informatiedomein mim:informatiedomein owl:DatatypeProperty grondslag
informatiemodeltype mim:informatiemodeltype owl:ObjectProperty grondslag
kardinaliteit mim:kardinaliteit owl:DatatypeProperty grondslag
kwaliteit mim:kwaliteit owl:DatatypeProperty
lengte mim:lengte owl:DatatypeProperty grondslag
locatie mim:locatie owl:DatatypeProperty grondslag
identificatie mim:identificatie owl:DatatypeProperty grondslag
mim extensie mim:extensie owl:DatatypeProperty grondslag
mim taal mim:taal owl:DatatypeProperty grondslag
mim tekstopmaak mim:tekstopmaak owl:DatatypeProperty grondslag
mim versie mim:versie owl:DatatypeProperty grondslag
mogelijk geen waarde mim:mogelijkGeenWaarde owl:DatatypeProperty grondslag
naam mim:naam owl:DatatypeProperty grondslag
patroon mim:patroon owl:DatatypeProperty grondslag
populatie mim:populatie owl:DatatypeProperty
referentie-element mim:referentieElement owl:ObjectProperty grondslag
relatiemodelleringstype mim:relatiemodelleringstype owl:ObjectProperty grondslag
relatierol mim:relatierol owl:ObjectProperty
specificatie formeel mim:specificatieFormeel owl:DatatypeProperty
specificatie tekst mim:specificatieTekst owl:DatatypeProperty
subtype mim:subtype owl:ObjectProperty
supertype mim:supertype owl:ObjectProperty
toelichting mim:toelichting owl:DatatypeProperty grondslag
type mim:type owl:ObjectProperty grondslag
unidirectioneel mim:unidirectioneel owl:DatatypeProperty grondslag
waarde mim:waarde owl:ObjectProperty grondslag
minimumwaarde inclusief mim:minimumwaardeInclusief owl:DatatypeProperty grondslag
minimumwaarde exclusief mim:minimumwaardeExclusief owl:DatatypeProperty grondslag
maximumwaarde inclusief mim:maximumwaardeInclusief owl:DatatypeProperty grondslag
maximumwaarde exclusief mim:maximumwaardeExclusief owl:DatatypeProperty grondslag
mixin mim:mixin owl:DatatypeProperty grondslag

4.3.1 Objecten en attributen in LD

4.3.1.1 mim:Objecttype

De objecttypen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Populatie mim:populatie 0..1 tekst
Kwaliteit mim:kwaliteit 0..1 tekst
Toelichting mim:toelichting 0..1 tekst
Indicatie abstract object mim:indicatieAbstractObject 1 boolean
Attribuut mim:attribuut 0..* mim:Attribuutsoort
Gegevensgroep mim:gegevensgroep 0..* mim:Gegevensgroep
Constraint mim:constraint 0..* mim:Constraint
4.3.1.2 mim:Attribuutsoort

De attribuutsoorten worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Type mim:type 1 mim:Datatype
Lengte mim:lengte 0..1 tekst
Patroon mim:patroon 0..1 tekst
Formeel patroon mim:formeelPatroon 0..1 tekst
Heeft tijdlijn geldigheid mim:heeftTijdlijnGeldigheid 1 boolean
Indicatie materiële historie mim:indicatieMaterieleHistorie 1 boolean
Heeft tijdlijn registratie mim:heeftTijdlijnRegistratie 1 boolean
Indicatie formele historie mim:indicatieFormeleHistorie 1 boolean
Kardinaliteit mim:kardinaliteit 1 tekst
Authentiek mim:authentiek 1 Authenticiteit
Toelichting mim:toelichting 0..1 tekst
Indicatie afleidbaar mim:indicatieAfleidbaar 1 boolean
Indicatie classificerend mim:indicatieAfleidbaar 1 boolean
Mogelijk geen waarde mim:mogelijkGeenWaarde 1 boolean
Identificerend mim:identificerend 0..1 boolean
Eenheid mim:eenheid 0..1 si:MeasurementUnit
Constraint mim:constraint 0..* mim:Constraint
Minimumwaarde inclusief mim:minimumwaardeInclusief 0..1 integer, decimal, float, real, dateTime, date
Minimumwaarde exclusief mim:minimumwaardeExclusief 0..1 integer, decimal, float, real, dateTime, date
Maximumwaarde inclusief mim:maximumwaardeInclusief 0..1 integer, decimal, float, real, dateTime, date
Maximumwaarde exclusief mim:maximumwaardeExclusief 0..1 integer, decimal, float, real, dateTime, date

Het veld mim:authentiek verwijst naar één van de volgende mogelijke waarden:

Authenticiteit Definitie
mim:Authentiek In een basisregistratie opgenomen gegeven dat bij wettelijk voorschrift als authentiek is aangemerkt.
mim:Basisgegeven Een in een basisregistratie opgenomen gegeven.
mim:WettelijkGegeven Gegeven behorende bij een wettelijke registratie, niet zijnde een basisregistratie
mim:LandelijkKerngegeven Indien het een gegeven of een als relatiesoort gemodelleerd gegeven is in een landelijk sector- en domein-overstijgend informatiemodel en geen authentiek gegeven en geen basisgegeven is.
mim:OverigeAuthenticiteit Indien het géén van de voorgaande categorieën betreft. Veelal gaat het dan om proces-, taakveld- of domeinspecifieke gegevens.

Het veld mim:eenheid verwijst naar een waarde afkomstig uit SI Digital framework.

4.3.1.3 mim:Gegevensgroep

De gegevensgroepen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Gegevensgroeptype mim:gegevensgroeptype 1 mim:Gegevensgroeptype
Herkomst mim:herkomst 1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Kardinaliteit mim:kardinaliteit 1 tekst
Authentiek mim:authentiek 1 Authenticiteit
Constraint mim:constraint 0..* mim:Constraint
4.3.1.4 mim:Gegevensgroeptype

De gegevensgroeptypen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 0..1 tekst
Herkomst definitie mim:herkomstDefinitie 0..1 tekst
Toelichting mim:toelichting 0..1 tekst
Datum opname mim:datumOpname 1 datum
Attribuut mim:attribuut 0..* mim:Attribuutsoort
Gegevensgroep mim:gegevensgroep 0..* mim:Gegevensgroep
Constraint mim:constraint 0..* mim:Constraint

4.3.2 Relaties in LD

Het metamodel heeft twee manieren om een relatie tussen twee objecttypen te beschrijven. Deze keuze wordt aangegeven in de eigen extensie, zoals beschreven in 1.9 Uitdrukken in Linked Data. Alleen het gekozen alternatief is relevant voor de modellering in uw informatiemodel.

  • Alternatief 1: Verplichte benoeming van de naam van de relatie met de bijbehorende metagegevens
  • Alternatief 2: Verplichte benoeming van de rol van het doel in een relatie met de bijbehorende metagegevens en optioneel de benoeming van de naam van de relatie.

Beide alternatieven gebruiken relatiesoort en relatierol, maar met andere regels voor gebruik.

4.3.2.1 mim:Relatiesoort (alt 1: soort leidend)

De relatiesoorten worden naar de volgende aspecten gespecificeerd.

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Unidirectioneel mim:unidirectioneel 1 boolean
Bron mim:bron 1 mim:Objecttype
Doel mim:doel 1 mim:Objecttype
Aggregatietype mim:aggregatietype 1 Aggregatietype
Kardinaliteit mim:kardinaliteit 1 tekst
Kardinaliteit relatie bron mim:kardinaliteitRelatieBron 0..1 tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Identificerend mim:identificerend 0..1 boolean
Heeft tijdlijn geldigheid mim:heeftTijdlijnGeldigheid 1 boolean
Indicatie materiële historie mim:indicatieMaterieleHistorie 1 boolean
Heeft tijdlijn registratie mim:heeftTijdlijnRegistratie 1 boolean
Indicatie formele historie mim:indicatieFormeleHistorie 1 boolean
Authentiek mim:authentiek 1 Authenticiteit
Indicatie afleidbaar mim:indicatieAfleidbaar 1 boolean
Mogelijk geen waarde mim:mogelijkGeenWaarde 1 boolean
Constraint mim:constraint 0..* mim:Constraint

Het veld mim:aggregatietype verwijst naar één van de volgende mogelijke waarden:

Aggregatietype Definitie
mim:Geen Er is geen sprake van een aggregatie
mim:Compositie Compositie (gesloten wiebertje)
mim:Gedeeld Gedeelde aggregatie (open wiebertje)
4.3.2.2 mim:Relatiesoort (alt 2: rol leidend)

De relatiesoorten worden naar de volgende aspecten gespecificeerd.

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 0..1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 0..1 tekst
Relatierol mim:relatierol 1..2 Relatierol
Constraint mim:constraint 0..* mim:Constraint
4.3.2.3 mim:Relatierol (alt 1: soort leidend)

Voor relatierollen worden naar de volgende aspecten gespecificeerd.

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 0..1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 0..1 tekst
Constraint mim:constraint 0..* mim:Constraint
4.3.2.4 mim:Relatierol (alt 2: rol leidend)

Voor relatierol worden bij het doel rol van een relatiesoort de volgende aspecten gespecificeerd.

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Kardinaliteit mim:kardinaliteit 1 tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Identificerend mim:identificerend 0..1 boolean
Heeft tijdlijn geldigheid mim:heeftTijdlijnGeldigheid 1 boolean
Indicatie materiële historie mim:indicatieMaterieleHistorie 1 boolean
Heeft tijdlijn registratie mim:heeftTijdlijnRegistratie 1 boolean
Indicatie formele historie mim:indicatieFormeleHistorie 1 boolean
Authentiek mim:authentiek 1 Authenticiteit
Mogelijk geen waarde mim:mogelijkGeenWaarde 1 boolean
Constraint mim:constraint 0..* mim:Constraint
4.3.2.5 mim:Generalisatie bij objecttypen

De generalisaties worden naar het volgende aspect gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Subtype mim:definitie 1 mim:Objecttype
Supertype mim:definitie 1 mim:Objecttype
Datum opname mim:datumOpname 1 datum
Mixin mim:mixin 1 boolean
4.3.2.6 mim:Generalisatie bij datatypen

De generalisaties worden naar het volgende aspect gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Subtype mim:definitie 1 mim:Datatype
Supertype mim:definitie 1 mim:Datatype
4.3.2.7 mim:Relatieklasse

De relatieklassen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 0..1 tekst
Alias mim:alias 0..1 tekst
Herkomst mim:herkomst 1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 0..1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Datum opname mim:datumOpname 1 datum
Constraint mim:constraint 0..* mim:Constraint
Unidirectioneel mim:unidirectioneel 1 boolean
Aggregatietype mim:aggregatietype 1 Aggregatietype
Kardinaliteit mim:kardinaliteit 1 tekst
Heeft tijdlijn geldigheid mim:heeftTijdlijnGeldigheid 1 boolean
Indicatie materiële historie mim:indicatieMaterieleHistorie 1 boolean
Heeft tijdlijn registratie mim:heeftTijdlijnRegistratie 1 boolean
Indicatie formele historie mim:indicatieFormeleHistorie 1 boolean
Authentiek mim:authentiek 1 Authenticiteit
Indicatie afleidbaar mim:indicatieAfleidbaar 1 boolean
Mogelijk geen waarde mim:mogelijkGeenWaarde 1 boolean
4.3.2.8 mim:ExterneKoppeling

Externe koppelingen worden naar de volgende aspecten gespecificeerd.

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Unidirectioneel mim:unidirectioneel 1 boolean
Bron mim:bron 1 mim:Objecttype
Doel mim:doel 1 mim:Objecttype
Aggregatietype mim:aggregatietype 1 Aggregatietype
Kardinaliteit mim:kardinaliteit 1 tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Heeft tijdlijn geldigheid mim:heeftTijdlijnGeldigheid 1 boolean
Indicatie materiële historie mim:indicatieMaterieleHistorie 1 boolean
Heeft tijdlijn registratie mim:heeftTijdlijnRegistratie 1 boolean
Indicatie formele historie mim:indicatieFormeleHistorie 1 boolean
Authentiek mim:authentiek 1 Authenticiteit
Indicatie afleidbaar mim:indicatieAfleidbaar 1 boolean
Mogelijk geen waarde mim:mogelijkGeenWaarde 1 boolean
Constraint mim:constraint 0..* mim:Constraint

4.3.3 Waardelijsten in LD

Waar in onderstaande specificaties sprake is van een locatie, wordt in Linked Data termen veronderstelt dat op deze locatie de waardelijst te vinden is. Concreet betekent dit dat via content negotiation de waardelijst in een specifieke serialisatie van Linked Data is op te halen (zoals: JSON-LD, RDF/XML, Turtle). Vervolgens wordt verondersteld dat de resources in dit bestand de afzonderlijke waarden van de waardelijst zijn, of andere metagegevens van de waardelijst. Zo ligt voor de hand dat het bestand een resource bevat met dezelfde URL als opgegeven in de locatie, waarmee nadere informatie kan worden aangegeven.

4.3.3.1 mim:Referentielijst

Voor referentielijsten worden de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Herkomst definitie mim:herkomstDefinitie 1 tekst
Datum opname mim:datumOpname 1 datum
Toelichting mim:toelichting 0..1 tekst
Locatie mim:locatie 1 tekst
Referentie-element mim:referentieElement 1..* mim:ReferentieElement
Constraint mim:constraint 0..* mim:Constraint
4.3.3.2 mim:ReferentieElement

De referentie-elementen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 1 tekst
Datum opname mim:datumOpname 1 datum
Type mim:type 1 mim:Datatype
Lengte mim:lengte 0..1 tekst
Patroon mim:patroon 0..1 tekst
Formeel patroon mim:formeelPatroon 0..1 tekst
Kardinaliteit mim:kardinaliteit 1 tekst
Identificerend mim:identificerend 0..1 tekst
Toelichting mim:toelichting 0..1 tekst
Constraint mim:constraint 0..* mim:Constraint
Eenheid mim:eenheid 0..1 si:MeasurementUnit
Constraint mim:constraint 0..* mim:Constraint
Minimumwaarde inclusief mim:minimumwaardeInclusief 0..1 integer, decimal, float, real, dateTime, date
Minimumwaarde exclusief mim:minimumwaardeExclusief 0..1 integer, decimal, float, real, dateTime, date
Maximumwaarde inclusief mim:maximumwaardeInclusief 0..1 integer, decimal, float, real, dateTime, date
Maximumwaarde exclusief mim:maximumwaardeExclusief 0..1 integer, decimal, float, real, dateTime, date
4.3.3.3 mim:Codelijst

Voor codelijst worden de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Datum opname mim:datumOpname 1 datum
Toelichting mim:toelichting 0..1 tekst
Locatie mim:locatie 1 tekst
Constraint mim:constraint 0..* mim:Constraint

4.3.4 Datatypen in LD

Het betreft metagegevens voor in het informatiemodel gedefinieerde datatypen, oftewel exclusief datatypen die al buiten het model bestaan, zoals Integer, DateTime, Surface.

4.3.4.1 mim:PrimitiefDatatype

De datatypen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Type mim:type 1 mim:Datatype
Lengte mim:lengte 0..1 tekst
Patroon mim:patroon 0..1 tekst
Formeel patroon mim:formeelPatroon 0..1 tekst
Herkomst mim:herkomst 1 tekst
Datum opname mim:datumOpname 1 datum
Constraint mim:constraint 0..* mim:Constraint
4.3.4.2 mim:GestructureerdDatatype

Voor Gestructureerde datatypen worden de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Herkomst mim:herkomst 1 tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Patroon mim:patroon 0..1 tekst
Formeel patroon mim:formeelPatroon 0..1 tekst
Datum opname mim:datumOpname 1 datum
Data-element mim:dataElement 0..* mim:DataElement
Constraint mim:constraint 0..* mim:Constraint
4.3.4.3 mim:DataElement

De data-elementen worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Datum opname mim:datumOpname 1 datum
Type mim:type 1 mim:Datatype
Lengte mim:lengte 0..1 tekst
Patroon mim:patroon 0..1 tekst
Formeel patroon mim:formeelPatroon 0..1 tekst
Kardinaliteit mim:kardinaliteit 1 tekst
Constraint mim:constraint 0..* mim:Constraint
Minimumwaarde inclusief mim:minimumwaardeInclusief 0..1 integer, decimal, float, real, dateTime, date
Minimumwaarde exclusief mim:minimumwaardeExclusief 0..1 integer, decimal, float, real, dateTime, date
Maximumwaarde inclusief mim:maximumwaardeInclusief 0..1 integer, decimal, float, real, dateTime, date
Maximumwaarde exclusief mim:maximumwaardeExclusief 0..1 integer, decimal, float, real, dateTime, date

4.3.5 Packages in LD

4.3.5.1 mim:Informatiemodel

Informatiemodel packages worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Definitie mim:definitie 1 tekst
Herkomst mim:herkomst 1 tekst
Datum opname mim:datumOpname 1 datum
MIM versie mim:mimversie 1 tekst
MIM extensie mim:mimextensie 0..1 tekst
MIM taal mim:mimtaal 0..1 tekst
Informatiedomein mim:informatiedomein 1..1 tekst
Informatiemodeltype mim:informatiemodeltype 1..1 Informatiemodeltypen
Relatiemodelleringstype mim:relatiemodelleringstype 1..1 Relatiemodelleringstypen
tekstopmaak mim:tekstopmaak 0..1 tekst
Constraint mim:constraint 0..* mim:Constraint
Basis-URI mim:basisUri 0..1 xsd:anyURI

Het veld mim:informatiemodeltype verwijst naar één van de volgende mogelijke waarden:

Informatiemodeltype Definitie
mim:ConceptueelInformatiemodel Niveau-2 model, conform deze sectie
mim:LogischInformatiemodel Niveau-3 model, conform deze sectie
mim:TechnischInformatiemodel Niveau-4 model, conform deze sectie

Het veld mim:relatiemodelleringstype verwijst naar één van de volgende mogelijke waarden:

Relatiemodelleringstype Definitie
mim:RelatiesoortLeidend Relatiesoort leidend, conform deze en deze secties
mim:RelatierolLeidend Relatierol leidend, conform deze en deze secties
4.3.5.2 mim:Domein

Domein packages worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Datum opname mim:datumOpname 1 datum
Constraint mim:constraint 0..* mim:Constraint
Basis-URI mim:basisUri 0..1 xsd:anyURI
4.3.5.3 mim:Extern

Externe packages worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Locatie mim:locatie 1 tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Herkomst mim:herkomst 1 tekst
Datum opname mim:datumOpname 1 datum
Constraint mim:constraint 0..* mim:Constraint
Basis-URI mim:basisUri 0..1 xsd:anyURI
4.3.5.4 mim:View

View packages worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Locatie mim:locatie 1 tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Herkomst mim:herkomst 1 tekst
Datum opname mim:datumOpname 1 datum
Constraint mim:constraint 0..* mim:Constraint
Basis-URI mim:basisUri 0..1 xsd:anyURI

4.3.6 Overige modelelementen in LD

4.3.6.1 mim:Enumeratie

Enumeraties betreffen de metaclass Enumeration en worden naar de volgende aspecten gespecificeerd:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Alias mim:alias 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Definitie mim:definitie 1 tekst
Toelichting mim:toelichting 0..1 tekst
Datum opname mim:datumOpname 1 datum
Waarde mim:waarde 1..* mim:Waarde
Constraint mim:constraint 0..* mim:Constraint
4.3.6.2 mim:Enumeratiewaarde

De enumeratiewaarde zelf betreft de metaclass UML-EnumerationLiteral en kent volgende aspecten:

Aspect Eigenschap Kardinaliteit Datatype of klasse
Identificatie mim:identificatie 1 xsd:anyURI
Naam mim:naam 1 tekst
Definitie mim:definitie 0..1 tekst
Toelichting mim:toelichting 0..1 tekst
Code mim:code 0..1 tekst
Begrip mim:begrip 0..* skos:Concept
Begripsterm mim:begripsterm 0..* tekst
Datum opname mim:datumOpname 1 datum
Constraint mim:constraint 0..* mim:Constraint

Een enumeratiewaarde mag geen alias hebben, omdat in UML het alias-veld wordt gebruikt voor de mim:code. Mocht toch een mim:alias zijn opgegeven voor een enumeratiewaarde, dan dient deze gelezen te worden als een mim:code. In het RDF model is mim:code een subproperty van een mim:alias.

4.3.6.3 mim:Constraint

De enumeratiewaarde zelf betreft de metaclass UML-EnumerationLiteral en kent volgende aspecten:

Aspect Eigenschap Kardinaliteit Datatype of _klasse
Naam mim:naam 1 tekst
Specificatie-tekst mim:specificatieTekst 0..1 tekst
Specificatie-formeel mim:specificatieFormeel 0..1 tekst

4.4 Linked Data Tooling

Het metamodel van MIM is specifiek voor het MIM opgesteld. Hiervoor zijn niet direct tools beschikbaar. Wel zijn er twee alternatieve opties die modelleurs kunnen volgen:

  1. Modelleurs kunnen een MIM model met behulp van Enterprise Architect opstellen. Er is een tool Imvertor, waarmee het mogelijk is om een MIM Model opgesteld in Enterprise Architect te transformeren naar een Linked Data model. Deze tool is open source.
  2. Modelleurs kunnen ook direct in een Linked Data model (in OWL en SHACL) opstellen. Een dergelijk model kan, indien het voldoet aan de transformatieregels, gezien worden als een MIM informatiemodel. Om expliciet de link naar het MIM duidelijk te maken, kan gebruik worden gemaakt van deze SPARQL constructieregels, die een RDF/RDFS/OWL/SHACL model "terugvertalen" naar een MIM model. De terugvertaalregels zijn beschreven in 6.4.10 Transformatie vanuit RDFS/OWL/SHACL. Er zijn diverse tools beschikbaar om een dergelijk model op te stellen. De meest bekende tools zijn Protege (open source)en Poolparty (commercieel product). Daarnaast zijn er ook veel modelleurs die gebruik maken van generieke IDE's voor het maken van Linked Data modellen, vaak op basis van de voor mensen leesbare Turtle syntax.

5. Afspraken & Regels

In deze paragraaf gaan we in op een aantal aspecten van het zojuist beschreven metamodel en afspraken en regels die van toepassing zijn voor een informatiemodel.

5.1 Datatype(n)

Een datatype is een typering van een eigenschap. Datatypen in een informatiemodel beschrijven de structuur waaraan de data van objecten moet voldoen. De essentie van datatypen is dat ze gaan over de waarden die attribuutsoorten kunnen hebben. Het specificeert de waarden die de attribuutsoort kan aannemen en de vorm waarin deze beschikbaar zijn.

We onderscheiden de volgende soorten gedefinieerde categorieën voor datatypen:

  1. Primitief datatype: data zoals "Amersfoort" of "10" worden vastgelegd als CharacterString en Integer. Dit volgt de internationale standaarden voor datatypen.
  2. Landelijk datatype (volgens het GAB): datatypen zoals: Postcode, DMO en DTMO (zie ook: 5.1.3 Landelijk Datatype).
  3. Zelfgedefinieerd datatype: data zoals NietNegatieveInteger, AN (Alfanumerieke waarde) of een Vlak.
  4. Gestructureerd datatype: een combinatie van data, zoals een bedrag: "5 euro", opgebouwd uit waarde = "5" en munteenheid = "euro"), of een GM_Surface. Deze volgen ook internationale of nationale standaarden.

De primitieve datatypen uit onderstaande lijst moeten gebruikt worden. De landelijke en de Gestructureerde datatypen hoeven niet per sé gebruikt te worden, maar het gebruik hiervan wordt wel aanbevolen. Dit metamodel voorziet er vooral in dat dit soort datatypen gedefinieerd kunnen worden, conform de modellering zoals het metamodel aangeeft, maar dus zonder de specifieke datatypen voor te schrijven.

Datatypen die niet in deze paragraaf (sub paragrafen) voor-gedefinieerd zijn worden in het eigen informatiemodel toegevoegd. Dit kan een organisatie zelf doen, door deze expliciet te beschrijven in de eigen extensie en daarna te gebruiken in het eigen informatiemodel. Deze gelden dan alleen voor het eigen informatiemodel.

Het is mogelijk om specifieke(re) restricties, zoals de lengte, toe te voegen. Dit wordt gedaan in een metagegeven lengte. De data van het attribuut moet dan voldoen aan het datatype én aan het metagegeven lengte. De lengte wordt dus niet in het datatype zelf vastgelegd.

5.1.1 Primitief datatype

Dit metamodel onderkend (momenteel) de volgende extern gedefinieerde primitive datatypen. Deze zijn allemaal gebaseerd op [GAB]:

Primitive type Betekenis
CharacterString Zie [iso-19103]. Vrij vertaald: alle alfanumerieke tekens en speciale tekens die horen bij de gekozen characterset (standaard UTF-8), dus met diakrieten, white spaces, \-teken en newlines of HTML opmaak e.d. Mag starten met spatie. De maximale lengte is onbepaald. Opmerking: getallen (ISO Numbers) met voorloopnullen worden opgenomen als CharacterString, met een patroon of formeel patroon. Bij het metagegeven Waardenverzameling attribuutsoort wordt dit dan (ook) gespecificeerd.
Integer Zie [iso-19103] (subtype van ISO Number). Vrij vertaald: geheel getal, lengte is minimaal 1 en maximale lengte is onbepaald, zonder voorloopnullen. Opmerking: t.a.v. positieve en negatieve getalen en + en – tekens: bijvoorbeeld -2,0 Het (formeel) patroon geeft aan of een + en/of - teken gebruikt mag worden in het gegeven.
Real Zie [iso-19103] (subtype van ISO Number). Vrij vertaald: een real is een zwevendekommagetal, waarbij de precisie bepaald wordt door het aantal getoonde cijfers. Het getoonde getal is een schatting en geeft niet noodzakelijk de exacte waarde weer. Opmerking 1: Dit verschilt van decimal, want decimal is een exacte waarde en real is geschat. Opmerking 2: t.a.v. positieve en negatieve getalen en + en – tekens: zie Integer.
Decimal Zie [iso-19103] (subtype van ISO Number). Vrij vertaald: een decimal is een gegevenstype waarin het getal een exacte waarde vertegenwoordigt, als een eindige weergave van een decimaal getal. Aangezien veel valuta's decimaal zijn, hebben deze weergaven de voorkeur bij het omgaan met dergelijke waarden. Opmerking 1: Dit verschilt van real, want real is een geschatte waarde en Decimal is exact. Opmerking 2: t.a.v. positieve en negatieve getalen en + en – tekens: zie Integer.
Boolean Indicatie met mogelijke waarden True, false, 1 of 0. True en 1 hebben een identieke betekenis: Ja. False en 0 hebben een identieke betekenis: Nee. Opmerking: t.a.v. Ja of Nee. Wanneer u de Ja of Nee wilt gebruiken, gebruik dan bv. een Enumeratie genaamd Indicatie, of gebruik AN met een lengte en een (formeel) patroon.
Date 4-cijferig jaar, 2-cijferig maand, 2-cijferig dag uitgedrukt in yyyy-mm-dd conform https://en.wikipedia.org/wiki/ISO_8601
DateTime yyyy-mm-ddThh:mm:ss conform https://en.wikipedia.org/wiki/ISO_8601
Year 4-cijferig jaar uitgedrukt in yyyy conform https://en.wikipedia.org/wiki/ISO_8601
Day 2-cijferige dag uitgedrukt in dd conform https://en.wikipedia.org/wiki/ISO_8601
Month 2-cijferige maand uitgedrukt in mm conform https://en.wikipedia.org/wiki/ISO_8601
URI Unieke identificatie op internet conform RFC3986 en de URI-strategie Linked Open Data. Gestandaardiseerde manier om op het internet dingen (pagina's met informatie, objecten, datasets) uniek te identificeren.

Het is mogelijk om in de eigen extensie extra primitive datatypen op te nemen, zodat deze ook beschikbaar komen voor het informatiemodel.

Issue 1: Extra tekstregel openen, incl. link naar register.geostandaarden voor typen
5.1.1.1 Getallen en negatieve getallen

Met een getal kan worden gerekend. Bijvoorbeeld: saldo, hoeveelheid, aantal, grootte.

Een getal kan negatief zijn. Dit is inherent aan een getal. Het - of + teken heeft geen invloed op de lengte van het getal. Als er dus een lengte wordt gespecificeerd, tel het - of + teken dan niet mee. Als een getal niet negatief mag zijn, geef dit dan aan in een patroon (zie NonNegativeInteger).

Aanbeveling: als er niet mee gerekend kan worden, zoals de bankrekening zelf (waar een saldo op staat, maar die bedoelen we hier expliciet niet), gebruik dan een CharacterString met een patroon.

5.1.1.2 Waardenbereik en patroon

Het waardenbereik van een attribuut kan vastgelegd worden middels de combinatie van een primitieve en een patroon dat als restrictie is opgenomen. Bijvoorbeeld bij een postcode, of een gemeentecode die moet bestaan uit precies 4 getallen, waarbij het eerste getal een 0 mag zijn.

We onderkennen twee soorten patronen:

  • Patroon: het metagegeven (de taggedvalue) ‘Patroon’ in tekst vorm. Deze wordt als aanvulling op het datatype (bijvoorbeeld Integer) van het attribuut gespecificeerd. Het patroon bevat een specificatie waaraan een waarde moet voldoen. Bijvoorbeeld een postcode, met als aanduiding van het patroon: Postcode. De toegestane waarden voor deze patroon aanduiding worden dan vastgelegd in documentatie behorende bij het type: alle postcodes van 1000AA tot en met 9999ZZ.
  • Formeel patroon: het metagegeven (de tagged value) ‘Formeel patroon’ in formele specificatie vorm [H1.11,referentie 6], te weten in een reguliere expressie. Bijvoorbeeld een postcode, met de expressie: \\d{4}[A-Z]{2}.

Een voorbeeld waar een patroon nodig is, is een attribuut waarvan het waardenbereik altijd een getal is met precies de lengte 4, zoals bijvoorbeeld 0001 tot en met 9999, en dus voorloopnullen heeft. Een datatype zoals Integer kan hiervoor niet gebruikt worden, omdat 0001 geen getal is. Het type van het attribuut wordt in dat geval een CharacterString, met lengte (exact) 4 en het patroon voor het attribuut specificeert dat alleen numerieke getallen zijn toegestaan: [0-9]{4}.

5.1.2 Zelfgedefinieerd datatype

Het is ook mogelijk om in het eigen informatiemodel een eigen datatype te definiëren in de vorm van een «Primitief datatype», «Codelijst» of «Referentielijst». Zelf-gedefinieerde datatypen hebben altijd een eigen definitie en optioneel een eigen patroon of formeel patroon.

Issue 2: Afbeelding onleesbaar
Figuur 37 Diagram: Datatypen Generalisatie

Datatypen Generalisatie

De gele datatypen zijn extern aan het model.

Het type modelelement (stereotype) verandert niet door de generalisatie. Een zelf-gedefinieerd primitief datatype zal een generalisatie hebben met een ander primitief datatype. Een zelf-gedefinieerd gestructureerd datatype zal een generalisatie hebben met een ander gestructureerd datatype.

Het komt voor dat het zelf-gedefinieerde datatype een generalisatie heeft naar een extern gedefinieerd datatype, waarvan het modelelement (stereotype) niet is gespecificeerd. Maak dan zelf een inschatting. Let hierbij op bij een «Gestructureerd datatype». Deze hoort altijd twee of meer data elementen te hebben.

5.1.3 Landelijk Datatype

Wanneer op landelijk niveau afspraken zijn gemaakt (bijvoorbeeld in GAB), voor algemene datatypen, die niet primitief zijn, zoals Postcode, dan worden deze niet in dit MIM metamodel opgenomen. Wel geeft MIM aan hoe deze in informatiemodellen gedefinieerd en gemodelleerd worden.

Voorbeelden hiervan van landelijke datatypen, die niet tot MIM behoren, maar ter illustratie zijn opgenomen:

Datatype Beschrijving
Postcode De in Nederland gangbare postcode voor een Nederlands postadres, bestaande uit een numeriek deel en een alfabetisch deel. Het numerieke deel van de postcode bestaat uit vier cijfers, het alfabetische deel van de postcode bestaat uit twee hoofdletters. Conform [GAB Postcodes].
DMO Datum mogelijk onvolledig. De keuze («Keuze») van een periode in de Gregoriaanse kalender, al naar gelang de beschikbare datumelementen, uit de onderliggende subformaten alleen Year, Year en Month of Year, Month en Day. Dit is (nog steeds) overeenkomstig met https://en.wikipedia.org/wiki/ISO_8601 en [GAB DatumMogelijkOnvolledig].
DTMO Een volledige datum waarbij (alleen) de tijd mogelijk ontbreekt. De tijd wordt, zover bekend, ingevuld. Dus alleen de uren als de minuten onbekend zijn. DateTime, als de tijd wel volledig bekend is. Date, als alleen de Date bekend is

5.1.4 Gestructureerd datatype

Een «Gestructureerd datatype» is veelal specifiek binnen een informatiemodel. Indien mogelijk wordt zoveel mogelijk hergebruik gemaakt van elders gedefinieerde «Gestructureerd datatype»n, denk bijvoorbeeld aan de Gestructureerd datatypen: NEN 3610 identificatie (NEN3610), Kadastrale aanduiding (BRK), Objectnummering (BAG) of Labelpositie.

Gewone datatypen staan op zichzelf en worden niet beschreven in termen van een ander datatype. Bij een «Gestructureerd datatype» is dit wel het geval. Het is een gestructureerd datatype dat is samengesteld uit meerdere eigenschappen. Hiermee kunnen meerdere data-elementen, die onlosmakelijk bij elkaar horen, ook bij elkaar gedefinieerd worden.

Bijvoorbeeld een Bedrag, dat bestaat uit een hoeveelheid en een muntsoort. Het aantal zelf is nietszeggend, tenzij ook aangegeven wordt welke muntsoort het betreft. Elk data-element in een Gestructureerd datatype heeft zelf ook weer een datatype (in zeer bijzondere gevallen kan een data-element zelf ook weer een Gestructureerd datatype zijn).

5.1.4.1 Gestructureerd datatype representeren als één gegevenselement

Soms is er de behoefte om een combinatie van gegevens samengesteld te representeren, in één gegevenselement. Dit speelt specifiek bij gestructureerde datatypen, omdat de data-elementen hiervan uniek identificerend zijn voor een object. De samengestelde representatie verandert niets aan de semantische definitie. Om een uniforme samenstelling te waarborgen, wordt er bij het gestructureerde datatype een patroon of een formeel patroon gedefinieerd (dat consistent is met de definities van de data-elementen uit het Gestructureerd datatype).

Als een patroon of formeel patroon gedefinieerd is op het gestructureerde datatype (als geheel), dan worden de data-elementen van het gestructureerde datatype altijd als één gegevenselement uitgewisseld. Als dit patroon niet gedefinieerd is, dan worden de data-elementen als losse gegevenselementen uitgewisseld (de standaardwijze voor een Gestructureerd datatype).

Een uitgewerkt voorbeeld van een Gestructureerd datatype met patroon is Objectnummering. Dit Gestructureerd datatype bestaat uit de data elementen: - Gemeentecode (AN, lengte 4) - Objecttypecode (AN, lengte 2) - Nummer (AN, lengte 10) met daarbij een formeel patroon: [0-9]{4}\.[0-9]{2}\.[ 0-9]{10} of een (tekst) patroon Gemeentecode.Objecttypecode.Nummer

5.2 Gegevensgroeptype

Bij het modelleren van een objecttype worden attribuutsoorten toegekend aan een objecttype. Wanneer er geconstateerd wordt dat een aantal attribuutsoorten logisch gezien bij elkaar horen, dan kan er gekozen worden om deze onder te brengen in een gegevensgroeptype. Het blijven dan attributen van het objecttype. De definitie van elk afzonderlijk attribuutsoort verandert niet door de groepering.

Richtlijn: een gegevensgroeptype bevat alleen «Attribuutsoort»en en geen «Relatiesoort»en. Als er wel een relatie aan de orde is, dan wordt de gegevensgroep gezien als een apart te beheren object. Er wordt dan een apart «Objecttype» gemaakt. Het is wel mogelijk, hoewel uitzonderlijk, om binnen een gegevensgroeptype nog een ander gegevensgroeptype te modelleren.

5.2.1 Hergebruik

Het kan voorkomen dat meerdere objecttypes gebruik maken van dezelfde gegevensgroeptype, omdat de definitie voor alle objecttypes gelijk is of moet zijn. Het is dan modelmatig mogelijk om zo’n gegevensgroeptype te hergebruiken Op conceptueel niveau is dit ongebruikelijk, omdat kenmerken / eigenschappen exclusief bij een object horen, maar het is wel toegestaan. Het is hierbij belangrijk om goed te kijken of er echt sprake is van een gegevensgroeptype, of dat er (toch) sprake is van een objecttype. Bijvoorbeeld van een objecttype die voor zijn bestaan afhankelijk is van een ander objecttype (en daarom via een «Relatiesoort» met aggregatietype ‘composite’ (het gesloten wiebertje) gekoppeld moet worden). Het is aan de modelleur om deze beoordeling te maken.

Metamodel: het gegevensgroeptype kan dus het type zijn van meer dan 1 gegevensgroep. Vanwege dit hergebruik is daarom de kardinaliteit van de relatie van gegevensgroep naar gegevensgroeptype aan de source kant 1..*. Zie Kern.

5.2.2 Gegevensgroep versus Gestructureerd datatype

Een gegevensgroep is niet hetzelfde als een Gestructureerd datatype.

  • Een datatype beschrijft de structuur van data, een gegevensgroep beschrijft de semantiek van een kenmerk van een object.
  • Als één kenmerk van een object uit verschillende stukjes data bestaat, dan wordt een Gestructureerd datatype gebruikt. Dit is bijvoorbeeld het geval bij het gestructureerde datatype Bedrag. Deze bestaat uit een 'hoeveelheid' en 'muntsoort'.
  • Als een object meerdere kenmerken heeft, gemodelleerd als afzonderlijke attribuutsoorten, dan heeft elk kenmerk op zichzelf betekenis. Als één kenmerk wordt weggelaten, of niet bekend of ingewonnen is, dan verandert er niets aan de betekenis van de andere attribuutsoorten.
  • Een ander goed criterium is: als het datatype wordt weggelaten uit het informatiemodel, dan verliest het informatiemodel geen semantiek. Alleen de structuur van een gegeven is dan niet meer bekend.

Regel: het is niet de bedoeling dat eenzelfde kenmerk van een object in het ene model als een gegevensgroep gemodelleerd wordt en in het andere model als een Gestructureerd datatype. Er raakt dan semantiek verloren of er ontbreekt dan semantiek.

  • Een Gestructureerd datatype in een conceptueel informatiemodel is en blijft dus altijd ook een Gestructureerd datatype in een bijbehorende logisch informatiemodel. Een gegevensgroep in een conceptueel model is en blijft dus altijd ook een gegevensgroep in een logisch informatiemodel.

5.3 Keuze tussen datatypen (Keuze)

Wanneer het datatype van een attribuutsoort een keuze uit twee of meer datatypen is, dan wordt dit gemodelleerd met het datatype Keuze. Elk keuze element van de keuze heeft dan één datatype, de waarde van de attribuutsoort moet aan één van deze datatypen voldoen.

In dit voorbeeld is er enkel een keuze tussen verschillende keuze elementen die zelf geen betekenisvolle context geven aan het te kiezen datatype. Er wordt in dit geval geen definitie gespecificeerd bij het keuze element (de definitie is optioneel).

In onderstaande voorbeelden is er wel sprake van een keuze tussen keuze elementen die een betekenisvolle context geven aan het te kiezen datatype. Er wordt in dit geval wel een definitie gespecificeerd bij het keuze element.

Regel: het is niet toegestaan dat keuze elementen binnen één en dezelfde keuze identiek zijn. De naam van elk keuze element moet verschillend zijn én de datatypen moeten op zijn minst verschillend zijn. Dus ofwel een ander datatype, ofwel hetzelfde datatype met een verschil in het metadata aspect patroon en/of formeel patroon hebben. Bijvoorbeeld: een keuze tussen een datatype CharacterString en een datatype CharacterString is alleen toegestaan als er een verschillend (formeel) patroon is gespecificeerd.

Merk op dat het mogelijk is om een eigen datatype te maken met een eigen naam en deze te gebruiken in een keuze element. Wanneer een beoogd datatype uit een extern model komt en daar geen metamodel stereotype heeft, zoals bijvoorbeeld het geval is bij het GM package waarin een datatype als «interface» GM_Point is opgenomen, dan heeft dit datatype niet een MIM stereotype en mogelijk ook niet de UML-metaclass dataType. Het is dan aan de modelleur van het informatiemodel om te beoordelen of het type dan als datatype gebruikt kan worden. Het is niet gewenst om aan het externe model een stereotype toe te voegen, noch om in het externe model de UML-metaclass aan te passen.

5.4 Domeinwaarden of lijsten

In veel registraties wordt gewerkt met codetabellen om de mogelijke waarden van een attribuutsoort te specificeren. Deze mogelijke waarden kunnen op verschillende manieren worden opgenomen, afhankelijk van de gewenste stabiliteit.

5.4.1 Enumeraties

Dit zijn statische lijsten, waaruit één waarde gekozen kan worden. De registratie en bijbehorende koppelvlakken kunnen erop vertrouwen dat er geen nieuwe waardes worden toegevoegd. Als er een nieuwe waarde bij komt wordt dit via een modelwijziging doorgevoerd. Dit wordt vooral toegepast bij lijsten die niet of weinig veranderen. Zo is bij het attribuutsoort Naamgebruik een enumeratie naamgebruik opgenomen met als waarden onder meer ‘eigen’ en ‘eigen, partner’.

Als sprake is van dynamiek in de domeinwaarden wordt een Referentielijst of Codelijst gebruikt. Dit betreft de situaties waarin domeinwaarden kunnen veranderen en/of het aantal domeinwaarden kan toe- of afnemen. De registratie en bijbehorende koppelvlakken worden dan ingericht om hier mee om te gaan. Dit wordt vooral toegepast bij lijsten die vaker aan verandering onderhevig zijn.

5.4.2 Referentielijst

Een lijst waarin we de betekenis en structuur van de lijst expliciet willen specificeren. Een voorbeeld is de «Referentielijst» LAND of CultuurcodeOnbebouwd. De «Referentielijst» is hiermee een bijzondere vorm van datatype.

De naamgeving «Referentielijst» kan verwarring oproepen maar in principe wordt altijd gerefereerd naar gegevens m.b.t. één rij uit de «Referentielijst». In het geval van de «Referentielijst» LAND wordt altijd gerefereerd naar gegevens over Nederland (NL) of gegevens over Duitsland.

Let op, wanneer er voor een bepaald attribuut in een informatiemodel of koppelvlak van een andere organisatie gekozen is voor een «Referentielijst», en uw organisatie koppelt hiermee, dan is het (meestal) onverstandig om in het eigen informatiemodel dit te behandelen als enumeratie.

Modelleerrichtlijn: elk attribuut van een object heeft een specifieke lijst met toegestane waarden. Modelleer daarom elke waardelijst bij voorkeur specifiek, met een eigen naam en locatie. Het is mogelijk dat de structuur van de data gelijk is voor een aantal lijsten. Er kan dan een generieke structuur gemodelleerd worden, bv. een abstracte «Referentielijst» met naam _Waardelijst, waarvan de specifieke waardelijsten overerven. Het metagegeven locatie is immers specifiek voor één waardelijst en moet per individuele waardelijst vastgelegd worden.

5.4.3 CodeList

Gebruik een «Codelijst» als in het informatiemodel de attributen, zoals bij een «Referentielijst», niet relevant zijn en je voor de definitie alleen wilt verwijzen naar de externe waardelijst.

5.5 Abstracte objecttypes en concrete objecten

Een objecttype kan aangeduid worden als een abstract objecttype (zie: 2.3.2 Objecttypen en attribuutsoorten) door middel van indAbstract = J). Het betreft dan altijd een generalisatie waarbij de specialisaties van dit objecttype op het laagste niveau concrete objecttypen worden genoemd. Het is belangrijk te weten wanneer een objecttype als abstract objecttype in een informatiemodel is te onderkennen. Omdat een abstract objecttype altijd een generalisatie is, beantwoorden we in deze paragraaf ook de vraag wanneer we specialisaties / generalisaties onderkennen in een conceptueel informatiemodel en in een logisch informatiemodel

5.5.1 Conceptueel informatiemodel

Een concreet object kan zich alleen in de hoedanigheid als één van de specialisaties van het abstracte objecttype op het laagste niveau voordoen. En daarmee dus ook in de hoedanigheid van de generalisatie(s) van het concrete objecttype.

Richtlijnen - Een abstract object is een onderwerp van gesprek binnen het beschouwde gebied. Het heeft dus echt een betekenis in het beschouwde gebied. Net als een concreet object, specialisatie of generalisatie.

  • De definitie van elk objecttype (dus ook een abstract objecttype) is zodanig dat ondubbelzinnig bepaald kan worden dat een object wel of niet tot het gedefinieerde type behoort. Dus niet een objecttype met een definitie als ‘De gemeenschappelijke eigenschappen van een object…’ Deze definitie is op elk objecttype van toepassing.
  • Houd er rekening mee dat afhankelijk van het te beschouwen gebied een object uit de werkelijkheid in het ene informatiemodel een concreet objecttype kan zijn en in het andere informatiemodel een abstract objecttype.

5.5.2 Logisch informatiemodel

In een logisch model gelden in principe dezelfde regels voor abstracte of concrete objecttypen. De abstracte objecten worden daarom in principe overgenomen. In een logisch model wordt het digitale model van de werkelijkheid beschreven. Vanuit dit oogpunt kunnen er ook andere redenen zijn om abstracte objecttypen te creëren, bijvoorbeeld omdat een abstract object positieve effecten heeft voor de implementatie. Denk hierbij aan het aanbrengen van (extra) hiërarchie, zowel in semantiek als in ordening van eigenschappen. De enige regel die geldt is dat een abstract objecttype niet geïnstantieerd kan worden. Elk object is altijd een instantie van een concreet objecttype.

5.5.3 Algemeen

  • In UML wordt een abstract objecttype aangeduid door indAbstract met waarde “J” en wordt de naam van het abstracte objecttype cursief geschreven (voorbeeld: Persoon).
  • Een objecttype dat een generalisatie-relatie heeft naar een al dan niet abstract objecttype noemen we een specialisatie (van dat objecttype). Wanneer de generalisatie een abstract objecttype is, kan de specialisatie zelf ook abstract zijn en specialisaties hebben. De ‘onderste’ specialisaties zijn dan altijd concreet (niet abstract)
  • Modelleer een abstract objecttype pas wanneer er sprake is van twee of meer specialisaties
  • De unieke aanduiding kan opgenomen worden in het abstracte objecttype. De unieke aanduiding geldt dan voor elke specialisatie van het abstract objecttype. Dit betekent dat de unieke aanduiding uniek is binnen de verzameling van alle objecten die als specialisatie onder het abstracte objecttype vallen. Anders gezegd, de unieke aanduiding geldt voor alle concrete objecten die als objecttype de unieke aanduiding erven van het abstracte objecttype. Bijvoorbeeld: als de unieke aanduiding van _Kadastraal object het attribuutsoort Identificatie is en _Kadastraal Object als specialisatie een Perceel kent en een Leidingnetwerk, dan kan het niet zo zijn dat er een perceel object is met identificatie ‘1’ en een leidingnetwerk met identificatie ‘1’. Als dat wel het geval is, dan moet op beide concrete objecttypes een eigen unieke aanduiding gedefinieerd worden.

5.6 Relatieklasse (uitzonderingen)

Een «Relatiesoort» met kardinaliteit 1..* van «Objecttype» A naar «Objecttype» B betekent dat er op instantie niveau * relaties liggen van een bronobject naar een doelobject. Bv. een relatie van specifiek object a1 (van «Objecttype» A) naar een specifiek object b1 (van «Objecttype» B) en een andere relatie van hetzelfde object a1 (van «Objecttype» A) naar object b2 (van «Objecttype» B).

Voor een relatieklasse geldt dit eveneens. Een «Relatieklasse» met kardinaliteit 1..* van «Objecttype» C naar «Objecttype» D betekent dat er op instantie niveau * relaties liggen van een bronobject naar een doelobject. Bv. een relatie van specifiek object c1 (van «Objecttype» C) naar een specifiek object d1 (van «Objecttype» D) en een andere relatie van hetzelfde object c1 (van «Objecttype» C) naar object d2 (van «Objecttype» D).

Voor elk van deze relaties zijn er extra gegevens aan de orde. Deze gegevens worden als kenmerken (eigenschappen) gemodelleerd in een «Relatieklasse» met een bepaalde kardinaliteit. Deze gegevens kunnen dan worden vastgesteld en vastgelegd wanneer er sprake is van een relatie tussen een object van «Objecttype» C naar een object van «Objecttype» D. Merk op dat deze gegevens, dit setje gegevens, voor elke relatie apart vastgesteld en vastgelegd wordt. Zo kunnen voor de relatie van c1 naar d1 andere gegevens worden vastgesteld en vastgelegd dan voor de relatie van c1 naar d2.

Opmerkingen:

Uitzondering situatie - dezelfde gegevens voor meerdere relaties

Het is echter mogelijk dat dezelfde gegevens voor meerdere relaties tegelijk gelden.

Het is dan niet mogelijk om het te modelleren als relatieklasse. Wel gewenst, maar het kan niet als UML-associationClass. Als deze uitzondering het geval is, dan worden de relatieklasses gemodelleerd als «Objecttype», met één inkomende relatie en één uitgaande relatie. De oorspronkelijke kardinaliteit van de beoogde relatieklasse wordt hierbij behouden.

De relatie is geobjectiveerd. Elke betrokken relatie wordt in dit geval behandeld als een object met gegevens.

Een Perceel kan vanwege een Perceel splitsing overgaan in twee of meerdere
andere Percelen. De ‘overgegaan in’ relatie wordt bijgehouden als een
relatieklasse met eigen (splitsing) gegevens. Bij een splitsing ontstaan * nieuwe percelen 
en er is daarom sprake van meerdere relaties. De gegevens over de splitsing zijn echter altijd 
voor al deze relaties gelijk. Om deze reden wordt de relatieklasse 'overgegaan in' gemodelleerd als een objecttype.
Een CONTRACT kan bijvoorbeeld ook een afspraak zijn tussen twee
óf méér SUBJECTen, waarbij de gegevens van de relatie voor alle betrokken
objecten hetzelfde zijn. CONTRACT wordt dan gemodelleerd als objecttype, waarbij
beschreven wordt wat er moet gebeuren wanneer één van de SUBJECTen niet meer bestaat.

Opmerkingen:

Uitzondering - relatieklasse tussen 3 of meer objecttypen.

Het metamodel ondersteunt (nog) geen relatieklassen tussen drie of meer objecttypen. Dit kan in uw eigen extensie toegevoegd worden.

5.7 Constraint toepassen

Deze paragraaf gaat dieper in op hoe een «Constraint» toegepast wordt. Twee constraints die gedefinieerd zijn op hetzelfde modelelement mogen niet dezelfde naam hebben.

Een «Constraint» wordt beschreven met een:

  1. Naam (UML-constraint name): een naam c.q. label, vaak in steekwoorden.
  2. Specificatie in tekst (UML-Constraint Notes, type invariant): een uitgebreide heldere beschrijving van de «Constraint» in gewone tekst.
  3. [Optioneel] Specificatie formeel (UML-Constraint Notes, type OCL): formele specificatie in de Object Constraint Language (OCL). De formele specificatie bevat dus de uitgebreide heldere beschrijving van de constraint in (a.) gewone tekst én (b.) de formele specificatie in OCL.

In Enterprise Architect 12.x lijkt het helaas (nog) niet mogelijk om constraints zoals bedoeld in UML op te nemen, te weten als OpaqueExpression met een constraint string en een aanduiding van de taal: natuurlijke taal, of OCL (of een andere zoals Java, maar deze wordt niet toegepast in dit metamodel). EA werkt met UML Notes en een constraint type.

Het is daarnaast niet mogelijk om de tekst en de OCL in dezelfde constraint op te nemen. Het worden dan twee aparte constraints: één met tekst en één met OCL, met verplicht ook een andere naam. Vandaar onderstaande aanpak. Als de modelleur kiest om de «Constraint» alleen in gewone taal te beschrijven, dan als volgt:

Als de modelleur kiest om de «Constraint» niet alleen in gewone taal te beschrijven, maar ook in een formele taal (OCL), dan als volgt:

Aanbeveling: als een eigenschap van één «UML-attribute, of één «UML-association» met een «Patroon» of een «Lengte» of een «Kardinaliteit» van een «Relatiesoort» vastgelegd kan worden, gebruik die dan en geen «UML-constraint». Als er sprake is van een eigenschap die over meerdere informatiemodelelementen heen gaat, dan is er altijd sprake van een regel die we modelleren met een «UML-constraint».

Aanbeveling: wees terughoudend met het gebruik van constraints in het informatiemodel wanneer de kans reëel is dat het model hierdoor gaat wijzigen of als het niet direct over de semantiek, structuur of syntax van de te registreren gegevens gaat. Dit is bijvoorbeeld het geval wanneer er regels bestaan rondom informatie die elke paar jaar kan wijzigen, of die per toepassingsgebied (net) anders toegepast moet worden. Bijvoorbeeld: wanneer een persoon 65 jaar of ouder is, mag deze geen uitkering aanvragen. Wanneer er veel van zulke constraints in het informatiemodel worden opgenomen, zal dit leiden tot een ongewenste dynamiek waardoor er (te) vaak nieuwe versies moeten worden uitgebracht. De aanbeveling is om de specificatie van dergelijke constraints buiten het informatiemodel te specificeren, bijvoorbeeld als validatieregel.

5.8 Historie

Deze paragraaf geeft in meer detail aan wat we onder de metagegevens heeft tijdlijn geldigheid en heeft tijdlijn registratie verstaan (was in MIM 1.1.1 Indicatie materiële historie en heeft tijdlijn registratie).

Aanvullend beschrijft deze paragaaf een aantal aspecten waar rekening mee gehouden kan worden bij de uitwerking van historie in een informatiemodel op logisch niveau. Let wel, historie is niet gestandaardiseerd over logische informatiemodellen van registraties heen. Hoe historie in een logisch informatiemodel wordt gemodelleerd is aan de opsteller van het logisch informatiemodel zelf. In deze paragraaf wordt wel iets verteld over historie op logisch niveau maar dat is niet bindend!

5.8.1 Algemeen

Het aspect tijd speelt een belangrijke rol in (basis)registraties. Daarnaast speelt tijd ook een belangrijke rol in het gebruik van de informatie uit (basis)registraties. Afnemers hebben eigen rechtsprocedures en moeten kunnen herleiden wanneer een gegeven als bekend mocht worden verondersteld. Als bijvoorbeeld besluiten ter discussie worden gesteld, is het juridisch van belang te achterhalen op basis van welke gegevens zo’n besluit is genomen. Als onjuiste gegevens zijn gebruikt, is het relevant te weten of het juiste gegeven tijdens de besluitvorming al bekend waren.

Dit betekent dus dat bekend moet zijn wat de waarde van een attribuut op een bepaald moment is.

Tijdlijnen Er spelen twee tijdlijnen een rol bij het herleiden van attribuutwaarden:

  • Wanneer is iets gebeurd, in de werkelijkheid of volgens opgave (wanneer zijn de opgenomen gegevens geldig)? Dit valt binnen de tijdlijn van de aangehouden werkelijkheid, zoals bepaald door een bevoegd gezag (een partij die erover gaat).
  • Vanaf wanneer wist de overheid (als collectief van organisaties) dat de gegevens bekend waren? Dit valt binnen de tijdlijn van het administratieproces of de administratieve werkelijkheid. Op welke moment zijn de gegevens registreerd.

In de rapportage 'Architectuur van het stelsel' (Stroomlijning BasisGegevens, 2006) wordt geadviseerd om beide tijdlijnen te registreren, om de attribuutwaarden van een bepaald moment te kunnen reconstrueren. In de diverse registraties wordt hieraan op verschillende wijzen invulling gegeven. Dit metamodel schrijft derhalve niet voor welke bij de tijdlijnen behorende attributen gebruikt moeten worden voor het vastleggen van historie.

5.8.2 Historie op conceptueel niveau

Op conceptueel niveau is het wel altijd mogelijk om aan te geven dát het bijhouden van historie aan de orde is voor een (elk) gegeven, dat wil zeggen een attribuut of relatie van een object, te weten via een metagegeven.

Deze metagegevens specificeren we als volgt:

  • heeft tijdlijn geldigheid (of 'indicatie materiele historie'): indicatie of de geldigheid (de materiële historie) van een eigenschap, waarvoor gegevens bijgehouden worden, te bevragen is (moet zijn).

Dit metagegeven impliceert dat actuele, historische en eventuele toekomstige eigenschappen te bevragen zijn op wanneer deze geldig zijn en dat het zinvol is om een tijdlijn geldigheid bij te houden voor de eigenschap, omdat deze kan veranderen. De geldigheid geeft aan wanneer een verandering is opgetreden in de werkelijkheid (materiële historie) die heeft geleid tot verandering van de eigenschap. Het komt voor dat de geldigheid van een eigenschap wordt besloten, zoals wanneer bepaalde regelgeving geldig wordt, of wanneer een vergunning wordt verleend. Veelal gebeurd dit met een geldigheid die gelegen is in de (nabije) toekomst, maar het geldig worden kan ook in het verleden liggen.

Merk op: de heeft tijdlijn geldigheid geeft op conceptueel niveau niet aan dat er voor het gegeven een tijdlijn geldigheid wordt bijgehouden in de administratie. Het geeft aan dat een eigenschap kan veranderen en er op de tijdlijn geldigheid verschillende waarden kunnen bestaan (op verschillende momenten).

  • heeft tijdlijn registratie (of 'indicatie formele historie'): indicatie dat het registratiemoment (de formele historie) van een eigenschap, waarvoor gegevens bijgehouden worden, te bevragen is (moet zijn).

Dit metagegeven impliceert dat het registratiemoment wordt bijgehouden van wanneer in de administratie een verandering van een eigenschap is verwerkt. Hiermee kan de administratie antwoord te geven op de vraag: vanaf wanneer de nieuwe waarde voor de eigenschap bekend in de administratie (het nieuwe gegeven). Als dit relevant is om te weten, geef dan de 'heeft tijdlijn registratie' = 'Ja' aan. Dit metagegeven hangt sterk samen met de vraag: wanneer had een afnemer die behoefte heeft aan deze informatie deze informatie kunnen weten, als deze dit aan de administratie had gevraagd (eerder dan het registratiemoment is niet mogelijk). Het registratiemoment hiervan is altijd een moment in de echte tijd, de 'horloge' tijd. Er kunnen vele tijdsmomenten relevant zijn, zoals een tijdstip van een besluit, een tijdstip van het ontvangen van een melding of beschreven gebeurtenis bij een organisatie, het tijdstip van de registratie in een administratie, het tijdstip dat het gegeven beschikbaar is gekomen voor afnemers en meer. Het metagegeven 'heeft registratie tijdlijn' heeft alleen betrekking op de eis dat het registratiemoment te bevragen is vanuit een administratie. De andere tijdmomenten zijn ook vaak erg relevant, maar dit zijn eigenstandige functionele momenten.

‘Bouwjaar pand’ heeft al materiële historie in zich: het bouwjaar is het moment waarop de wijziging in de werkelijkheid zich voordeed en wijzigt niet. Het pand kan maar 1x initieel gebouwd zijn. Net zoals een mens maar 1 geboortedatum heeft. 
    
De ‘heeft tijdlijn geldigheid’ ervan is daarom 'Nee'. 

Het is dus in principe niet nodig om voor deze eigenschap een tijdlijn geldigheid (materiele historie) bij te houden. Althans niet op conceptueel niveau. Er kan een fout gemaakt kan zijn bij de registratie van dit gegeven maar dit doet niets af aan het feit dat het bouwjaar of de geboortedatum in de werkelijkheid niet kan veranderen. 
    
BSN van een Persoon geldt voor de persoon vanaf het moment dat de persoon in de 
BRP is opgenomen en wijzigt niet: ‘heeft tijdlijn geldigheid’ = 'Nee'. 

Het is wel mogelijk dat een persoon een tweede BSN krijgt en de eerste niet meer gebruikt wordt. 

De meeste eigenschappen kunnen wel wijzigen. De Achternaam van een persoon kan wijzigen, het woonadres van een persoon kan wijzigen. 
    
De ‘heeft tijdlijn geldigheid’ ervan is daarom 'Ja'. 

Op conceptueel niveau is ook aan te geven dat het registratiemoment in een administratie moet worden bijgehouden, via een tijdlijn registratie. Deze staat vrijwel altijd op Ja. Echter, wanneer alleen de meest actuele situatie bekend moet zijn, en historie niet bijhouden hoeft te worden, dan staat deze op Nee. Het kan zijn dat historie pas vanaf een bepaald moment bijgehouden wordt. Zet dan de 'heeft tijdslijn registratie' wel op Ja, en geef aan dat voor een bepaald moment er geen historie bekend is voor een object, of voor alle objecten in een administratie.

Richtlijn: op conceptueel niveau worden voor historie alléén heeft tijdlijn geldigheid en heeft tijdlijn registratie bij een attribuut of relatie vastgelegd. De attributen waaruit de tijdlijnen zelf bestaan (zoals bijvoorbeeld: 'begin geldigheid' en 'eind geldigheid' en 'begin registratie' en 'eind registratie') worden niet gemodelleerd in een conceptueel informatiemodel. Deze bij de tijdlijn behorende attributen worden (pas) op het logische niveau gemodelleerd.

5.8.3 Historie op logisch niveau

MIM schrijft geen implementatie van het logische niveau voor. De metagegevens 'heeft tijdlijn geldigheid' en 'heeft tijdlijn registratie' uit het conceptuele informatiemodel zullen waarschijnlijk uitgewerkt worden met een periode waarin de gegevens voor een eigenschap geldig zijn en een tijdsmoment wanneer deze gegevens geregistreerd zijn en mogelijk ook met een tijdsmoment waarop de geldigheid (begin en einde van de periode) zelf geregisteerd is. MIM schrijft niet voor hoe de uitwerking van de metagegevens eruit moet zien. Wel worden er aandachtspunten gegeven om rekening mee te houden. Denk bij de uitwerking o.a. aan de volgende aspecten:

  • Het bijhouden van historie met specifieke attributen per objecttype, zoals bijvoorbeeld: bouwjaar pand, of met generieke tijdlijnattributen attributen die gelden voor alle objecttypes, zoals begindatum geldigheid. Denk aan de attribuutsoort en/of gegevensgroeptype (herbruikbaar);
  • historie bijhouden per attribuut (en relatie) of per versie van een object. Bij deze laatste kan de gegevensgroep gekoppeld worden aan bijvoorbeeld elk objecttype;
  • de status transities die een object in zijn levenscyclus doorloopt. Er kan ook gekozen worden om deze in een conceptueel informatiemodel op te nemen, als ze op dat niveau al van belang zijn;
  • status attributen, die iets zeggen over gegevens, zoals attributen die aangeven wel of niet beschouwd moet worden als onderdeel van de geldige gegevens van een object. Er kan ook gekozen worden om deze in een conceptueel informatiemodel op te nemen, als ze op dat niveau al van belang zijn. Voorbeeld: BAG inactief. Het kan ook van belang zijn om aan te geven dat een gegeven niet terug te vinden is in een brondocument (omdat er fouten zijn gemaakt bij de verwerking), maar niet verwijderd kan worden omdat alle gegevens, ook foutieve, bestendig moeten worden bewaard. Voorbeeld: BAG indicatieNietBAG.
    • Hoewel het niet nodig is om in een administratie voor een eigenschap die niet kan veranderen, en 'heeft tijdlijn geldigheid' = 'Nee' heeft in een conceptueel informatiemodel, alsnog toch wel een tijdlijn geldigheid bij te houden. De eigenschap zal dan altijd dezelfde waarde hebben. Bijvoorbeeld: een eigenschap zoals een geboortedatum van een mens is een eigenschap die elk mens verplicht heeft en wel precies 1 keer. Let wel, wanneer een gegeven niet kan veranderen in de werkelijkheid, kan deze initieel wel met een foute waarde geregistreerd worden. Wanneer later alsnog de goede waarde bekend wordt en deze verwerkt wordt op een later registatiemoment (op de tijdlijn registratie), dan kan een mens in de werkelijkheid niet ineens twee verschillende geboortedatums hebben en dus ook niet op de tijdlijn geldigheid. De eerste datum was fout, en moet als fout worden aangemerkt en is daarmee ook niet meer geldig. Alleen de tweede is juist en geldig. De tweede is dan ook met terugwerkende kracht geldig, de persoon heeft in de werkelijkheid altijd al deze tweede juiste geboortedatum gehad. Dit is zo, ondanks dat we dit in de administratie pas goed hebben geregistreerd op een later registratiemoment. Eerdere besluiten die gebaseerd zijn op de foute geboortedatum behorend in principe dan ook opnieuw bekeken te worden.

Aanbeveling: het komt voor dat er binnen één domein, van één conceptueel informatiemodel, meerdere logische informatiemodellen worden uitgewerkt. Het is dan aan te beleven om centrale implementatie afspraken op te stellen, welke gelden voor elk logisch informatiemodel. Dit speelt met name rondom historie, omdat het vaak ongewenst (en erg Gestructureerd of zelfs onmogelijk) is om verschillende implementaties naast elkaar in stand te houden en naar elkaar te vertalen.

Opmerking: de metagegevens heeft tijdlijn geldigheid en heeft tijdlijn geldigheid mogen worden opgenomen in een logisch model (mogen worden overgenomen van het conceptuele naar het logische informatiemodel).

5.8.4 Beheer

De enige waarden die mogelijk zijn, zijn 'Ja' of 'Nee'. Voor beheer kan het prettig zijn om in algemeenheid deze waarden aan te geven, bijvoorbeeld: voor alle eigenschappen van een modelelement, zoals van een objecttype, geldt Ja. De conventie hiervoor wordt opgenomen in de eigen extensie. Bijvoorbeeld: 'zie modelelement naam' (zie gegevensgroep, zie domein, zie view, zie informatiemodel).

5.9 Afleidbare gegevens

In een informatiemodel kan de behoefte bestaan om afgeleide gegevens op te nemen: dit zijn gegevens die afleidbaar zijn uit andere attribuut- en/of relatiesoorten binnen het informatiemodel. Dit lijkt op redundantie. Toch hebben we deze gegevens daar opgenomen waar er ten eerste vraag is naar het afgeleide gegeven en ten tweede het gegeven niet eenvoudig af te leiden is (er moet sprake zijn van enige mate van complexiteit). Dit wordt in UML weergegeven via isDerived. Zie ook 3.2.1.2 «Attribuutsoort» en 2.4.3.17 Metagegeven: Indicatie afleidbaar.

5.10 Authentieke gegevens

Bij een attribuutsoort of relatiesoort wordt als metagegeven ‘Authentiek’ opgenomen. Het is een aanduiding of een attribuutsoort of een als relatiesoort gemodelleerd landelijk basisgegeven in de catalogus van de desbetreffende registratie een authentiek gegeven betreft. Een authentiek gegeven is van hoogwaardige kwaliteit en kan zonder nader onderzoek bij de uitvoering van publiekrechtelijke taken worden gebruikt.

De specificatie van de waarde van het metagegeven is gebaseerd op het onderscheid in de volgende groepen van gegevens:

Waardebereik authentiek Betekenis
Authentiek https://www.noraonline.nl/wiki/Authentiek_gegeven.
Basisgegeven https://www.noraonline.nl/wiki/Basisgegeven
Wettelijk gegeven Gegeven behorende bij een wettelijke registratie, niet zijnde een basisregistratie
Landelijk kerngegeven Indien het een gegeven of een als relatiesoort gemodelleerd gegeven is in een landelijk sector- en domein-overstijgend informatiemodel en geen authentiek gegeven en geen basisgegeven en geen wettelijk gegeven is.
Overig Indien het géén van de voorgaande categorieën betreft. Veelal gaat het dan om proces-, taakveld- of domeinspecifieke gegevens.

5.11 Mogelijk geen waarde

Bij het inwinnen van gegevens zal het regelmatig voorkomen dat voor een bepaald kenmerk er geen gegeven gevonden kan worden. Dit zal vaak zo zijn bij optionele gegevens. Bijvoorbeeld bij een tussenvoegsel van een achternaam. Maar het is ook mogelijk dat het gegeven er in de werkelijkheid wel is, of zou moeten zijn, maar dat waarde niet bekend is. Bijvoorbeeld omdat het gegeven niet gevonden kan worden, zoals een bouwjaar van een oud gebouw of de geboortedag van een persoon. Zo kan het niet hebben van een waarde van de overlijdensdatum van een persoon betekenen dat deze persoon nog leeft. Maar het kan ook betekenen dat de persoon is overleden, maar dat de datum waarop niet bekend is. Een ander voorbeeld is dat een registratie vroeger een bepaald gegeven niet registreerde, en tegenwoordig verplicht moet registreren. Het gegeven is dan bijvoorbeeld vanaf 1990 beschikbaar, en is daarvoor onbekend. Deze voorbeelden geven aan dat er in de werkelijkheid wel een gegeven kan zijn, maar dat deze onbekend is. Voor deze gevallen is ‘mogelijk geen waarde’ bedoeld. Mogelijk is de waarde er in de werkelijkheid wel, mogelijk is deze er niet.

In de modellering is het bij mogelijk geen waarde nodig om een modelleringconstructie te gebruiken om aan te geven wat er aan de hand is. Dit wordt in het informatiemodel gemodelleerd door een metagegeven op te nemen bij het desbetreffende modelelement. Er staat dan: mogelijk geen waarde: Ja. Dit is vrijwel altijd het geval bij een attribuutsoort, maar is ook mogelijk om het op te nemen bij een element van een datatype. Een voorbeeld bij een datatype is de geboorte datum van een persoon, als het zo kan zijn dat het jaar en de maand van geboorte wel bekend is, maar de dag niet. Dit datatype is ook gestandaardiseerd, en heet Datum Mogelijk Onvolledig.

Verder, wanneer er sprake is van mogelijk geen waarde dan het is expliciet niet de bedoeling om een verplicht veld optioneel maken. Dit is niet de juiste oplossing en kan bovendien de indruk geven dat het veld niet relevant is. De betekenis van een optioneel veld is daarom dat er inherent sprake is van dat de waarde een attribuutsoort van een objecttype mag ontbreken. Het ontbreken van een optionele waarde heeft daarom de betekenis dat het bekend is dat er in de betreffende situatie in de werkelijkheid geen waarde bestaat. Bij inherent optionele velden kan het immers ook voorkomen dat een waarde onbekend is. Het verschil tussen ‘het is bekend dat er geen waarde is’ en ‘het is onbekend of er een waarde is’ is alleen vast te leggen door onderscheid te maken. Daarom moet er expliciet worden aangegeven dat er sprake is van mogelijk geen waarde, middels het metagegeven Mogelijk geen waarde: Ja.

Het verplicht of optioneel zijn van een waarde en het wel of niet mogen ontbreken van een waarde (die in de werkelijkheid wel bestaat) zijn dus twee verschillende en van elkaar onafhankelijke eigenschappen. In combinatie beschrijven deze eigenschappen vier mogelijkheden:

Verder, wanneer er sprake is van mogelijk geen waarde dan kan het waardevol zijn om de reden waarom de waarde ontbreekt aan te geven. De beheerder van het informatiemodel bepaalt welke redenen hij of zij toestaat voor het ontbreken van waarden die in de werkelijkheid wel bestaan. Het is nuttig om deze redenen op informatiemodelniveau te beperken. Dit kan dan vastgelegd worden bij de attribuutsoort of bij relatiesoort, bijvoorbeeld in de toelichting. In de registratie mogen alleen deze redenen worden geregistreerd. Daarbij kan het zinvol zijn om te vermelden of een onbekende waarde mogelijk nog kan worden achterhaald of dat dat niet meer kan. Sommige informatiemodellen gebruiken enumeraties met daarin een waarde zoals 'onbekend'. In dit metamodel stellen we dat dit niet de bedoeling is bij de modellering van eigen gegevens in een eigen informatiemodel. Er geldt een uitzondering wanneer het gaat om gegevens die worden overgenomen uit een andere registratie die wel de waarde 'onbekend' gebruikt. Dan kan er worden gekozen voor het een-op-een overnemen van de gegevensdefinitie uit de andere registratie.

5.12 Externe schema’s (her) gebruiken

In bepaalde situaties is het mogelijk dat een ander informatiemodel al één op één de specificaties in UML bevat die relevant zijn voor het eigen informatiemodel. Dit is in het bijzonder het geval als het andere informatiemodel ook dit metamodel volgt, maar kan ook het geval zijn bij gestandaardiseerde datatypen. Het is dan wenselijk om hiernaar te kunnen verwijzen. Dit kan door deze packages over te nemen naar de eigen UML tool en het stereotype «extern» toe te kennen. Deze packages worden dan wel buiten het eigen informatiemodel gehouden. Ze zijn extern aan het eigen model. Het beheer en de definitie vindt dan ook buiten het eigen model plaats.

In deze externe packages die aangeduid worden met het stereotype «extern» zijn de relevante specificaties opgenomen die binnen het informatiemodel hergebruikt worden. Deze specificaties zijn opgesteld door een externe partij die de UML (of ook de XML) schema’s beheert en beschikbaar stelt waarnaar vanuit deze specificaties wordt gerefereerd. De packages bevatten alleen de constructies die ook daadwerkelijk binnen het ‘eigen’ informatiemodel wordt gebruikt.

Het is ook mogelijk om binnen een domein of binnen een organisatie een eigen «extern» package te definiëren voor datatypen, om over meerdere informatiemodellen heen hergebruik mogelijk te maken.

Naast het beschikbaar maken van het externe package kan het modelelement uit het externe package gebruikt worden als datatype, maar er kan ook naar verwezen worden via een relatie. Dit laatst wordt nader uitgelegd in de volgende paragraaf.

5.13 Koppelen met een ander informatiemodel (externe koppeling)

Bij registraties is het regelmatig noodzakelijk om te verwijzen vanuit het eigen model naar gegevens uit een andere informatiemodel. Denk aan het opnemen van de identificatie van een object uit een andere registratie, of aan het overnemen van een subset van gegevens van een object uit een ander model. Hiervoor zijn de stereotypes «view» en «externe koppeling» bedoeld.

Deze stereotypes zijn alleen van toepassing binnen een informatiemodel in situaties waarbij het ene informatiemodel afhankelijk is van een andere informatiemodel.

Uitgangspunten hierbij zijn dat de definitie van de structuur van gegevens van het andere informatiemodel één op één overgenomen wordt, waarbij expliciet gemaakt wordt welke gegevens tot het eigen model behoren en welke tot het andere model.

5.14 Stelselcatalogus en stelselafspraken voor basisregistraties

Dit metamodel ondersteunt de metadata die voorgeschreven wordt voor de stelselcatalogus [H1.11, referentie 3]. Deze paragraaf geeft aan hoe de metadata in dit metamodel zich verhoudt tot die van de stelselcatalogus, zodat deze vanuit uw informatiemodel geleverd kunnen worden aan de stelselcatalogus. Er zijn ook stelselafspraken rondom metadata. Een metadata aspect in H2.4 met aanduiding is conform stelselafspraken voor basisregistraties. Beide gelden.

De metadata voor de stelselcatalogus en de metadata voor de stelselafspraken zijn beide verplicht voor basisregistraties. Als het informatiemodel géén basisregistratie is, kan je als organisatie zelf kiezen om (een aantal van) deze metadata buiten scope te plaatsen. Dit doe je in de eigen extensie, zoals beschreven in 1.10 Een eigen extensie op het metamodel. De rest van deze paragraaf gaat alleen nog in op de metadata voor de stelselcatalogus.

Het metamodel gaat als volgt met de metadata van de stelselcatalogus om:

Metadata in stelselcatalogus Komt voor in Metamodel? Waardenbereik hetzelfde?
Naam J J
Definitie J J
Toelichting J J
Populatie J J
Herkomst J J (met aanvullende afspraken)
Authentiek J N (met vertaling)
Kwaliteit J J
Relatie N n.v.t. (kan wel via een vertaling)
Wetgeving N n.v.t.
Eigenaar N n.v.t.
Toegankelijkheid N n.v.t.
Gebruiksvoorwaarden N n.v.t.

5.14.1 Afspraken Waardenbereik

  • Authentiek: als in dit metamodel 2.4.3.16 Metagegeven: Authentiek dan ‘Ja’ in stelselcatalogus, anders Nee.
  • Herkomst: Zelf in te vullen. Afspraken hierbij: Als zelf ingewonnen: noem de inwinnende organisatie. Bijvoorbeeld: VNG Realisatie of Gemeentes. Als overgenomen uit andere bron, noem de directe bron. Bijvoorbeeld: BAG.
  • Relatie: dit is geen metagegeven in dit metamodel, maar een stereotype. Deze is wel af te leiden uit het metagegeven van relatiesoort: gerelateerd objecttype (de target van de relatie).

5.15 Afspraken rondom naamgeving en definities

Naamgevingsconventies zijn belangrijk om te specificeren. Onderstaande beschrijft enkele punten die op het niveau van dit metamodel zijn afgesproken. De verdere invulling van de naamgevingsconventies is aan de opsteller van het informatiemodel zelf (zie ook bijlage).

5.15.1 Uniekheid van namen van modelelementen

  • Objecttypes hebben een unieke naam binnen het hele informatiemodel
  • Datatypen hebben een unieke naam binnen het informatiemodel
  • Kenmerken van een objecttype hebben een unieke naam binnen het objecttype (attribuutsoort, gegevensgroep, relatiesoort et cetera)
  • De naam van kenmerken van een objecttype hoeven niet uniek te zijn over objecttypen heen.
  • De naam van elementen van een datatype hoeven niet uniek te zijn over datatypen heen.

5.15.2 Dezelfde URI, naam en/of definitie gebruiken voor meerdere modelelementen

Er kan sprake zijn van een naam en/of definitie die voor meerdere modelelementen gelijk moeten zijn, omdat er inherent hetzelfde bedoeld wordt. Generalisatie is gedefinieerd voor Datatypen en Objecttypen en Datatypen en gegevensgroeptypen kunnen op meerdere plekken gebruikt worden.

Echter, voor bijvoorbeeld voor een relatiesoort of een attribuutsoort kan het ook nodig zijn om dezelfde naam en/of definitie te specificeren. Dit is mogelijk, maar het is dan niet geheel duidelijk of er hetzelfde bedoeld wordt, of dat de (exacte) overeenkomt in een informatiemodel (zoals bv. in een UML informatiemodel) een toevalligheid is. Daarom gelden de volgende afspraken:

  • Als de URI van twee of meer modelelementen EXACT hetzelfde is, dan wordt hiermee bedoeld dat het dezelfde modelelementen zijn. Bijvoorbeeld bij objecttype Gebied met attribuutsoort identificatie met URI "http://modellen.geostandaarden.nl/def/nen3610#identificatie" en een objecttype Boom met een attribuutsoort identificatie met URI "http://modellen.geostandaarden.nl/def/nen3610#identificatie". De modelelementen kunnen verder wel verschillend beschreven zijn (bijvoorbeeld met een nauwer waardebereik bij een van de modelelementen).

  • Als de definitie van twee of meer modelelementen EXACT hetzelfde is, dan wordt hiermee bedoeld dat het dezelfde definitie is. Bijvoorbeeld: attribuutsoort overboeking met definitie "Het bedrag in euro's" en attribuutsoort koopsom met definitie "Het bedrag in euro's".

  • Als de naam en de definitie van twee of meer modelelementen EXACT hetzelfde is, dan wordt hiermee bedoeld dat het hetzelfde kenmerk is. Bijvoorbeeld bij objecttype Huis met attribuutsoort oppervlakte: : "De oppervlakte in hele vierkante meters" en objecttype Appartement met attribuutsoort oppervlakte : "De oppervlakte in hele vierkante meters".

Dit betekent expliciet niet dat kernmerken van verschillende objecten, met dezelfde naam, ook dezelfde definitie moeten hebben. Een andere definitie of een andere naam betekent: niet hetzelfde.

5.15.3 Naamgeving voor Alternatief 1: natuurlijke taal, die dichtbij de gebruiker staat

Met natuurlijke taal wordt bedoeld, zoals de gebruikers erover praten, in normaal Nederlands. Veelal zijn dit alleen letters en cijfers, met spaties. Koppeltekens (- of _) kunnen gebruikt worden, indien gewenst, alsmede diakrieten.

Zo kan bijvoorbeeld gekozen worden dat de eerste letter een hoofdletter is voor namen van de modelelementen Objecttypen, Gegevensgroeptype en Datatypen en dat de eerste letter een kleine letter is voor attribuutsoorten, en data-elementen e.d. Bijvoorbeeld: ‘Natuurlijk persoon’ en ‘naam’ met type CharacterString.

Regel: voor conceptuele informatiemodellen wordt altijd alternatief 1 gehanteerd.

5.15.4 Naamgeving voor Alternatief 2: (ook) leesbaar door systemen

Met machine leesbare taal wordt bedoeld dat deze eenvoudig door systemen te verwerken is. Veelal zijn dit alleen letters en cijfers, zonder spaties, zonder diakrieten. Koppeltekens (- of _) kunnen gebruikt worden, maar dit wordt veelal vermeden.

Zo kan bijvoorbeeld gekozen worden voor UpperCamelCase voor namen van Objecttypen, Gegevensgroeptypen en Datatypen en lowerCamelCase voor attribuutsoorten, relatiesoorten, relatierollen, data-elementen e.d. Bijvoorbeeld: naam in een NatuurlijkPersoon. Combineer indien nodig verschillende woorden (uit bijvoorbeeld een begrippenkader of uit een conceptueel informatiemodel) om precieze en begrijpelijke namen te vormen.

Als er gekozen wordt voor CamelCase, volg hierin dan hoe deze in UML ook toegepast wordt (deze komt overeen met ISO19103): maak van de beginletter van ieder deelwoord van namen van attribuutsoorten, relatierollen een hoofdletter, behalve de beginletter van het eerste woord. Bij namen van objecttypen, gegevensattributen, keuze, datatypen, en relaties wordt ook de beginletter een hoofdletter.

Regel: voor logische informatiemodellen wordt altijd alternatief 2 gehanteerd.

Neem aanvullend een verwijzing op naar het betreffende modelelement in het conceptuele informatiemodel. Dit kan bijvoorbeeld met een trace of door opname van de naam in de alias, zodat lezers goed de overgang van conceptueel naar logisch kunnen volgen.

5.15.5 Naamgeving voor metamodel elementen

Voor stereotypes en metagegevens worden dezelfde naamgevingsconventies toegepast als in alternatief 1 waarbij de eerste letter een hoofdletter is voor alle stereotypes en tagged values. Echter, als een internationale standaard het anders voorschrijft, dan wordt deze gevolgd, en niet vertaald. Bijvoorbeeld: codeList. Deze conventies gelden ook als in een eigen extensie metamodelelementen worden toegevoegd.

Het is mogelijk om eigen naamgevingsconventie te hanteren. In bijlage 6.2 Template Naamgevingsconventies is een template opgenomen om naamgevingsconventies in te specificeren. Het verschaft een invulmogelijkheid om, per in dit metamodel genoemd modelelement, eigen naamgevingsconventies te documenteren. Dit is een hulptabel, die u over kunt nemen naar uw eigen extensie (zoals bedoeld in 1.10 Een eigen extensie op het metamodel) en in kunt vullen voor uw eigen informatiemodel (of organisatie).

5.16 Verwijzing van een modelelement naar een begrip uit het begrippenkader

Het metadata element “begrip” uit paragraaf Datatypen is bedoeld om de traceability tussen een modelelement in een informatiemodel en een begrip uit een model van begrippen (zoals bedoeld in 1.6 Typering van modellen gekoppeld aan beschouwingsniveaus te borgen. Anders gezegd, om aan te geven dát een modelelement een weergave is van het betreffende begrip op IM niveau. Anders gezegd, het is niet de bedoeling om te verwijzen naar een begrip als het modelelement hier slechts een beetje mee te maken heeft. De verwijzing geeft aan dat het model element op informatiemodel niveau een invulling geeft aan het begrip. Het begrip zelf is opgenomen in een model van begrippen. Aldaar is meer informatie te vinden over het begrip zelf.

Aanbeveling: de verwijzing vanuit het eigen informatiemodel naar een begrip is altijd een verwijzing naar een begrip dat behoort tot het eigen model van begrippen. Voor begrippen die domein specifiek zijn is dit altijd zo en zal de aan URI van het begrip ook te herkennen zijn dat dit zo is. Er zijn echter situaties denkbaar waarin een begrip een URI heeft die extern is aan het eigen model van begrippen. Het begrip is dan klaarblijkelijk wel relevant voor het eigen domein, en behoort daarom dan ook tot het eigen model van begrippen, ondanks dat de URI extern is. Een externe URI kan bijvoorbeeld wel voorkomen als het eigen informatiemodel modelelementen uit een ander informatiemodel heeft overgenomen, zoals bedoeld bij het stereotype «view» of «extern». Of bijvoorbeeld omdat het begrip weliswaar in gebruik is binnen het eigen domein, maar ontleent is aan een ander domein c.q. een ander model van begrippen, met als doel om aan te geven dat de betekenis gelijk is. Dit is mogelijk en toegestaan. In de praktijk wordt een begrip dat ontleend is van een ander model van begrippen echter veelal met een eigen URI en een eigen beschrijving opgenomen in het eigen model van begrippen. Dit komt doordat in het eigen domein meestal op een eigen manier tegen het begrip wordt aangekeken, of omdat het niet de bedoeling is dat het eigen model van begrippen automatisch meebeweegt zodra de definitie uit het andere domein verandert. Merk op dat het MIM niet gaat over hoe een model van begrippen wordt gemodelleerd.

Het metadata element begrip mag achteraf toegevoegd worden. Het is immers mogelijk dat bijvoorbeeld het informatiemodel eerder opgesteld wordt dan het model van begrippen, of dat het initieel niet bekend is wat van een modelelement het bijbehorende begrip is, of dat een model van begrippen uitgebreid wordt met een extra begrip. Het criterium om een begrip op te nemen in een model van begrippen is geen onderdeel van dit metamodel. Het is zelfs mogelijk dat een modelelement initieel niet als een begrip gezien wordt, maar dat het modelelement op een gegeven moment zodanig een begrip wordt, dat deze wordt opgenomen in het model van begrippen. In alle gevallen geldt, neem de metadata op zodra dit mogelijk is. Als het metadata element begrip wordt weggelaten, of de metadata die erin op genomen kan worden wordt leeggelaten c.q. de verwijzing naar het begrip (nog) niet gemaakt kan worden, dan is de betekenis hiervan dat het niet bekend is of er sprake is van een begrip. Merk op dat het achteraf toevoegen van de verwijzing naar een begrip in principe niet iets veranderd aan het informatiemodel zelf (afgezien van deze metadata), al kan dit wel aanleiding geven tot het verbeteren of verhelderen van definities.

5.16.1 Term of URI

In de definitie van metadata begrip staat dat de verwijzing de vorm heeft van een term of van een URI. - Als je kiest voor een term, vul dan de naam in van het begrip. Bijvoorbeeld: Natuurlijk persoon. Geef indien mogelijk ook deze naam een goede plek in de definitie en/of toelichting van het modelelement. - Als je kiest voor een URI, kies dan voor de URI dat dit begrip identificeert. Deze zal verwijzen naar een skos:Concept . Dit houdt in dat als iemand naar deze URI gaat (bijvoorbeeld met een browser, dit wordt “het resolven van een URI” genoemd), deze persoon informatie krijgt over het betreffende begrip. Bijvoorbeeld: https://catalogus.kadaster.nl/brk/nl/page/Perceel.

5.16.2 Verwijzen naar 0, 1 of meer begrippen

Veelal betreft één modelelement één begrip . De verwijzing naar dit begrip wordt dan opgenomen in deze metadata.

Het is echter zeker niet zo dat elk modelelement een begrip is in het model van begrippen. Het metadata element mag daarom weggelaten worden en de metadata mag leeggelaten worden. Vaak kan bij objecttypes, gegevensgroepen en attribuutsoorten wel een verwijzing opgenomen naar een begrip en is dit niet zinvol bij datatypen, maar dit is geen harde regel. Bijvoorbeeld: een koopsom van een huis wordt uitgedrukt met een bedrag. In het domein is de koopsom wel een begrip, maar het modelelement bedrag bijvoorbeeld niet (en als bedrag al geen begrip is, dan is valuta dit vermoedelijk ook niet, evenals euro, aantal en Decimalen). In het geval dat bijvoorbeeld bedrag niet een begrip is, wordt het metadata element begrip weggelaten.

Bij het opnemen van het begrip streven we ernaar om, waar mogelijk, precies te zijn. Bijvoorbeeld: het kan zijn dat in het model van begrippen een Natuurlijk persoon en een Niet natuurlijk persoon zijn opgenomen, terwijl in het informatiemodel alleen het modelelement Persoon is opgenomen, alsmede een attribuutsoort ‘type persoon’. De verwijzing naar het begrip Natuurlijk persoon hoort in dit geval gelegd te worden vanuit het attribuutsoort 'type persoon' en niet vanuit het objecttype Persoon. Het kan ook zo zijn dat het datatype van 'type persoon' een codelijst is, met als mogelijke waarden ‘NP’ en ‘NNP’ en ‘overig’. Het is dan preciezer om de verwijzing te leggen vanuit de waarde ‘NP’.

5.16.3 Definitie van een modelelement en de definitie van een begrip

De definitie van het modelelement is niet hetzelfde bedoeld als de definitie van een begrip. De definitie van een begrip in het begrippenkader is buiten scope van het informatiemodel, enerzijds omdat deze definitie anders kan zijn dan de definitie van het modelelement, en anderzijds omdat de definitie van het begrip aangepast kan worden, terwijl de informatievoorziening die het informatiemodel implementeert automatisch meebeweegt met deze definitie. Dit gezegd hebbende, wanneer er sprake is van een 1 op 1 relatie tussen begrip en modelelement, dan is dit een duidelijke aanleiding om te zorgen dat deze definities goed met elkaar overeenstemmen, of zelfs hetzelfde gehouden worden, waar mogelijk.

Bij het metadata element definitie van een modelelement mag in de beschrijving gebruik gemaakt worden van een URI, om te verwijzen naar de nationaal of internationaal gepubliceerde definitie. Deze kan van een begrip zijn, maar dit hoeft niet. Let hiermee op wanneer u als beheerder van het informatiemodel deze definitie niet zelf beheert, want lezers van het informatiemodel en gebruikers van de informatie baseren zich wel op deze definitie. Het kan dan gebeuren dat de definitie veranderd, en de informatievoorziening hier niet mee in overeenstemming is. De aanbeveling is daarom een goede definitie voor het modelelement te kiezen, en in de metadata een verwijzing op te nemen naar het begrip en hierna handmatig de overeenstemming tussen de definities te beheren.

5.17 Overig

5.17.1 Volgorde van kenmerken

De volgorde van kenmerken in een «Objecttype», «Gegevensgroeptype», «Gestructureerd datatype» in een visueel diagram van een informatiemodel kan voor de leesbaarheid van het diagram worden aangebracht, maar heeft in principe, buiten het diagram, geen betekenis. Bij een fysiek, technisch gegevens- of datamodel (die buiten de scope van het MIM valt) heeft de attribuutvolgorde vaak invloed op de volgorde in de schema’s.

6. Bijlagen

6.1 Diagrammen

6.1.1 Overzicht toegepaste UML metaclasses

Figuur 38 Diagram: toegepaste UML metaclasses

6.1.2 Modelelementen en metagegevens als diagram

Deze bijlage bevat alle modelelementen en metagegevens in één diagram.

Kern - Relatiesoort is leidend

Figuur 39 Diagram: Kern met metagegevens - relatiesoort leidend (alt 1)

Kern - Relatierol is leidend

Figuur 40 Diagram: Kern met metagegevens - relatierol leidend (alt 2)

Datatypen

Figuur 41 Diagram: Datatypen met metagegevens

Constraints

Figuur 42 Diagram: Constraints met metagegevens

Keuze

Keuze tussen datatypen

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype en Relatieklasse geldt hetzelfde patroon.

Figuur 43 Diagram: Keuze tussen datatypen met metagegevens

Keuze tussen attribuutsoorten

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype en Relatieklasse geldt hetzelfde patroon.

Figuur 44 Diagram: Keuze tussen attribuutsoorten met metagegevens

Keuze tussen attribuutsoorten binnen de context van een attribuutsoort

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype en Relatieklasse geldt hetzelfde patroon.

Figuur 45 Diagram: Keuze tussen attribuutsoorten binnen de context van een attribuutsoort met metagegevens

Keuze tussen relatiedoelen, als nadere invulling van 1 betekenisvolle relatiesoort

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype geldt hetzelfde patroon, behalve dat een Gegevensgroeptype geen doel mag zijn voor een Relatiesoort.

Figuur 46 Diagram: Keuze tussen relatiedoelen met metagegevens

Keuze tussen relatiesoorten/relatierollen (elk afzonderlijk betekenisvol)

Dit UML is uitgewerkt voor Objecttype. Voor Gegevensgroeptype geldt hetzelfde patroon, behalve dat een Gegevensgroeptype geen doel mag zijn voor een Relatiesoort.

Figuur 47 Diagram: Keuze tussen relatiesoorten/relatierollen met metagegevens

Packages

Figuur 48 Diagram: Packages met metagegevens

6.2 Template Naamgevingsconventies

Modelelement Naamgevingsconventie Voorbeeld
«Objecttype» ... ...
«Attribuutsoort» ... ...
«Gegevensgroep» ... ...
«Gegevensgroeptype» ... ...
«Relatiesoort» ... ...
«Relatieklasse» ... ...
«Externe Koppeling» ... ...
«Relatierol» ... ...
«Referentielijst» ... ...
«Referentie-element» ... ...
«Enumeratie» ... ...
«Enumeratiewaarde» ... ...
«Codelijst» ... ...
«Gestructureerd datatype» ... ...
«Data-element» ... ...
«Informatiemodel» ... ...
«Domein» ... ...
«Extern» ... ...
«View» ... ...
«Keuze» ... ...

6.3 Vertaling naar engels

MIM is een specificatie die is ontstaan vanuit de behoeften van enkele basisregistraties en afnemers daarvan. Daarbij is de aansluiting bij internationale (geo)normen gewaarborgd. Echter de precieze aansluiting bij die normen is niet altijd expliciet gemaakt in MIM. Met name de relatie met de modelleertechnieken van de ISO 19100 serie is van belang. Deze ISO standaarden vormen de ondergrond voor o.a. Inspire en NEN 3610.

In het volgende overzicht geldt het volgende

Kolom Aard waarden:

Kolom MIM benaming ISO waarden:

Kolom Reden waarden:

Aard MIM 1.1 MIM benaming ISO Reden
ST Objecttype FeatureType (ISO 19109) GF_FeatureType Vertaling
ST Attribuutsoort AttributeType (ISO 19109) GF_AttributeType Vertaling
ST Gegevensgroeptype AttributeGroupType Vertaling en precisering
ST Gegevensgroep AttributeGroup Vertaling en precisering
ST Relatiesoort AssociationType (ISO 19109) GF_AssociationType Vertaling
ST Relatieklasse AssociationClass Vertaling
ST Externe koppeling ExternalLink Vertaling
ST Relatierol AssociationRole (ISO 19109) GF_AssociationRole Vertaling
ST Referentielijst ReferenceList Vertaling
ST Referentie element ReferenceElement Vertaling
ST Enumeratie Enumeration Vertaling
ST Enumeratiewaarde Enum Vertaling
ST CodeLijst CodeList (ISO 19103) -
ST Datatype SimpleType Vertaling en precisering
ST Complex datatype ComplexType Vertaling
ST Data element DataElement Vertaling
ST Keuze Union Defines a union data type. -
ST Keuze element UnionElement Vertaling
ST Extern External Vertaling
ST View View Vertaling
TV Beheerder Administrator Vertaling
TV Data locatie Data location Vertaling
TV Datum opname Date recorded Vertaling
TV Eigenaar Owned by Vertaling
TV Formeel patroon Formal pattern Vertaling
TV Herkomst Source Vertaling
TV Herkomst definitie Origin of definition Vertaling
TV Indicatie authentiek Indication authentic Vertaling
TV Indicatie formele historie Indication formal history Vertaling
TV Indicatie materiële historie Indication material history Vertaling
TV Kwaliteit Quality Vertaling
TV Lengte Length Vertaling
TV Locatie Location Vertaling
TV Mogelijk geen waarde Voidable Vertaling
TV Patroon Pattern Vertaling
TV Populatie Population Vertaling
TV Regels Rules Vertaling
TV Toelichting Description Vertaling
VAL Ja Yes Vertaling
VAL Nee No Vertaling
VAL Zie groep See group Vertaling
VAL Authentiek Authentic Vertaling
VAL Basisgegeven Base data Vertaling
VAL Landelijk kerngegeven National base data Vertaling
VAL Gemeentelijk kerngegeven Municipal base data Vertaling
VAL Overig Other Vertaling

6.4 Transformatie MIM - RDFS/OWL/SHACL

6.4.1 Inleiding

Het MIM is een metamodel. Dit betekent dat in termen van het MIM een concreet informatiemodel kan worden uitgewerkt, bijvoorbeeld het informatiemodel Basisregistratie Adressen en Gebouwen. Het MIM is niet bedoeld om vervolgens in termen van dit informatiemodel een concrete dataset te vormen. Hiervoor is een transformatie nodig naar een (technisch) uitwisselings- of opslagmodel, bijvoorbeeld een XSD schema of een RDMS database definitie.

Op diezelfde manier levert het toepassen van het MIM in RDF geen ontologie of vocabulaire waarin RDF kan worden uitgedrukt in een concrete Linked Data dataset. Slechts het informatiemodel zelf is op deze manier in RDF uitgedrukt. Een afzonderlijke transformatie is nodig voor de vertaalslag naar een ontologie voor een concrete Linked Data.

Zo leidt een MIM objecttype "Schip" tot de volgende weergave in RDF:

@prefix vb: <http://modellen.mim-standaard.nl/voorbeeld/>.
@prefix mim: <http://modellen.mim-standaard.nl/def/mim#>.

vb:Schip a mim:Objecttype;
  rdfs:label "Schip"@nl;
.

vb:Schip is in dit voorbeeld een voorkomen van de klasse mim:Objecttype. Dit voorkomen, vb:Schip, kent zelf geen voorkomens. Het is dan ook niet mogelijk om te stellen:

vb:Pakjesboot12 a vb:Schip.

vb:Schip is immers geen klasse maar zelf een voorkomen! Om te kunnen uitdrukken dat de pakjesboot een voorkomen van de klasse Schip is, is een vertaling nodig naar een rdfs:Class of owl:Class, bijvoorbeeld door:

@prefix vbo: <http://modellen.mim-standaard.nl/voorbeeld/def#>.

vbo:Schip a rdfs:Class;
  mim:equivalent vb:Schip;
.
vb:Pakjesboot12 a vbo:Schip.

Dit document beschrijft hoe deze vertaling van het MIM model in RDF naar een RDFS-gebaseerde ontologie plaatsvindt. Daarbij zal niet alleen gebruik worden gemaakt van RDFS, maar ook van de OWL, SHACL en SKOS vocabulaires. De vertaling wordt zo veel mogelijk als SPARQL rules beschreven, zodat een machinale vertaling mogelijk is.

De vertaling is omkeerbaar. Op deze wijze kan een regulier Linked Data model in RDF/RDFS/OWL/SHACL worden gezien als een MIM compliant model. De SPARQL rules die vanuit een RDFS-gebaseerde ontologie de vertaling maken naar een MIM model in RDF, zijn daarom ook beschreven en opgenomen in 6.4.10 Transformatie vanuit RDFS/OWL/SHACL.

6.4.2 Gebruikte functies

In de SPARQL rules wordt gebruik gemaakt van een aantal SPARQL functies. In onderstaande tabel staan deze opgesomd met de specificatie van de werking.

Functie Specificatie
t:CamelCase Codeert een tekstveld naar een URI-vorm op basis van (upper) CamelCase regels
t:camelCase Codeert een tekstveld naar een URI-vorm op basis van (lower) camelCase regels
t:kebabcase Codeert een tekstveld naar een URI-vorm op basis van kebabcase regels (een - voor spaties)
t:nodeshapeuri Formuleert de uri voor een nodeshape op basis van de naam van een MIM resource. De nodeshape URI is opgebouwd als {shape-namespace}#{t:CamelCase(term)}. De {shape-namespace} is een vooraf vastgestelde waarde die gelijk is aan de te maken shapesgraph.
t:propertyshapeuri Formuleert de uri voor een propertyshape op basis van de naam van een MIM resource en de naam van de MIM resource die hiervan de "bezitter" is. De propertyshape URI is opgebouwd als {shape-namespace}#{t:CamelCase(bezittersnaam)}-{t:camelCase(naam)}. Zie ook t:nodeshapeuri.
t:nodepropertyuri Formuleert de uri voor een property op basis van de naam van een MIM resource en de naam van de MIM resource die hiervan de "bezitter" is. De property URI is opgebouwd als {namespace}#{t:CamelCase(bezittersnaam)}-{t:camelCase(naam)}.
t:topropertyuri Formuleert de uri voor een rdf:Property op basis van een andere uri door een t:camelCase functie toe te passen op het laatste segment van de andere uri.
t:schemeuri Formuleert de uri voor een concept-scheme op basis van de naam van een MIM resource. De concept-scheme URI is opgebouwd als {namespace}/id/scheme/{t:CamelCase(naam)}. De {namespace} is een vooraf vastgestelde waarde die gelijk is aan de locatie van de package.
t:concepturi Formuleert de uri voor een concept op basis van de naam van een MIM resource. De concept URI is opgebouwd als {namespace}/id/concept/{t:CamelCase(naam)}. De {namespace} is een vooraf vastgestelde waarde die gelijk is aan de locatie van de package.
t:mincount Formuleert de minimum kardinaliteit op basis van een kardinaliteitsaanduiding (zie bij mim:kardinaliteit). De waarde kan ook unbound zijn, in dat geval wordt ook de variable niet gebound en daardoor de betreffende triple niet opgevoerd.
t:maxcount Formuleert de maximum kardinaliteit op basis van een kardinaliteitsaanduiding (zie bij mim:kardinaliteit). De waarde kan ook unbound zijn, in dat geval wordt ook de variable niet gebound en daardoor de betreffende triple niet opgevoerd.
t:cast Transformeert het datatype van een waarde naar het gegeven datatype. Deze functie verwacht twee parameters: t:cast(?waarde, ?datatype). De ?waarde parameter is de waarde waarvoor een datatype gezet moet worden. ?datatype is het datatype wat ?waarde moet krijgen. Op basis van ?datatype bepaalt deze functie het juiste datatype om te zetten.
Noot
Noot

6.4.3 URI-munting

Een belangrijk gegeven in Linked Data is het munten van URI's. Bij de vertaling van een MIM modelelement naar een overeenkomstige resource in Linked Data vocabulaires zullen ook nieuwe URI's gemunt moeten worden. Enerzijds omdat er (soms) sprake is van meer dan één resource voor één modelelement, maar ook omdat een Linked Data resource wel equivalent is met een MIM modelelement, maar niet exact gelijk: we willen niet dat de formele semantiek van de Linked Data vocabulaires vermengd wordt met de formele semantiek van het MIM metamodel.

Daarnaast geldt dat het in Linked Data gebruikelijk is om URI's over te nemen van andere (externe) vocabulaires c.q. modellen. Ook het MIM ondersteund dit, in de vorm van de mim metamodelklassen mim:Extern en mim:View. Echter, anders dan bij UML, behoren de modelelementen uit deze externe modellen ook de URI's te krijgen die horen bij deze externe modellen. Ieder modelelement heeft dan ook een metagegeven mim:identificatie waar de vocabulaire URI's op gebaseerd worden.

Indien sprake is van een view package, dan wordt de mim:basisUri en/of de expliciet ingevulde mim:identificatie van deze view package alleen gebruikt voor de vocabulaire URI's (voorkomens van owl:Class, owl:DatatypeProperty en owl:ObjectProperty). Voor de voorkomens van shapes (sh:NodeShape en sh:PropertyShape) wordt juist gebruik gemaakt van de mim:basisUri zoals deze bij de eigen informatiemodel is opgegeven. Rationale hierachter is dat bij view-packages de "view" lokaal gedefinieerd is, maar de elementen wel afkomstig zijn uit een externe vocabulaire.

6.4.4 Overzicht

Onderstaande tabellen geven een overzicht van alle transformaties en een referentie naar de betreffende transformatieregel

6.4.4.1 Klassen
MIM-klasse Vertaling Referentie
mim:Modelelement n.v.t. Abstracte klasse
mim:Objecttype owl:Class, sh:NodeShape Objecttype
mim:Attribuutsoort owl:ObjectProperty, owl:DatatypeProperty, sh:PropertyShape Attribuutsoort
mim:Gegevensgroep sh:PropertyShape, owl:ObjectProperty Gegevensgroep
mim:Gegevensgroeptype owl:Class, sh:NodeShape Gegevensgroeptype
mim:Generalisatie rdfs:subClassOf rdf:Statement Generalisatie
mim:Relatiesoort sh:PropertyShape, owl:ObjectProperty Relatiesoort
mim:Relatieklasse rdf:Statement Relatieklasse
mim:ExterneKoppeling sh:PropertyShape, owl:ObjectProperty Externe koppeling
mim:Relatierol sh:PropertyShape, owl:ObjectProperty Relatierol
mim:Referentielijst owl:Class, sh:NodeShape Referentielijst
mim:ReferentieElement owl:Class, sh:NodeShape Referentie-element
mim:Enumeratie owl:Class, sh:NodeShape, skos:ConceptScheme Enumeratie
mim:Enumeratiewaarde Enumeratie-klasse Enumeratiewaarde
mim:Codelijst owl:Class, sh:NodeShape Codelijst
mim:Datatype n.v.t. Abstracte klasse
mim:PrimitiefDatatype rdfs:Datatype Primitief datatype
mim:GestructureerdDatatype sh:NodeShape Gestructureerd datatype
mim:DataElement owl:ObjectProperty, owl:DatatypeProperty, sh:PropertyShape Data element
mim:Keuze sh:xone, rdf:List Keuze
mim:Keuzeconstraint sh:xone, rdf:List Keuze
mim:Package n.v.t. Abstracte klasse
mim:Domein owl:Ontology Domein
mim:Extern owl:imports Extern
mim:View owl:imports View
mim:Constraint mim:Constraint Constraint
mim:RelatierolBron sh:PropertyShape, owl:ObjectProperty Relatierol
mim:RelatierolDoel sh:PropertyShape, owl:ObjectProperty Relatierol
6.4.4.2 Eigenschappen
MIM-eigenschap Vertaling Referentie
mim:naam rdfs:label naam
mim:alias mim:alias alias
mim:begrip dct:subject begrip
mim:begripsterm mim:begripsterm begripsterm
mim:definitie rdfs:comment definitie
mim:toelichting mim:toelichting toelichting
mim:herkomst mim:herkomst herkomst
mim:herkomstDefinitie mim:herkomstDefinitie herkomst definitie
mim:datumOpname mim:datumOpname datum opname
mim:heeftTijdlijnGeldigheid mim:heeftTijdlijnGeldigheid heeft tijdlijn geldigheid
mim:indicatieMaterieleHistorie mim:indicatieMaterieleHistorie indicatie materiële historie
mim:heeftTijdlijnRegistratie mim:heeftTijdlijnRegistratie heeft tijdlijn registratie
mim:indicatieFormeleHistorie mim:indicatieFormeleHistorie indicatie formele historie
mim:kardinaliteit sh:minCount, sh:maxCount kardinaliteit
mim:authentiek mim:authentiek authentiek
mim:indicatieAfleidbaar mim:indicatieAfleidbaar indicatie afleidbaar
mim:mogelijkGeenWaarde mim:mogelijkGeenWaarde, sh:minCount mogelijk geen waarde
mim:locatie mim:locatie locatie
mim:type sh:datatype, sh:node type
mim:lengte sh:minLength, sh:maxLength lengte
mim:patroon mim:patroon patroon
mim:formeelPatroon sh:pattern formeel patroon
mim:uniekeAanduiding mim:uniekeAanduiding unieke aanduiding
mim:populatie mim:populatie populatie
mim:kwaliteit mim:kwaliteit kwaliteit
mim:indicatieAbstractObject mim:indicatieAbstractObject indicatie abstract object
mim:identificerend mim:identificerend identificerend
mim:gegevensgroeptype sh:node gegevensgroeptype
mim:unidirectioneel (bij false) owl:inverseOf unidirectioneel
mim:bron sh:property bron
mim:doel sh:class doel
mim:aggregatietype mim:aggregatietype aggregatietype
mim:subtype rdfs:subClassOf Generalisatie
mim:supertype rdfs:subClassOf Generalisatie
mim:code skos:notation code
mim:specificatieTekst mim:specificatieTekst specificatie-tekst
mim:specificatieFormeel mim:specificatieFormeel specificatie-formeel
mim:attribuut sh:property attribuut
mim:gegevensgroep sh:property gegevensgroep
mim:waarde rdf:type, skos:inScheme Enumeratie
mim:constraint mim:constraint Constraint
mim:element sh:property Data element
mim:indicatieClassificerend rdfs:subClassOf (onder meer) indicatie classificerend
mim:bevatModelelement rdfs:isDefinedBy, owl:imports bevat modelelement
6.4.4.3 Instanties (datatypen)
MIM datatype Vertaling Referentie
mim:CharacterString xsd:string Primitief datatype - standaard datatypen
mim:Integer xsd:integer Primitief datatype - standaard datatypen
mim:Real xsd:float Primitief datatype - standaard datatypen
mim:Decimal xsd:decimal Primitief datatype - standaard datatypen
mim:Boolean xsd:boolean Primitief datatype - standaard datatypen
mim:Date xsd:date Primitief datatype - standaard datatypen
mim:DateTime xsd:dateTime Primitief datatype - standaard datatypen
mim:Year xsd:gYear Primitief datatype - standaard datatypen
mim:Day xsd:gDay Primitief datatype - standaard datatypen
mim:Month xsd:gMonth Primitief datatype - standaard datatypen
mim:URI xsd:anyURI Primitief datatype - standaard datatypen

6.4.5 Klassen

Omdat het getransformeerde model daadwerkelijk een nieuw model is, zullen de elementen in het getransformeerde model ook eigen URI's krijgen. Om de relatie tussen het originele MIM-model het het getransformeerde model op basis van RDFS te behouden, wordt de eigenschap mim:equivalent gebruikt.

6.4.5.1 Transformatie: Objecttype

De typering van een groep objecten die binnen een domein relevant zijn en als gelijksoortig worden beschouwd.

Een mim:Objecttype wordt vertaald naar een owl:Class in combinatie met een sh:NodeShape.

CONSTRUCT {
  ?class a owl:Class.
  ?class mim:equivalent ?objecttype.
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?objecttype.
  ?nodeshape sh:targetClass ?class.
}
WHERE {
  ?objecttype a mim:Objecttype.
  ?objecttype mim:identificatie ?identificatie.
  ?objecttype mim:naam ?objecttypenaam.

  BIND (IRI(STR(?identificatie)) as ?class)
  BIND (t:nodeshapeuri(?objecttypenaam) as ?nodeshape)
}
6.4.5.2 Transformatie: Attribuutsoort

De typering van gelijksoortige gegevens die voor een objecttype van toepassing is.

Een mim:Attribuutsoort wordt vertaald naar een owl:DatatypeProperty in combinatie met een sh:PropertyShape.

In OWL is een property anders dan in het MIM een first class citizen. Dit betekent dat als in twee objecttypen gebruik wordt gemaakt van een attribuutsoort die dezelfde naam heeft, dit leidt tot twee verschillende attribuutsoorten. In OWL zou dit echter leiden tot maar één attribuutsoort, tenzij daadwerkelijk sprake is van verschil in betekenis.

Noot
Noot

Indien het datatype van een attribuutsoort gelijk is aan PrimitiefDatatype (of een daarvan afgeleid datatype), dan is sprake van een owl:DatatypeProperty en een sh:nodeKind sh:Literal. In alle andere gevallen is sprake van een owl:Objecttype en een sh:nodeKind sh:IRI. Zie ook de transformatie van de eigenschapen mim:type.

De URI van de propertyshape wordt afgeleid van de naam van het modelelement dat de attribuutsoort "bezit" en de naam van de attribuutsoort. De URI van de owl:DatatypeProperty is gelijk aan de mim:identificatie van de attribuutsoort.

CONSTRUCT {
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?datatypeproperty.
  ?propertyshape sh:nodekind sh:Literal.
  ?propertyshape mim:equivalent ?attribuutsoort.
  ?datatypeproperty a owl:DatatypeProperty.
  ?datatypeproperty mim:equivalent ?attribuutsoort.
}
WHERE {
  ?attribuutsoort a mim:Attribuutsoort.
  ?attribuutsoort mim:identificatie ?identificatie.
  ?attribuutsoort mim:naam ?attribuutsoortnaam.
  ?bezitter mim:attribuut ?attribuutsoort.
  ?bezitter mim:naam ?bezittersnaam.
  BIND (IRI(STR(?identificatie)) as ?datatypeproperty)
  BIND (t:propertyshapeuri(?bezittersnaam,?attribuutsoortnaam) as ?propertyshape)
  {
    {
      ?attribuutsoort mim:datatype/rdfs:subClassOf* mim:PrimitiefDatatype.
      BIND (owl:DatatypeProperty as ?type)
    }
    UNION
    {
      ?attribuutsoort mim:datatype ?datatype.
      FILTER NOT EXISTS {
        ?attribuutsoort mim:datatype/rdfs:subClassOf* mim:PrimitiefDatatype.
      }
      BIND (owl:ObjectProperty as ?type)
    }
  }
}
6.4.5.3 Transformatie: Gegevensgroep

Een typering van een groep van gelijksoortige gegevens die voor een objecttype van toepassing is.

Een mim:Gegevensgroep wordt vertaald naar een sh:PropertyShape in combinatie met een owl:ObjectProperty. De nodekind van de propertyshape is een sh:BlankNode. Gedachte hierachter is dat de gegevensgroep de verbinding is tussen een objecttype en een gegevensgroeptype. Een gegevensgroeptype is vervolgens een groep van samenhangende attribuutsoorten, wat overeen komt met een class en een nodeshape (zie ook gegevensgroeptype). Omdat een gegevensgroeptype geen eigen identiteit heeft, zal dit gemodelleerd worden als blank node.

De URI van de propertyshape wordt afgeleid van de naam van het modelelement dat de gegevensgroep "bezit" en de naam van de gegevensgroep. De URI van de owl:ObjectProperty is gelijk aan de mim:identificatie van de gegevensgroep.

CONSTRUCT {
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?objectproperty.
  ?propertyshape sh:nodekind sh:BlankNode.
  ?propertyshape mim:equivalent ?gegevensgroep.
  ?objectproperty a owl:ObjectProperty.
  ?objectproperty mim:equivalent ?gegevensgroep.
}
WHERE {
  ?gegevensgroep a mim:Gegevensgroep.
  ?gegevensgroep mim:identificatie ?identificatie.
  ?gegevensgroep mim:naam ?gegevensgroepnaam.
  ?bezitter mim:gegevensgroep ?gegevensgroep.
  ?bezitter mim:naam ?bezittersnaam
  BIND (IRI(STR(?identificatie)) as ?objectproperty)
  BIND (t:propertyshapeuri(?bezittersnaam,?gegevensgroepnaam) as ?propertyshape)
}
6.4.5.4 Transformatie: Gegevensgroeptype

Een groep van met elkaar samenhangende attribuutsoorten. Een gegevensgroeptype is altijd een type van een gegevensgroep.

Een mim:Gegevensgroeptype wordt vertaald naar een owl:Class en een sh:NodeShape, net zoals een mim:Objecttype.

Merk op dat er in het getransformeerde Linked Data model weinig verschil meer is tussen een gegevensgroeptype en een objecttype. Het verschil is alleen zichtbaar doordat een gegevensgroeptype als blank node verbonden is (zie ook Gegevensgroep).

CONSTRUCT {
  ?class a owl:Class.
  ?class mim:equivalent ?gegevensgroeptype.
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?gegevensgroeptype.
  ?nodeshape sh:targetClass ?class.
}
WHERE {
  ?gegevensgroeptype a mim:Gegevensgroeptype.
  ?gegevensgroeptype mim:identificatie ?identificatie.
  ?gegevensgroeptype mim:naam ?gegevensgroeptypenaam.
  BIND (IRI(STR(?identificatie)) as ?class)
  BIND (t:nodeshapeuri(?gegevensgroeptypenaam) as ?nodeshape)
}
6.4.5.5 Transformatie: Generalisatie

De typering van het hiërarchische verband tussen een meer generiek en een meer specifiek modelelement van hetzelfde soort, waarbij het meer specifieke modelelement eigenschappen van het meer generieke modelelement overerft.

Generalisatie kan gebruikt worden tussen objecttypen, maar ook tussen datatypen. Aangezien zowel objecttypen als datatypen in het RDFS gebaseerde model worden getransformeerd naar een subklasse van rdfs:Class, kan in beide gevallen gebruik worden gemaakt van dezelfde transformatie.

Een mim:Generalisatie wordt vertaald naar een rdfs:subClassOf.

Noot
6.4.5.6 Transformatie: Relatiesoort

De typering van het structurele verband tussen een object van een objecttype en een (ander) object van een ander (of hetzelfde) objecttype.

In het MIM zijn er twee specificatievormen voor relaties: op basis van mim:Relatiesoort of op basis van mim:Relatierol. Indien gekozen wordt voor mim:Relatiesoort dan geldt onderstaande uitwerking. Indien gekozen wordt voor mim:Relatierol, dan geldt de uitwerking zoals beschreven bij Relatierol. De keuze wordt bepaald door de aanwezigheid van het attribuut mim:relatierol.

Een mim:Relatiesoort wordt vertaald naar een sh:PropertyShape in combinatie met een owl:ObjectProperty. De nodekind van de propertyshape is een sh:IRI.

De URI van de propertyshape wordt afgeleid van de naam van het modelelement dat de relatiesoort "bezit" en de naam van de relatiesoort. De URI van de owl:ObjectProperty is gelijk aan de mim:identificatie van de relatiesoort.

CONSTRUCT {
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?objectproperty.
  ?propertyshape sh:nodekind sh:IRI.
  ?propertyshape mim:equivalent ?relatiesoort.
  ?objectproperty a owl:ObjectProperty.
  ?objectproperty mim:equivalent ?relatiesoort.
}
WHERE {
  ?relatiesoort a mim:Relatiesoort.
  ?relatiesoort mim:identificatie ?identificatie.
  ?relatiesoort mim:naam ?relatiesoortnaam.
  ?bezitter mim:bron ?relatiesoort.
  ?bezitter mim:naam ?bezittersnaam.
  BIND (IRI(STR(?identificatie)) as ?objectproperty)
  BIND (t:propertyshapeuri(?bezittersnaam,?relatiesoortnaam) as ?propertyshape)
  FILTER NOT EXISTS {
    ?relatiesoort mim:relatierol ?rol
  }
}
6.4.5.7 Transformatie: Relatieklasse

Een relatiesoort met eigenschappen.

Een mim:Relatieklasse wordt vertaald naar een subklasse van rdf:Statement, waarbij bovendien ook de transformatieregels voor een mim:Objecttype en een mim:Relatiesoort worden gevolgd.

CONSTRUCT {
  ?class a owl:Class.
  ?class rdfs:subClassOf rdf:Statement.
  ?class mim:equivalent ?relatieklasse.
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?relatieklasse.
  ?nodeshape sh:targetClass ?class.
  ?nodeshape sh:property [
    sh:path rdf:predicate;
    sh:hasValue ?objectproperty;
    sh:minCount 1;
    sh:maxCount 1;
  ];
  ?nodeshape sh:property [
    sh:path rdf:subject;
    sh:class ?subject;
  ];
  ?nodeshape sh:property [
    sh:path rdf:object;
    sh:class ?object;
  ];
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?objectproperty.
  ?propertyshape sh:nodekind sh:IRI.
  ?propertyshape mim:equivalent ?relatieklasse.
  ?objectproperty a owl:ObjectProperty.
  ?objectproperty mim:equivalent ?relatieklasse.
}
WHERE {
  ?relatieklasse a mim:Relatiesoort.
  ?relatieklasse mim:identificatie ?identificatie.
  ?relatieklasse mim:naam ?relatieklassenaam.
  ?relatieklasse mim:bron ?bezitter.
  ?bezitter mim:naam ?bezittersnaam.
  ?bezitter mim:seeAlso ?subject.
  ?relatieklasse mim:doel ?doelklasse.
  ?doelklasse mim:seeAlso ?object.
  BIND (IRI(STR(?identificatie)) as ?class)
  BIND (t:nodeshapeuri(?relatieklassenaam) as ?nodeshape)
  BIND (t:propertyshapeuri(?bezittersnaam,?relatieklassenaam) as ?propertyshape)
  BIND (t:topropertyuri(?class) as ?objectproperty)
}
6.4.5.8 Transformatie: Externe koppeling

Een associatie waarmee vanuit het perspectief van het eigen informatiemodel een objecttype uit het 'eigen' informatiemodel gekoppeld wordt aan een objecttype van een extern informatiemodel. De relatie zelf hoort bij het 'eigen' objecttype.

Een externe koppeling wordt op dezelfde wijze omgezet als een mim:Relatiesoort (zie Relatiesoort). Het verschil is zichtbaar doordat de betreffende objecttypes uit verschillende modellen komen. Anders dan bij UML is het daarbij niet gebruikelijk om het andere objecttype "in" het eigen model te plaatsen, maar juist om direct naar het andere objecttype te verwijzen. Eventueel kan daarbij ook nog gebruik worden gemaakt van een owl:imports om expliciet aan te geven dat een ander model wordt gebruikt.

Noot
6.4.5.9 Transformatie: Relatierol

In het MIM zijn er twee specificatievormen voor relaties: op basis van mim:Relatiesoort of op basis van mim:Relatierol. Indien gekozen wordt voor mim:Relatierol dan geldt onderstaande uitwerking. Indien gekozen wordt voor mim:Relatiesoort, dan geldt de uitwerking zoals beschreven bij Relatiesoort.

Een mim:Relatiesoort wordt vertaald naar een sh:PropertyShape in combinatie met een owl:ObjectProperty. De nodekind van de propertyshape is een sh:IRI.

De URI van de propertyshape wordt afgeleid van de naam van het modelelement dat de relatierol "bezit" en de naam van de relatierol. De URI van de owl:ObjectProperty is gelijk aan de mim:identificatie van de relatiesoort. Aangezien er twee relatierollen gedefinieerd kunnen worden, kan ook sprake zijn van twee properties. In dat geval zijn deze twee properties elkaars inverse.

CONSTRUCT {
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?objectproperty.
  ?propertyshape sh:nodekind sh:IRI.
  ?propertyshape mim:equivalent ?relatierol.
  ?objectproperty a owl:ObjectProperty.
  ?objectproperty mim:equivalent ?relatierol.
}
WHERE {
  ?relatierol a ?type.
  ?relatierol mim:identificatie ?identificatie.
  ?relatierol mim:naam ?relatiesoortnaam.
  ?relatiesoort mim:relatierol ?relatierol.
  ?bezitter mim:bron ?relatiesoort.
  ?bezitter mim:naam ?bezittersnaam.
  BIND (IRI(STR(?identificatie)) as ?objectproperty)
  BIND (t:propertyshapeuri(?bezittersnaam,?relatiesoortnaam) as ?propertyshape)
  FILTER (?type = mim:RelatierolBron || ?type = mim:RelatierolDoel)
}

CONSTRUCT {
  ?sourceproperty owl:inverseOf ?targetproperty
}
WHERE {
  ?sourceproperty a owl:ObjectProperty.
  ?sourceproperty mim:equivalent ?relatierolbron.
  ?relatierolbron a mim:RelatierolBron.
  ?targetproperty a owl:ObjectProperty.
  ?targetproperty mim:equivalent ?relatieroldoel.
  ?relatieroldoel a mim:RelatierolDoel.
  ?relatiesoort mim:relatierol ?relatierolbron,
                               ?relatieroldoel.
}
6.4.5.10 Transformatie: Referentielijst

Een lijst met een opsomming van de mogelijke domeinwaarden van een attribuutsoort, die buiten het model in een externe waardelijst worden beheerd. De domeinwaarden in de lijst kunnen in de loop van de tijd aangepast, uitgebreid, of verwijderd worden, zonder dat het informatiemodel aangepast wordt (in tegenstelling tot bij een enumeratie).

Een waardelijst kan verschillende soorten dingen opsommen. Een lijst met waardes, bijv. een opsomming van nummers, maar ook een lijst met concepten, datatypen, of objecten. Het is dan ook niet triviaal om een goede automatische vertaling te bepalen die een waardelijst kan vertalen naar Linked Data.

Het MIM biedt echt aanknopingspunten hoe een waardelijst gemodelleerd dient te worden:

  1. Een enumeratie geeft een opsomming van waarden, waarbij de waarden zelf ook eigenschappen kunnen hebben. Het zijn met andere woorden geen literals, maar resources;
  2. Een referentielijst geeft een opsomming van waarden, waarbij van de waarden specifieke kenmerken worden opgenomen die gespecificeerd zijn middels referentie-elementen. Ook referentiewaarden zijn met andere woorden resources, met specifieke eigenschappen.
  3. Een codelijst is gelijk aan een referentielijst, met dit verschil dat de codelijst zelf niet gespecificeerd is, maar "direct" is overgenomen van een externe partij.

In de Inspire RDF Guidelines wordt voorgeschreven om een enumeratie te modelleren als rdfs:Datatype in plaats van als klasse. Dit leidt tot enumeratiewaardes die een literal zijn, met het datatype van de enumeratie. Bijvoorbeeld "hoog"^^imgolf:NatuurwaardeValue. De reden om hiervan af te wijken is omdat enumeraties vaker waardelijsten zijn die een object of concept modelleren, dan een lijst van letterlijke waardes. Door deze waardes als objecten te modelleren blijft het mogelijk om nieuwe uitdrukkingen te doen over de waardes.

Voor het MIM wordt een waardelijst dan ook vertaald naar een klasse gelijknamig aan de waardelijst (referentielijst, enumeratie of codelijst).

Voor een referentielijst geldt bovendien dat ook nog een sh:NodeShape wordt gedefinieerd, waar de referentie-elementen vervolgens aan gehangen kunnen worden.

CONSTRUCT {
  ?class a owl:Class.
  ?class mim:equivalent ?referentielijst.
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?referentielijst.
  ?nodeshape sh:targetClass ?class.
}
WHERE {
  ?referentielijst a mim:Referentielijst.
  ?referentielijst mim:identificatie ?identificatie.
  ?referentielijst mim:naam ?referentielijstnaam.
  BIND (IRI(STR(?identificatie)) as ?class)
  BIND (t:nodeshapeuri(?referentielijstnaam) as ?nodeshape)
}
6.4.5.11 Transformatie: Referentie element

Een eigenschap van een object in een referentielijst in de vorm van een gegeven.

Een mim:ReferentieElement wordt op dezelfde wijze omgezet als een mim:Attribuutsoort, waarbij de referentielijst de "bezitter" is van het referentie element. De relatie tussen de referentielijst en het referentie element wordt direct meegenomen in de transformatie.

De URI van de propertyshape wordt afgeleid van de naam van de referentielijst dat het referentie element "bezit" en de naam van het referentie element. De URI van de datatypeproperty wordt ook op die manier afgeleid. Dit in afwijking van de wijze waarop dit bij een attribuutsoort gebeurt. Reden is het feit dat een referentie element echt uniek bij een gestructureerd datatype hoort, conform het metamodel (er is sprake van een compositie-aggregatie). Dit is weer vergelijkbaar met de situatie bij mim:DataElement.

CONSTRUCT {
  ?nodeshape sh:property ?propertyshape.
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?datatypeproperty.
  ?propertyshape sh:nodekind sh:Literal.
  ?propertyshape mim:equivalent ?referentieelement.
  ?datatypeproperty a owl:DatatypeProperty.
  ?datatypeproperty mim:equivalent ?referentieelement.
}
WHERE {
  ?referentieelement a mim:ReferentieElement.
  ?referentieelement mim:naam ?referentieelementnaam.
  ?bezitter mim:element ?referentieelement.
  ?bezitter mim:naam ?bezittersnaam.
  BIND (t:nodeshapeuri(?bezittersnaam) as ?nodeshape)
  BIND (t:propertyshapeuri(?bezittersnaam,?referentieelementnaam) as ?propertyshape)
  BIND (t:nodepropertyuri(?referentieelementnaam) as ?datatypeproperty)
}
6.4.5.12 Transformatie: Enumeratie

Een datatype waarvan de mogelijke waarden limitatief zijn opgesomd in een statische lijst.

Een mim:Enumeratie wordt vertaald naar een owl:Class in combinatie met een sh:Nodeshape, skos:ConceptScheme en enkele sh:PropertyShapes, waarbij de betreffende klasse een rdfs:subClassOf skos:Concept is.

De reden om deze vertaling te maken, is dat in het MIM een enumeratie onderdeel is van het eigen model, en zeer specifieke eigenschappen kent. Het is expliciet geen "normale" klasse (daarvoor lenen mim:Objecttype of mim:Referentielijst zich meer). Maar het is ook geen enkele opsomming van enkelvoudige waarden.

De waarden van een enumeratie zijn voorkomens van deze klasse en onderdeel van het skos:ConceptScheme dat aan deze enumeratie zit.

CONSTRUCT {
  ?class a owl:Class.
  ?class rdfs:subClassOf skos:Concept.
  ?class mim:equivalent ?enumeratie.
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?enumeratie.
  ?nodeshape sh:targetClass ?class.
  ?nodeshape sh:property [
    sh:path rdfs:label;
  ].
  ?nodeshape sh:property [
    sh:path skos:notation;
  ].
  ?nodeshape sh:property [
    sh:path skos:definition
  ].
  ?nodeshape sh:property [
    sh:path rdf:type;
    sh:hasValue ?class
  ].
  ?nodeshape sh:property [
    sh:path skos:inScheme;
    sh:hasValue ?scheme
  ]
}
WHERE {
  ?enumeratie a mim:Enumeratie.
  ?enumeratie mim:identificatie ?identificatie.
  ?objecttype mim:naam ?enumeratienaam.
  BIND (IRI(STR(?identificatie)) as ?class)
  BIND (t:nodeshapeuri(?enumeratienaam) as ?nodeshape)
  BIND (t:schemeuri(?enumeratienaam) as ?scheme)
}
6.4.5.13 Transformatie: Enumeratiewaarde

Een gedefinieerde waarde, in de vorm van een eenmalig vastgesteld constant gegeven.

Enumeratiewaarden worden vertaald naar voorkomens van de klasse die bepaald wordt door de Enumeratie zelf. Voor de URI wordt het metagegeven mim:code gebruikt, tenzij deze niet aanwezig is.

CONSTRUCT {
  ?concept a ?class.
  ?concept skos:inScheme ?scheme.
  ?concept mim:equivalent ?waarde.
}
WHERE {
  ?waarde a mim:Enumeratiewaarde.
  ?enumeratie mim:waarde ?waarde.
  ?class mim:equivalent ?enumeratie.
  ?class a owl:Class.
  ?scheme mim:equivalent ?enumeratie.
  ?scheme a skos:ConceptScheme.
  {
    {
      ?waarde mim:naam ?notation
      FILTER NOT EXISTS {?waarde mim:code ?nocode}
    }
    UNION
    {
      ?waarde mim:code ?notation
    }
  }
  BIND (t:concepturi(?notation) as ?concept)
}
6.4.5.14 Transformatie: Codelijst

Een referentielijst die extern wordt beheerd, en geen onderdeel is van het informatiemodel.

Een mim:Codelijst wordt op dezelfde wijze getransformeerd als een mim:Referentielijst.

CONSTRUCT {
  ?class a owl:Class.
  ?class mim:equivalent ?codelijst.
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?codelijst.
  ?nodeshape sh:targetClass ?class.
}
WHERE {
  ?codelijst a mim:Codelijst.
  ?codelijst mim:identificatie ?identificatie.
  ?codelijst mim:naam ?codelijstnaam.
  BIND (IRI(STR(?identificatie)) as ?class)
  BIND (t:nodeshapeuri(?codelijstnaam) as ?nodeshape)
}

6.4.6 Datatypen

6.4.6.1 Transformatie: Primitief datatype

Een in het eigen model gedefinieerd primitieve datatype. Deze worden wel door de modelleur gecreëerd, met een eigen naam en een eigen definitie (en eigen metagegevens).

Een primitief datatype wordt vertaald naar een sh:NodeShape. Een dergelijke (literal) nodeshape kan dan gebruikt worden in een propertyshape via sh:node. In onderstaande uitwerking wordt als uitgangspunt gehanteerd dat een primitief datatype een subtype is van een elementair datatype. Theoretisch gezien zou een primitief datatype ook weer een specialisatie kunnen zijn van een ander primitief datatype, dit is hier niet meegenomen. Indien het primitieve datatype geen specialisatie is van een ander datatype, dan wordt verondersteld dat sprake is van een specialisatie van xs:string.

CONSTRUCT {
  ?datatype a sh:NodeShape.
  ?datatype sh:datatype xsd:string.
  ?datatype mim:equivalent ?primitiefdatatype.
}
WHERE {
  ?primitiefdatatype a mim:PrimitiefDatatype.
  ?primitiefdatatype mim:identificatie ?identificatie.
  ?primitiefdatatype mim:naam ?primitiefdatatypenaam.
  BIND (IRI(STR(?identificatie)) as ?datatype)
  FILTER NOT EXISTS {
    ?generalisatie mim:subtype ?primitiefdatatype
  }
}

CONSTRUCT {
  ?datatype a sh:NodeShape.
  ?datatype sh:datatype ?xsddatatype.
  ?datatype mim:equivalent ?primitiefdatatype.
}
WHERE {
  ?primitiefdatatype a mim:PrimitiefDatatype.
  ?primitiefdatatype mim:identificatie ?identificatie.
  ?primitiefdatatype mim:naam ?primitiefdatatypenaam.
  ?generalisatie mim:subtype ?primitiefdatatype..
  ?generalisatie mim:supertype ?standaarddatatype.
  ?xsddatatype mim:equivalent ?standaarddatatype.
  BIND (IRI(STR(?identificatie)) as ?datatype)
}
6.4.6.2 Transformatie: Primitief datatype - standaard datatypen

Voor standaard datatypen maakt RDF gebruik van de XSD datatypen. Onderstaande tabel geeft de mapping weer vanuit de datatypen die in het MIM zijn gespecificeerd.

MIM datatype XSD Datatype
mim:CharacterString xsd:string
mim:Integer xsd:integer
mim:Real xsd:float
mim:Decimal xsd:decimal
mim:Boolean xsd:boolean
mim:Date xsd:date
mim:DateTime xsd:dateTime
mim:Year xsd:gYear
mim:Day xsd:gDay
mim:Month xsd:gMonth
mim:URI xsd:anyURI

Deze vertaaltabel kan worden doorgevoerd via mim:equivalent statements, aangezien deze vervolgens gebruikt wordt in de transformatieregel voor generalisatie en in de transformatieregel voor het aspect mim:type.

CONSTRUCT {
  mim:CharacterString a mim:PrimitiefDatatype.
  mim:Integer a mim:PrimitiefDatatype.
  mim:Real a mim:PrimitiefDatatype.
  mim:Decimal a mim:PrimitiefDatatype.
  mim:Boolean a mim:PrimitiefDatatype.
  mim:Date a mim:PrimitiefDatatype.
  mim:DateTime a mim:PrimitiefDatatype.
  mim:Year a mim:PrimitiefDatatype.
  mim:Day a mim:PrimitiefDatatype.
  mim:Month a mim:PrimitiefDatatype.
  mim:URI a mim:PrimitiefDatatype.
  xsd:string mim:equivalent mim:CharacterString.
  xsd:integer mim:equivalent mim:Integer.
  xsd:float mim:equivalent mim:Real.
  xsd:decimal mim:equivalent mim:Decimal.
  xsd:boolean mim:equivalent mim:Boolean.
  xsd:date mim:equivalent mim:Date.
  xsd:dateTime mim:equivalent mim:DateTime.
  xsd:gYear mim:equivalent mim:Year.
  xsd:gDay mim:equivalent mim:Day.
  xsd:gMonth mim:equivalent mim:Month.
  xsd:anyURI mim:equivalent mim:URI.
}
WHERE {}
6.4.6.3 Transformatie: Gestructureerd datatype

Specifiek benoemd gestructureerd datatype dat de structuur van een gegeven beschrijft, samengesteld uit minimaal twee elementen.

Een mim:GestructureerdDatatype wordt vertaald naar een sh:NodeShape. Er wordt geen sh:Class aangemaakt zoals bij een mim:Objecttype, aangezien conform het MIM een gestructureerd datatype slechts een structuur schetst en geen semantiek.

CONSTRUCT {
  ?nodeshape a sh:NodeShape.
  ?nodeshape mim:equivalent ?gestructureerddatatype.
}
WHERE {
  ?gestructureerddatatype a mim:GestructureerdDatatype.
  ?gestructureerddatatype mim:identificatie ?identificatie.
  ?gestructureerddatatype mim:naam ?gestructureerddatatypenaam.
  BIND (IRI(STR(?identificatie)) as ?nodeshape)
}
6.4.6.4 Transformatie: Data element

Een onderdeel/element van een Gestructureerd datatype die als type een datatype heeft.

Een mim:DataElement wordt op dezelfde wijze omgezet als een mim:Attribuutsoort, waarbij het gestructureerd datatype de "bezitter" is van het data element. De relatie tussen het gestructureerd datatype en het data element wordt direct meegenomen in de transformatie.

De URI van de propertyshape wordt afgeleid van de naam van het gestructureerde datatype dat het data element "bezit" en de naam van het data element. De URI van de datatypeproperty wordt ook op die manier afgeleid. Dit in afwijking van de wijze waarop dit bij een attribuutsoort gebeurt. Reden is het feit dat een data element echt uniek bij een gestructureerd datatype hoort, conform het metamodel (er is sprake van een compositie-aggregatie).

CONSTRUCT {
  ?nodeshape sh:property ?propertyshape.
  ?propertyshape a sh:PropertyShape.
  ?propertyshape sh:path ?datatypeproperty.
  ?propertyshape sh:nodekind sh:Literal.
  ?propertyshape mim:equivalent ?dataelement.
  ?datatypeproperty a owl:DatatypeProperty.
  ?datatypeproperty mim:equivalent ?dataelement.
}
WHERE {
  ?dataelement a mim:DataElement.
  ?dataelement mim:naam ?dataelementnaam.
  ?bezitter mim:element ?dataelement.
  ?bezitter mim:naam ?bezittersnaam
  BIND (t:nodeshapeuri(?bezittersnaam) as ?nodeshape)
  BIND (t:propertyshapeuri(?bezittersnaam,?dataelementnaam) as ?propertyshape)
  BIND (t:nodepropertyuri(?dataelementnaam) as ?datatypeproperty)
}
6.4.6.5 Transformatie: Keuze

Een opsomming van meerdere modelelementen, waarbij er maar van één tegelijkertijd sprake kan zijn.

Een keuze tussen modelelementen wordt gemodelleerd als een speciaal soort NodeShape die zelf een sh:xone eigenschap heeft. Deze eigenschap verwijst naar een rdf:List waarin de opsomming van de keuze staat uitgewerkt.

CONSTRUCT {
  ?shape a sh:NodeShape.
  ?shape sh:xone ?list.
  ?shape mim:equivalent ?keuze.
  ?list a rdf:List.
  ?list rdf:rest rdf:nil.
}
WHERE {
  ?keuze a ?type.
  FILTER (?type = mim:Keuze || ?type = mim:Keuzeconstraint)
  ?keuze mim:naam ?keuzenaam.
  ?keuze ?keuzerelatie ?keuzewaarde.
  BIND (t:nodeshapeuri(?keuzenaam) as ?shape)
}

Voor het toevoegen van de waarden in de lijst wordt, anders dan andere voorbeelden, geen CONSTRUCT query gebruikt, omdat de lijst recursief wordt opgebouwd, in combinaties van DELETE en INSERT queries. Nieuwe elementen worden aan het begin van de lijst toegevoegd (er wordt geen volgorde verondersteld, zie ook het algemene issue over volgorde bovenaan). Het union element wordt zelf als blank node toegevoegd.

Onderstaand voorbeeld geeft aan hoe de conversie uiteindelijk plaatsvindt:

ex:GeometrischObject a mim:Objecttype;
  mim:naam "Geometrisch object";
  mim:attribuut ex:geometrie;
.
ex:geometrie a mim:Attribuutsoort;
  mim:naam "geometrie";
  mim:type ex:LineOrPolygon;
.
ex:LineOrPolygon a mim:Keuze;
  mim:naam "Line or polygon";
  mim:type ex:Line;
  mim:type ex:Polygon;
.
ex:Line a mim:PrimitiefDatatype;
  mim:naam "Line";
  mim:type gml:Line;
.
ex:Polygon a mim:PrimitiefDatatype;
  mim:naam "Polygon";
  mim:type gml:Polygon;
.

shape:GeometrischObject-geometrie a sh:PropertyShape;
  rdfs:label "geometrie";
  mim:equivalent ex:geometrie;
  sh:node shape:LineOrPolygon;
.
shape:LineOrPolygon a sh:NodeShape;
  rdfs:label "Line or polygon";
  mim:equivalent ex:LineOrPolygon;
  sh:xone (
    [ sh:datatype gml:Line ]
    [ sh:datatype gml:Polygon ]
  )
.

De query hiervoor is als volgt:

DELETE {
  ?endoflist rdf:rest rdf:nil
}
INSERT {
  ?list rdf:first [ mim:equivalent ?keuzeelement ];
  ?list rdf:rest ?endoflist.
}
WHERE {
  ?keuze a mim:Keuze.
  ?keuze ?keuzerelatie ?keuzelement.
  ?list mim:equivalent ?keuze.
  ?list rdf:rest* ?endoflist.
  ?endoflist rdf:rest rdf:nil.
}

DELETE {
  ?endoflist rdf:rest rdf:nil.
  ?realendoflist rdf:rest ?endoflist.
}
INSERT {
  ?realendoflist rdf:rest rdf:nil
}
WHERE {
  ?list a rdf:List.
  ?list rdf:rest* ?realendoflist.
  ?realendoflist rdf:rest ?endoflist.
  ?endoflist rdf:rest rdf:nil.
}

De tweede delete-insert query is een "opruimquery": aangezien we zijn begonnen met een rdf:List in plaats van een rdf:nil, moeten we het einde van de lijst er nog weer afknippen.

6.4.7 Packages

Een package is een benoemde en begrensde verzameling/groepering van modelelementen.

6.4.7.1 Transformatie: Domein

Het eigen IM.

Een mim:Domein wordt omgezet naar een owl:Ontology.

6.4.7.2 Transformatie: Extern

Een groepering van constructies die een externe instantie beheert en beschikbaar stelt aan een informatiemodel en die in het informatiemodel ongewijzigd gebruikt worden.

Een mim:Extern wordt omgezet naar een owl:Ontology. Bovendien wordt een owl:imports aangelegd tussen de package van het type mim:Domein en deze externe package.

De gedachte hierachter, is dat een externe package letterlijk is overgenomen vanuit een extern model, en hier aanvullend is meegenomen. Feitelijk zal de inhoud dus identiek moeten zijn aan het model op de betreffende externe locatie.

6.4.7.3 Transformatie: View

Een groepering van objecttypen die gespecificeerd zijn in een extern informatiemodel en vanuit het perspectief van het eigen informatiemodel inzicht geeft welke gegevens van deze objecttypen relevant zijn binnen het eigen informatiemodel.

Een mim:View wordt omgezet naar een owl:Ontology. Daarbij geldt dat voor de locatie, de locatie wordt overgenomen uit de package van het type mim:Informatiemodel. Bovendien wordt een owl:imports relatie gelegd tussen de package van het type informatiemodel en deze view-package, EN er wordt een owl:imports gelegd van de view-package naar een externe locatie, op basis van de locatie bij deze view package.

De gedachte hierachter, is dat een view package deels is overgenomen vanuit een extern model. Er zijn aanpassingen gedaan aan de structuur, maar niet aan de betekenis. Dit betekent dat er een "imports" relatie loopt van de domein-package naar de view-package, en vervolgens vanuit de view-package naar de externe package (die hier verder niet is opgenomen).

Deze constructie heeft ook consequenties voor de URI's van de modelelementen in deze view package. URI's van shapes (Nodeshapes en Propertyshapes) krijgen als namespace de de basis-URI van het eigen informatiemodel (dit gaat immers om de structuur en is lokaal gedefinieerd in relatie tot de domein-package). URI's van classes en properties krijgen als namespace de basis-URI van het model waar de view van is gemaakt, waarbij -net als bij mim:Extern- dit de namespace zal zijn van het externe model.

6.4.8 Overig

6.4.8.1 Transformatie: Constraint

Een Constraint is een conditie of een beperking, die over een of meerdere modelelementen uit het informatiemodel geldt.

Een Constraint (en bijbehorende gegevens) worden direct overgenomen in het vertaalde model als blank node. Het MIM kent voor een Constraint twee aspecten: tekstueel en formeel. Het MIM doet daarbij geen uitspraak over de taal die voor het formele model moet worden gehanteerd. Daarmee is een transformatie niet op zijn plaats. Zie ook de INSPIRE RDF Guidelines waar een vergelijkbare redenatie wordt gevolgd.

CONSTRUCT {
  ?subject mim:constraint ?constraint.
  ?constraint ?prop ?obj.
}
WHERE {
  ?modelelement mim:constraint ?constraint.
  ?subject mim:equivalent ?modelelement.
  ?constraint ?prop ?obj.
}

6.4.9 Properties

6.4.9.1 transformatie: tekstopmaak

De specificatie van de opmaak van een tekstuele beschrijving in het model.

Een mim:tekstopmaak wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:tekstopmaak ?tekstopmaak
}
WHERE {
  ?modelelement mim:tekstopmaak ?tekstopmaak.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.2 transformatie: naam

De naam van een modelelement

Een mim:naam wordt vertaald naar een rdfs:label.

Noot
Noot
CONSTRUCT {
  ?subject rdfs:label ?naam
}
WHERE {
  ?modelelement mim:naam ?naam.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.3 transformatie: alias

De alternatieve weergave van de naam.

Een mim:alias wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

Noot
CONSTRUCT {
  ?subject mim:alias ?alias
}
WHERE {
  ?modelelement mim:alias ?alias.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.4 transformatie: begrip

Verwijzing naar een begrip, vanuit een modelelement, waarmee wordt aangegeven op welk begrip, of begrippen, het informatiemodel element is gebaseerd.

Een mim:begrip wordt vertaald naar een dct:subject

CONSTRUCT {
  ?subject dct:subject ?begrip
}
WHERE {
  ?modelelement mim:begrip ?begrip.
  ?subject mim:equivalent ?modelelement
}
6.4.9.5 transformatie: begripsterm

Verwijzing naar een begrip in de vorm van de term, vanuit een modelelement, waarmee wordt aangegeven op welk begrip, of begrippen, het informatiemodel element is gebaseerd.

Een mim:begripsterm wordt één op één overgenomen. Het heeft de voorkeur om geen gebruik te maken van dit aspect, maar om gebruik te maken van het aspect mim:begrip, waarmee een directe verwijzing kan worden gemaakt naar het begrip zelf.

CONSTRUCT {
  ?subject mim:begripsterm ?begripsterm
}
WHERE {
  ?modelelement mim:begripsterm ?begripsterm.
  ?subject mim:equivalent ?modelelement
}
6.4.9.6 transformatie: definitie

De beschrijving van de betekenis van dit modelelement.

Een mim:definitie wordt vertaald naar een rdfs:comment

Rationale om niet te kiezen voor skos:definition: in de meeste Linked Data vocabulaires is het gebruikelijk om de beschrijving van een klasse op te nemen door middel van een rdfs:comment, wat ook de intentie is in het MIM. Het MIM is niet beoogd als een volledig begrippenkader. Het MIM biedt daarnaast de mogelijkheid om expliciet te verwijzen vanuit een modelelement naar een skos:Concept. Het ligt dan ook voor de hand om bij dit skos:Concept de werkelijke skos:definition op te nemen.

6.4.9.7 transformatie: toelichting

Een inhoudelijke toelichting op de definitie, ter verheldering of nadere duiding.

Een mim:toelichting wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

Aanbevolen wordt om geen gebruik te maken van mim:toelichting, maar gebruik te maken van de verwijzing naar expliciet gedefinieerde begrippen, waarbij de toelichting bij het begrip zelf wordt opgenomen.

CONSTRUCT {
  ?subject mim:toelichting ?toelichting
}
WHERE {
  ?modelelement mim:toelichting ?toelichting.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.8 transformatie: herkomst

De registratie of het informatiemodel waaraan het modelelement ontleend is dan wel de eigen organisatie indien het door de eigen organisatie toegevoegd is.

Een mim:herkomst wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:herkomst ?herkomst
}
WHERE {
  ?modelelement mim:herkomst ?herkomst.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.9 transformatie: herkomst definitie

De registratie of het informatiemodel waaruit de definitie is overgenomen dan wel een aanduiding die aangeeft uit welke bronnen de definitie is samengesteld.

Een mim:herkomstDefinitie wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

Aanbevolen wordt om geen gebruik te maken van mim:herkomstDefinitie, maar gebruik te maken van de verwijzing naar expliciet gedefinieerde begrippen, waarbij de herkomst van de definitie bij het begrip zelf wordt opgenomen.

CONSTRUCT {
  ?subject mim:herkomstDefinitie ?herkomstdefinitie
}
WHERE {
  ?modelelement mim:herkomstDefinitie ?herkomstdefinitie.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.10 transformatie: datum opname

De datum waarop het modelelement is opgenomen in het informatiemodel.

Een mim:datumOpname wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:datumOpname ?datumopname
}
WHERE {
  ?modelelement mim:datumOpname ?datumopname.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.11 transformatie: heeft tijdlijn geldigheid

Indicatie of voor dit kenmerk een tijdlijn geldigheid bijgehouden wordt en te bevragen is.

Een mim:heeftTijdlijnGeldigheid wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:heeftTijdlijnGeldigheid ?heeftTijdlijnGeldigheid
}
WHERE {
  ?modelelement mim:heeftTijdlijnGeldigheid ?heeftTijdlijnGeldigheid.
  ?subject mim:equivalent ?modelelement.
}
Noot
6.4.9.12 transformatie: indicatie materiële historie

Indicatie of de materiële historie van het kenmerk van het object te bevragen is.

Een mim:indicatieMaterieleHistorie wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:indicatieMaterieleHistorie ?indicatiematerielehistorie
}
WHERE {
  ?modelelement mim:indicatieMaterieleHistorie ?indicatiematerielehistorie.
  ?subject mim:equivalent ?modelelement.
}
Noot
6.4.9.13 transformatie: heeft tijdlijn registratie

Indicatie of voor dit kenmerk een tijdlijn geldigheid bijgehouden wordt en te bevragen is.

Een mim:heeftTijdlijnRegistratie wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:heeftTijdlijnRegistratie ?heeftTijdlijnRegistratie
}
WHERE {
  ?modelelement mim:heeftTijdlijnRegistratie ?heeftTijdlijnRegistratie.
  ?subject mim:equivalent ?modelelement.
}
Noot
6.4.9.14 transformatie: indicatie formele historie

Indicatie of de formele historie van het kenmerk van het object bijgehouden wordt en te bevragen is.

Een mim:indicatieFormeleHistorie wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:indicatieFormeleHistorie ?indicatieformelehistorie
}
WHERE {
  ?modelelement mim:indicatieFormeleHistorie ?indicatieformelehistorie.
  ?subject mim:equivalent ?modelelement.
}
Noot
6.4.9.15 transformatie: kardinaliteit

De mim:kardinaliteit wordt vertaald naar sh:minCount en sh:maxCount. Daarbij wordt de volgende tabel gebruikt om de string-waarde van mim:kardinaliteit om te zetten. Een - betekent dat de betreffende triple niet wordt opgenomen in het model.

Daarnaast wordt min:kardinaliteit ook direct overgenomen in het vertaalde model. De reden hiervoor is tweeledig. Enerzijds maakt het daarmee eenvoudiger om de originele kardinaliteit weer te geven. Voor niet-SHACL experts kan het verwarrend zijn dat het ontbreken van zowel sh:minCount als sh:maxCount betekent dat sprake is van een 0..* kardinaliteit. Anderzijds maakt het de terugvertaling in geval van een min:mogelijkGeenWaarde mogelijk, aangezien dit veld invloed kan hebben op de sh:minCount (zie ook mogelijk-geen-waarde).

mim:kardinaliteit sh:minCount sh:maxCount
1 1 1
* - -
0..1 - 1
0..* - -
1..1 1 1
1..* 1 -
a..z a z

In de laatste regel moet voor a en z een geheel getal vanaf 1 worden gelezen.

CONSTRUCT {
  ?propertyshape sh:minCount ?mincount.
}
WHERE {
  ?modelelement mim:kardinaliteit ?kardinaliteit.
  ?modelelement mim:mogelijkGeenWaarde ?mogelijkgeenwaarde.
  ?propertyshape mim:equivalent ?modelelement.
  BIND (t:mincount(?kardinaliteit) as ?mincount)
  FILTER(NOT(?mogelijkgeenwaarde))
}

CONSTRUCT {
  ?propertyshape sh:maxCount ?maxcount.
}
WHERE {
  ?modelelement mim:kardinaliteit ?kardinaliteit.
  ?propertyshape mim:equivalent ?modelelement.
  BIND (t:maxcount(?kardinaliteit) as ?maxcount)
}
6.4.9.16 transformatie: authentiek

Aanduiding of het kenmerk een authentiek gegeven betreft.

Een mim:authentiek wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:authentiek ?authentiek
}
WHERE {
  ?modelelement mim:authentiek ?authentiek.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.17 transformatie: indicatie afleidbaar

Aanduiding dat gegeven afleidbaar is uit andere attribuut- en/of relatiesoorten.

Een mim:indicatieAfleidbaar wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:indicatieAfleidbaar ?indicatieafleidbaar
}
WHERE {
  ?modelelement mim:indicatieAfleidbaar ?indicatieafleidbaar.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.18 transformatie: mogelijk geen waarde

Aanduiding dat van een aspect geen waarde is geregistreerd, maar dat onduidelijk is of de waarde er werkelijk ook niet is.

Een mim:mogelijkGeenWaarde wordt direct, zonder aanpassing, overgenomen in het vertaalde model, waarbij in een enkel geval een aanpassing wordt gedaan aan de manier waarop mim:kardinaliteit wordt getransformeerd.

Linked Data gaat in beginsel uit van een "open word assumptie". Dit houdt onder andere in dat Linked Data er van uitgaat dat elk aspect mogelijk geen waarde kan hebben. Met SHACL kan deze assumptie worden beperkt. Zo zal bij een verplicht veld (zoals kardinaliteit 1..* of 1..1) daadwerkelijk ook een waarde aanwezig moeten zijn. Het MIM gaat in beginsel uit van een "closed world assumptie", het veld mim:mogelijkGeenWaarde is juist bedoeld om deze assumptie te verruimen. Doordat het veld mim:mogelijkGeenWaarde altijd een waarde heeft ("Ja" of "Nee"), kan het veld ook worden gelezen als als de waarde in de werkelijkheid bestaat, dan is deze ook aanwezig. Dit maakt dat het veld mim:mogelijkGeenWaarde feitelijk in de context van Linked Data het model in vele gevallen een gesloten model maakt, vandaar ook het gebruik van SHACL waarmee we deze beperkingen kunnen opleggen. Indien sprake is van een "mogelijk geen waarde" dan is het wel noodzakelijk om de transformatieregel voor mim:kardinaliteit aan te passen, conform onderstaande tabel:

mim:mogelijkGeenWaarde mim:kardinaliteit Aanpassing
Nee 0..x geen
Nee 1..x geen
Ja 0..x geen
Ja 1..x sh:minCount verwijderd
Ja n..x (met n>1) sh:minCount verwijderd

"sh:minCount verwijderd" houdt in dat de kardinaliteit 0..x wordt. Deze aanpassing is opgenomen in de transformatieregel van 6.4.9.15 transformatie: kardinaliteit.

Zie ook het NEN3610 Linked Data Profiel 7.3.4.2.3 Attribuut met stereotype «voidable» voor meer achtergrondinformatie.

CONSTRUCT {
  ?subject mim:mogelijkGeenWaarde ?mogelijkgeenwaarde
}
WHERE {
  ?modelelement mim:mogelijkGeenWaarde ?mogelijkgeenwaarde.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.19 transformatie: locatie

Als het type van het attribuutsoort een waardelijst is, dan wordt hier de locatie waar deze te vinden is opgegeven.

Een mim:locatie wordt direct, zonder aanpassing, overgenomen in het vertaalde model. Daarnaast wordt dit veld gebruikt bij het achterhalen van de inhoud van een waardelijst.

6.4.9.20 transformatie: type

Het datatype waarmee waarden van deze attribuutsoort worden vastgelegd.

De vertaling van een mim:type hangt af van de vertaling van het datatype waar naar wordt verwezen:

  • Voor standaard datatypen wordt vertaald naar een sh:datatype;
  • Voor eigen gespecificeerde primitieve datatypen wordt vertaald naar een sh:node;
  • Voor gestructureerde datatypen wordt vertaald naar een sh:node;
  • Voor een enumeratie wordt vertaald naar een sh:node;
  • Voor een referentielijst wordt vertaald naar een sh:node;
  • Voor een codelijst wordt vertaald naar een sh:node;
  • Voor een keuze wordt de vertaling opgepakt bij de transformatieregel van keuze zelf (zie:6.4.6.5 Transformatie: Keuze);
  • In geval van zelfgespecificeerde datatypen wordt vertaald conform het betreffende supertype.
CONSTRUCT {
  ?subject sh:datatype ?datatype
}
WHERE {
  ?modelelement mim:type ?type.
  ?type rdfs:subClassOf*/rdf:type mim:PrimitiefDatatype.
  ?subject mim:equivalent ?modelelement.
  ?datatype mim:equivalent ?type.
  ?datatype a rdfs:Datatype.
}

CONSTRUCT {
  ?subject sh:node ?datatype
}
WHERE {
  ?modelelement mim:type ?type.
  ?type rdfs:subClassOf*/rdf:type ?mimtype.
  ?subject mim:equivalent ?modelelement.
  ?subject a sh:NodeShape.
  ?datatype mim:equivalent ?type.
  FILTER (?mimtype = mim:GestructureerdDatatype
       || ?mimtype = mim:Enumeratie
       || ?mimtype = mim:Referentielijst
       || ?mimtype = mim:Codelijst
       || (?mimtype = mim:PrimitiefDatatype && ?datatypetype != rdfs:Datatype)
  )
}
6.4.9.21 transformatie: lengte

De aanduiding van de lengte van een gegeven, in de vorm van de aangegeven notatiewijze.

Afhankelijk van de notatiewijze vindt de transformatie plaats. Deze transformatie is niet van toepassing op het gebruik van lengte voor getallen (aantal cijfers voor- en/of na de komma).

Een mim:lengte wordt vertaald naar sh:minLength en/of sh:maxLength, conform onderstaande tabel.

Notatiewijze sh:minLength sh:maxLength Betekenis
1 1 1 De lengte is exact 1 karakter
..99 99 De lengte is maximaal 99 karakters, geen minimum aangegeven
1.. 1 De lengte is minimaal 1 karakter, geen maximum aangegeven
1..99 1 99 De lengte is minimaal 1 karakter en maximaal 99 karakters
CONSTRUCT {
  ?subject sh:minLength ?minlength
}
WHERE {
  ?modelelement mim:lengte ?lengte.
  ?subject mim:equivalent ?modelelement.
  BIND (t:mincount(?lengte) as ?minlength)
}

CONSTRUCT {
  ?subject sh:maxLength ?maxlength
}
WHERE {
  ?modelelement mim:lengte ?lengte.
  ?subject mim:equivalent ?modelelement.
  BIND (t:maxcount(?lengte) as ?maxlength)
}
6.4.9.22 transformatie: patroon

De verzameling van waarden die gegevens van deze attribuutsoort kunnen hebben, oftewel het waardenbereik, uitgedrukt in een specifieke structuur.

De structuur van mim:patroon is in woorden beschreven. Deze wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:patroon ?patroon
}
WHERE {
  ?modelelement mim:patroon ?patroon.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.23 transformatie: formeel patroon

Zoals patroon, formeel vastgelegd, uitgedrukt in een formele taal die door de computer wordt herkend.

mim:formeelPatroon wordt beschreven met sh:pattern.

Noot
CONSTRUCT {
  ?subject sh:pattern ?formeelpatroon
}
WHERE {
  ?modelelement mim:formeelPatroon ?formeelpatroon.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.24 transformatie: unieke aanduiding

Voor objecttypen die deel uitmaken van een (basis)registratie of informatiemodel betreft dit de wijze waarop daarin voorkomende objecten (van dit type) uniek in de registratie worden aangeduid.

Een mim:uniekeAanduiding wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:uniekeAanduiding ?uniekeaanduiding
}
WHERE {
  ?modelelement mim:uniekeAanduiding ?uniekeaanduiding.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.25 transformatie: populatie

Voor objecttypen die deel uitmaken van een (basis)registratie betreft dit de beschrijving van de exemplaren van het gedefinieerde objecttype die in de desbetreffende (basis)­registratie voorhanden zijn.

Een mim:populatie wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:populatie ?populatie
}
WHERE {
  ?modelelement mim:populatie ?populatie.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.26 transformatie: kwaliteit

Beschrijving van de mate waarin in de registratie opgenomen objecten van het desbetreffende type volledig, juist, actueel, nauwkeurig en betrouwbaar zijn.

Een mim:kwaliteit wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:kwaliteit ?kwaliteit
}
WHERE {
  ?modelelement mim:kwaliteit ?kwaliteit.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.27 transformatie: indicatie abstract object

Indicatie dat het objecttype een generalisatie is, waarvan een object als specialisatie altijd voorkomt in de hoedanigheid van één (en slechts één) van de specialisaties van het betreffende objecttype.

In een MIM conform informatiemodel kunnen zowel abstracte als concrete klassen voorkomen. In UML kun je daarvan afleiden dat je geen instanties mag hebben van abstracte klassen, maar alleen van concrete klassen. In RDF wordt geen onderscheid gemaakt tussen het abstract of concreet zijn van klassen. In RDF worden klassen beschouwd als sets van dingen. Als je een set kunt beschrijven, dan kunnen er ook dingen zijn die tot die set behoren.

Een mim:indicatieAbstractObject wordt aanvullend direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:indicatieAbstractObject ?indicatieabstractobject.
}
WHERE {
  ?modelelement mim:indicatieAbstractObject ?indicatieabstractobject.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.28 transformatie: identificerend

Een kenmerk van een objecttype die aangeeft of deze eigenschap uniek identificerend is voor alle objecten in de populatie van objecten van dit objecttype.

Een mim:identificerend wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:identificerend ?identificerend
}
WHERE {
  ?modelelement mim:identificerend ?identificerend.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.29 transformatie: gegevensgroeptype (eigenschap)

De verwijzing naar het bijbehorende gegevensgroeptype.

Een mim:gegevensgroeptype wordt vertaald naar een sh:class met als waarde de URI van de class die het bijbehorende gegevensgroeptype representeert. Zie Gegevensgroep en Gegevensgroeptype voor meer uitleg.

CONSTRUCT {
  ?subject sh:class ?object
}
WHERE {
  ?modelelement mim:gegevensgroeptype ?gegevensgroeptype.
  ?subject mim:equivalent ?modelelement.
  ?subject a sh:NodeShape.
  ?object mim:equivalent ?gegevensgroeptype.
  ?object a owl:Class.
}
6.4.9.30 transformatie: unidirectioneel

In Linked Data is een relatiesoort feitelijk automatisch unidirectioneel, tenzij aanvullende maatregelen worden genomen waardoor de relatiesoort vanuit twee kanten kan worden bekeken. Dit betekent dat de vertaling van unidirectioneel juist wordt opgepakt op het moment dat niet sprake is van unidirectioneel (de waarde van het metakenmerk is false).

Indien sprake is van geen unidirectionaliteit, dan wordt een owl:inverseOf relatie gelegd tussen de relatierol die aan de bron-kant van de relatiesoort ligt en de relatierol die aan de doel-kant van de relatiesoort ligt. Merk op dat "unidirectioneel" alleen betekenis heeft als zowel de doel als bron kant van de relatiesoort zijn beschreven als relatierollen. Anders is de relatiesoort per definitie unidirectioneel vanuit het perspectief van Linked Data.

CONSTRUCT {
  ?doel sh:inverseOf ?bron.
  ?bron sh:inverseOf ?doel.
}
WHERE {
  ?relatiesoort mim:relatierol ?relatierolbron.
  ?relatiesoort mim:relatierol ?relatieroldoel.
  ?relatiesoort mim:unidirectioneel false .
  ?relatierolbron a mim:RelatierolDoel.
  ?relatieroldoel a mim:RelatierolDoel.
  ?doel mim:equivalent ?relatieroldoel.
  ?bron mim:equivalent ?relatierolbron.
}
6.4.9.31 transformatie: bron

Aanduiding van het bronobject in een relatie tussen objecten. Een bronoject heeft middels een relatiesoort een relatie met een doelobject.

Een mim:bron wordt vertaald naar een sh:property die hoort bij de de NodeShape van het objecttype. Zie voor meer informatie over hoe relaties tussen objecttypen worden vertaald de paragrafen Relatiesoort en Externe koppeling.

CONSTRUCT {
  ?objecttype sh:property ?modelelement
}
WHERE {
  ?modelelement mim:bron ?objecttype.
  ?subject mim:equivalent ?modelelement.
  ?object mim:equivalent ?objecttype.
}
6.4.9.32 transformatie: doel

Aanduiding van het gerelateerde objecttype die het eindpunt van de relatie aangeeft. Naar objecten van dit objecttype wordt verwezen.

Een mim:doel wordt vertaald naar een sh:class met als waarde de URI van de Class die het gerelateerde objecttype representeert. Zie voor meer informatie over hoe relaties tussen objecttypen worden vertaald de paragrafen Relatiesoort en Externe koppeling.

CONSTRUCT {
  ?subject sh:class ?object
}
WHERE {
  ?modelelement mim:doel ?gerelateerdobjecttype.
  ?subject mim:equivalent ?modelelement.
  ?object mim:equivalent ?gerelateerdobjecttype.
}
6.4.9.33 transformatie: aggregatietype

Aanduiding of het objecttype die de eigenaar is van een relatie het doel van relatie ziet als een samen te voegen onderdeel.

Aggregatie- en compositie-associaties worden gemodelleerd zoals simpele relatiesoorten, gebruikmakend van de specifieke naam die de associatie in het oorspronkelijke model heeft. Een mim:aggregatietype wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:aggregatietype ?aggregatietype
}
WHERE {
  ?modelelement mim:aggregatietype ?aggregatietype.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.34 transformatie: code

De in een registratie of informatiemodel aan de enumeratiewaarde toegekend unieke code (niet te verwarren met alias, zoals bedoeld in 2.6.1).

Een mim:code wordt vertaald naar een skos:notation.

CONSTRUCT {
  ?subject skos:notation ?notation
}
WHERE {
  ?modelelement mim:code ?notation.
  ?subject mim:equivalent ?modelelement
}
6.4.9.35 transformatie: specificatie-tekst

De specificatie van de constraint in normale tekst.

Een mim:specificatieTekst wordt direct, zonder aanpassing, overgenomen in het vertaalde model, als onderdeel van de transformatieregel voor constraints.

CONSTRUCT {
  ?subject skos:specificatieTekst ?specificatietekst
}
WHERE {
  ?modelelement mim:specificatieTekst ?specificatietekst.
  ?subject mim:equivalent ?modelelement
}
6.4.9.36 transformatie: specificatie-formeel

De beschrijving van de constraint in een formele specificatietaal, in OCL.

Een mim:specificatieFormeel wordt direct, zonder aanpassing, overgenomen in het vertaalde model, als onderdeel van de transformatieregel voor constraints.

CONSTRUCT {
  ?subject skos:specificatieFormeel ?specificatieformeel
}
WHERE {
  ?modelelement mim:specificatieFormeel ?specificatieformeel.
  ?subject mim:equivalent ?modelelement
}
6.4.9.37 transformatie: attribuut

Een mim:attribuut wordt vertaald naar een sh:property die hoort bij de de NodeShape van de bezitter van het attribuut. Zie ook Attribuutsoort.

CONSTRUCT {
  ?nodeshape sh:property ?propertyshape
}
WHERE {
  ?modelelement mim:attribuut ?attribuutsoort.
  ?nodeshape mim:equivalent ?modelelement.
  ?nodeshape a sh:NodeShape.
  ?propertyshape mim:equivalent ?attribuutsoort.
  ?propertyshape a sh:PropertyShape.

}
6.4.9.38 transformatie: gegevensgroep (eigenschap)

Een mim:gegevensgroep wordt vertaald naar een sh:property die hoort bij de de NodeShape van de bezitter van het attribuut. Zie ook Gegevensgroep.

CONSTRUCT {
  ?nodeshape sh:property ?propertyshape
}
WHERE {
  ?modelelement mim:gegevensgroep ?gegevensgroep.
  ?nodeshape mim:equivalent ?modelelement.
  ?nodeshape a sh:NodeShape.
  ?propertyshape mim:equivalent ?gegevensgroep.
  ?propertyshape a sh:PropertyShape.

}
6.4.9.39 transformatie: indicatie classificerend

Een mim:indicatieClassificerend kent een complexe vertaling. De betekenis van dit veld is dat dit veld een waardelijst kent, waarbij de waarden zelf feitelijk als subklassen gezien moeten worden van het objecttype waartoe het attribuutsoort hoort die deze indicatie heeft.

De vertaling hieronder gaat er vanuit dat sprake is van een enumeratie. In geval van een referentielijst dan geldt een vergelijkbare constructie. Echter, omdat bij een referentielijst de waarden zelf niet onderdeel zijn van het model, kan niet met zekerheid wordt gesteld dat alle gegevens aanwezig zijn voor een vertaling.

Bij de vertaling worden de mim:Enumeratiewaarden omgezet naar een owl:Class, waarbij een rdfs:subClassOf relatie wordt gelegd tussen deze klasse en de owl:Class die het equivalent is van het mim:Objecttype dat bij de mim:Attribuutsoort hoort met de indicatie classificerend.

Aangezien de overige metagegevens getransformeerd worden op basis van de mim:equivalent relatie, is het van belang dat onderstaande transformatie wordt uitgevoerd vóór de transformatie van de overige metakenmerken, maar ná de transformatie van de metaklassen.

CONSTRUCT {
  ?class a owl:Class.
  ?class rdfs:subClassOf ?superclass.
  ?class mim:equivalent ?enumeratiewaarde.
}
WHERE {
  ?objecttype mim:attribuut ?attribuutsoort.
  ?objecttype mim:equivalent ?superclass.
  ?superclass a owl:Class.
  ?attribuutsoort mim:indicatieClassificerend true .
  ?attribuutsoort mim:type ?enumeratie.
  ?enumeratie mim:waarde ?enumeratiewaarde.
  ?enumeratiewaarde mim:identificatie ?identificatie.
  BIND (IRI(STR(?identificatie)) as ?class)
}
6.4.9.40 transformatie: bevat modelelement

Een mim:bevatModelelement wordt vertaald naar een rdfs:isDefinedByvoor zover modelelementen vertaald worden naar een owl:Class, owl:DatatypeProperty of owl:ObjectProperty. Merk op dat de vertaling in de omgekeerde richting is. Als bijvoorbeeld een Domein X modelelement Objecttype Y bevat, dan zal de relatie rdfs:isDefinedBy gaan lopen vanaf de klasse Y naar de Ontology X. In geval er sprake is van een owl:Ontology, dan wordt vertaald naar owl:imports.

In MIM is het niet nodig om voor alle modelelementen rechtstreeks aan te geven welke package dit modelelement bezit: het is ook mogelijk dat dit via andere modelelementen loopt. Als een rechtstreekse relatie niet aanwezig is, dan wordt deze afgeleide relatie gebruikt.

CONSTRUCT {
  ?class rdfs:isDefinedBy ?ontology
}
WHERE {
  ?package mim:bevatModelelement ?modelelement.
  ?package mim:equivalent ?ontology.
  ?modelelement mim:equivalent ?class.
  ?class a owl:Class.
}
CONSTRUCT {
  ?property rdfs:isDefinedBy ?ontology
}
WHERE {
  ?package mim:bevatModelelement ?eigenaar.
  ?eigenaar ?eigenaarrelatie ?modelelement
  ?package mim:equivalent ?ontology.
  ?modelelement mim:equivalent ?property.
  FILTER NOT EXISTS {?package mim:bevatModelelement ?modelelement}
  FILTER (?eigenaarrelatie=mim:attribuut
       || ?eigenaarrelatie=mim:dataElement
       || ?eigenaarrelatie=mim:waarde
       || ?eigenaarrelatie=mim:referentieElement
       || ?eigenaarrelatie=mim:constraint)
}
CONSTRUCT {
  ?property rdfs:isDefinedBy ?ontology
}
WHERE {
  ?package mim:bevatModelelement ?eigenaar.
  ?modelelement ?eigenaarrelatie ?eigenaar
  ?package mim:equivalent ?ontology.
  ?modelelement mim:equivalent ?eigenschap.
  FILTER NOT EXISTS {?package mim:bevatModelelement ?modelelement}
  FILTER (?eigenaarrelatie=mim:bron
       || ?eigenaarrelatie=mim:subtype)
}
CONSTRUCT {
  ?ontology owl:imports ?importontology
}
WHERE {
  ?package mim:bevatModelelement ?subpackage.
  ?package mim:equivalent ?ontology.
  ?subpackage mim:equivalent ?importedontology.
  ?importedontology a owl:Ontology.
}
6.4.9.41 transformatie: minimumwaarde inclusief

De ondergrens van het waardebereik voor een attribuutsoort of data element getypeerd met een primitief datatype, inclusief die waarde zelf. De minimumwaarde moet van hetzelfde primitieve datatype zijn als het datatype van het modelelement waar het voor geldt.

De mim:minimumwaardeInclusief wordt vertaald naar sh:minInclusive. De datatype van de waarde van sh:minInclusive wordt afgeleid op basis van het primitief datatype wat het mim:type is van het modelelement waarvoor de mim:minimumwaardeInclusief gespecificeerd is.

CONSTRUCT {
  ?propertyshape sh:minInclusive ?minInclusive.
}
WHERE {
  ?modelelement mim:minimumwaardeInclusief ?minimumwaardeInclusief .
  ?modelelement mim:type ?datatype .
  ?propertyshape mim:equivalent ?modelelement .
  ?datatype a mim:PrimitiefDatatype .
  bind(t:cast(?minimumwaardeInclusief, ?datatype) as ?minInclusive)
}
6.4.9.42 transformatie: minimumwaarde exclusief

De ondergrens van het waardebereik voor een attribuutsoort of data element getypeerd met een primitief datatype, exclusief die waarde zelf. De minimumwaarde moet van hetzelfde primitieve datatype zijn als het datatype van het modelelement waar het voor geldt.

De mim:minimumwaardeExclusief wordt vertaald naar sh:minExclusive. De datatype van de waarde van sh:minExclusive wordt afgeleid op basis van het primitief datatype wat het mim:type is van het modelelement waarvoor de mim:minimumwaardeExclusief gespecificeerd is.

CONSTRUCT {
  ?propertyshape sh:minExclusive ?minExclusive.
}
WHERE {
  ?modelelement mim:minimumwaardeExclusief ?minimumwaardeExclusief .
  ?modelelement mim:type ?datatype .
  ?propertyshape mim:equivalent ?modelelement .
  ?datatype a mim:PrimitiefDatatype .
  bind(t:cast(?minimumwaardeExclusief, ?datatype) as ?minExclusive)
}
6.4.9.43 transformatie: maximumwaarde inclusief

De bovengrens van het waardebereik voor een attribuutsoort of data element getypeerd met een primitief datatype, inclusief die waarde zelf. De maximumwaarde moet van hetzelfde primitieve datatype zijn als het datatype van het modelelement waar het voor geldt.

De mim:maximumwaardeInclusief wordt vertaald naar sh:maxInclusive. De datatype van de waarde van sh:maxInclusive wordt afgeleid op basis van het primitief datatype wat het mim:type is van het modelelement waarvoor de mim:maximumwaardeInclusief gespecificeerd is.

CONSTRUCT {
  ?propertyshape sh:maxInclusive ?maxInclusive.
}
WHERE {
  ?modelelement mim:maximumwaardeInclusief ?maximumwaardeInclusief .
  ?modelelement mim:type ?datatype .
  ?propertyshape mim:equivalent ?modelelement .
  ?datatype a mim:PrimitiefDatatype .
  bind(t:cast(?maximumwaardeInclusief, ?datatype) as ?maxInclusive)
}
6.4.9.44 transformatie: maximumwaarde exclusief

De bovengrens van het waardebereik voor een attribuutsoort of data element getypeerd met een primitief datatype, exclusief die waarde zelf. De maximumwaarde moet van hetzelfde primitieve datatype zijn als het datatype van het modelelement waar het voor geldt.

De mim:maximumwaardeExclusief wordt vertaald naar sh:maxExclusive. De datatype van de waarde van sh:maxExclusive wordt afgeleid op basis van het primitief datatype wat het mim:type is van het modelelement waarvoor de mim:maximumwaardeExclusief gespecificeerd is.

CONSTRUCT {
  ?propertyshape sh:maxExclusive ?maxExclusive.
}
WHERE {
  ?modelelement mim:maximumwaardeExclusief ?maximumwaardeExclusief .
  ?modelelement mim:type ?datatype .
  ?propertyshape mim:equivalent ?modelelement .
  ?datatype a mim:PrimitiefDatatype .
  bind(t:cast(?maximumwaardeExclusief, ?datatype) as ?maxExclusive)
}
6.4.9.45 transformatie: mixin

Metagegeven om bij een generalisatie aan te geven dat bij een implementatie die geen multiple inheritance ondersteunt de eigenschappen van de superklasse worden overgenomen door de subklasse. De superklasse zelf komt niet in de implementatie voor.

Een mim:mixin wordt direct, zonder aanpassing, overgenomen in het vertaalde model.

CONSTRUCT {
  ?subject mim:mixin ?mixin
}
WHERE {
  ?modelelement mim:mixin ?mixin.
  ?subject mim:equivalent ?modelelement.
}
6.4.9.46 transformatie: eenheid

Aanduiding van de eenheid die bij een meting of waarneming hoort.

Een mim:eenheid wordt direct, zonder aanpassing, overgenomen in het vertaalde model. Dit heeft tot gevolg dat bij de betreffende PropertyShape via mim:eenheid duidelijk is over welke eenheid het gaat.

CONSTRUCT {
  ?subject mim:eenheid ?eenheid
}
WHERE {
  ?modelelement mim:eenheid ?eenheid.
  ?subject mim:equivalent ?modelelement.
}

Er is niet gekozen voor een oplossing om attribuutsoorten te kwalificeren (bijvoorbeeld via een blank node en rdf:value). De reden is dat MIM ervoor kiest om de eenheid mee te nemen in de definitie van een attribuutsoort, dwz: één attribuutsoort heeft ook altijd (maximaal) één eenheid. Als de waarde in meerdere eenheden uit te drukken is (bijvoorbeeld lengte in mm en cm), dan is sprake van twee attribuutsoorten.

6.4.10 Transformatie vanuit RDFS/OWL/SHACL

Een Linked Data model dat is uitgedrukt in RDFS/OWL/SHACL kan gelezen worden als een MIM model. Hiervoor dient het model wel eerste getransformeerd te worden naar de MIM vocabulaire. Vervolgens dient het resultaat te voldoen aan de minimale eisen die worden gesteld aan een MIM vocabulaire.

Onderstaande tabellen geeft een overzicht van de wijze waarop de vertaling plaatsvindt. Naast deze tabel is ook een set van SPARQL statement beschikbaar gesteld (zie: rdf2mim.sparql) waarmee de transformatie automatisch kan worden uitgevoerd.

RDFS term MIM-klasse Uitleg
sh:NodeShape met sh:targetClass mim:Objecttype Een nodeshape met een targetClass verwijst naar zowel de structuur als de betekenis, zoals ook bij een objecttype
sh:NodeShape zonder sh:targetClass mim:GestructureerdDatatype Een nodeshape zonder targetClass is enkel een structuur, dwz: een gestructureerd datatype
sh:PropertyShape met sh:datatype mim:Attribuutsoort Een propertyshape met een datatype betreft een attribuutsoort
sh:PropertyShape met sh:node mim:Attribuutsoort Een propertyshape met een verwijzing naar een nodeshape betreft een attribuutsoort met een enumeratie of gestructureerd datatype (maar geen relatie naar een objecttype)
sh:PropertyShape met sh:class mim:Relatiesoort Een propertyshape met een verwijzing naar een andere klasse betreft een relatiesoort
sh:NodeShape gelinkt aan skos:inScheme of skos:member mim:Referentielijst Een nodeshape die gelinkt is aan een skos:ConceptScheme of skos:Collection betreft een referentielijst
rdfs:subClassOf mim:Generalisatie De rdfs:subClassOf eigenschap betreft een generalisatie-specialisatie constructie

Aspecten:

RDFS term MIM-aspect Uitleg
IRI mim:identificatie De identificatie (URI) van het modelelement wordt in mim vastgelegd als eigenschap
rdfs:label, sh:name mim:naam Het rdfs:label (of sh:name als een meer technische naam gewenst is) van een nodeshape of class betreft de naam
skos:altLabel, skos:prefLabel, rdfs:label, sh:name mim:alias skos:altLabel is letterlijk een alias, sh:name is ook een alias en wordt met name gebruikt voor meer technische namen, terwijl skos:prefLabel of skos:altLabel vaak een meer functionele naam bevat
dct:subject mim:begrip dct:subject geeft dezelfde relatie weer als mim:begrip
rdfs:comment mim:definitie rdfs:comment wordt in de praktijk gebruikt op de manier als de mim:definitie. Merk op dat skos:definition hier niet wordt toegepast, omdat vanuit het MIM aanbevolen wordt om hiervoor een afzonderlijk begrippenkader op te stellen (via dct:subject / mim:begrip)
sh:minCount en sh:maxCount mim:kardinaliteit De kardinaliteit wordt bepaald door sh:minCount en sh:maxCount
sh:datatype mim:type Voor eenvoudige (data)type wordt sh:datatype gebruikt
sh:node mim:type Indien het datatype een gestructureerd datatype of enumeratie betreft, dan betreft de sh:node de relatie naar het datatype
sh:minLength en sh:maxLength mim:lengte De lengte wordt bepaald door sh:minLength en sh:maxLength
sh:pattern mim:formeelPatroon Identieke betekenis
sh:class mim:doel Indien een propertyshape een relatiesoort voorstelt, dan geeft sh:class het doel van de relatiesoort weer

Er zijn ook MIM aspecten die niet een overeenkomstige tegenhanger kennen in RDFS/OWL/SHACL. Indien een modelleur deze aspecten wel wil beschrijven in het originele RDFS/OWL/SHACL model, dan kan de modelleur deze direct toepassen. Het gaat daarbij om de volgende aspecten:

MIM-aspect zonder tegenhanger in RDFS/OWL/SHACL Opmerking
mim:begripsterm Het wordt afgeraden om dit element te gebruiken, en in plaats daarvan direct te verwijzen naar het begrip zelf
mim:toelichting Het wordt afgeraden om dit element te gebruiken, en dergelijke toelichtingen op te nemen bij het begrip zelf
mim:herkomst Het wordt afgeraden om dit element te gebruiken, en dergelijke toelichtingen op te nemen bij het begrip zelf
mim:herkomstDefinitie Het wordt afgeraden om dit element te gebruiken, en dergelijke toelichtingen op te nemen bij het begrip zelf
mim:datumOpname Indien de ontologie onder versiebeheer staat, dan kan dit aspect afgeleid worden uit het versiesysteem
mim:authentiek Specifiek MIM aspect, belangrijk voor stelselcatalogus
mim:indicatieAfleidbaar
mim:kardinaliteitRelatieBron Dit betreft de kardinaliteit van de inverse relatie die in het geval van het gebruik van dit aspect niet aanwezig is
mim:locatie Dis aspect is alleen van toepassing op waardelijsten en wordt direct, zonder aanpassing, overgenomen in het vertaalde model.
mim:patroon Dit betreft een tekstuele variant van sh:pattern / mim:formeelPatroon
mim:populatie Specifiek MIM aspect, belangrijk voor stelselcatalogus
mim:kwaliteit Specifiek MIM aspect, belangrijk voor stelselcatalogus
mim:indicatieAbstractObject Het concept van abstract object is minder scherp in LD dan in het MIM. Hoewel deze indicatie is om te zetten in een expliciete constraint, zal het in de praktijk makkelijker leesbaar zijn om dit aspect expliciet op te nemen
mim:identificerend In LD is de URI zelf de identificatie. Met dit aspect kan aangegeven worden dat specifieke propertyshapes ook identificerend zijn
mim:aggregatietype Het aggregatietype zoals beoogd in het MIM is niet direct in RDFS/OWL/SHACL uit te drukken en kan zo alsnog worden toegelicht bij een propertyshape
mim:specificatieTekst Het gebruik van dit aspect ligt niet voor de hand, zie de opmerking onder deze tabel
mim:specificatieFormeel Het gebruik van dit aspect ligt niet voor de hand, zie de opmerking onder deze tabel
mim:constraint Dit aspect verwijst, via een mim:Constraint direct terug naar de originele shape-constraint in LD

In het MIM is het mogelijk om een constraint te beschrijven als een afzonderlijk modelelement mim:Constraint. Het idee hierachter is dat voor dergelijke constraints geen metamodelelementen beschikbaar zijn, en dat dit in een afzonderlijke formele (of informele) taal opgenomen moet worden. In Linked Data is het echter gebruikelijk om in dergelijke gevallen het metamodel uit te breiden met specifieke constructies voor een dergelijke formalisatie: Linked Data modellen zijn van nature open en uitbreidbare modellen, waarbij universele identificaties (URI's) ervoor zorgen dat de verschillende (meta)modelelementen uit elkaar gehouden kunnen worden.

Het ligt dan ook meer voor de hand om gebruik te (blijven) maken van dergelijke constructies in Linked Data. Dit wordt uitgelegd aan de hand van onderstaand voorbeeld.

Voorbeeld

Van een objecttype "Persoon" leggen we de geboortedatum en de datum van overlijden vast. Daarbij geldt dat de geboortedatum vóór, of gelijk moet zijn aan de datum van overlijden.

In het MIM zou dit als volgt uitgedrukt kunnen worden:

vb:Persoon a mim:Objecttype;
  mim:naam "Persoon";
  mim:attribuut vb:geboortedatum;
  mim:attribuut vb:overlijdensdatum;
  mim:constraint [
    mim:specificatieTekst "Het is niet mogelijk dat een persoon overlijdt voordat deze is geboren.";
    mim:specificatieFormeel "geboortedatum <= overlijdensdatum";
  ]
.
vb:geboortedatum a mim:Attribuutsoort;
  mim:naam "geboortedatum";
  mim:datatype mim:Date;
  mim:kardinaliteit "1"
.
vb:overlijdensdatum a mim:Attribuutsoort;
  mim:naam "overlijdensdatum";
  mim:datatype mim:Date;
  mim:kardinaliteit "0..1"
.

In RDF/RDFS/SHACL zou je dit als volgt uitdrukken (waarbij SHACL wordt gebruikt als formele taal):

shape:Persoon a sh:NodeShape;
  sh:targetClass voc:Persoon;
  sh:property shape:geboortedatum
  sh:property shape:overlijdensdatum
  sh:property shape:geboorteVSoverlijden
.
shape:geboortedatum a sh:PropertyShape;
  sh:path voc:geboortedatum;
  sh:datatype xsd:date;
  sh:minCount 1;
  sh:maxCount 1;
.
shape:overlijdensdatum a sh:PropertyShape;
  sh:path voc:overlijdensdatum;
  sh:datatype xsd:date;
  sh:maxCount 1;
.
shape:geboorteVSoverlijden a sh:PropertyShape;
  sh:path voc:geboortedatum;
  sh:lessThanOrEquals voc:overlijdensdatum
  sh:message "Het is niet mogelijk dat een persoon overlijdt voordat deze is geboren."
.

Bij de terugvertaling naar het MIM, kan bovenstaande formalisatie `sh:lessThanOrEquals` gehandhaafd blijven, waarbij de link wordt gelegd via het metagegeven `mim:equivalent`:


vb:Meting a mim:Objecttype;
  mim:naam "Meting";
  mim:attribuut vb:temperatuur;
  min:constraint [
    a mim:Constraint;
    mim:equivalent shape:geboorteVSoverlijden.
  ];
.
shape:geboorteVSoverlijden a sh:PropertyShape;
  sh:path voc:geboortedatum;
  sh:lessThanOrEquals voc:overlijdensdatum
  sh:message "Het is niet mogelijk dat een persoon overlijdt voordat deze is geboren."
.

6.5 Versielog

De onderstaande tabel geeft een overzicht van de wijzigingen die in MIM 1.2 zijn verwerkt met een verwijzging naar het bijbehorende issue op GitHub.

Issue Samenvatting
015 Toevoegen metagegeven Eenheid aan documentatie.
109 Toevoegen metagegevens min-max inclusief en min-max exclusief.
111 Aanpassen samenhang «Relatiesoort», «Objecttype» en «Relatierol» in het diagram.
148 Toevoegen beschrijving wanneer Relatieklasse modelleren als Objecttype.
151 Toevoegen metagegevens heeft tijdlijn geldigheid en heeft tijdlijn registratie.
156 Afstemmen metaclasses tabellen en diagrammen.
171 Aanpassen structuur tekst en figuren m.b.t. Keuze.
188 Toevoegen van URI van model en modelelementen voor publicatie op het web.
190 Toevoegen Keuze tussen realtiesoorten (use case 5).
195 Toevoegen metagegeven «Mixin» voor «Generalisatie» bij multiple inheritance.
201 Aanpassen beschrijving Populatie en Kwaliteit, toevoegen voorbeelden.
224 Verwijderen metagegevens formele historie en materiële historie bij Gegevensgroep.
238 Opnemen toelichting hoe omgaan met een gegeven dat uit meerdere 'data-delen' bestaat.
245 Beschrijven dat Definitie en Toelichting rijke tekst mogen bevatten.
253 Aanpassen definitie en toelichtring «Codelijst».
283 Toelichten betekenis heeft Datatype.
285 Aanpassen verkorte naam heeft enumeratiewaarde.
286 Consistente naamgeving keuzeattribuut en keuzerelatiedoel.
288 Aanpassen transformatie Indicatie abstract object.
289 Betekenis mim:locatie niet consistent doorgevoerd.
305 Toevoegen binding heeft gegevensgroep aan tabel metagegevens «Relatieklasse»
310 Samenvoegen paragrafen met waardelijsten.
314 Consistente schrijfwijze meervoud datatype (uitgang -n: datatypen).
317 Toevoegen «Constraint» toestaan op alle modelelementen.
318 Alle figuren voorzien van <figure> tags en bijschriften. Nu vindbaar in ToF.
321 Verbeteren structuur document: tussenkoppen met tag, voor zichbaarheid in de index.
322 Alle definities voorzien van <dfn> tag en zichtbaar format.
333 Consistente schrijfwijze Waardelijst (zonder -n: waarde, i.p.v. waarden).
336 Aanpassen naamgeving en verwijzing van Alias in tabel specificatie metagegevens in LD.
352 Herstellen broken links en toepassen inner-document expansion references.
370 Aanpassen figuur: Keuze tussen attribuutsoorten binnen een «Attribuutsoort».
377 Aanpassen toelichting Indidcatie abstract object.
378 Corrigeren toepassing Indicatie abstract object.
387 Aanpassing toelichting Identificatie modelelement.
391 Consistente schrijfwijze waardes van metagegevens.
425 Aanpassen definitie Modelelement.
427 Aanpassen definitie Object.
428 Aanpassen definitie Gegeven.
431 Toevoegen eenduidige beschrijving van packagetypen.
445 Aanpassen metagegeven Datatype.
446 Aanpassen tekst metagegeven Profielspecificatie.
450 Toevoegen metagegeven bevat modelelement.
451 MIM namespace overal doorgevoerd http://modellen.mim-standaard.nl/def/mim.

7. Conformiteit

Naast onderdelen die als niet normatief gemarkeerd zijn, zijn ook alle diagrammen, voorbeelden, en noten in dit document niet normatief. Verder is alles in dit document normatief.

8. Lijst met figuren

A. Index

A.1 Begrippen gedefinieerd door deze specificatie

A.2 Begrippen gedefinieerd door verwijzing

B. Referenties

B.1 Normatieve referenties

[GAB]
Gemeenschappelijke Afspraken Berichten. Nederlandse Overheid Referentie Architectuur (NORA). LD. URL: https://www.noraonline.nl/wiki/Gemeenschappelijke_Afspraken_Berichten
[GeoJSON]
The GeoJSON Specification (RFC 7946). Internet Engineering Task Force (IETF). BG-FINAL. URL: https://geojson.org/
[gml]
Geography Markup Language (GML) Encoding Standard. Open Geospatial Consortium Inc. URL: http://www.opengeospatial.org/standards/gml
[ISO-11404]
Information Technology - General Purpose Datatypes (GPD). Nederlandse Norm (NEN). BG-FINAL. URL: https://www.nen.nl/nen-iso-iec-11404-2008-en-122652
[iso-19103]
Geographic information -- Conceptual schema language. ISO/TC 211. ISO. 2015. International Standard. URL: https://www.iso.org/standard/56734.html
[ISO-8601]
Representation Of Dates And Times. ISO 8601:2004. International Organization for Standardization (ISO). BG-FINAL. URL: http://www.iso.org/iso/catalogue_detail?csnumber=40874
[Linked-Data]
Linked Data Design Issues. Tim Berners-Lee. W3C. 27 July 2006. W3C-Internal Document. URL: https://www.w3.org/DesignIssues/LinkedData.html
[NEN3610]
NEN-3610 Basismodel geo-informatie. Nederlandse Norm (NEN). BG-FINAL. URL: https://www.nen.nl/nen-3610-2022-nl-296137
[NORA]
Handreiking Gegevensbeschrijvingen. Nederlandse Overheid Referentie Architectuur (NORA). LD. URL: https://www.noraonline.nl/wiki/Gegevensbeschrijvingen/Handreiking
[OCL]
Object Constraint Language. Object Management Group (OMG). BG-FINAL. URL: https://www.omg.org/spec/OCL/2.4/
[ODM]
Ontology Definition Metamodel. Object Management Group. BG-FINAL. URL: https://www.omg.org/spec/ODM/1.1
[OMG]
Object Management Group Unified Modeling Language TM. Object Management Group (OMG). BG-FINAL. URL: http://www.omg.org/spec/UML/2.5
[OWL2-PRIMER]
OWL 2 Web Ontology Language Primer (Second Edition). Pascal Hitzler; Markus Krötzsch; Bijan Parsia; Peter Patel-Schneider; Sebastian Rudolph. W3C. 11 December 2012. W3C Recommendation. URL: https://www.w3.org/TR/owl2-primer/
[PERLRE]
Perl regular expressions (Perl 5.8.8). The Perl Foundation. February 2006. URL: http://search.cpan.org/dist/perl/pod/perlre.pod
[RDF11-CONCEPTS]
RDF 1.1 Concepts and Abstract Syntax. Richard Cyganiak; David Wood; Markus Lanthaler. W3C. 25 February 2014. W3C Recommendation. URL: https://www.w3.org/TR/rdf11-concepts/
[RDF11-PRIMER]
RDF 1.1 Primer. Guus Schreiber; Yves Raimond. W3C. 24 June 2014. W3C Working Group Note. URL: https://www.w3.org/TR/rdf11-primer/
[SCAT]
Stelselcatalogus. Logius. URL: https://www.logius.nl/domeinen/gegevensuitwisseling/stelselcatalogus
[SHACL]
Shapes Constraint Language (SHACL). Holger Knublauch; Dimitris Kontokostas. W3C. 20 July 2017. W3C Recommendation. URL: https://www.w3.org/TR/shacl/
[SI]
SI Brochure: The International System of Units (SI), 8th edition. BIPM. 2014. URL: http://www.bipm.org/en/publications/si-brochure/
[SOAP]
SOAP Specifications. W3C. 8 May 2000. W3C Working Group Note. URL: https://www.w3.org/TR/SOAP/
[UML]
OMG Unified Modeling Language. Open Management Group. OMG. 1 March 2015. Normative. URL: http://www.omg.org/spec/UML/
[URI]
Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. January 2005. Internet Standard. URL: https://www.rfc-editor.org/rfc/rfc3986
[URN]
URN Syntax. R. Moats. IETF. May 1997. Proposed Standard. URL: https://www.rfc-editor.org/rfc/rfc2141
[xml]
Extensible Markup Language (XML) 1.0 (Fifth Edition). Tim Bray; Jean Paoli; Michael Sperberg-McQueen; Eve Maler; François Yergeau et al. W3C. 26 November 2008. W3C Recommendation. URL: https://www.w3.org/TR/xml/
Geonovum Standaard - Versie ter vaststelling