Basics:
A large class of tables in the database have entries that can be taken as defining things that can be asked for in a query. In the answer, each of these things will be identified by giving a value of the primary key of its table. These tables are:
Name of Table English Term(s) Primary Key aircraft aircraft, equipment aircraft code airline airline airline code airport airport airport code city city city code compound class service classes, e.g. fare class "coach", etc. day names of the days of day code the week. fare fare fare code flight flight flight code food service meals meal code ground service ground transportation city code,airport code, transport code month months month number restriction restrictions restrict code state names of states state code time zone time zones time zone code transport transport code transport codeSpecial meanings:
In this arena, certain English expressions have special meanings, particularly in terms of the database distributed by TI in the spring of 1990. Here are the ones we have agreed on: (In the following, "A.B" refers to field B of table A.)
1. Flights.
A flight "between X and Y" means a flight "from X to Y".
In an expression of the form "flight number N", where N is a number, N will always be interpreted as referring to the flight number (flight.flight number). "Flight code N" will unambiguously refer to flight.flight code. "Flight N" will refer to flight.flight number if N is in the range 0 <= N <= 9999 but to flight.flight code if N >= 100000.
A "one-way" flight is a flight with a fare whose one-way cost is non-empty.
Principle: if an attribute "X" of a fare, such as "one-way" or "coach", is used as a modifier of a flight, it will be interpreted as "a flight with an X fare".
2. Fare (classes).
A "one-way" fare is one with a non-empty one-way cost.
In determining what is the "cheapest fare", one-way fares will be included.
A "coach" fare is one whose compound class.class type = "COACH". Similarly, the fare modifiers "first class", "business class", and "thrift class" refer to values of the compound class.class type field.
A reference to ranking of fares, e.g. "fares that are Y class or better", will be interpreted as a reference to the rank of the associated base fare (class of service.rank).
A "discounted fare" is one whose compound class.discounted = "YES".
An "excursion fare" is one with a restriction code (fare.restrict code) that contains the string "AP", "EX", or "VU".
A "family fare" is the same thing as an "excursion fare".
A "special fare" is one with a non-null restriction code (fare.restrict code).
3. Time.
The normal answer to otherwise unmodified "when" queries will be a time of day, not a date or a duration.
The answer to queries like "On what days does flight X fly" will be a list of day.day code fields, not a flight days string.
4. Units.
All units will be the same as those implicit in the database (e.g. feet for aircraft.wing span, but miles for aircraft.range miles, durations in minutes).
5. Meals.
For purposes of determining flights "with meals/meal service", snacks will count as a meal.
"list the types of meal" should produce one tuple per meal, not a single meal code string.
6. "With" clauses.
"with"-modification clauses: "show me all the flights from X to Y with their fares" will require the identification of both flights and their fares (so if there are 2 flights, each with three fares, the answer will have 6 tuples, each with at least the flight code and fare code). In general, queries asking for information from two or more separate tables in the database will require the logical union of fields that would identify each table entry separately.
7. The "itinerary" of a flight refers to the set of all non-stop legs of that flight. When an "itinerary" is asked for, each leg of the flight will be identified by the origin and destination cities for that leg, e.g. (("BOS" "ATL") ("ATL" "DFW")).
8. "what kind of X is Y" queries, where Y is clearly a kind of X, will be interpreted as equivalent to "what does Y mean?", where Y is a primary key value for the table referred to by X (see 10 below).
9. "class".
References to classes of service will be taken as referring to the contents of the compound class table (not the class of service table).
Queries about (unmodified) "class X", e.g. "What is class X?", will be interpreted as referring to the set of compound class.fare class entries for which "X" is the fare class, not the base class, e.g. '(("X"))', not '(("XA")("XB"))'.
10. Requests for the "meaning" of something will only be interpretable if that thing is a code with a canned definition in the database. Here are the things so defined, with the fields containing their decoding:
Table Key Field Decoding Field aircraft aircraft code aircraft type airline airline code airline name airport airport code airport name city city code city name code description code description column table heading column description day day code day name food service meal code meal description interval period begin time, end time month month number month name state state code state name time zone time zone code time zone name transport transport code transport description11. A request for a flight's stops will be interpreted as asking for the final stop in addition to intermediate stops.
12. Literal yes-or-no questions, that is, queries that in normal discourse would be best answered with "yes" or "no" if taken literally, may be answered by either a boolean value ("YES/TRUE/NO/FALSE") or a relation, expressed as a table. Any non-null relation will be considered equivalent to "YES" or "TRUE" and the null relation will be considered equivalent to "NO" or "FALSE".
13. A city and an airport will be considered "near" (or "nearby") each other iff the city is served by the airport, and two cities will be considered "near" (or "nearby") each other iff there is an airport that serves them both.
14. When it is clear that an airline is being referred to, the term "American" by itself will be taken as unambiguously referring to American Airlines.
15. Vague queries of the form "Give me information about X" or "Describe X" or "What is X", where X refers to a table, will be interpreted as equivalent to "Show me X". When X is an attribute or attribute value, such queries will be interpreted as "What does X mean?".