Giter VIP home page Giter VIP logo

oslothema-wegenenverkeer's Introduction

OSLOthema-wegenenverkeer

De datastandaarden betrokken bij het thema wegenenverkeer.

oslothema-wegenenverkeer's People

Contributors

bertvannuffelen avatar davidvlaminck avatar deefbas avatar geoniusinfra avatar oat-beheer avatar rafvlm avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

oslothema-wegenenverkeer's Issues

VOC en IM algemeen - aanpak enumeraties is niet OSLO compliant

Alle enumeraties blijken een eigen uri te hebben.
Voorbeeld uit VOC onderdeel:
https://data.vlaanderen.be/ns/wegenenverkeer/onderdeel#BoomBoomspiegel.

Dat is niet de OSLO oplossing voor enumeraties, dewelke is:

1. Enumeraties worden ingevuld aan de hand van een codelijst.
Om in verband te kunnen gebracht worden met een codelijst, moet een enumeratie in het UML model een "uri" tag hebben gelijk aan "http://www.w3.org/2004/02/skos/core#Concept" (skos:Concept).
Let wel, eventuele in de enumeratie aangebrachte entries zijn enkel illustratief. De codelijst bevat de effectief mogelijke waarden.
Verder noemen we zo'n enumeratie een codelijst-enumeratie.

2. Elke enumeratie moet een codelijst-enumeratie zijn.

3. Om in verband te kunnen gebracht worden met een codelijst, moet een attribuut/connector in het UML model of (a) als type een codelijst-enumeratie hebben of (b) een "range" tag hebben gelijk aan "http://www.w3.org/2004/02/skos/core#Concept" (skos:Concept).
Verder noemen we zo'n attribuut/connector een codelijst-attribuut/connector.
In geval (a) noemen we de betreffende codelijst-enumeratie verder de gelinkte codelijst-enumeratie.

4. Een "ap-codelist" tag mag enkel worden aangebracht op een codelijst-enumeratie of een codelijst-attribuut/connector.
Dit wordt enkel in het applicatieprofiel gedaan.
Opgelet, elke codelijst-enumeratie moet op het diagram staan, bij voorkeur onderaan en in groene kleur, maar wordt ter vermijding van verwarring niet mee gekopieerd naar de visuele kopie van het diagram die in de specificatie wordt getoond (overview.jpg).

5. Een codelijst-attribuut/connector moet of (a) een "ap-codelist" tag hebben of (b) een gelinkte codelijst-enumeratie met aangebrachte "ap-codelist" tag hebben.
De "ap-codelist" tag uit geval (a) heeft prioriteit over die uit geval (b), die dus als default waarde geldt.

6. De corresponderende codelijst moet gepubliceerd staan op de url die ingevuld is in de "ap-codelist" tag.

Pas dus in de vocabularia de enumeraties aan tot ze "codelijst-enumeraties" zijn zoals hierboven beschreven en doe in de implementatiemodellen zoals hierboven beschreven voor applicatieprofielen.

Merk op: deze oplossing is in tegenstrijd met #3 (comment) en met #32, maar hiervoor is wel consensus met Bert en Geert.

Merk ook op dat als gevolg de enumeraties niet meer ten onrechte zullen voorkomen bij de Klassen in de VOC spec. Als nadeel kan worden opgemerkt dat hierdoor de definitie verloren gaat, maar deze hoort eveneens thuis in de codelijst zelf.

IM algemeen - voorbarig doorlinken naar vocabularium

Voor elementen die niet op het diagram voorkomen maar opgelijst staan in de spec (bijvoorbeeld onder "Subklasse van" of in de kolom "Verwacht Type") last de toolchain een link in naar het vocabularium. Bij gebrek aan informatie gegeven aan de toolchain is dit normaal.

Echter, voor vele gevallen hier is het wenselijk om wel extra informatie te verstrekken.
Bijvoorbeeld voor alle elementen gedefinieerd in de vocabularia awv-object en implementieelement.

De oplossing om deze mee op het diagram van het plaatselijke implementatiemodel te plaatsen is niet wenselijk om het plaatselijk implementatiemodel niet te overladen.

Voorgestelde oplossing:
maak voor die vocabularia een eigen implementatiemodel en geef bij de afhankelijkheden een link naar deze implementatiemodellen (hoe: zie @bertvannuffelen ).

Concreet voorbeeld:
In IM grondwerken, bij entiteit Grond: verwacht type AWVDocument, KwantWrdInMeter

VOC en IM algemeen - relaties (klassen en gelijknamige associaties, met of zonder associatieklasse functionaliteit)

In het vocabularium Onderdeel worden een aantal klassen gedefinieerd met in de definitie "relatie".
De meeste hebben geen attributen, twee hebben wel attributen.
Een overzicht is ook te vinden in het implementatiemodel https://wegenenverkeer.data.vlaanderen.be/doc/implementatiemodel/relaties:
afbeelding

De uri's:
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#BestaatUit
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#Bevestigd
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#HeeftGeometrie
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#LigtOp
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#NetwerkECC
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#NetwerkProtectie
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#SluitAanOp
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#Sturing
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#SwGehostOp
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#SwOnderdeelVan
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#TypeVan
https://wegenenverkeer.data.vlaanderen.be/ns/onderdeel#Voeding

Tegelijk komen ook gelijknamige associaties voor in het vocabularium Onderdeel, die dus dezelfde uri's krijgen als de klassen hierboven. Dit is niet OSLO-compliant: een uri kan maar voor één soort element gebruikt worden.

Deze associaties komen ook meermaals voor tussen verschillende klassen in het vocabularium onderdeel. In een OSLO vocabularium kan een associatie maar één keer gedefinieerd worden; in een implementatiemodel kan die weliswaar tussen verschillende klassen worden toegepast.

Voorstel tot verbetering.

  • voor de klassen zonder attributen:

    • geef elke betreffende associatie een definitie in het vocabularium en verwijder de klasse
    • leg in het vocabularium elke associatie tussen een gemeenschappelijke basisklasse voor alle klassen waartussen deze associatie zal gelegd worden in applicatieprofielen/implementatiemodellen
    • pas in implementatiemodellen de associatie toe tussen entiteiten zoals nodig
  • voor de klassen met attributen:

    • hiervoor is een associatie met bijhorende associatieklasse normaal gezien de manier van werking. Hiervoor is nog een extra oplossing nodig (toolchain? advies OSLO team?) omdat een associatieklasse horend bij een associatie tussen twee basisklassen in UML niet kan hergebruikt worden bij toepassing in implementatiemodellen tussen afgeleide klassen.

suggestie versionering

Misschien kan je voor de versionering van de implementatiemodellen
de urls
{domein}/doc/implementatiemodel/awv-object/ontwerpdocument/{versie}

gebruiken.

Dan staat dat ook niet in de titel alleen.

VOC algemeen - titel ontbreekt

Er is geen titel bovenaan elk vocabularium.
In de tekst boven samenvatting (de inleiding) ontbreekt de naam van het vocabularium.

VOC algemeen - herhaling van de term vooraan de definitie

Begin een definitie niet met het herhalen van de term naam, bijvoorbeeld (eigenschap boomspiegel in VOC abstracten: "De boomspiegel is het stuk grond rondom de stam van een boom, en in de ideale situatie minstens zo groot is als de kruin van de boom."

VOC algemeen - integratie OSLO-Generiek is zeer voorlopig

De integratie van OSLO-Generiek in de vocabularia (zie EAP file) is zeer voorlopig door zelf een package OSLO²-Generiek te maken, zonder baseURI, met partiële kopie van inhoud uit een email, waarop hardcode uri toekenningen.

Goede oplossing:

  • in vocabularia: kopieer OSLO vocabularia uit versie van OSLO-Generiek op github (referentie te geven door OSLO team) en link naar de daar voorkomende elementen
  • in applicatieprofielen/implementatiemodellen: geef in dependency op naar een versie van applicatieprofiel Generiek-Basis in eap-mapping.json (referentie te geven door OSLO team), aangevuld met eigen kopie van OSLO-Generiek gebruikt voor vocabularia, waaruit elementen op het eigen diagram worden gesleept en aangepast, indien afwijkende constraints gelden ten opzichte van applicatieprofiel Generiek-Basis.

VOC algemeen - lege definities

Er moet overal een definitie staan.
Ontbreekt bijvoorbeeld in VOC onderdeel voor:
BevestigingsbeugelType

Idem voor label.
Ontbreekt bijvoorbeeld in VOC installatie voor:
Riolering

VOC algemeen - overerving gebruikt waar geen logisch "is een" verband bestaat

(Aangebracht door @GeertThijs )

In de modellen wordt overerving gebruikt waar geen logisch "is een" verband bestaat van de afgeleide klasse naar de basisklasse.

Voorbeelden uit VOC abstracten:

Klassen als ArtificiëleLagen en/of AndereLagen erven over van Laagdikte, LaagProductidentificatiecode.
Maar een ArtificiëleLaag is geen Laagdikte, is evenmin een LaagProductidentificatiecode.

Oplossing: modelleren als attribuut, evt datatype van maken om attributen te groeperen.

Toolchain rendering - specialisaties niet zichtbaar

Het veld "Specialisatie van" is overal leeg, alhoewel op de diagrammen in de .eap files generalisatiepijlen en/of basisklassen in rechterbovenhoek van klassen zichtbaar zijn. Voorbeeld in VOC abstract: Boomvorm is een specialisatie van AanlegBoomvorm.

De specs lijken dus een vlakke klassestructuur te beschrijven.

Waar geen specialisatie is, kan de rij met veld "Specialisatie van" misschien weggelaten worden om de spec compacter te maken.

VOC algemeen - vocabularia onder https://data.vlaanderen.be/ns/ mogen niet verwijzen naar elementen uit https://wegenenverkeer.data.vlaanderen.be/ns/

In een vocabularium onder https://data.vlaanderen.be/ns/ mag een element A niet refereren naar een element B in een vocabularium onder https://wegenenverkeer.data.vlaanderen.be/ns/.

Bijvoorbeeld voor A met uri https://data.vlaanderen.be/ns/wegenenverkeer/abstracten#put.adres is het bereik momenteel B met uri https://wegenenverkeer.data.vlaanderen.be/ns/implementatieelement#Adres.

Maak in dergelijke gevallen eerst een element Bbase onder https://data.vlaanderen.be/ns/ en laat A verwijzen naar Bbase. Leid de bestaande B nu af van Bbase. In het implementatiemodel kan dan semantisch correct nog altijd in A verwezen worden naar B.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.