using the DateTime Data type to Describe Birthdays

I recently used a fancy datatype in OWL for the first time. So far, for things like the family History Knowledgebase (FHKB), I’ve been modelling dates as years only and using integers to do this. This has no real consequences, apart from integer having a zero and the Gregorian system not doing so. Obviously use of the datetime data property offers some added extras and I finally got around to trying them out.

The XML data type of dateTime is used in OWL. It has the format yyyy-mm-ddThh:mm:ss. So, an individual’s birthday might be represented as:

Individual: p001

    Types: [in time]
        Person

    Facts:  [in time]
     bornOn  "1934-05-06T01:20:03"^^dateTime

This means that this person was born on the 6th of May 1934 at 20 minutes and 3 seconds bpast one o’clock in the morning. This is all sort of fine, except that this would be an unusual degree of precision in anyone’s understanding of their birth time. Some medical notes would record appearance of head, placenta and so on, but most people don’t know this time. Plus we’d have to make some definition of birth (that also accommodated caesarean birth).

So, we have to use facets to put a degree of vagueness into a birth day:

Individual: p008

    Types: [in time]
        bornOn some dateTime[>= "1943-05-22T00:00:00"^^dateTime , <= "1943-05-22T23:59:59"^^dateTime]

This means that this person was born at some point between midnight on 22nd May 1943 and 23 59 59 hours on the same day. From an open world point of view I’d like to be able to just leave it open as to the time of a particular date on which a person was born. However, leaving the time portion of the dateTime datatype out is syntactically invalid.

One makes classes in the TBox in the usual way also using the datatypes as I have done here. A 1960’s birth is defined as:

Class: SixtiesChild

    EquivalentTo: [in time]
        * SixtiesChild,
        Person
         and (bornOn some dateTime[>= "1960-01-01T00:00:00"^^dateTime , <= "1969-12-31T23:59:59"^^dateTime])

A bit more interesting is modelling baby boomer:

Class: BabyBoomer

Annotations:
comment "\"A baby boomer is a person who was born during the demographic post-world war two baby boom.\" - Taken from Wikipedia http://en.wikipedia.org/wiki/Baby_boomer. the definition here is from the US Census Office as stated on the Wikipedia page."

    EquivalentTo: [in time]
        * BabyBoomer,
        Person
         and (bornOn some dateTime[>= "1946-01-01T00:00:00"^^dateTime , <= "1964-12-31T23:59:59"^^dateTime])

The representation is the same style, but more issues come into play. The notion of baby boomer seems altogether vague, but seeks to capture the post second world war increase in births per capita of population. One thing is that definitions seems to vary. Also it would seem strange to have precise boundaries; one second is the difference between being a baby boomer and not. Finally, there seems to be a geographical and citizenship element to the definition. Different countries have different definitions; the Canadian baby boom is different to the US baby boom. Then if I’m born out of the UK to UK parents, in a country gthat doesn’t have a baby boom, am I still a baby boomer? If I’m counted in the UK’s census and I have a UK birth certificate, then I am. If I had birth certificates in two different countries (perfectly possible) and one country had a baby boom and one didn’t, then I could be a member of the baby boom and not member of a baby boom cohort.

The final definition I tried to write was for babies born in the early hours of the morning. So, I might write something like:

Class: earlyHoursBirth

        EquivalentTo: Person
                that bornAt some time[>= ""00:00:00"^^time, <= "02:59:59"^^time]

Where I’d wish to use just the time portion of the dateTime datatype. This doesn’t work. My birthdays ontology, very much a little toy, is available.

One final note is that the syntax for these kinds of definition is vile.

Advertisements

One Response to “using the DateTime Data type to Describe Birthdays”

  1. Chris Senior Says:

    So why not have a birth-date (xsd:date) property and a separate birth-time (xsd:time) property?

    RDF suggests it’s possible: http://www.w3.org/TR/2013/WD-rdf11-concepts-20130723/#xsd-datatypes

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: