:Class → :Period → :Age - rug-compling/noordergraf GitHub Wiki

Klassehiërarchie

  • Class
    • :textxsd:string
    • :period:Period
    • Period
      • :durationxsd:duration
      • Age
    • Person
      • :age:Age

Formaat van duration

Zie https://www.w3.org/TR/xmlschema11-2/#duration-lexical-space

Voorloopnullen zorgen ervoor dat alfabetisch op duration gesorteerd kan worden

xsd:duration aangepast
P52Y6M P052Y06M
P3D P000Y00M03D

Het is mogelijk een eigen datatype af te leiden van xsd:duration waar het patroon met voorloopnullen wordt vereist. Zie https://www.w3.org/TR/xmlschema11-2/#duration-facets

pattern: P[0-9][0-9][0-9]Y([0-9][0-9]M([0-9][0-9]D)?)?
ordered: total (?)

Eigenlijk zou dit alles niet nodig moeten zijn. Volgens de definite zou xsd:duration intern vertaald moeten worden naar een tuple: maanden (integer) en seconden (float). Maar het lijkt er op dat AllegroGraph dit niet doet. Sorteren op xsd:duration gaat niet goed in AllegroGraph.

Voorbeelden

Iets van een bepaalde duur

:period [
  a :Period ;
  :duration "P052Y06M"^^xsd:duration ;
  :text "52½ Jaren"
] 

Een leeftijd

:age [
  a :Age ;
  :duration "P036Y"^^xsd:duration ;
  :text "ruim 36 jaar"
]
:age [
  a :Age ;
  :duration "P000Y00M03D"^^xsd:duration ;
  :text "slechts 3 dagen oud"
]

Toevoegingen zoals ruim en bijna zouden we kunnen coderen in de duur:

  • "ruim 36 jaar" → P36Y2M
  • "bijna 60 jaar" → P59Y10M