// // Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Meridiem field. namespace libtextclassifier3.grammar.datetime; enum Meridiem : int { UNKNOWN = 0, // Ante meridiem: Before noon AM = 1, // Post meridiem: After noon PM = 2, } // Enum represents a unit of date and time in the expression. // Next field: 10 namespace libtextclassifier3.grammar.datetime; enum ComponentType : int { UNSPECIFIED = 0, // Year of the date seen in the text match. YEAR = 1, // Month of the year starting with January = 1. MONTH = 2, // Week (7 days). WEEK = 3, // Day of week, start of the week is Sunday & its value is 1. DAY_OF_WEEK = 4, // Day of the month starting with 1. DAY_OF_MONTH = 5, // Hour of the day. HOUR = 6, // Minute of the hour with a range of 0-59. MINUTE = 7, // Seconds of the minute with a range of 0-59. SECOND = 8, // Meridiem field i.e. AM/PM. MERIDIEM = 9, } namespace libtextclassifier3.grammar.datetime; table TimeZone { // Offset from UTC/GTM in minutes. utc_offset_mins:int; } namespace libtextclassifier3.grammar.datetime.RelativeDatetimeComponent_; enum Modifier : int { UNSPECIFIED = 0, NEXT = 1, THIS = 2, LAST = 3, NOW = 4, TOMORROW = 5, YESTERDAY = 6, PAST = 7, FUTURE = 8, } // Message for representing the relative date-time component in date-time // expressions. // Next field: 4 namespace libtextclassifier3.grammar.datetime; table RelativeDatetimeComponent { component_type:ComponentType = UNSPECIFIED; modifier:RelativeDatetimeComponent_.Modifier = UNSPECIFIED; value:int; } // AbsoluteDateTime represents date-time expressions that is not ambiguous. // Next field: 11 namespace libtextclassifier3.grammar.datetime; table AbsoluteDateTime { // Year value of the date seen in the text match. year:int = -1; // Month value of the year starting with January = 1. month:int = -1; // Day value of the month starting with 1. day:int = -1; // Day of week, start of the week is Sunday and its value is 1. week_day:int = -1; // Hour value of the day. hour:int = -1; // Minute value of the hour with a range of 0-59. minute:int = -1; // Seconds value of the minute with a range of 0-59. second:int = -1; partial_second:double = -1; // Meridiem field i.e. AM/PM. meridiem:Meridiem; time_zone:TimeZone; } // Message to represent relative datetime expressions. // It encode expressions // - Where modifier such as before/after shift the date e.g.[three days ago], // [2 days after March 1st]. // - When prefix make the expression relative e.g. [next weekend], // [last Monday]. // Next field: 3 namespace libtextclassifier3.grammar.datetime; table RelativeDateTime { relative_datetime_component:[RelativeDatetimeComponent]; // The base could be an absolute datetime point for example: "March 1", a // relative datetime point, for example: "2 days before March 1" base:AbsoluteDateTime; } // Datetime result. namespace libtextclassifier3.grammar.datetime; table UngroundedDatetime { absolute_datetime:AbsoluteDateTime; relative_datetime:RelativeDateTime; // The annotation usecases. // There are two modes. // 1- SMART - Datetime results which are optimized for Smart select // 2- RAW - Results are optimized for where annotates as much as possible. annotation_usecases:uint = 4294967295; }