Een beschrijving van het protocol GWSW-OroX versie 1.5.2
Van: Stichting RIONED
Versie historie
20240514: Modelleerprincipes overgenomen uit GWSW 2.0 (gesynchroniseerd)
20210804: Modelleerprincipes aangepast, property-tabellen compleet gemaakt
20210319: Modelleerprincipes verder uitgewerkt
20210319: Herziene hoofdstukindeling, samenvatting (oorspronkelijk hst 2) in modelleerprincipes (nieuwe hst 2) en details (blijft hst 3) ondergebracht
20201219-20210223: In kader Gellish-ontmanteling
- verwijzing naar bijlage in opmerking-annotatie vervangen door rdfs:seeAlso-verwijzing naar document-URL
- URI's voor aspect properties vragen extra aandacht voor hoofdlettergevoeligheid. Nu bestaan bijvoorbeeld gwsw:functie en gwsw:Functie naast elkaar. (hst 3.1.1)
- op basis NTA8035: consequent de term properties voor predicates hanteren, onderverdeeld in attributen (annotaties en aspecten) en relaties
- onderscheidende kenmerken met specifiek predicate (kwalitatieve aspect property) toekennen. Voorsorteren op NTA8035, annuleer de ingewikkelde intersection-restrictie (hst 3.3) (20210109)
- gebruik van annotaties per concept-type beschreven (tabel in hst 3.1.2) (20210103)
- omgaan met context-specifieke codering gewijzigd, consequent specifiek datatype hanteren (hst 3.1.3)
- gwsw:hasAuthorStart (bij gwsw:hasDateStart) en gwsw:hasAuthorChange (bij gwsw:hasDateChange) toegevoegd
- gwsw:hasValidity (conformiteit-markers) toegevoegd
- skos:scopeNote (deel-datamodel/filter/collection of facts) toegevoegd
- rdfs:isDefinedBy vervangen door rdfs:seeAlso (is de superclass)
- blank node From/intersectionOf wordt expliciet type owl:Class (hst 3.6) (wordt niet meer gebruikt, zie punt dd 20210109)
- groepering van klasse-concepten niet ook typeren als type collectie, dat geeft ongewenste vermenging van annotaties in RDF-editors (met name skos:scopeNote) (hst 3.7)
20200812: Modelleringsprincipes toegevoegd (hst 1.5)
20191030: Tabel met Top Level concepten toegevoegd (hst 2.3)
20190813: Toelichting op inrichting GWSW-OroX (hst 1.3)
20190521: Diagram met structuur GWSW Relaties toegevoegd
20190518: URL binnen rdfs:comment in apart predicate rdfs:seeAlso ondergebracht
20181003: Subtitel toegevoegd: dit is het GWSW-OroX protocol
20180305: Onderscheidende kenmerken uitgebreid voor activiteiten
20171028: Samenvatting completer gemaakt
20171023: Eerste gepubliceerde versie
20171013: Eerste opzet document
Het W3C definieert standaarden voor het Semantisch Web met als basis de triple-vorm: de Subject-Predicate-Object constructie. Het basisprotocol dat hieraan ten grondslag ligt is RDF.
Het GegevensWoordenboek Stedelijk Water (GWSW), een ontwikkeling van de stichting RIONED, is oorspronkelijk ontwikkeld in de Gellish taal. Ook Gellish is een semantische modelleringstaal in het zogenaamde ORO (Object-Relatie-Object) formaat. In het najaar van 2015 is het GWSW omgezet naar RDF.
Met dank aan:
Daan Oostinga
Mike Henrichs
Michel Böhms
Matthé van Koetsveld
Linda van den Brink
Tot en met GWSW versie 1.5.1 (medio 2020) heeft het GWSW-projectteam in de “backend” situatie het Gellish formaat toegepast voor ontologie-ontwerp en -beheer. Via een geautomatiseerd proces werd echter gepubliceerd conform de RDF semantiek. Vanaf versie 1.5.2 wordt het GWSW volledig met RDF tools ontwikkeld en onderhouden.
Bij de uitwerking van deze tekst is er van uitgegaan dat de lezer bekend is met de principes en semantiek van RDF/RDFS/OWL 2 en het uitwisselformaat Turtle.
In de voorbeelden en in de praktijk (bij uitwisseling van GWSW-gegevens) gebruiken we het Turtle-formaat. Voor de concepten binnen de GWSW-Ontologie hanteren we in de voorbeelden de prefix “gwsw:”. Voor individuen in een dataset wordt de prefix “ex:” gebruikt.
In deze inleiding vindt u de gebruikte begrippen en uitgangspunten bij de modellering. In het volgende hoofdstuk worden modelleringsprincipes toegelicht. Het laatste hoofdstuk bevat de gedetailleerde uitwerking van het RDF model, gecombineerd met voorbeelden van het datamodel en datasets.
RDF, RDFS, OWL 2 RDF staat voor Resource Description Framework, de basisdefinitie van modellen op basis van subject-predicate-object. In de tekst verstaan we onder RDF de combinatie van RDF met RDFS (RDF Schema) en OWL 2 (Web Ontology Language).
Ontologie Datastructuur die alle relevante entiteiten en hun onderlinge relaties en regels binnen een domein bevat. (bron: Wikipedia)
Individu Een instantie van een concept, iets uit de werkelijkheid. Zoals individu “0980” de bestaande betonnen constructie van het soort/klasse/concept “rioolput” is.
Property Voor de relatie (tussen subject en object) zijn meerdere namen gebruikelijk (“predicate”, “property name”), we hanteren in dit document “property”. Properties zijn (confrom de NTA8035) onderverdeeld in attributen (die weer onderverdeeld zijn in aspecten en annotaties) en relaties.
CE De afkorting CE wordt gebruikt voor Class Expressions (in Description Logics “complex concepts”). CE’s worden ondermeer gevormd door Classes te binden aan Property Expressions. Met Class Expressions kunnen we onder andere restricties benoemen voor Properties waarmee concepten/klassen worden onderscheiden.
Dataset Een dataset bevat de beschrijving van een fysiek stedelijk water systeem, de “individuen” op basis van het GWSW. De term ABox wordt ook gebruikt: “assertion components” binnen een ontologie. Voor het model (de concepten) wordt dan de term TBox gebruikt: “terminological components”.
De GWSW ontologie wordt beschreven volgens het GWSW OroX protocol. Dit protocol onderscheidt zich door diepgang in semantiek en reikwijdte in de toepassing (van systeem tot proces). Het protocol beschrijft zowel het GWSW model (de "TBox", zie data.gwsw.nl) als de daarop gebaseerde datasets (de "ABox", zie apps.gwsw.nl).
De datastructuur is object-georiënteerd waarbij relaties tussen objecten in een aantal structuren zijn ondergebracht:
- Soortenboom (de taxonomie of klasse-indeling)
- Samenstelling (de meronomie of deel-geheel indeling)
- Proces (het activiteiten-schema)
- Groepering (collecties van soorten en individuen)
Belangrijke superklassen zijn:
- gwsw:FysiekObject
- gwsw:Activiteit
- gwsw:Ruimte
- gwsw:Levensvorm
Bij het ontwerp van een datastructuur spelen deze elementen de hoofdrol, ze vormen het ontwerpkader.
Met het principe van object-oriëntatie hanteert het model overerving-principes en maakt het zo expliciet mogelijk onderscheid in subklassen van de genoemde superklassen. Dat is een heel andere benadering dan bijvoorbeeld het ontwerp van een relationeel model waarbij de nadruk ligt op het interpreteren van informatie met een hoofdrol voor de normalisatie-techniek om opslagruimte te beperken en redundantie te voorkomen.
Voor de modellering is uitgegaan van het OWL RL (Rule Language) profiel. Dit profiel gebruikt nagenoeg alle OWL 2 semantiek en is toereikend voor het modelleren van de GWSW-Ontologie.
Voor de definitie van klassen, eigenschappen, datatypen en restricties kunnen verschillende benaderingen gekozen worden. De volgende uitgangspunten zijn gehanteerd:
- Bij het ontwerp van het GWSW in RDF wordt het oorspronkelijke Gellish-model zonder informatieverlies getransformeerd naar het RDF-model.
- In het verlengde daarvan: Voor de indeling in soorten, de vaststelling van de taxonomie, wordt de onderscheidende definitie zo expliciet mogelijk beschreven.
- Bij de modellering is rekening gehouden met de reasoner-prestaties, de benodigde rekenkracht voor de inferencing verschilt sterk per gekozen oplossing. Voor deze afweging is de Pellet reasoner versie 2.3.1 (voor OWL 2 RL) gebruikt.
Een groot deel van de gehanteerde modelleerprincipes stammen uit de oorspronkelijke opzet (gestart in 2006) van het model in Gellish-vorm. Deze principes zijn natuurlijk taalonafhankelijk, ook in de RDF-vorm blijven ze van groot belang. Veel dank gaat naar Andries van Renssen, geestelijk vader van Gellish en Matthé van Koetsveld, intensief betrokken bij de modellering in Gellish van het GWSW en zijn voorlopers.
PRINCIPES CONTROLEREN/UITBREIDEN:
- Omgaan met multi-typering (gezamenlijk supertype "Rol/Extra type")
- Voorkeursnaam (naast URI) uniek houden (denk aan IMBOR met onleesbare URI)
- Dubbele eigenschappen (zie notities 20240417/links, hoe zat dat?)
- Woordenboek-functie - altijd volgend in woordgebruik (belangrijk voor draagvlak)
Het GWSW Datamodel volgt de ontwikkelingen in het vakgebied. Het bevat concepten die actief worden toegepast (in uitwisseling en applicaties) of die in ontwerpen voor toepassing (bijvoorbeeld nieuwe uitwisselvormen) zijn opgenomen. Dat geldt ook (en vooral) voor kenmerken van objecten.
Terminologie waarbij het uitsluitend gaat om vastleggen van definities wordt met terughoudendheid opgenomen, maar het GWSW heeft zeker ook een woordenboek-functie.
Bij het ontwerp van het GWSW Datamodel spelen altijd de volgende invalshoeken mee:
- Wordt het concept algemeen gebruikt in - native - databases, wordt het (straks) uitgewisseld via GWSW Datasets
- Welke gevolgen heeft de aanpassing voor de toepassingen:
- Externe applicaties die GWSW Datasets gebruiken
- De geografische presentaties (en onderliggende queries)
- De uitwisselformaten HydX, RibX
- De kwaliteitsmetingen van datasets: dataverificatie met Nulmeting, SHACL
- Zijn de aanpassingen relevant voor het GWSW als naslagwerk en woordenboek
"As is", een momentopname
Het datamodel beschrijft de "as is" situatie, het bevat een momentopname van systemen en processen binnen de discipline stedelijk water. Het beschrijft dus geen historische gegevens of de levenscyclus van objecten zoals binnen de context van system engineering.
Zoals genoemd is de datastructuur object-georiënteerd waarbij objecten in een aantal hoofdstructuren zijn ondergebracht:
- Soortenboom (de taxonomie of klasse-indeling)
- Samenstelling en proces (de meronomie of deel-geheel indeling)
- Proces (het activiteiten-schema)
- Groeperingen (collecties van individuen of soorten)
Bij het ontwerp spelen deze structuren de hoofdrol, ze vormen het ontwerpkader. Met het principe van object-oriëntatie hanteert het model overerving-principes en maakt zo expliciet mogelijk onderscheid in (relaties tussen) subtypes.
Afgeleide gegevens komen niet voor in de definitie van fysieke objecten, bijvoorbeeld het kenmerk "aantal pompen". Zo'n gegeven wordt (in presentaties) afgeleid uit het aantal voorkomens van de relatie gwsw:hasPart tussen Gemaal en Pomp. De objecten Gemaal en Pomp worden expliciet beschreven.
Afgeleide gegevens zoals rekenresultaten en data-analyses komen in het GWSW wel voor in de vorm van gemodelleerde rapportages, bijvoorbeeld in GWSW Kengetallen.
Eigenschappen van de bovengrond en ondergrond (maaiveldhoogte, grondsoort) komen niet voor als aspecten van de fysieke objecten die zich daarin bevinden. Een leiding heeft niet als kenmerk "Grondsoort", wel wordt er een relatie gwsw:isPartOf met de ondergrond - en dus met bijbehorende kenmerken - gedefinieerd.
- Elk GWSW-concept is van het generieke type owl:Class.
- Een concept en elke CE wordt altijd voorzien van de annotaties zoals opgenomen in hst Annotaties bij concepten
- Voeg zoveel mogelijk extra informatie toe zoals afbeeldingen (verwijs via rdfs:seeAlso)
Terminologie
Zie hst Identificatie van concepten
- Een concept wordt geïdentificeerd door de URI (prefix + naam)
- Volg de gebruikelijke termen binnen het vakgebied, bedenk geen nieuwe conceptnamen die misschien de lading beter dekken of neutraler zijn. Dat geldt ook - waar mogelijk - voor abstracte concepten.
- Voorkom zoveel mogelijk het gebruik van handels- of merknamen in de conceptnamen.
- Geef alle gebruikelijke vakgebied-termen die gelden voor het te modelleren systeem of proces een plek, als apart concept of als synoniem van een concept. De zoekfunctie wordt daarmee volledig.
- Laat algemene termen die niet specifiek bij de discipline horen zoveel mogelijk buiten beschouwing. Modelleer bijvoorbeeld het concept "calamiteit" alleen als het als supertype nodig is.
- Verwijs voor algemene termen waar mogelijk naar andere databronnen (rdfs:seeAlso).
Definieer klassen zo uitgebreid mogelijk op basis van hun eigenschappen. Daarmee worden datasets op basis van het datamodel ruimer interpreteerbaar en beter valideerbaar. Hier volgt een opsomming van de mogelijke afleidingen (inferences) en uit de CE's afgeleide validaties. In enkele gevallen is reasoning op basis van het UNA (Unique Name Assumption) principe nodig. De controle op kardinaliteit is beperkt vanwege het OWA (Open World Assumption) principe in RDF.
- Controle op hasReference-waarden binnen domein van collecties / keuzelijsten (UNA)
- Controle op correcte typering binnen samenstellingen via gwsw:hasPart.
- Ruimte gwsw:hasPart “Object”. Object: alleen van de klasse Ruimte of FysiekObject
- FysiekObject gwsw:hasPart “Object”. Object: alleen van de klasse Ruimte of FysiekObject
- Inferencing: Individu-klasse wordt afgeleid uit intrinsiek aspect.
- gwsw:hasAspect BreedteLeiding => Individu = Leiding
- Inferencing: Individu-klasse wordt afgeleid uit onderscheidend kenmerk.
- gwsw:hasAspect Uitvoering + hasReference Klein => Individu = KleinObject
- Controle op correct gebruik datatype bij gwsw:hasValue: decimal, string, integer, double, date, time, year.
- Controle op numerieke waarden binnen minimum maximum grenzen
- Kardinaliteit, aantal voorkomens per property boven het voor het type gedefinieerde maximum wordt gemeld (UNA)
- ook “inverse”-kardinaliteit wordt in de reasoning meegenomen
- minimum kardinaliteit en shall-relatie wel gemodelleerd, controle op strijdigheid met typering niet mogelijk (OWA)
- basis is overerving (multiple inheritance)
- start met de class die je kent
- plaats ze in een hiërarchie door subtypering
- geef aan in definitie waarin de class verschilt van de bovenliggende class
- geef aan in eigenschappen waarin de class verschilt van de bovenliggende class en omliggende classes
- let op orthogonaliteit
- plaats een eigenschap zo hoog mogelijk
Het opbouwen van de soortenboom op basis van onderscheidende kenmerken, zie hst Details onderscheidende kenmerken
- Voor het classificeren van een concept uitgaan van onderscheidende kenmerken in de (abstracte) soortenboom. Denk aan determineren van planten volgens Linnaeus: na het maken van een aantal keuzes wordt de soort gevonden
- Streef ernaar om met de onderscheidende kenmerken de (in je hoofd) uitgeschreven definitie te vervangen
- Gebruik de beschreven onderscheidende kenmerken bij fysieke objecten en activiteiten
- Kwalificeer het onderscheidende kenmerk impliciet (gwsw:uitvoering "groot"). Expliciete kwalificaties (in de vorm van subtypes van generieke kenmerken) worden dus niet gebruikt (zijn - nog - onnodig)
Klassen (en collecties) die niet voor classificatie worden gebruikt / niet instantieerbaar zijn
- Hou ze beperkt, hou de soortenboom zo veel mogelijk concreet. Supertypes zijn vaak alleen verdichtingen, geen soort.
- Concepten zijn herkenbaar als abstract wanneer ze bijvoorbeeld niet in de deel-geheel relaties (bijvoorbeeld als deel van een rioleringsgebied) voorkomen.
Voor de eindgebruiker worden abstracte klassen gemarkeerd in de conformiteitsklasse. De conformiteitsklasse beschrijft onder andere de geldende klassen. Zie validity context
- Abstracte concepten bij voorkeur als groep/collectie (en niet als supertype) definiëren. Bijvoorbeeld groepering naar thema's, denk aan infiltratievoorzieningen.
- Subtypes op hetzelfde niveau dienen in grote lijn hetzelfde samenstellingsniveau te hebben.
- Specialiseer de concepten zoveel als mogelijk: definieer de subtypes, de "bladerobjecten".
- Introduceer geen subtype als het geen onderscheidend kenmerk heeft. Bijvoorbeeld geen extra subtype "standaard hemelwaterstelsel" naast "verbeterd hemelwaterstelsel".
- Hou er rekening mee dat de individuen zo specifiek mogelijk geclassificeerd dienen te worden. Classificatie met een supertype gebeurt alleen als het subtype niet van toepassing is (denk aan het eerdere voorbeeld "hemelwaterstelsel") of als het onbekend is en wel toegepast kan worden. Bijvoorbeeld bij gebruik van de inspectienorm voor "vrijverval rioolleidingen" (met subtypes gemengd, hemelwater, vuilwater).
Binnen de GWSW taxonomie kunnen begrippen haaks (orthogonaal) op elkaar staan, de orthogonaliteit is dus niet bepalend voor de opbouw van de soortenboom. Bijvoorbeeld kun je de in het GWSW opgenomen concepten Blinde Put en Overstortput als orthogonaal beschouwen, de één wordt onderscheiden vanwege de constructie, de ander wordt onderscheiden vanwege de functie.
Dat vraagt extra aandacht bij de toepassing ervan. Zo kan een individu zowel van het type Blinde Put als van het type Overstortput maar dat geldt niet voor de combinatie van de typen Overstortput als Stuwput. Die laatste combinatie conflicteert vanwege de scheiding in functie. In het datamodel kun je dat expliciteren door conflicterende typeringen met owl:disjointWith te beschrijven. In het GWSW datamodel is dat niet uitgewerkt, via de onderscheidende kenmerken is de orthogonaliteit wel herkenbaar.
Beschrijf alleen relevante - toegepaste - aspecten bij een concept.
- Kenmerken zijn altijd eigendom van een entiteit/geheel en kunnen niet bestaan zonder de eigenaar
- Beschrijf met CE's de kardinaliteit op gwsw:hasAspect en op de inverse property gwsw:isAspectOf, ook als ze niet definiërend zijn. Hanteer de kardinaliteit "minimum=0" en "maximum=1" voor globale uitdrukkingen.
Als een individu kenmerk X heeft is het mogelijk van type Y
- Hou kenmerken en entiteiten gescheiden en blijf object-georiënteerd. Bijvoorbeeld Dekselmateriaal en Beheerdernaam kunnen geen kenmerken van een Put zijn, dat zijn aspecten van het concept Deksel en Beheerder. Die concepten zijn vervolgens gerelateerd aan de put.
- Voorkom het opnemen van optionele kenmerken bij een supertype (kenmerken die niet voor alle subtypes gelden), definieer de kenmerken dus niet op een te hoog niveau.
- Gebruik het multi-parent principe. Als alleen kunststof leidingen het gebruikte kenmerk "kleur" hebben, introduceer dan het concept "kunststof leiding" met het kenmerk "kleur". Een individu is dan zowel een "vrijverval rioolleiding" als een "kunststof leiding" en heeft daarmee dat extra kenmerk.
Geen typelijsten
Kenmerken die verwijzen naar een typelijst (bijvoorbeeld het kenmerk Soort Deksel van het concept Deksel) komen niet voor. Een typelijst wordt uitgedrukt in de taxonomie (bijvoorbeeld als subtypes van Deksel).
- Specialiseer waar nodig de kenmerken, zodat restricties op de kenmerk-waarde zo specifiek mogelijk zijn. Bijvoorbeeld:
- Definieer het generieke kenmerk "materiaal" met het subtype "materiaal put" met bijbehorende domeinwaarden
- Definieer het generieke kenmerk "diameter" met het subtype "diameter leiding" met specifieke restricties op de afmetingen.
- Intrinsieke kenmerken zijn geen noodzaak maar de combinatie met restricties (bijvoorbeeld minimum/maximum waarde) maakt ze waardevol en daarnaast wordt het model robuuster: als een individu het kenmerk heeft, dan hoort het van een bepaald type te zijn.
Beschrijf in het datamodel de eisen voor de gegevenskwaliteit, met name die voor nauwkeurigheid via restricties aan waardetype en waardebereik.
- Specificeer altijd de waardetypes bij de aspectwaarden
- Specificeer waar nodig ook het waardebereik (in combinatie met het waardetype)
- Start de URI van een gemodelleerd datatype altijd met "Dt_"
- Modelleer waar nodig het metagegeven gwsw:Inwinning voor beschrijving van de actualiteit en betrouwbaarheid.
Definieer de samenstelling, de topologie en het proces op basis van de relaties bij een concept, zie hst Details relaties
- Beschrijf met CE's de kardinaliteit van de relaties bij concepten, ook als ze niet definiërend zijn. Hanteer de kardinaliteit "minimum=0" en "maximum=1" voor globale uitdrukkingen.
- Met de kardinaliteit beschrijven we ook dat een fysiek object bijvoorbeeld per definitie andere fysieke objecten als onderdeel heeft.
- Beschrijf op dezelfde wijze ook altijd de inverse relatie. Voor de dataverificatie is die inverse vaak waardevol. Een constructie kan bijvoorbeeld meerdere delen bevatten (gwsw:hasPart) maar het deel hoort bij één constructie (gwsw:isPartOf).
- Voorkom redundantie van deel-geheel relaties, die relatie mag niet dubbel voorkomen voor een subtype en het bijbehorende supertype.
- Definieer de samenstelling - hoewel verleidelijk - dus niet op een te hoog niveau
Het GWSW volgt de Gellish-aanpak (bron Matthé van Koetsveld): Bij het modelleren van een activiteit/project (als bij IDEF0) onderscheid maken naar invoer (die verwerkt wordt), uitvoer (resultaat van de verwerking/activiteit), control (ook soort invoer van de activiteit die project controleert, aanstuurt) en mechanisme (soort uitvoer, die de activiteit uitvoert, kan een organisatie, systeem, enzovoort zijn). Dan zou het semantisch netjes zijn:
- Project heeft als control Opdrachtgever
- Project heeft als mechanisme Opdrachtnemer
- Inspectieproject heeft als invoer Put, Leiding
- Inspectieproject heeft als uitvoer Waarneming
In het GWSW vereenvoudig we het (met alleen hasInput, hasOutput):
- Project is een Activiteit
- Project heeft als invoer Opdrachtgever (aansturing project)
- Project heeft als uitvoer Opdrachtnemer (uitvoering project)
- Project heeft als deel Inspecteren Leiding (ook een activiteit)
- Inspecteren Leiding heeft als invoer Leiding
- Inspecteren Leiding heeft als uitvoer Waarneming
Zie hst Details deelmodellen
Vanaf GWSW versie 1.5.2 (na afscheid van het Gellish bronmodel) is de Collection of Facts (CoF) op conceptniveau in de RDF-bron opgenomen. De CoF speelt nog steeds een belangrijke rol in de RDF-versie van het GWSW. Het wordt beschreven met het annotatie-attribuut skos:scopeNote, de annotatie-waarde (de URI van een CollectionOfFacts-subklasse) verwijst naar een deelmodel (GWSW-Basis, GWSW-Kengetallen, enz.) horen.
Op basis van de CoF worden dus de GWSW deelmodellen samengesteld. Zo'n deelmodel is een filter op het datamodel waarbij de klassen, de CE's en de individuen worden geselecteerd op de gekoppelde CoF. De deelmodellen hebben meerdere functies:
- het overzichtelijk presenteren van specifieke GWSW onderdelen
- het overzichtelijk onderhouden van het datamodel. Veel deelmodellen hebben een heel specifieke functie, anderen worden met een lage frequentie onderhouden. Denk bijvoorbeeld aan uitwisselformaten.
- het samenstellen van conformiteitsklassen, data-verificatie voor bepaalde processen
- het koppelen van alleen de relevante modelonderdelen aan datasets, afgestemd op de praktijk van uitwisselen
Hou rekening met de onderverdeling van de context-specifieke deelmodellen. Combineren van deelmodellen met behoud van overzicht is in RDF-editors mogelijk. Handhaaf een logisch onderverdeling door modelaanpassingen in het juiste bronbestand (geïmporteerde turtle-bestand) te doen en consequent de annotatie skos:scopeNote te vullen.
De "top level" concepten in GWSW-OroX zijn de concepten die boven in de soortenboom staan. Deze concepten zijn geen subklasse van andere concepten, ze zijn van het generieke type owl:Class.
Naam | Toelichting / definitie |
---|---|
Activiteit | [Gellish] Is a deed (a performance by changing a state of affairs) by carrying out an action or pattern of behavior. |
FysiekObject | [Gellish] That is a distribution of matter or energy in time and space that satisfies the laws of physics. All kinds of physical objects are subtypes of this class. It is the top of the hierarchical network of specializations of kinds of physical objects. |
Informatiedrager | [Gellish] Is a medium intended or actually carrying physical objects from that properties information can be deducted. Typically paper that carries ink, magnetic fields on a disk or tape, electrically or optically modulated substances of electricity or light. |
Kenmerk | [Gellish] Is an individual object that is a phenomenon that is possessed by a totality and cannot exist without the existence of its possessor. It is an intrinsic, non-separable facet of its possessor |
Levensvorm | Iets dat in staat is tot leven |
Ruimte | [Gellish] Is an inanimate physical object (a physical object that is not capable of life) that is volumetric and is enclosed by physical or imaginary boundaries and exists in time. This is distinguished from a volumetric spatial aspect and from a volume as a property. |
TopologischElement | [Gellish] Is a configuration that indicates how items are connected or positioned relative to each other. The topology in terms of connections usually doesn't change when the positions of the items change. |
VerzamelingSoorten | Collection of qualitative aspects. Is specialisatie van collection of classes |
Voor de definitie van de soortenboom gebruiken we basiselementen uit RDF, RDFS en OWL. Ter illustratie de hiërachische indeling van de familie "put":
gwsw:Put rdf:type owl:Class ; rdfs:subClassOf bs:PhysicalObject ; # het supertype uit NTA 8035 rdfs:label "Put"@nl . gwsw:Rioolput rdf:type owl:Class ; rdfs:subClassOf gwsw:Put ; skos:prefLabel "Rioolput"@nl . gwsw:Stuwput rdf:type owl:Class ; rdfs:subClassOf gwsw:Rioolput ; rdfs:label "Stuwput"@nl , skos:altLabel “Weir”@en . # vertaling als synoniem opnemen gwsw:BlindePut rdf:type owl:Class ; rdfs:subClassOf gwsw:Rioolput ; rdfs:label "Blinde put"@nl .
In een dataset wordt altijd zoveel mogelijk verwezen naar de zogenaamde "bladerobjecten". Dat zijn de soorten waarvan geen subtypes bestaan, ze staan onderaan in de boomstructuur. In het GWSW model worden uit principe ook zo min mogelijk supertypes gedefinieerd. Die worden alleen opgenomen indien noodzakelijk voor de indeling (ervingsprincipe) of als de klasse voorkomt als gebruikelijke term.
ex:Put_1 rdf:type gwsw:Put . # te generiek voor veel toepassingen ex:Put_2 rdf:type gwsw:Stuwput , # specifiek genoeg voor veel toepassingen gwsw:BlindePut . # tweede typering
Het individu ex:Put_2 is dus zowel een stuwput (een put met een stuwconstructie) als een blinde put (een put zonder deksel).
Expliciete definitie: basis voor determinatie
Voor de indeling in soorten, de bepaling van de taxonomie, wordt de onderscheidende definitie zo expliciet mogelijk beschreven. Determinerend kan daarmee (de naam van) een soort worden bepaald. Verschillende elementen in de ontologie spelen hierbij een rol, die zijn beschreven in de volgende paragrafen.
De onderscheidende kenmerken specificeren de soorten, de GWSW ontologie hanteert de volgende (in willekeurige volgorde):
- Doel (waarvoor)
- Toepassing (waarin)
- Functie (wat doet het)
- Uitvoering (hoe)
- Structuur (waaruit)
Meer specifiek voor activiteiten:
- Doel (waarvoor)
- Toepassing (waarin, welk proces)
- Technologie (werkwijze, eisen)
- Resultaat (wat doet het)
Vooral Functie en Uitvoering worden veel gebruikt om het onderscheid te maken.
De onderscheidende kenmerken worden beschreven met een specifieke kwalitatieve-aspect-property, de range bij de property is dan een individu van het type onderscheidend kenmerk. Met een CE wordt een restrictie op de properties doel, toepassing, functie, uitvoering, structuur, technologie, resultaat, mechanisme gecombineerd met een restrictie op hasValue.
Een onderscheidend kenmerk wordt gemodelleerd met restricties binnen een CE. Bij benoeming van de CE als equivalentClass vragen deze restricties veel rekenkracht, daarom is hier ook voor een éénzijdige subtypering (rdfs:subClassOf ipv owl:equivalentClass) gekozen. Daarmee leveren we wel semantiek in (“sufficient”, niet “necessary”).
gwsw:Uitvoering skos:definition "Materiaal, afwerking, vorm"@nl ; rdfs:subClassOf gwsw:OnderscheidendKenmerk . gwsw:uitvoering rdf:type owl:ObjectProperty ; rdfs:range gwsw:Uitvoering ; rdfs:label "Heeft Uitvoering"@nl .
Combineer het kenmerk en de waarde ervan in een CE
gwsw:Klein rdfs:label “klein" ; rdf:type gwsw:Uitvoering . # Individu: uitvoeringswijze gwsw:KleinObject rdfs:subClassOf gwsw:FysiekObject ; rdfs:subClassOf [ rdf:type owl:Restriction ; # Via blank node: eenzijdige subklasse owl:onProperty gwsw:uitvoering ; # Kwalitatief aspect owl:hasValue gwsw:Klein; # Individu ] .
Als in de dataset een individu als volgt beschreven is leidt een reasoner af dat KleinObject1 van het type KleinObject is:
ex:KleinObject1 gwsw:uitvoering gwsw:Klein .
Het oorspronkelijke Gellish-model bevat een serie metagegevens zoals Kardinaliteit Links/Rechts, UoM, Brondefinitie, Eigen definitie, Datum Begin/Wijziging. Die worden als volgt in het RDF-model meegenomen:
De Kardinaliteit wordt via CE’s in RDF uitgedrukt. De kardinaliteit kan in twee richtingen gelden, daarvoor is voor de relevante properties een inverse geïntroduceerd. Ook voor deze omgekeerde property geldt dan via de CE een restrictie op kardinaliteit.
De UoM, Brondefinitie, Eigen definitie worden als annotaties bij de concepten opgenomen.
De Auteurs gecombineerd met Datum start concept en Datum wijziging concept worden als annotaties bij de concepten opgenomen.
De Taalgemeenschap wordt als extra naam bij de concepten (met property rdfs:label) vermeld.
De toegepaste attributen (annotatie-properties en aspecten) in een diagram:
De toegepaste relaties in een diagram:
De toepassing van relaties is in de GWSW-Ontologie aan regels gebonden door middel van een Class Expression (CE). In de volgende tabel is dat aangegeven met CE.
hoProperty (inverse) |
Type | Omschrijving |
---|---|---|
rdf:type | Subject is van het type Object (Klasse-naam) | |
rdfs:subClassOf | Subject is van het subtype Object (Klasse-naam) | |
rdfs:range | Property heeft als bereik Object (Klasse-naam)
Vanaf GWSW 1.5.2 in gebruik voor attribuut-properties bij onderscheidende kenmerken |
|
owl:inverseOf | Subject-property is de inverse van Object-property | |
owl:versionInfo | Annotatie | Subject (ontologie) heeft versieomschrijving Literal |
rdfs:label | Annotatie | Subject heeft als voorkeursnaam Literal (ook vertalingen, dan meerdere rdfs:label properties) |
skos:altLabel | owl:AnnotationProperty | Subject heeft als synoniem Literal (ook vertalingen, dan meerdere rdfs:altLabel properties) |
skos:hiddenLabel | owl:AnnotationProperty | Subject heeft als id Literal (annotatie, alleen gebruikt in de Gellish-omgeving). In RDF is de URI van het concept de enige ID |
skos:notation | owl:DatatypeProperty | Subject heeft als code Literal Eventueel per context |
skos:definition | owl:AnnotationProperty | Subject heeft als definitie Literal (definitie zonder bron-referentie) Een "interne" omschrijving, vastgesteld binnen het GWSW-project |
Subject is gedefinieerd door Literal (definitie met bron-referentie)
Vanaf GWSW 1.5.2 niet meer in gebruik, vervangen door rdfs:seeAlso |
||
rdfs:seeAlso | Annotatie | Subject heeft aanvullende informatie op Literal (definitie, bron-referentie of bijlage) |
rdfs:comment | Annotatie | Subject heeft als commentaar Literal |
gwsw:hasUnit | owl:AnnotationProperty | Subject heeft als eenheid Literal |
gwsw:hasDateStart | owl:AnnotationProperty | Subject heeft als begindatum Literal |
gwsw:hasDateChange | owl:AnnotationProperty | Subject heeft als wijzigingsdatum Literal |
gwsw:hasAuthorStart | owl:AnnotationProperty | Subject heeft als begin-auteur Literal (naam persoon die concept heeft gemaakt) |
gwsw:hasAuthorChange | owl:AnnotationProperty | Subject heeft als wijziging-auteur Literal (naam persoon die concept heeft gewijzigd) |
skos:scopeNote | owl:AnnotationProperty | Subject hoort bij feitencollectie Klasse-naam (een subklasse van CollectionOfFacts) |
gwsw:hasValidity | owl:AnnotationProperty | Subject heeft als conformiteitscode Literal (verzameling codes voor conformiteitsklassen ) |
gwsw:hasAspect (isAspectOf) |
owl:ObjectProperty | CE beschrijft restrictie op kardinaliteit: Bij subject mag property hasAspect 0-n maal of min 0-n en max 1-n maal voorkomen |
gwsw:hasValue | owl:DatatypeProperty owl:FunctionalProperty |
CE beschrijft restrictie op object: Bij subject met property hasValue mogen alleen objecten van een bepaald datatype voorkomen. Bij het datatype kunnen vervolgens restricties op inhoud worden meegegeven. |
gwsw:hasReference | owl:ObjectProperty owl:FunctionalProperty | CE beschrijft restrictie op object: Bij subject met property hasReference mogen alleen objecten van een bepaalde klasse (collectie) voorkomen |
gwsw:hasInput (isInputOf) |
owl:ObjectProperty | CE beschrijft restrictie op kardinaliteit: Bij subject mag property hasInput 0-n maal of min 0-n en max 1-n maal voorkomen |
gwsw:hasOutput (isOutputOf) |
owl:ObjectProperty | CE beschrijft restrictie op kardinaliteit: Bij subject mag property hasOutput 0-n maal of min 0-n en max 1-n maal voorkomen |
gwsw:hasPart (isPartOf) |
owl:ObjectProperty | CE beschrijft restrictie op kardinaliteit: Bij subject mag property hasPart 0-n maal of min 0-n en max 1-n maal voorkomen |
gwsw:hasConnection | owl:ObjectProperty owl:SymmetricProperty | CE beschrijft restrictie op kardinaliteit: Bij subject mag property hasConnection 0-n maal of min 0-n en max 1-n maal voorkomen |
gwsw:hasRepresentation | owl:ObjectProperty owl:FunctionalProperty | |
gwsw:doel | owl:ObjectProperty | Subject heeft doel Individu van type Doel. (onderscheidend kenmerk) |
gwsw:toepassing | owl:ObjectProperty | Subject heeft toepassing Individu van type Toepassing. (onderscheidend kenmerk) |
gwsw:functie | owl:ObjectProperty | Subject heeft functie Individu van type Functie. (onderscheidend kenmerk) |
gwsw:uitvoering | owl:ObjectProperty | Subject heeft uitvoering Individu van type Uitvoering. (onderscheidend kenmerk) |
gwsw:structuur | owl:ObjectProperty | Subject heeft structuur Individu van type Structuur. (onderscheidend kenmerk) |
gwsw:technologie | owl:ObjectProperty | Subject heeft technologie Individu van type Technologie. (onderscheidend kenmerk) |
gwsw:resultaat | owl:ObjectProperty | Subject heeft resultaat Individu van type Resultaat. (onderscheidend kenmerk) |
gwsw:mechanisme | owl:ObjectProperty | Subject heeft mechanisme Individu van type Mechanisme. (onderscheidend kenmerk) |
Inverse properties zijn nodig om verschillen in kardinaliteit bij omgekeerde relaties te kunnen definiëren. Ze worden alleen gebruikt bij object-properties waarvan het type niet symmetrisch (gwsw:hasConnection) of functioneel (gwsw:hasRepresentation) is.
Voor het uitdrukken van CE’s voorziet OWL 2 in een groot aantal (restrictie) properties. Daarmee kunnen we klassen expliciet onderscheiden, de GWSW Ontologie bevat de volgende :
Property | Toelichting |
---|---|
owl:onClass | Uitdrukken van kardinaliteit |
owl:onProperty | Veelvuldig toegepast voor uitdrukken van klassen, vanwege “property central” principe. |
owl:hasValue | Veelvuldig toegepast voor uitdrukken van CE's, vanwege “property central” principe. |
owl:allValuesFrom | Uitdrukken van range bij waarden |
owl:someValuesFrom | Uitdrukken van intrinsieke en onderscheidende kenmerken |
owl:disjointWith | Uitdrukken van ruimtelijke gwsw:hasPart relatie |
owl:unionOf | Uitdrukken van ruimtelijke gwsw:hasPart relatie |
owl:qualifiedCardinality | Uitdrukken van verplichte properties |
owl:maxQualifiedCardinality | Uitdrukken van maximum aantal properties |
owl:minQualifiedCardinality | Uitdrukken van minimum aantal properties |
Uitdrukken van onderscheidende kenmerken
Vanaf GWSW 1.5.2 niet meer in gebruik, vervangen door attribuut-property voor onderscheidende kenmerken |
|
owl:oneOf | Opsomming van collectie individuals |
owl:equivalentClass | Subject is equivalent (wederzijdse subklasse) van object |
owl:onDatatype | CE heeft betrekking op een datatype |
owl:withRestrictions | Uitdrukken van beperkingen op datatype (bijvoorbeeld min/max waarde) |
In datasets conform het GWSW worden de volgende properties gebruikt:
Property | Toelichting |
---|---|
rdf:type | Subject is van het type Object (klasse-naam) |
rdfs:label | Subject heeft als naam Literal |
rdfs:comment | Subject heeft als opmerking Literal |
gwsw:hasAspect | Subject heeft als kenmerk Object |
gwsw:hasValue | Subject heeft als waarde Literal (subject is kenmerk) |
gwsw:hasReference | Subject heeft als referentie Object (subject is kenmerk) |
gwsw:hasInput | Subject heeft als invoer Object |
gwsw:hasOutput | Subject heeft als uitvoer Object |
gwsw:hasPart | Subject heeft als deel Object |
gwsw:isPartOf | Subject is deel van Object |
gwsw:hasConnection | Subject heeft verbinding met Object |
gwsw:hasRepresentation | Subject heeft als representatie Object |
De volgende annotaties worden in het GWSW toegepast (zie voor toelichting het Overzicht properties):
Annotatie | Voorwaarden |
---|---|
rdfs:label | Exact 1 per taalgemeenschap
Opnemen bij de klasse, collectie-individu, optioneel bij CE's |
gwsw:hasDateStart | Exact 1 (bijgehouden vanaf 2006)
Opnemen bij de klasse, collectie-individu, CE's |
gwsw:hasAuthorStart | Exact 1 (bijgehouden vanaf 2006)
Opnemen bij de klasse, collectie-individu, CE's |
skos:scopeNote | Minimaal 1
Opnemen bij de klasse, collectie-individu, CE's |
skos:altLabel | Onbeperkt (minimum=0)
Opnemen bij de klasse, collectie-individu |
Maximaal 1 (minimum=0) Vervalt op termijn (alleen in Gellish-omgeving)
Opnemen bij de klasse, collectie-individu Vanaf GWSW 1.5.2 niet meer in gebruik |
|
skos:notation | Maximaal 1 per context (minimum=0)
Opnemen bij de klasse, collectie-individu |
skos:definition | Onbeperkt (minimum=0)
Opnemen bij de klasse, collectie-individu |
rdfs:seeAlso | Onbeperkt (minimum=0)
Opbouw: [externe bron] Omschrijving of URI (webadres naar site of document) Opnemen bij de klasse, collectie-individu |
rdfs:comment | Onbeperkt (minimum=0)
Algemene opbouw: Commentaar-tekst Verwijzing naar figuur: [Bijlage nnn.jpg] - als "nnn" identiek is aan de URI-naam: [Bijlage *.jpg] Opnemen bij de klasse, collectie-individu, optioneel bij CE's |
gwsw:hasUnit | Maximaal 1, kies uit de tabel hierna
Opnemen bij de klasse |
gwsw:hasDateChange | Onbeperkt (minimum=0), invullen als de waarde van één van de attributen wijzigt of als het concept andere properties (attributen/relaties) krijgt. Bevat altijd de laatste datum.
Opnemen bij de klasse, collectie-individu, CE's |
gwsw:hasAuthorChange | Onbeperkt (minimum=0)
Opnemen bij de klasse, collectie-individu, CE's |
gwsw:hasValidity | Maximaal 1
Opnemen bij de klasse, collectie-individu, CE's |
Een voorbeeld van gebruikte annotaties:
gwsw:Put rdf:type owl:Class ; rdfs:label "Put"@nl ; rdfs:subClassOf gwsw:FysiekObject ; skos:definition "Verticale waterdichte ….”@nl ; rdfs:seeAlso "[IMGeo:1.0/2007] Gegraven of … "@nl , "https://imgeo.geostandaarden.nl/def/imgeo-object/put" , "https://data.gwsw.nl/img/put.png" ; # verwijs naar afbeelding rdfs:comment "Toelichting bij modellering put" ; gwsw:hasValidity "1f 3f 4f " ; # codering voor samenstellen conformiteitsklasse skos:scopeNote gwsw:cofTOP ; gwsw:hasDateStart "2013-07-18"^^xsd:date .
Een GWSW concept van het type owl:Class heeft altijd de volgende annotaties:
- rdfs:label
- gwsw:hasDateStart
- gwsw:hasAuthorStart
- skos:scopeNote
- skos:definition
Daarnaast zijn de volgende annotaties onder voorwaarden opgenomen:
- rdfs:hasDateChange: indien andere annotaties zoals skos:definition gewijzigd zijn. Als een CE bij de klasse wijzigt wordt de wijzigingsdatum alleen bij die CE opgenomen.
- rdfs:hasAuthorChange: indien hasDateChange is opgenomen
- gwsw:hasUnit: indien de klasse een relatie rdfs:hasValue met een relevant datatype heeft
Een GWSW concept van het type owl:Restriction heeft altijd de volgende annotaties:
- gwsw:hasDateStart
- gwsw:hasAuthorStart
- skos:scopeNote
- skos:definition
Daarnaast zijn de volgende annotaties onder voorwaarden altijd opgenomen:
- rdfs:hasDateChange: indien andere annotaties bij de CE gewijzigd zijn
- rdfs:hasAuthorChange: indien hasDateChange is opgenomen
- gwsw:hasUnit: indien de CE een relatie rdfs:hasValue met een relevant datatype heeft
Naamgeving, URI-strategie
Het hanteren van begrijpbare namen in de URI voor concepten is de gangbare RDF praktijk. We gaan uit van camelCase of CamelCase notatie van de namen voor respectievelijk de properties (starten met lowercase) als de klassen (starten met uppercase). De syntax van de namen is natuurlijk conform de voorwaarden voor een URI, de prefix + naam is de URI van het concept. In het oorspronkelijke Gellish-model is een nummer-identificatie (naast het unieke label) belangrijk. Dit unieke nummer wordt met de property skos:hiddenLabel benoemd, maar zal op termijn zijn waarde verliezen.
Voor de voorkeursnaam van GWSW-concepten geldt het volgende uitgangspunt:
Altijd de literal bij rdfs:label als voorkeursterm gebruiken. Als die meertalig is (er kunnen meerdere rdfs:label relaties zijn met een eigen taalaanduiding) geldt altijd de voorkeur @nl en daarna @en (van een GWSW-concept is minimaal een @nl of een @en versie aanwezig).
In het GWSW komen vertalingen voor, die worden als rdfs:label (voorzien van de taalcode) benoemd. Ook synoniemen komen veelvuldig in het GWSW voor, die worden benoemd met de relatie skos:altLabel.
Voor de namen van relaties wordt altijd de Engelse taal gebruikt, voor de namen van kwalitatieve aspecten (in gebruik voor onderscheidende kenmerken) wordt Nederlandse taal gebruikt, meestal de naam van het object (de range van de property) startend met lowercase.
Een URI van een concept is in principe hoofdlettergevoelig, gwsw:functie is de property, gwsw:Functie is de class (de range van de property). Voor het omgaan met webadressen vraagt dat extra aandacht, bijvoorbeeld door het domain "gwsw:" voor properties te wijzigen.
Een generieke relatie in een dataset: classificeren van de put
ex:Put1 rdf:type gwsw:Inspectieput .
Een GWSW relatie in de dataset:
ex:Put1 gwsw:isPartOf ex:Rioolstelsel1 .
Een GWSW kwalitatief aspect in een dataset (afgeleid wordt dat ex:Put1 een inspectieput is):
ex:Put1 gwsw:functie gwsw:ToegangVerschaffen . # individu van type gwsw:Functie
De in RDF gehanteerde datatypes zijn gekoppeld aan de waarde van gwsw:hasUnit. Als bij een concept de eenheid niet is gespecificeerd wordt uitgegaan van datatype xsd:string.
Gebruik voor de waarden van het attribuut gwsw:hasUnit één van mogelijke eenheden:
Eenheid | Datatype |
---|---|
% | xsd:integer |
1/h | xsd:decimal |
1/min | xsd:decimal |
bar | xsd:decimal |
degC (graden Celsius) | xsd:integer |
DEG(hoek in graden, 360 gebaseerd, zie https://qudt.org/vocab/unit/) (vanaf versie 1.6) | xsd:integer |
dm3 | xsd:decimal |
dm3/s | xsd:decimal |
h | xsd:integer |
m | xsd:decimal |
m/dag | xsd:decimal |
m2 | xsd:decimal |
m3/h | xsd:decimal |
mm | xsd:integer |
mm/h | xsd:decimal |
mm/min | xsd:decimal |
yyyymmdd | xsd:date |
yyyy | xsd:gYear |
pcs | xsd:integer |
ppm | xsd:integer |
hhmmss | xsd:time |
- (factor) | xsd:decimal |
gml | geo:gmlLiteral |
Coderingen komen veel voor in het GWSW, bijvoorbeeld als taalonafhankelijke aanduidingen van toestandsaspecten in de EN13508-2. Codes van concepten zijn de waarde van het annotatie-attribuut skos:notation. In dit voorbeeld de gebruikte codes voor (gegevensuitwisseling bij) de activiteiten Inspecteren en reinigen leiding:
gwsw:StartNodeReference skos:notation “AAB"^^:Dt_Notation_IL . (inspecteren leiding) gwsw:StartNodeReference skos:notation "GAB"^^:Dt_Notation_RL . (reinigen leiding) gwsw:Dt_Notation_RRB rdfs:label "Codering reinigen put/leiding"@nl ; rdf:type rdfs:Datatype .
Bij een concept kunnen meerdere codes afhankelijk van de context voorkomen. Bij de uitwisseling van gegevens over het reinigen van een leiding worden bijvoorbeeld andere codes gebruikt dan over het inspecteren van een leiding. Om dat onderscheid te kunnen maken is in de GWSW-Ontologie een datatype aan de code toegevoegd. Dat datatype representeert het geldende notatie-schema. De volgende datatypes worden gebruikt bij de waarde van skos:notation:
Datatype van code | Gebruikt in context |
---|---|
Dt_Notation_HY | Hydraulisch rekenen |
Dt_Notation_IL | Inspecteren leiding |
Dt_Notation_IP | Inspecteren put |
Dt_Notation_IR | Inspecteren en reinigen algemeen |
Dt_Notation_NC | NLCS-coderingen voor materiaal |
Dt_Notation_RK | Reinigen en inspecteren leiding |
Dt_Notation_RL | Reinigen leiding |
Dt_Notation_RP | Reinigen put |
Dt_Notation_RS | Reinigen stortbon |
Dt_Notation_RC | Reinigen calamiteit |
Dt_Notation_RT | Reinigen stagnatie |
In het GWSW Datamodel worden context-specifieke coderingen meestal gecombineerd met het context-afhankelijke datatype. Alleen voor algemene coderingen (zoals de code HWA voor gwsw:AfvloeiendHemelwater) en voor coderingen van concepten binnen een exclusief deelmodel (bijvoorbeeld de NLCS symbolen) wordt geen specifiek datatype gebruikt.
Deelmodellen worden gemarkeerd met het annotatie-attribuut skos:scopeNote, de bijbehorende waarde geeft aan welke triples bij welk deelmodel (GWSW-Basis, GWSW-Kengetallen, enz.) horen. De deelmodel-markeringen zijn van het type gwsw:CollectionOfFacts, ze zijn als volgt in het GWSW datamodel opgenomen:
gwsw:Cof_TOP rdf:type owl:Class ; rdfs:label "Collection of facts TOP"@nl ; rdfs:subClassOf gwsw:CollectionOfFacts ; skos:definition "Bevat algemene supertypes"@nl ; skos:scopeNote gwsw:Cof_TOP .gwsw:DeelmodelBasis rdf:type owl:Class ; rdfs:label "Deelmodel Basis"@nl ; rdfs:subClassOf gwsw:GWSWDeelmodel ; skos:definition "Bevat de concepten die generiek in beheersystemen voorkomen"@nl ; skos:scopeNote gwsw:Cof_TOP . .
De annotatie skos:scopeNote kan meervoudig voorkomen (als het concept in meerdere deelmodellen voorkomt) en wordt opgenomen bij:
- De typering (relatie rdf:type) van alle GWSW-klassen, hier de is de skos:scopeNote verplicht. De (combinatie van) skos:scopeNote bij de typering geldt ook voor alle annotaties bij de klasse (horen binnen dezelfde scope).
- De CE's met restrictie op de concept-relaties (gwsw:hasPart, gwsw:hasAspect, dus niet voor de CE's met onderscheidende kenmerken). Voor de CE's is de skos:scopeNote optioneel, hoeft alleen opgenomen te worden bij afwijkingen van de skos:scopeNote op concept-niveau.
- De typering van individuen binnen een collectie (de verzameling kan variëren per deelmodel vanwege bijvoorbeeld een externe normering)
Individuen in het GWSW Datamodel kunnen veelvoudig geclassificeerd zijn. Bijvoorbeeld: het individu gwsw:Rond is geclassificeerd als gwsw:VormPutColl, gwsw:VormLeidingColl, gwsw:VormStroomprofiel. Om te kunnen bepalen of de classificatie van een individu binnen een deelmodel valt moet zowel de skos:scopeNote van het individu als de skos:scopeNote van de klasse binnen het deelmodel vallen.
Voor de volgende concepten is de scope per definitie identiek aan de scope van klasse-typering. De annotatie skos:scopeNote wordt daarom niet opgenomen bij:
- De CE's voor de kwalificatie van onderscheidende kenmerken, die vallen binnen de scope van de betrokken klasse. De onderscheidende kenmerken en de individuen/instanties ervan zijn in één centraal deelmodel opgenomen
- CE's met restrictie op datatype (waarde binnen een collectie of van een xsd-type), bij de relaties gwsw:hasValue en gwsw:hasReference
- In vervolg daarop: CE's met restricties op waardebereik (min/max)
- CE's met restrictie op metagegevens bij kenmerken (kenmerken van kenmerken): bijvoorbeeld het metagegeven Inwinning bij kenmerken zoals hoogteligging
Als een concept op basis van skos:scopeNote niet in het deelmodel opgenomen wordt, dan geldt dit ook voor alle restricties op de klasse (object van owl:onClass).
Als een concept op basis van skos:scopeNote niet in het deelmodel opgenomen wordt, dan geldt dit niet automatisch voor de subklassen (die kunnen multiparent zijn en de deelmodel-filtering is daar (nog) niet op ingericht). Gebruik in speciale gevallen daarvoor de validaty-context (kwaliteitseis "d").
Voor de definitie van conformiteitsklassen.
Vergelijkbaar met de Collection of Facts speelt ook de Validity context vanuit Gellish nog steeds een rol in de RDF-vorm van het GWSW. Met de annotatie gwsw:hasValidity worden de triples nabewerkt voor een bepaalde conformiteitsklasse (met kwaliteitseisen per proces).
Een conformiteitsklasse is altijd een vorm van een deelmodel: een filter op het GWSW-datamodel met een eventuele nabewerking (zie verder). De validity context kan met een extra filter op het GWSW-datamodel ook gebruikt worden voor alleen een deelmodel-selectie, zie de letter "d" in het vervolg.
De waarde bij gwsw:hasValidity bevat een codering voor toepassing van de conformiteitsklassen. Het is een string met de volgende opbouw:
" 1f 2t 5f enz."
Het cijfer in deze condering staat voor het type conformiteitsklasse:
Nummer | Conformiteitsklasse |
---|---|
1 | MdsProj |
2 | RibHeen |
3 | MdsPlan |
5 | Hyd |
6 | IMBOR-SW |
De letter geeft het soort kwaliteitseis aan:
Letter | Betekenis |
---|---|
t | Draai de kardinaliteit, bijvoorbeeld *minimaal 0* wordt *exact 1* |
d | De klasse doet niet mee in het deelmodel of de kwaliteitseis. In het geval van een kwaliteitseis gaat het meestal om een CE. Alle subklassen van de uitgeschakelde klasse worden ook uitgeschakeld (niet mee-gefiterd voor het deelmodel). |
f | De klasse is te abstract binnen de conformiteitsklasse. Bij de aanmaak van het RDF bestand met de conformiteitsklasse wordt op basis van deze code de Opmerking-kolom bijgewerkt met tekst: [cfk fout]. Deze tekst wordt gescand in validatie-queries |
In RDF worden aspect-attributen vaak gespecificeerd in de property (“property-central”). Bijvoorbeeld:
ex:Put1 gwsw:hasAspectPutHoogte "1000"^^xsd:integer .
In het GWSW definiëren we zo'n eigenschap/kenmerk als apart concept (“class-central”):
ex:Put1 gwsw:hasAspect ex:Hgt1 . ex:Hgt1 rdf:type gwsw:HoogtePut ; gwsw:hasValue "1000"^^xsd:integer .
De notatie (in turtle) blijft overzichtelijk, het object Hgt1 kan anoniem blijven (zonder URI) en wordt bijvoorbeeld gecombineerd met de specificatie van putmateriaal (zie hoofdstuk “Collecties”):
ex:Put1 gwsw:hasAspect [ rdf:type gwsw:HoogtePut ; gwsw:hasValue "1000"^^xsd:integer ] , [ rdf:type gwsw:PutMateriaal ; gwsw:hasReference gwsw:Beton . ]
Property gwsw:hasAspect is van het type owl:ObjectProperty.
Property gwsw:hasValue is van het type owl:DatatypeProperty en owl:FunctionalProperty. De property rdf:value wordt niet toegepast omdat het geen owl-type is (en daardoor bijvoorbeeld OWL RL-reasoning beperkt wordt).
Property gwsw:hasReference is van het type owl:ObjectProperty en owl:FunctionalProperty.
In de GWSW ontologie gaan we uit van het “class-central” principe. Deze oplossing biedt een uitgebreidere semantiek en heeft (daarom) de voorkeur:
-
Door objectificering van het kenmerk kan het in meerdere relaties gebruikt:
- Het kenmerk kan met de relatie “hasInput” als object voor berekeningen staan
- Het kenmerk kan zelf kenmerken bevatten (met de relatie “hasAspect”), bijvoorbeeld metagegevens over de inwinning. In het GWSW komt dit veel voor (zie het eerdere voorbeeld).
-
Als alternatief voor de property-central oplossing met rdfs:domain kunnen met een CE als subklassering op het subject restricties aan de combinatie property en object worden toegevoegd.
-
Als alternatief voor de property-central oplossing met rdfs:range kunnen met een CE als subklassering op subject + property “hasValue” restricties aan het datatype worden toegevoegd.
-
In een dataset kan naar believen het aspect als URI of anoniem (via een blank node) worden uitgeschreven.
-
De uitgebreidere semantiek kan in een dataset met beperkte syntax worden beschreven (zie het eerdere voorbeeld)
Voor de beschrijving van de gegevenskwaliteit - met name nauwkeurigheid, actualiteit en betrouwbaarheid - definieert de GWSW Ontologie voor veel kenmerken het metagegeven Inwinning. Dat is volgens het class-central principe eenvoudig te beschrijven:
ex:Put1 gwsw:hasAspect [ rdf:type gwsw:HoogtePut ; gwsw:hasValue "1000"^^xsd:integer ; gwsw:hasAspect [ rdf:type gwsw:Inwinning ; gwsw:hasAspect [ rdf:type gwsw:WijzeVanInwinning ; gwsw:hasReference gwsw:Schatting ; ] ] ] .
We hanteren twee soorten datatypes:
- de standaard xsd types: integer, decimal, date, gYear, time
- de maatwerk datatypes: van het type rdfs:datatype in combinatie met waarde-restricties
De eisen aan nauwkeurigheid drukken we uit als restrictie op de kenmerk-waarde:
gwsw:hasAspect rdf:type owl:ObjectProperty . gwsw:hasValue rdf:type owl:DatatypeProperty ; rdf:type owl:FunctionalProperty . # waarde-relatie altijd max 1 gwsw:HoogtePut rdfs:subClassOf gwsw:Kenmerk ; rdfs:label “Put hoogte” ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty gwsw:hasValue ;
Alleen een restrictie op het standaard datatype:
owl:allValuesFrom xsd:integer ] .
Of restricties op min/max waarde met een GWSW-datatype:
owl:allValuesFrom gwsw:dt_PutHoogte ] . gwsw:Dt_HoogtePut rdf:type rdfs:Datatype ; # typering verplicht in OWL RL rdfs:label “Put hoogte - datatype” ; owl:equivalentClass [ rdf:type rdfs:Datatype ; owl:onDatatype xsd:integer owl:withRestrictions ( [xsd:minInclusive "0"^^xsd:integer] [xsd:maxExclusive "10000"^^xsd:integer] ) ] .
Possessed aspects
Een intrinsiek aspect behoort specifiek (per definitie) bij een klasse. Afhankelijk van de soort kunnen kenmerken worden gespecialiseerd. Die intrinsieke kenmerken horen dan exclusief bij een soort. De CE beschrijft een restrictie op de property gwsw:hasAspect in combinatie met het gerelateerd kenmerktype.
gwsw:HoogtePut rdfs:comment “Intrinsiek kenmerk” ; rdfs:subClassOf gwsw:Hoogte .
Via blank-node subklasse bij Put met restrictie op property:
gwsw:Put rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty gwsw:hasAspect ; owl:someValuesFrom gwsw:HoogtePut ; ] .
ex:Put1 gwsw:hasAspect [ rdf:type gwsw:HoogtePut ; gwsw:hasValue "1100" ] .
De OWL-reasoner leidt af dat individu ex:Put1 van het type gwsw:Put is, de triple wordt (impliciet) toegevoegd (inferencing).
De restrictie-property owl:hasValue gebruiken we voor het kwalificeren van standaardwaardes van kenmerken (bijvoorbeeld voor versie-aanduidingen) .
gwsw:GwswVersie rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty gwsw:hasReference ; owl:hasValue gwsw:Abc ; ] . gwsw:Abc rdfs:label “abc”^^xsd:string rdf:type gwsw:GwswVersie . # wordt hiermee individu
Met de restrictie-property owl:allValuesFrom worden concepten als kwalificatie benoemd.
gwsw:NodeId rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty gwsw:hasReference ; # Objectproperty owl:allValuesFrom gwsw:Rioolput ] .
Deel-geheel, verbindingen, proces
Het GWSW definieert relaties voor de samenstelling (meronomie) en de verbindingen (netwerk, topologie) Deze samenstelling-relaties komen voor in datasets en in het datamodel, het datamodel beschrijft de restricties op deze relaties. De volgende relaties worden gebruikt:
hasPart
hasInput
hasOutput
hasConnection
De relaties gwsw:hasInput en gwsw:hasOutput worden gebruikt voor de beschrijving van activiteiten en processen, een voorbeeld:
gwsw:hasInput rdfs:label "has as input" ; rdf:type owl:ObjectProperty . gwsw:InspecterenPut rdfs:label "Inspecteren van een put"@nl, “Inspection manhole”@en ; rdfs:subClassOf gwsw:Activiteit ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty gwsw:hasInput ; owl:onClass gwsw:Rioolput ; ] .
Het individu ex:Put1 is onderwerp van inspectie ex:Insp:
ex:Insp1 rdf:type gwsw:InspecterenPut ; gwsw:hasInput ex:Put1 .
Netwerkbeschrijving
Het GWSW definieert ook de concepten voor een netwerkbeschrijving. Daarvoor worden de onderlinge verbindingen beschreven via de elementen "oriëntatie" die onderling gerelateerd zijn via gwsw:hasConnection. Deze relatie is van het type owl:SymmetricProperty.
Een oriëntatie kan een vertex zijn of kan bestaan uit een egde met begin- en eindpunt (vertices). In een netwerk voor hydraulische modellering worden die twee vormen "knooppunt" en "verbinding" genoemd. Een verbinding kan dan zowel een leiding (de meest voorkomende) als een pomp, doorlaat of wand zijn.
gwsw:hasConnection is van het type owl:SymmetricProperty (heeft geen inverse). Voor de netwerk-beschrijving is deze relatie essentieel, het is dan de relatie tussen topologische elementen van fysieke objecten. De relatie wordt echter ook voor de algemene beschrijving gebruikt, bijvoorbeeld om te beschrijven dat een gemaal vaak verbonden is met een persleiding.
De topologie wordt beschreven via de elementen "oriëntatie". Een oriëntatie kan een vertex zijn of kan bestaan uit een egde met begin- en eindpunt (vertices).
Meronomie
gwsw:hasPart wordt type owl:ObjectProperty en geldt voor fysieke objecten, ruimtelijke objecten en activiteiten onderling. Daarnaast kunnen ruimtes en fysieke dingen met gwsw:hasPart een ruimtelijke compositie vormen.
Ruimtelijke composities (“bevatten” iets) via de property gwsw:hasPart / gwsw:isPartOf met restrictie op object-class:
gwsw:Ruimte rdf:type owl:Class ; rdfs:label "Ruimte"@nl ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty gwsw:hasPart ; owl:allValuesFrom [ rdf:type owl:Class; owl:unionOf (gwsw:Ruimte gwsw:FysiekObject) ; ] ] .
In combinatie daarmee is in de ontologie expliciet gemaakt dat bijvoorbeeld individuen van het type FysiekObject altijd iets anders zijn dan die van het type Ruimte:
gwsw:Ruimte owl:disjointWith gwsw:Kenmerk ; owl:disjointWith gwsw:FysiekObject . # Enzovoort
De kardinaliteit beschrijft het aantal voorkomens van de (binaire) relatie. Met de kardinaliteits-restrictie beschrijven we ook de mogelijke relaties tussen concepten. Zo wordt de samenstelling expliciet beschreven door een CE met een restrictie op de property gwsw:hasPart gecombineerd met de benoeming van de kardinaliteit.
Voorbeeld van kardinaliteit voor relatie en objecttype:
gwsw:Rioolstelsel rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minQualifiedCardinality "1"^^xsd: nonNegativeInteger ; owl:onProperty gwsw:hasPart ; owl:onClass gwsw:Lozingspunt . ] ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:maxQualifiedCardinality "99"^^xsd:nonNegativeInteger ; #$ onbeperkt = geen maximum owl:onProperty gwsw:hasPart ; owl:onClass gwsw:Lozingspunt . ] .
Als de kardinaliteit niet beperkt is:
owl:minQualifiedCardinality "0"^^xsd:nonNegativeInteger ;
Hiermee is wel gemarkeerd dat de relatie relevant is voor de klasse.
Als de kardinaliteit voorgeschreven is:
owl:qualifiedCardinality "1"^^xsd:nonNegativeInteger ;
In het GWSW is beschreven welke deel-geheel relaties onderscheidend zijn voor de typering. Een Inspectieput moet bijvoorbeeld een deksel hebben om een echte Inspectieput te zijn. Daarvoor gebruiken we de type-prolongatie van Inspectieput naar CE, als iets een Inspectieput is dan is het ook iets met een Deksel.
gwsw:Inspectieput rdfs:subClassOf [ rdf:type owl:Restriction ; owl:minQualifiedCardinality "1"^^xsd:nonNegativeInteger ; owl:onProperty gwsw:hasPart ; owl:onClass gwsw:Deksel . ] .
Kardinaliteit wordt tweezijdig beschreven, daarvoor zijn er omgekeerde relaties nodig.
gwsw:isPartOf rdfs:label "has as part (inverse)” ; rdf:type owl:ObjectProperty ; owl:inverseOf gwsw:hasPart .
Ook voor deze inverse property + object (was subject) wordt dan de kardinaliteit gedefinieerd.
Domeintabellen, groeperingen
Alle collectie-leden zijn in de GWSW topologie opgenomen als individuen met annotaties. RDF beschrijft de enumeratie van individuen per collectie.
Voor de modellering van collecties gebruiken we in RDF een enumeratie van individuen. Alle collectie-members (elementen) zijn dus in de GWSW-topologie opgenomen als individuen met annotatieproperties.
Ook klassen (concepten van het type owl:Class) kunnen in collecties voorkomen. Vaak gaat het dan om groeperingen van soorten die niet in de soortenboom zijn ingedeeld.
gwsw:PutMateriaal rdfs:subClassOf gwsw:Kenmerk ; rdfs:label “Put materiaal” ; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty gwsw:hasReference ; # FunctionalProperty + ObjectProperty owl:allValuesFrom gwsw:PutMatColl ; ] . gwsw:PutMatColl rdf:type owl:Class ; rdfs:subClassOf [ rdf:type owl:Class ; owl:oneOf (gwsw:Beton gwsw:Pvc) # individuen ] . gwsw:Beton rdfs:label “beton" ; # annotatie: naam rdf:type gwsw:PutMatColl ; # algemene typering skos:notation “A” . # annotatie: code
In de dataset verwijzen naar het individu:
ex:Put1 rdf:type gwsw:Put ; gwsw:hasAspect [ rdf:type gwsw:PutMateriaal ; gwsw:hasReference gwsw:Beton ; # individu ] .