// author: Annika Boldt
// email:  aboldt@uni-heidelberg.de
// date:   2015-04-06
// This file contains rules for the temporal expressions of the type date: daterules
// RULENAME="",EXTRACTION="",NORM_VALUE=""(,OFFSET="")?(,POS_CONSTRAINT="")?(,NORM_MOD="")?(,NORM_QUANT="")?(,NORM_FREQ="")?

////////////////////
// Positive RULES //
////////////////////

// date_r1
// EXAMPLE r1a: 25. veebruar 2009
// EXAMPLE r1b: 25. veebruar
// EXAMPLE r1c: 2014. aasta 14. septembril
// EXAMPLE r1d: 2013. aasta novembris
// EXAMPLE r1e: 2013. augustis

RULENAME="date_r1a",EXTRACTION="%reDayNumberTh\s?%reMonthLong %reYear4Digit",NORM_VALUE="group(3)-%normMonth(group(2))-%normDay(group(1))"
RULENAME="date_r1b",EXTRACTION="%reDayNumberTh\s?%reMonthLong",NORM_VALUE="UNDEF-year-%normMonth(group(2))-%normDay(group(1))"
RULENAME="date_r1c",EXTRACTION="%reYear4Digit\. %reUnit %reDayNumberTh %reMonthLong",NORM_VALUE="group(1)-%normMonth(group(4))-%normDay(group(3))"
RULENAME="date_r1d",EXTRACTION="%reYear4Digit\. %reUnit %reMonthLong",NORM_VALUE="group(1)-%normMonth(group(3))"
RULENAME="date_r1e",EXTRACTION="%reYear4Digit\.\s?%reMonthLong",NORM_VALUE="group(1)-%normMonth(group(2))"

// date_r2
// EXAMPLE r2a: sama aasta 26. märtsil
// EXAMPLE r2b: alates 26. märtsist 2014
// EXAMPLE r2c: Pärast 2004. aasta detsembris
// EXAMPLE r2d: eelmise aasta septembrini

RULENAME="date_r2a",EXTRACTION="%reThisNextLast %reUnit %reDayNumberTh %reMonthLong",NORM_VALUE="UNDEF-%normThisNextLast(group(1))-%normUnit(group(2))-%normMonth(group(4))-%normDay(group(3))"
RULENAME="date_r2b",EXTRACTION="%reApproximate %reDayNumberTh %reMonthLong %reYear4Digit",NORM_VALUE="group(4)-%normMonth(group(3))-%normDay(group(2))",NORM_MOD="%normApprox4Dates(group(1))"
RULENAME="date_r2c",EXTRACTION="%reApproximate %reYear4Digit\. %reUnit %reMonthLong",NORM_VALUE="group(2)-%normMonth(group(4))",NORM_MOD="%normApprox4Dates(group(1))"
RULENAME="date_r2d",EXTRACTION="%reThisNextLast %reUnit %reMonthLong",NORM_VALUE="UNDEF-%normThisNextLast(group(1))-%normUnit(group(2))-%normMonth(group(3))"

// date_r3
// EXAMPLE r3a: Aasta 2012
// EXAMPLE r3b: Aastatel 2012-2014 (find 2014)
// EXAMPLE r3c: 1999-2002  %auskommentiert%
// EXAMPLE r3d: Aastatel 2012-14 (find 2014)
// EXAMPLE r3e: 1997.   
// EXAMPLE r3f: 1997. aastal
// EXAMPLE r3g: 3.-16. septembril 2014 %auskommentiert%

RULENAME="date_r3a",EXTRACTION="%reUnit %reYear4Digit",NORM_VALUE="group(2)"
RULENAME="date_r3b",EXTRACTION="%reUnit %reYear4Digit%reAndOrTo%reYear4Digit",NORM_VALUE="group(4)"
//RULENAME="date_r3c",EXTRACTION="%reYear4Digit%reAndOrTo%reYear4Digit",NORM_VALUE="group(1)-group(3)"
RULENAME="date_r3d",EXTRACTION="%reUnit %reYear4Digit%reAndOrTo%reYear2Digit",NORM_VALUE="%normUnit(group(1))-%SUBSTRING%(group(2),0,2)group(4)"
RULENAME="date_r3e",EXTRACTION="%reYear4Digit\.",NORM_VALUE="group(1)"
RULENAME="date_r3f",EXTRACTION="%reYear4Digit\.( %reUnit)?",NORM_VALUE="group(1)"
//RULENAME="date_r3g",EXTRACTION="%reDayNumberTh %reAndOrTo %reDayNumberTh %reMonthLong %reYear4Digit",NORM_VALUE="group(5)-%normMonth(group(4))-%normDay(group(1))-group(5)-%normMonth(group(4))-%normDay(group(3))"

// date_r4
// EXAMPLE r4a_1: 20. sajandi
// EXAMPLE r4a_2: 21. sajandil

RULENAME="date_r4a",EXTRACTION="(%reDayNumberTh|%reDayWordTh) sajandi[l]?",NORM_VALUE="%normDay(%SUM%(%normDay(group(1)),-1))"

// date_r5
// EXAMPLE r5a: Möödunud aastal

RULENAME="date_r5a",EXTRACTION="%reThisNextLast %reUnit",NORM_VALUE="UNDEF-%normThisNextLast(group(1))-%normUnit(group(2))"

// date_r6
// EXAMPLE r6a: alates esmpaspäevast
// EXAMPLE r6b: Aprilli alguses
// EXAMPLE r6c: 2010. aasta alguseks

RULENAME="date_r6a",EXTRACTION="%reApproximate %reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(2))",NORM_MOD="%normApprox4Dates(group(1))"
RULENAME="date_r6b",EXTRACTION="%reMonthLong %rePartWords",NORM_VALUE="UNDEF-year-%normMonth(group(1))",NORM_MOD="%normPartWords(group(2))"
RULENAME="date_r6c",EXTRACTION="%reYear4Digit\. %reUnit %rePartWords",NORM_VALUE="group(1)",NORM_MOD="%normPartWords(group(3))"

// date_r7
// EXAMPLE r7a: 2014. aasta alguses
// EXAMPLE r7b: Alates 1992. a juunist

RULENAME="date_r7a",EXTRACTION="%reYear4Digit\. %reUnit %rePartWords",NORM_VALUE="group(1)",NORM_MOD="%normPartWords(group(3))"
RULENAME="date_r7b",EXTRACTION="%reApproximate %reYear4Digit\. a %reMonthLong",NORM_VALUE="group(2)-%normMonth(group(3))",NORM_MOD="%normApprox4Dates(group(1))"

// date_r8
// EXAMPLE r8a: täna
// EXAMPLE r8b: tänavu 17. märtsil
// EXAMPLE r8c: selle aasta 17. märtsi

RULENAME="date_r8a",EXTRACTION="%reDateWord",NORM_VALUE="%normDateWord(group(1))"
RULENAME="date_r8b",EXTRACTION="%reDateWord %reDayNumberTh %reMonthLong",NORM_VALUE="%normDateWord(group(1))-%normMonth(group(3))-%normDay(group(2))"
RULENAME="date_r8c",EXTRACTION="([Ss]ellel?|[Ss]el) %reUnit %reDayNumberTh %reMonthLong",NORM_VALUE="UNDEF-this-%normUnit(group(2))-%normMonth(group(4))-%normDay(group(3))"

// date_r9
// EXAMPLE r9a: Pühapäeva, 3. mai
// EXAMPLE r9b: Pähapäev

RULENAME="date_r9a",EXTRACTION="%reWeekday\,? (%reDayNumberTh|%reDayWordTh) %reMonthLong",NORM_VALUE="UNDEF-year-%normMonth(group(5))-%normDay(group(2))" 
RULENAME="date_r9b",EXTRACTION="%reWeekday",NORM_VALUE="UNDEF-day-%normWeekday(group(1))"

// date_r10
// EXAMPLE r10a: suvel 1862
// EXAMPLE r10b: suvi

RULENAME="date_r10a",EXTRACTION="%reSeason %reYear4Digit",NORM_VALUE="group(2)-%normSeason(group(1))"
RULENAME="date_r10b",EXTRACTION="%reSeason",NORM_VALUE="UNDEF-year-%normSeason(group(1))"

// date_r11
// EXAMPLE r11a: Suurel reedel
// EXAMPLE r12a: Suurel reedel 2010
RULENAME="date_r11a",EXTRACTION="%reHolidayVar",NORM_VALUE="UNDEF-year-%normHolidayVar(group(1))"
RULENAME="date_r11b",EXTRACTION="%reHolidayVar %reYear4Digit",NORM_VALUE="group(2)-%normHolidayVar(group(1))"

// date_r12
// EXAMPLE r12a: Jaanipäev
// EXAMPLE r12b: Jaanipäev 2010
RULENAME="date_r12a",EXTRACTION="%reHolidayFix",NORM_VALUE="UNDEF-year-%normHolidayFix(group(1))"
RULENAME="date_r12b",EXTRACTION="%reHolidayFix %reYear4Digit",NORM_VALUE="group(2)-%normHolidayFix(group(1))"

// date_r13
// EXAMPLE r13a: 70ndat
RULENAME="date_r13a",EXTRACTION="(%reYear2Digit)ndat",NORM_VALUE="UNDEF-century%SUBSTRING%(group(1),0,1)"

// date_r14
// EXAMPLE r14a: 700 eKr
// EXAMPLE r14b: 15. sajandil eKr
RULENAME="date_r14a",EXTRACTION="%reYearBC %reYearPrefix",NORM_VALUE="%normYearPrefix(group(2))%normYearBC(group(1))"
RULENAME="date_r14b",EXTRACTION="(%reDayNumber[\.]?|%reDayWordTh) (sajand(il)?) %reYearPrefix",NORM_VALUE="%normYearPrefix(group(3))%normDay(%SUM%(%normDay(group(2)),-1))"


