1/* @(#)templa.pl	24.1 2/23/88 */
    2
    3/* 
    4	Copyright 1986, Fernando C.N. Pereira and David H.D. Warren,
    5
    6			   All Rights Reserved
    7*/
    8/* Nouns */
    9
   10property(area,measure&area,X,feature&place&_,Y,area(Y,X),[],_,_).
   11property(capital,feature&city,X,feature&place&country,Y,
   12         capital(Y,X),[],_,_).
   13property(latitude,
   14         measure&position,X,feature&_,Y,latitude(Y,X),[],_,_).
   15property(longitude,measure&position,X,feature&_,Y,
   16         longitude(Y,X),[],_,_).
   17property(population,
   18         measure&heads,X,feature&_,Y,population(Y,X),[],_,_).
   19
   20thing(place,feature&place&_,X,place(X),[],_).
   21thing(area,measure&area,X,area(X),[],_).
   22thing(capital,feature&city,X,capital(X),[],_).
   23thing(city,feature&city,X,city(X),[],_).
   24thing(continent,feature&place&continent,X,continent(X),[],_).
   25thing(country,feature&place&country,X,country(X),[],_).
   26thing(latitude,measure&position,X,latitude(X),[],_).
   27thing(longitude,measure&position,X,longitude(X),[],_).
   28thing(ocean,feature&place&seamass,X,ocean(X),[],_).
   29thing(person,_,X,person(X),[],_).
   30thing(population,measure&heads,X,population(X),[],_).
   31thing(region,feature&place&_,X,region(X),[],_).
   32thing(river,feature&river,X,river(X),[],_).
   33thing(sea,feature&place&seamass,X,sea(X),[],_).
   34thing(seamass,feature&place&seamass,X,seamass(X),[],_).
   35
   36aggr_noun(average,_,_,average).
   37aggr_noun(sum,_,_,total).
   38aggr_noun(total,_,_,total).
   39
   40meta_noun(number,_,V,feature&_,X,P,numberof(X,P,V)).
   41
   42/* Proper nouns */
   43
   44name_template(X,feature&circle) :- circle_of_latitude(X).
   45name_template(X,feature&city) :- city(X).
   46name_template(X,feature&place&continent) :- continent(X).
   47name_template(X,feature&place&country) :- country(X).
   48name_template(X,feature&place&_) :- region(X).
   49name_template(X,feature&river) :- river(X).
   50name_template(X,feature&place&seamass) :- seamass(X).
   51
   52/* Verbs */
   53
   54trans(border,
   55      feature&place&_,X,feature&place&_,Y,borders(X,Y),[],_,_).
   56trans(contain,feature&place&_,X,feature&_,Y,in(Y,X),[],_,_).
   57trans(govern,feature&_,X,feature&place&country,Y,capital(Y,X),[],_,_).
   58trans(exceed,measure&Type,X,measure&Type,Y,exceeds(X,Y),[],_,_).
   59
   60intrans(drain,feature&river,X,drains(X,Y),
   61   [slot(prep(into),feature&place&_,Y,_,free)],_).
   62intrans(flow,feature&river,X,flows(X,Y),
   63   [slot(prep(through),feature&place&_,Y,_,free)],_).
   64intrans(flow,feature&river,X,flows(X,Y,Z),
   65   [slot(prep(into),feature&place&_,Z,_,free),
   66    slot(prep(from),feature&place&_,Y,_,free)],_).
   67intrans(rise,feature&river,X,rises(X,Y),
   68   [slot(prep(in),feature&place&_,Y,_,free)],_).
   69
   70/* Adjectives */
   71
   72restriction(african,feature&_,X,african(X)).
   73restriction(american,feature&_,X,american(X)).
   74restriction(asian,feature&_,X,asian(X)).
   75restriction(european,feature&_,X,european(X)).
   76
   77attribute(large,feature&place&_,X,measure&area,Y,area(X,Y)).
   78attribute(small,feature&place&_,X,measure&area,Y,area(X,Y)).
   79attribute(great,measure&Type,X,measure&Type,Y,exceeds(X,Y)).
   80% attribute(great,measure&Type,X,measure&Type,Y,X=Y).
   81attribute(populous,feature&_,X,measure&heads,Y,population(Y,X)).
   82
   83aggr_adj(average,_,_,average).
   84aggr_adj(total,_,_,total).
   85aggr_adj(minimum,_,_,minimum).
   86aggr_adj(maximum,_,_,maximum).
   87
   88/* Prepositions */
   89
   90adjunction(in,feature&_-X,feature&place&_-Y,in(X,Y)).
   91adjunction(eastof,feature&_-X,feature&_-Y,eastof(X,Y)).
   92adjunction(westof,feature&_-X,feature&_-Y,westof(X,Y)).
   93adjunction(northof,feature&_-X,feature&_-Y,northof(X,Y)).
   94adjunction(southof,feature&_-X,feature&_-Y,southof(X,Y)).
   95
   96/* Measure */
   97
   98measure(ksqmile,measure&area,[],ksqmiles).
   99measure(sqmile,measure&area,[],sqmiles).
  100measure(degree,measure&position,[],degrees).
  101measure(thousand,measure&heads,[],thousand).
  102measure(million,measure&heads,[],million).
  103
  104units(large,measure&_).
  105units(small,measure&_).
  106
  107chat_sign(large,+).
  108chat_sign(small,-).
  109chat_sign(great,+).
  110
  111/* Proportions and the like */
  112
  113comparator(proportion,_,V,[],proportion(V)).
  114comparator(percentage,_,V,[],proportion(V))