// author: TV Canh
// email:  canhtv@uni-hd.de
// date:   2012-07-22
// 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 r1c-1: 12/29/2000 20:29
// EXAMPLE r1d-1: 12/29/2000 20:29:29


//Vietnamese

//vn_time_r0
//EXAMPLE   vn_time_r0a:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29/10/1999

//EXAMPLE   vn_time_r0b:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29-10-1999
//EXAMPLE   vn_time_r0c:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29.10.1999
//EXAMPLE   vn_time_r0d:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29/10/99
//EXAMPLE   vn_time_r0e:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29-10-99
//EXAMPLE   vn_time_r0f:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29.10.99
//EXAMPLE   vn_time_r0g:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29/10
//EXAMPLE   vn_time_r0h:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29-10
//EXAMPLE   vn_time_r0i:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29.10

RULENAME="vn_time_r0a",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber/%reMonthNumber/%reYear4Digit",NORM_VALUE="group(10)-%normMonth(group(9))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r0b",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber-%reMonthNumber-%reYear4Digit",NORM_VALUE="group(10)-%normMonth(group(9))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r0d",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber/%reMonthNumber/%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(10)-%normMonth(group(9))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r0e",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber-%reMonthNumber-%reYear2Digit",NORM_VALUE="UNDEF-centurygroup(10)-%normMonth(group(9))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r0g",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber/%reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(9))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r0h",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber-%reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(9))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"


//vn_time_r1
//EXAMPLE   vn_time_r1a:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29 tháng 10 năm 1999
//EXAMPLE   vn_time_r0d:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29 tháng 10 năm 99
//EXAMPLE   vn_time_r0g:   (lúc|khoảng )? 20(h| giờ) 23(p| phút) (ngày|Ngày)? 29 tháng 10

RULENAME="vn_time_r1a",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm|,) %reYear4Digit",NORM_VALUE="group(12)-%normMonth(group(10))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r1d",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm|,) %reYear2Digit",NORM_VALUE="UNDEF-centurygroup(12)-%normMonth(group(10))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"

RULENAME="vn_time_r1g",EXTRACTION="(%reApproximate )?%reTimeHour(h| giờ) %reTimeMinute(p| phút) (ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(10))-%normDay(group(8))Tgroup(3):group(5)",NORM_MOD="%normApprox4Durations(group(2))"



/////////////////////////////
// PART-OF-DAY GRANULARITY //
/////////////////////////////
// time_r3
// EXAMPLE vn_time_r3a: lúc nửa đêm Thư hai		 midnight Monday
// EXAMPLE vn_time_r3b: lúc nửa đêm Hôm nay		 
// EXAMPLE vn_time_r3c:  sáng  (ngày|Ngày)? 29/10/1999
// EXAMPLE vn_time_r3d:  chiều (ngày|Ngày)? 29-10-1999
// EXAMPLE vn_time_r3e:  sáng  (ngày|Ngày)? 29/10
// EXAMPLE vn_time_r3f:  sáng  (ngày|Ngày)? 29-10


//EXAMPLE   vn_time_r3g:   sáng (ngày|Ngày)? 29 tháng 10 năm 1999
//EXAMPLE   vn_time_r3h:   sáng (ngày|Ngày)? 29 tháng 10, 1999
//EXAMPLE   vn_time_r3i:   sáng (ngày|Ngày)? 29 tháng 10



RULENAME="vn_time_r3a",EXTRACTION="%rePartOfDay %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(2))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3b",EXTRACTION="%rePartOfDay %reDateWord",NORM_VALUE="%normDateWord(group(2))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3c",EXTRACTION="%rePartOfDay (ngày |Ngày )?%reDayNumber/%reMonthNumber/%reYear4Digit",NORM_VALUE="group(5)-%normMonth(group(4))-%normDay(group(3))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3d",EXTRACTION="%rePartOfDay (ngày |Ngày )?%reDayNumber-%reMonthNumber-%reYear4Digit",NORM_VALUE="group(5)-%normMonth(group(4))-%normDay(group(3))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3e",EXTRACTION="%rePartOfDay (ngày |Ngày )?%reDayNumber/%reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(4))-%normDay(group(3))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3f",EXTRACTION="%rePartOfDay (ngày |Ngày )%reDayNumber-%reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(4))-%normDay(group(3))T%normPartOfDay(group(1))"


RULENAME="vn_time_r3g",EXTRACTION="%rePartOfDay (ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber (năm|Năm|) %reYear4Digit",NORM_VALUE="group(7)-%normMonth(group(5))-%normDay(group(3))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3h",EXTRACTION="%rePartOfDay (ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber(,) %reYear4Digit",NORM_VALUE="group(7)-%normMonth(group(5))-%normDay(group(3))T%normPartOfDay(group(1))"
RULENAME="vn_time_r3i",EXTRACTION="%rePartOfDay (ngày |Ngày )?%reDayNumber (tháng|Tháng) %reMonthNumber",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(3))T%normPartOfDay(group(1))"





///////////////////////////
// TIMEPOINT GRANULARITY //
///////////////////////////
// time_r5
// TODO CHANGE THAT AM PM, A.M. P.M. is allowed as well
// EXAMPLE r5a-1: circa 9 a.m. 
// EXAMPLE r5b-1: 11 PM
// EXAMPLE r5c-1: 11:30 a.m.
// EXAMPLE r5d-1: 9:30 p.m.
// EXAMPLE r5e-1: 10:30:34 a.m.
// EXAMPLE r5e-1: 10:30:34 p.m.
RULENAME="vn_time_r5a",EXTRACTION="(%reApproximate )?%reTimeHour[\s]*[Aa][\.]?[Mm][\.]?",NORM_VALUE="UNDEF-this-dayT%normDay(group(3)):00",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r5a1",EXTRACTION="(%reApproximate )?%reTimeHour (giờ|h) (sáng)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(3)):00",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_time_r5b",EXTRACTION="(%reApproximate )?%reTimeHour[\s]*[Pp][\.]?[Mm][\.]?",NORM_VALUE="UNDEF-this-dayT%SUM%(%normDay(group(3)),12):00",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r5b1",EXTRACTION="(%reApproximate )?%reTimeHour (giờ|h) (chiều|tối)",NORM_VALUE="UNDEF-this-dayT%SUM%(%normDay(group(3)),12):00",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_time_r5c",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute[\s]*[Aa][\.]?[Mm][\.]?",NORM_VALUE="UNDEF-this-dayT%normDay(group(3)):group(4)",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r5c1",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute (phút )?(sáng)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(3)):group(4)",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_time_r5d",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute[\s]*[Pp][\.]?[Mm][\.]?",NORM_VALUE="UNDEF-this-dayT%SUM%(%normDay(group(3)),12):group(4)",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r5d1",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute (phút )?(chiều|tối)",NORM_VALUE="UNDEF-this-dayT%SUM%(%normDay(group(3)),12):group(4)",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_time_r5e",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute:%reTimeMinute[\s]*[Aa][\.]?[Mm][\.]?",NORM_VALUE="UNDEF-this-dayT%normDay(group(3)):group(4)",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_time_r5e1",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute:%reTimeMinute (giây )?(sáng)?",NORM_VALUE="UNDEF-this-dayT%normDay(group(3)):group(4)",NORM_MOD="%normApprox4Dates(group(2))"


RULENAME="vn_time_r5f",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute:%reTimeMinute[\s]*[Pp][\.]?[Mm][\.]?",NORM_VALUE="UNDEF-this-dayT%SUM%(%normDay(group(3)),12):group(4)",NORM_MOD="%normApprox4Dates(group(2))"

RULENAME="vn_time_r5f1",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute:%reTimeMinute (giây )?(chiều|tối)",NORM_VALUE="UNDEF-this-dayT%SUM%(%normDay(group(3)),12):group(4)",NORM_MOD="%normApprox4Dates(group(2))"


// time_r6
// TODO CHANGE THAT AM PM, A.M. P.M. is allowed as well
// EXAMPLE vn_r6a-1: 9 am Wednesday
// EXAMPLE vn_r6b-1: 9 pm Wednesday
// EXAMPLE vn_r6c-1: 9:30 a.m. Wednesday
// EXAMPLE vn_r6d-1: 9:30 p.m. Wednesday

RULENAME="vn_time_r6a",EXTRACTION="(%reApproximate )?%reTimeHour[\s]*a[\.]?m[\.]? %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(4))T%normDay(group(3)):00",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r6b",EXTRACTION="(%reApproximate )?%reTimeHour[\s]*p[\.]?m[\.]? %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(4))T%SUM%(%normDay(group(3)),12):00",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r6c",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute[\s]*a[\.]?m[\.]? %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(5))T%normDay(group(3)):group(4)",NORM_MOD="%normApprox4Dates(group(2))"
RULENAME="vn_time_r6d",EXTRACTION="(%reApproximate )?%reTimeHour:%reTimeMinute[\s]*p[\.]?m[\.]? %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(5))T%SUM%(%normDay(group(3)),12):group(4)",NORM_MOD="%normApprox4Dates(group(2))"

