This is a FoafVocab issue, documented as such by linking it from the IssueTracker page.

* Status: Active (discussion on rdfweb-dev)
* Owner: mortenf

Contents

Summary

For somewhat obvious social reasons, it would be nice to have a property that somehow gave indication of the age, birthday and/or birthdate of a person, first and foremost for birthday reminders. The origin of this issue is unclear, but at least Danny Ayers has suggested it in a mail to rdfweb-dev, with earlier mentions by danbri on rdfweb-dev and a later resurrection by Adam Atlas as well as an action follow-up by Libby.

Problems

Some want to express the exact date and time of their birth, some don't want to give out their age, some don't mind other people knowing their approximate age but don't want to receive birthday greetings...

At the same time there might be security reasons to think about, as semantic bots may soon be able to know your mothers birthday.

When thinking about the different options, it might be wise to also consider the microparsing issue -- whether it is easy to locate an exact date or easy to locate e.g. all dates with a given year, month, or day (or a combination thereof).

Usage history

danbri's original FOAF file uses foaf:dateOfBirth.

LiveJournal exposes information with foaf:dateOfBirth.

Options

This option list is mostly gleaned from Libby's mail.

OneProp:: The simplest possible solution would be just one predicate, foaf:dateOfBirth (or foaf:birthday, but that doesn't seem to be in use anywhere, and could be confused with the yearly recurring event), containg a regular W3CDTF date (yyyy-mm-dd). This approach is also used by Paul Ford in his Hacking Congress column (schema), even if the date notation isn't W3CDTF. This approach is simple, but doesn't giver users much to choose from, and makes it hard(er) to query for e.g. birthdays next month or tomorrow (generally, usually you know the date of tomorrow).
OnePropBis:: A variation on the date format for a single property is to allow an arbitrary ISO8601 date, as suggested by Ian Davis: ISO8601 lets you miss out a year by replacing it with a dash:
<foaf:birthday>--06-15</foaf:birthday>
Looks a bit cryptic though.
This approach is flexible for producers, but puts a burden on consumers, that need to handle many different formats.
TwoProp:: Another option is just two non-overlapping properties as suggested by Richard Cyganiak, one with only the year (yyyy) and one with month and day (mm-dd). This option makes it possible to cater for the no-age camp as well as the no-presents camp, at the cost of a more complicated query when you want the combination.
TwoPropBis:: A variation on the theme of two properties is the one suggested by Bill Kearney: Two properties, one with a complete date (yyyy-mm-dd), one with just month and day (mm-dd). This approach keeps the simple approach, and adds a predicate for those wishing to hide their age, again at the consumers disadvantage.
TwoPropSplit:: As suggested by Ian Davis, this is essentially the same as TwoPropBis, with the two properties being split (evenly!) between FOAF and the bio vocabulary: A new property foaf:birthday (mm-dd) and the existing bio:date (yyyy-mm-dd) used with bio:Birth. This option seems to hit a sweet spot, catering for most use cases, including giving the option of just supplying a year, since the bio:date property is based on ISO8601. The only potential use case not covered is a simple query for birthdays in a specific month, as pointed out by Benjamin Nowack.
ThreeProp:: Yet another option is three separate datatyped properties as suggested by Benjamin Nowack, one with the year (yyyy), one with the month (mm), and one with the day (dd). There might be a problem with using the datatypes, since relevant day type (xsd:gDay) suggests monthly recurrence, not yearly, as per XML Schema Part 2: gDay is a gregorian day that recurs, specifically a day of the month such as the 5th of the month. Arbitrary recurring days are not supported by this datatype. The ·value space· of gDay is the space of a set of calendar dates as defined in § 3 of [ISO 8601]. Specifically, it is a set of one-day long, monthly periodic instances. Without the datatyping, this option is the most flexible and at the same time still somewhat easy to consume, even if it does require a more complicated query for the combination.
Bio:: The bio vocabulary could be used instead. The date (or recurrence) still needs to be expressed, but the burden would then be on the bio maintainer. This options basically sidesteps the issue (although it's actually OneProp in another vocabulary, using yyyy-mm-dd), but one advantage would be the fact that there would not be a need for yet another property indicating place of birth, as that is integrated into the bio vocabulary.
iCal:: RDF/iCal might be an option, but the same datatype problems as with the ThreeProp options exist. Also, iCal demands that all parts of the date are indicated -- essentially an iCal-version of OneProp with iCal support (yyyy-mm-dd).

Potential Actions for TwoPropSplit

* A new property foaf:birthday is added to the FOAF vocabulary.
* Accompanying term documentation is written (see also existing term documentation).
* An FAQ-style weblog post is written, including examples and pointers to the bio vocabulary.
* "Migration" of existing usage.

New property: foaf:birthday

<rdf:Property rdf:about="http://xmlns.com/foaf/0.1/birthday"
    vs:term_status="testing"
    rdfs:label="birthday"
    rdfs:comment="The month and day of the birth of something, in "mm-dd" form.">
  <rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
  <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/>
  <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>
</rdf:Property>

Notes:

* The domain is rdfs:Resource, as there doesn't seem to be any point in limiting birthdays to people or even agents - bots, pets and projects can have them as well. On the other hand, the bio vocabulary limits events to just people...
* This could be declared as an owl:DatatypeProperty, but the OwlClassFoafSpecIssue (which could cover properties as well) is still open.

Term Documentation for foaf:birthday

The foaf:birthday property relates something, e.g. a foaf:Person, to a string representing the month and day of its birth in "mm-dd" form.

<foaf:Person>
  <foaf:name>Jim Ley</foaf:name>
  <foaf:birthday>12-31</foaf:birthday>
</foaf:Person>

It is also possible to express a persons precise date of birth by using the terms bio:event, bio:Birth, and bio:date from the <a href="http://vocab.org/bio/0.1/">bio vocabulary</a>:

<foaf:Person>
  <foaf:name>Jim Ley</foaf:name>
  <bio:event>
    <bio:Birth>
      <bio:date>1999-12-31</bio:date>
    </bio:Birth>
  </bio:event>
</foaf:Person>

Note that there may be security issues with making birthdays and/or birthdates public. Sometimes this type of information can be used for identity theft.

This term was added at ... discussion ... decision ... meeting ... history documented in the wiki page <a href="http://rdfweb.org/topic/BirthdayIssue">BirthdayIssue</a>...

Weblog post: The property foaf:birthday

As the term documentation, with the addition of some thoughts regarding the other options?

Migration strategy

* Step 1: Bug danbri to fix his file.
* Step 2: Hunt down other people using foaf:dateOfBirth and get them to change.
* Step 3: Determine current status of LiveJournal development and try to push the "upgrade" (hopefully including other improvements as suggested by crschmidt). Update 2005-03-15: work is being done!