// author: Matje van de Camp
// email:  m.m.v.d.camp@tilburguniversity.edu
// date:   2011-09-15
// This file contains rules for the temporal expressions of the type time: timerules
// RULENAME="",EXTRACTION="",NORM_VALUE=""(,OFFSET="")?(,POS_CONSTRAINT="")?(,NORM_MOD="")?(,NORM_QUANT="")?(,NORM_FREQ="")?

/////////////////////
// TIMESTAMP STYLE //
/////////////////////
// time_r1 (Timestamp style)
// EXAMPLE r1a-1: 2009-12-19T17:00:00
// EXAMPLE r1a-2: 2009-12-19 17:00:00
// EXAMPLE r1b-1: 2009-12-19T17:00
// EXAMPLE r1c-1: 12/29/2000 20:29
// EXAMPLE r1d-1: 12/29/2000 20:29:29
// EXAMPLE r1e-1: 12/29/2000 20:29:29.79
RULENAME="time_r1a",EXTRACTION="(%reDayNumber-%reMonthNumber-%reYear4Digit)(T| )%reTimeHour:%reTimeMinute:%reTimeMinute",NORM_VALUE="group(4)-group(3)-group(2)Tgroup(6):group(7):group(8)"
RULENAME="time_r1b",EXTRACTION="(%reDayNumber-%reMonthNumber-%reYear4Digit)(T| )%reTimeHour:%reTimeMinute",NORM_VALUE="group(4)-group(3)-group(2)Tgroup(6):group(7)"
RULENAME="time_r1c",EXTRACTION="(%reDayNumber/%reMonthNumber/%reYear4Digit) %reTimeHour:%reTimeMinute",NORM_VALUE="group(4)-group(3)-group(2)Tgroup(5):group(6)"
RULENAME="time_r1d",EXTRACTION="(%reDayNumber/%reMonthNumber/%reYear4Digit) %reTimeHour:%reTimeMinute:%reTimeMinute",NORM_VALUE="group(4)-group(3)-group(2)Tgroup(5):group(6):group(7)"
RULENAME="time_r1e",EXTRACTION="(%reDayNumber/%reMonthNumber/%reYear4Digit) %reTimeHour:%reTimeMinute:%reTimeMinute\.%reYear2Digit",NORM_VALUE="group(4)-group(3)-group(2)Tgroup(5):group(6):group(7).group(8)"

// time_r2
// EXAMPLE r2a-1: 09-24-99 1145EST (TimeStamp style with timezone information)
// EXAMPLE r2b-1: 24 November, 2011 1535 GMT
RULENAME="time_r2a",EXTRACTION="(%reDayNumber-%reMonthNumber-%reYear2Digit)( %reTimeHour(:)?%reTimeMinute)%reTimezone?",NORM_VALUE="UNDEF-centurygroup(4)-group(3)-group(2)T%normMinute(group(6)):%normMinute(group(8))%normTimezone(group(9))"
RULENAME="time_r2b",EXTRACTION="%reDayNumber %reMonthLong,? %reYear4Digit %reTimeHour(:)?%reTimeMinute( %reTimezone)?",NORM_VALUE="group(3)-%normMonth(group(2))-%normDay(group(1))T%normMinute(group(4)):%normMinute(group(6))"


/////////////////////////////
// PART-OF-DAY GRANULARITY //
/////////////////////////////
// time_r3
// EXAMPLE r3a-1: maandagnacht
// EXAMPLE r3b-1: morgenavond
RULENAME="time_r3a",EXTRACTION="%reWeekday( |-)?%rePartOfDay",NORM_VALUE="UNDEF-day-%normWeekday(group(1))T%normPartOfDay(group(3))"
RULENAME="time_r3b",EXTRACTION="%rePartOfDay( |-)?%rePartOfDay",NORM_VALUE="UNDEF-day-%normWeekday(group(1))T%normPartOfDay(group(3))"

// time_r4
// EXAMPLE r4a-1: eerder vanavond
// EXAMPLE r4a-2: later deze avond
// EXAMPLE r4b-1: vanavond
RULENAME="time_r4a",EXTRACTION="(([Ee]erder|[Ll]ater|[Vv]roeger) )?%reThisNextLast? %rePartOfDay",NORM_VALUE="UNDEF-%normThisNextLast(group(3))-dayT%normPartOfDay(group(4))"
RULENAME="time_r4b",EXTRACTION="([Vv]anavond)",NORM_VALUE="UNDEF-this-dayT%normPartOfDay(group(1))"

///////////////////////////
// TIMEPOINT GRANULARITY //
///////////////////////////
// time_r5
// EXAMPLE r5a-1: circa negen uur 's ochtends
// EXAMPLE r5b-1: circa 9 uur 's ochtends
// EXAMPLE r5c-1: ongeveer om 11:00u 's avonds
// EXAMPLE r5d-1: 10:30:34
RULENAME="time_r5a",EXTRACTION="(%reApproximate )?(om )?(%reNumWord1D|%reNumWord2D)( uur| ?u\.?| ?U\.?)( 's (ochtend|middag|avond|nacht)s)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(4)):00"
RULENAME="time_r5b",EXTRACTION="(%reApproximate )?(om )?%reTimeHour( uur| ?u\.?| ?U\.?)( 's (ochtend|middag|avond|nacht)s)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(4)):00"
RULENAME="time_r5c",EXTRACTION="(%reApproximate )?(om )?%reTimeHour[:\.]%reTimeMinute( uur| ?u\.?| ?U\.?)?( 's (ochtend|middag|avond|nacht)s)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(4)):group(5)"
RULENAME="time_r5d",EXTRACTION="(om )?%reTimeHour:%reTimeMinute:%reTimeMinute( uur| ?u\.?| ?U\.?)?( 's (ochtend|middag|avond|nacht)s)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(2)):group(3)"


// EXAMPLE r6a-1: zeven uur maandagochtend
// EXAMPLE r6b-1: 9 uur maandagochtend
// EXAMPLE r6c-1: 13:00 uur woensdag
// EXAMPLE r6d-1: donderdagmiddag om vier uur
// EXAMPLE r6e-1: donderdagmiddag om 4 uur
// EXAMPLE r6f-1: donderdag om 15:00u
RULENAME="time_r6a",EXTRACTION="(%reApproximate )?(om )?(%reNumWord1D|%reNumWord2D)( uur| ?u\.?| ?U\.?)? %reWeekday( %rePartOfDay)?",NORM_VALUE="UNDEF-day-%normWeekday(group(8))T%normDay(group(4)):00"
RULENAME="time_r6b",EXTRACTION="(%reApproximate )?(om )?%reTimeHour( uur| ?u\.?| ?U\.?) %reWeekday( %rePartOfDay)?",NORM_VALUE="UNDEF-day-%normWeekday(group(6))T%normDay(group(4)):00"
RULENAME="time_r6c",EXTRACTION="(%reApproximate )?(om )?%reTimeHour[:\.]%reTimeMinute( uur| ?u\.?| ?U\.?)? %reWeekday( %rePartOfDay)?",NORM_VALUE="UNDEF-day-%normWeekday(group(7))T%normDay(group(4)):group(5)"
RULENAME="time_r6d",EXTRACTION="%reWeekday( %rePartOfDay)?( om)?( %reApproximate)?(%reNumWord1D|%reNumWord2D)( uur| ?u\.?| ?U\.?)?",NORM_VALUE="UNDEF-day-%normWeekday(group(1))T%normDay(group(7)):00"
RULENAME="time_r6e",EXTRACTION="%reWeekday( %rePartOfDay)?( om)?( %reApproximate)?%reTimeHour( uur| ?u\.?| ?U\.?)?",NORM_VALUE="UNDEF-day-%normWeekday(group(1))T%normDay(group(7)):00"
RULENAME="time_r6f",EXTRACTION="%reWeekday( %rePartOfDay)?( om)?( %reApproximate)?%reTimeHour[:\.]%reTimeMinute( uur| ?u\.?| ?U\.?)?",NORM_VALUE="UNDEF-day-%normWeekday(group(1))T%normDay(group(7)):group(8)"

