1*993b0882SAndroid Build Coastguard Worker// 2*993b0882SAndroid Build Coastguard Worker// Copyright (C) 2018 The Android Open Source Project 3*993b0882SAndroid Build Coastguard Worker// 4*993b0882SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 5*993b0882SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 6*993b0882SAndroid Build Coastguard Worker// You may obtain a copy of the License at 7*993b0882SAndroid Build Coastguard Worker// 8*993b0882SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 9*993b0882SAndroid Build Coastguard Worker// 10*993b0882SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 11*993b0882SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 12*993b0882SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*993b0882SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 14*993b0882SAndroid Build Coastguard Worker// limitations under the License. 15*993b0882SAndroid Build Coastguard Worker// 16*993b0882SAndroid Build Coastguard Worker 17*993b0882SAndroid Build Coastguard Worker// Meridiem field. 18*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 19*993b0882SAndroid Build Coastguard Workerenum Meridiem : int { 20*993b0882SAndroid Build Coastguard Worker UNKNOWN = 0, 21*993b0882SAndroid Build Coastguard Worker 22*993b0882SAndroid Build Coastguard Worker // Ante meridiem: Before noon 23*993b0882SAndroid Build Coastguard Worker AM = 1, 24*993b0882SAndroid Build Coastguard Worker 25*993b0882SAndroid Build Coastguard Worker // Post meridiem: After noon 26*993b0882SAndroid Build Coastguard Worker PM = 2, 27*993b0882SAndroid Build Coastguard Worker} 28*993b0882SAndroid Build Coastguard Worker 29*993b0882SAndroid Build Coastguard Worker// Enum represents a unit of date and time in the expression. 30*993b0882SAndroid Build Coastguard Worker// Next field: 10 31*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 32*993b0882SAndroid Build Coastguard Workerenum ComponentType : int { 33*993b0882SAndroid Build Coastguard Worker UNSPECIFIED = 0, 34*993b0882SAndroid Build Coastguard Worker 35*993b0882SAndroid Build Coastguard Worker // Year of the date seen in the text match. 36*993b0882SAndroid Build Coastguard Worker YEAR = 1, 37*993b0882SAndroid Build Coastguard Worker 38*993b0882SAndroid Build Coastguard Worker // Month of the year starting with January = 1. 39*993b0882SAndroid Build Coastguard Worker MONTH = 2, 40*993b0882SAndroid Build Coastguard Worker 41*993b0882SAndroid Build Coastguard Worker // Week (7 days). 42*993b0882SAndroid Build Coastguard Worker WEEK = 3, 43*993b0882SAndroid Build Coastguard Worker 44*993b0882SAndroid Build Coastguard Worker // Day of week, start of the week is Sunday & its value is 1. 45*993b0882SAndroid Build Coastguard Worker DAY_OF_WEEK = 4, 46*993b0882SAndroid Build Coastguard Worker 47*993b0882SAndroid Build Coastguard Worker // Day of the month starting with 1. 48*993b0882SAndroid Build Coastguard Worker DAY_OF_MONTH = 5, 49*993b0882SAndroid Build Coastguard Worker 50*993b0882SAndroid Build Coastguard Worker // Hour of the day. 51*993b0882SAndroid Build Coastguard Worker HOUR = 6, 52*993b0882SAndroid Build Coastguard Worker 53*993b0882SAndroid Build Coastguard Worker // Minute of the hour with a range of 0-59. 54*993b0882SAndroid Build Coastguard Worker MINUTE = 7, 55*993b0882SAndroid Build Coastguard Worker 56*993b0882SAndroid Build Coastguard Worker // Seconds of the minute with a range of 0-59. 57*993b0882SAndroid Build Coastguard Worker SECOND = 8, 58*993b0882SAndroid Build Coastguard Worker 59*993b0882SAndroid Build Coastguard Worker // Meridiem field i.e. AM/PM. 60*993b0882SAndroid Build Coastguard Worker MERIDIEM = 9, 61*993b0882SAndroid Build Coastguard Worker} 62*993b0882SAndroid Build Coastguard Worker 63*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 64*993b0882SAndroid Build Coastguard Workertable TimeZone { 65*993b0882SAndroid Build Coastguard Worker // Offset from UTC/GTM in minutes. 66*993b0882SAndroid Build Coastguard Worker utc_offset_mins:int; 67*993b0882SAndroid Build Coastguard Worker} 68*993b0882SAndroid Build Coastguard Worker 69*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime.RelativeDatetimeComponent_; 70*993b0882SAndroid Build Coastguard Workerenum Modifier : int { 71*993b0882SAndroid Build Coastguard Worker UNSPECIFIED = 0, 72*993b0882SAndroid Build Coastguard Worker NEXT = 1, 73*993b0882SAndroid Build Coastguard Worker THIS = 2, 74*993b0882SAndroid Build Coastguard Worker LAST = 3, 75*993b0882SAndroid Build Coastguard Worker NOW = 4, 76*993b0882SAndroid Build Coastguard Worker TOMORROW = 5, 77*993b0882SAndroid Build Coastguard Worker YESTERDAY = 6, 78*993b0882SAndroid Build Coastguard Worker PAST = 7, 79*993b0882SAndroid Build Coastguard Worker FUTURE = 8, 80*993b0882SAndroid Build Coastguard Worker} 81*993b0882SAndroid Build Coastguard Worker 82*993b0882SAndroid Build Coastguard Worker// Message for representing the relative date-time component in date-time 83*993b0882SAndroid Build Coastguard Worker// expressions. 84*993b0882SAndroid Build Coastguard Worker// Next field: 4 85*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 86*993b0882SAndroid Build Coastguard Workertable RelativeDatetimeComponent { 87*993b0882SAndroid Build Coastguard Worker component_type:ComponentType = UNSPECIFIED; 88*993b0882SAndroid Build Coastguard Worker modifier:RelativeDatetimeComponent_.Modifier = UNSPECIFIED; 89*993b0882SAndroid Build Coastguard Worker value:int; 90*993b0882SAndroid Build Coastguard Worker} 91*993b0882SAndroid Build Coastguard Worker 92*993b0882SAndroid Build Coastguard Worker// AbsoluteDateTime represents date-time expressions that is not ambiguous. 93*993b0882SAndroid Build Coastguard Worker// Next field: 11 94*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 95*993b0882SAndroid Build Coastguard Workertable AbsoluteDateTime { 96*993b0882SAndroid Build Coastguard Worker // Year value of the date seen in the text match. 97*993b0882SAndroid Build Coastguard Worker year:int = -1; 98*993b0882SAndroid Build Coastguard Worker 99*993b0882SAndroid Build Coastguard Worker // Month value of the year starting with January = 1. 100*993b0882SAndroid Build Coastguard Worker month:int = -1; 101*993b0882SAndroid Build Coastguard Worker 102*993b0882SAndroid Build Coastguard Worker // Day value of the month starting with 1. 103*993b0882SAndroid Build Coastguard Worker day:int = -1; 104*993b0882SAndroid Build Coastguard Worker 105*993b0882SAndroid Build Coastguard Worker // Day of week, start of the week is Sunday and its value is 1. 106*993b0882SAndroid Build Coastguard Worker week_day:int = -1; 107*993b0882SAndroid Build Coastguard Worker 108*993b0882SAndroid Build Coastguard Worker // Hour value of the day. 109*993b0882SAndroid Build Coastguard Worker hour:int = -1; 110*993b0882SAndroid Build Coastguard Worker 111*993b0882SAndroid Build Coastguard Worker // Minute value of the hour with a range of 0-59. 112*993b0882SAndroid Build Coastguard Worker minute:int = -1; 113*993b0882SAndroid Build Coastguard Worker 114*993b0882SAndroid Build Coastguard Worker // Seconds value of the minute with a range of 0-59. 115*993b0882SAndroid Build Coastguard Worker second:int = -1; 116*993b0882SAndroid Build Coastguard Worker 117*993b0882SAndroid Build Coastguard Worker partial_second:double = -1; 118*993b0882SAndroid Build Coastguard Worker 119*993b0882SAndroid Build Coastguard Worker // Meridiem field i.e. AM/PM. 120*993b0882SAndroid Build Coastguard Worker meridiem:Meridiem; 121*993b0882SAndroid Build Coastguard Worker 122*993b0882SAndroid Build Coastguard Worker time_zone:TimeZone; 123*993b0882SAndroid Build Coastguard Worker} 124*993b0882SAndroid Build Coastguard Worker 125*993b0882SAndroid Build Coastguard Worker// Message to represent relative datetime expressions. 126*993b0882SAndroid Build Coastguard Worker// It encode expressions 127*993b0882SAndroid Build Coastguard Worker// - Where modifier such as before/after shift the date e.g.[three days ago], 128*993b0882SAndroid Build Coastguard Worker// [2 days after March 1st]. 129*993b0882SAndroid Build Coastguard Worker// - When prefix make the expression relative e.g. [next weekend], 130*993b0882SAndroid Build Coastguard Worker// [last Monday]. 131*993b0882SAndroid Build Coastguard Worker// Next field: 3 132*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 133*993b0882SAndroid Build Coastguard Workertable RelativeDateTime { 134*993b0882SAndroid Build Coastguard Worker relative_datetime_component:[RelativeDatetimeComponent]; 135*993b0882SAndroid Build Coastguard Worker 136*993b0882SAndroid Build Coastguard Worker // The base could be an absolute datetime point for example: "March 1", a 137*993b0882SAndroid Build Coastguard Worker // relative datetime point, for example: "2 days before March 1" 138*993b0882SAndroid Build Coastguard Worker base:AbsoluteDateTime; 139*993b0882SAndroid Build Coastguard Worker} 140*993b0882SAndroid Build Coastguard Worker 141*993b0882SAndroid Build Coastguard Worker// Datetime result. 142*993b0882SAndroid Build Coastguard Workernamespace libtextclassifier3.grammar.datetime; 143*993b0882SAndroid Build Coastguard Workertable UngroundedDatetime { 144*993b0882SAndroid Build Coastguard Worker absolute_datetime:AbsoluteDateTime; 145*993b0882SAndroid Build Coastguard Worker relative_datetime:RelativeDateTime; 146*993b0882SAndroid Build Coastguard Worker 147*993b0882SAndroid Build Coastguard Worker // The annotation usecases. 148*993b0882SAndroid Build Coastguard Worker // There are two modes. 149*993b0882SAndroid Build Coastguard Worker // 1- SMART - Datetime results which are optimized for Smart select 150*993b0882SAndroid Build Coastguard Worker // 2- RAW - Results are optimized for where annotates as much as possible. 151*993b0882SAndroid Build Coastguard Worker annotation_usecases:uint = 4294967295; 152*993b0882SAndroid Build Coastguard Worker} 153*993b0882SAndroid Build Coastguard Worker 154