xref: /aosp_15_r20/external/libtextclassifier/native/annotator/datetime/datetime.fbs (revision 993b0882672172b81d12fad7a7ac0c3e5c824a12)
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