wouterbeek / etl-andb

Werk repository voor de creatie van de ANDB dataset in linked data.
0 stars 1 forks source link

Opbouw shapes #3

Closed MiconSchorsij closed 3 years ago

MiconSchorsij commented 3 years ago

Er is voor mij onduidelijkheid ontstaan over de correcte wijze waarop shapes als properties van andere shapes gebruikt kunnen worden. Ik maak even gebruik van een voorbeelden die ik in de originele shapes file vind.

Voorbeeld 1: in de relatie tussen de shape WorkEvent en Workshop wordt op onderstaande manier naar de Workshop verwezen (naar de klasse, niet eens naar de shape).

shape:WorkEvent
  sh:property
    [ sh:class andb:Workshop;
      sh:path andb:workshop ],
    shape:after,
    shape:before,
    shape:date,
    shape:label;
    sh:targetClass andb:WorkEvent.

Maar als de shape Workshop verwijst naar de shape Adress staat er simpelweg dit:

shape:Workshop
  sh:property
    shape:address,
    shape:label,
    shape:name;
  sh:targetClass andb:Workshop.

Waarom staat daar dan niet:

[ sh:class andb:Address;
  sh:path andb:address ]

Wat is het verschil en wanneer pas je welke methode toe?

wouterbeek commented 3 years ago

Goede vraag! Ik vat hem even zo samen: "Wanneer gebruik je een property shape IRI (bijv. shape:address) en wanneer een anonyme blank node (in-line [ ... ] notatie)?"

Dit zijn twee syntactische manieren om hetzelfde uit te drukken. Inhoudelijk is er dus geen verschil.

Echter, er zijn wel twee niet-inhoudelijke redenen om de eerste variant (IRI) te gebruiken:

  1. Wanneer twee node shapes dezelfde property shape gebruiken zou de tweede variant (blank node) een duplicatie van de inhoud impliceren.
  2. De naam van de property shape wordt gebruikt in SHACL validatie rapportages. Wanneer dit een blank node is is deze niet makkelijk identificeerbaar in de shapes file. Wanneer dit een IRI is is deze eenvoudiger op te zoeken.