;;; Hey, emacs(1), this is -*- Mode: TDL; Coding: utf-8; -*- got it?
;;;
;;; first shot of minimal type hierarchy for transfer rules in LOGON; derived
;;; from LinGO Grammar Matrix, but greatly stripped down. (7-oct-03; oe)
;;;
mrs := top &
[ LTOP h,
INDEX u,
RELS list,
HCONS list ].
psoa := mrs &
[ INDEX e ].
nom-obj := mrs &
[ INDEX x ].
basic_message := arg0-relation &
[ MARG h ].
message := basic_message &
[ TPC u, PSV u ].
qeq := top &
[ HARG h,
LARG h ].
;;;
;;; minimal hierarchy of variable types, using the new (R)MRS naming scheme.
;;;
;;;
;;; introduce two transfer-only `scratch' slots in variables: one that will be
;;; purged after each successful rule application, one that will stick until we
;;; leave transfer. additionally, provide DITCH property to mark variables we
;;; want to loose in the final output (e.g. to ditch the ARG0 from conjunctions
;;; while the ERG used to have C-ARG instead).
;;;
u := top & [ SKOLEM string, SCRATCH scratch, MARK scratch, DITCH bool ].
i := u.
p := u.
h := p.
e := i &
[ TENSE tense, MOOD mood,
PERF luk, PROG luk, SF sforce ].
x := i & p &
[ PERS person, NUM number,
GEND gender,
IND bool, DIV bool, GRIND luk,
PRONTYPE prontype ].
x_3 := x &
[ PERS 3 ].
x_3sg := x_3 &
[ NUM sg, GRIND - ].
x_3pl := x_3 &
[ NUM pl, GRIND - ].
;;;
;;; to check for `arity' in MTRs, maybe we need an `anti-'variable type
;;;
a := u.
tense := top.
tensed := tense.
past_or_pres := tensed.
pres_or_fut := tensed.
past_or_fut := tensed.
past := past_or_pres & past_or_fut.
pres := past_or_pres & pres_or_fut.
fut := past_or_fut & pres_or_fut .
untensed := tense.
mood := top.
indicative := mood.
subjunctive := mood.
no_mood := mood.
;;;
;;; _fix_me_
;;; the following is taken from GG; is it universal? (27-jun-06; oe)
;;;
indicative+subjunctive := mood.
luk := top.
bool := luk.
na := luk.
+ := bool.
- := bool.
sforce := top.
prop := sforce.
ques := sforce.
comm := sforce.
person := top.
1-or-2 := person.
1-or-3 := person.
2-or-3 := person.
1 := 1-or-2 & 1-or-3.
2 := 1-or-2 & 2-or-3.
3 := 1-or-3 & 2-or-3.
no_person := person.
number := top.
sg := number.
pl := number.
no_number := number.
gender := top.
m-or-f := gender.
m-or-n := gender.
f-or-n := gender.
m := m-or-f & m-or-n.
f := m-or-f & f-or-n.
n := m-or-n & f-or-n.
not-m := f-or-n.
not-f := m-or-n.
not-n := m-or-f.
no_gender := gender.
;;;
;;; _fix_me_
;;; the following are simply imported from the ERG, thus not sanctioned by the
;;; LOGON MRS Design Committee. (19-nov-04; oe)
;;;
prontype := top.
real_pron := prontype.
std_pron := real_pron.
recip := real_pron.
refl := real_pron.
impers := real_pron.
demon := real_pron.
zero_pron := prontype.
;;;
;;; the scratch slot in variables: used during transfer to control application
;;; of rules, e.g. the rules that introduce selected preposition EPs in the ERG
;;; accomodation phase which would otherwise be cyclic, i.e. the rule would
;;; fire on its own output (since it does not consume anything).
;;;
scratch := top.
test := scratch.
complete := scratch.
one := scratch.
two := scratch.
three := scratch.
four := scratch.
five := scratch.
six := scratch.
e_tensed := e [ TENSE tensed ].
e_untensed := e & [ TENSE untensed ].
;;;
;;; relations are classified according to the types of arguments they take.
;;; all relations have a handle. In addition, quantifier relations have a
;;; bound variable and a restriction, nominal relations have an instance, and
;;; event relations have an event. furthermore, nominal relations and event
;;; relations can have additional roles, depending on their meaning.
;;;
relation := top &
[ LBL h,
PRED predsort ].
argm-relation := relation &
[ ARGM u].
arg0-relation := relation &
[ ARG0 u ].
arg0m-relation := argm-relation & arg0-relation.
arg1-relation := relation &
[ ARG1 u ].
arg1m-relation := argm-relation & arg1-relation.
arg01-relation := arg0-relation & arg1-relation.
arg01m-relation := argm-relation & arg01-relation.
arg2-relation := relation &
[ ARG2 u ].
arg2m-relation := argm-relation & arg2-relation.
arg012-relation := arg01-relation & arg2-relation.
arg012m-relation := argm-relation & arg012-relation.
arg3-relation := relation &
[ ARG3 u ].
arg3m-relation := argm-relation & arg3-relation.
arg0123-relation := arg012-relation & arg3-relation.
arg0123m-relation := argm-relation & arg0123-relation.
arg4-relation := relation &
[ ARG4 u ].
arg4m-relation := argm-relation & arg4-relation.
arg01234-relation := arg0123-relation & arg4-relation.
arg01234m-relation := argm-relation & arg01234-relation.
event-relation := arg0-relation &
[ ARG0 e ].
noun-relation := arg0-relation &
[ ARG0 x ].
relational-noun-relation := noun-relation & arg1-relation &
[ ARG1 x ].
named-relation := arg0-relation &
[ CARG top ].
named-arg01-relation := named-relation & arg01-relation.
named-arg012-relation := named-relation & arg012-relation.
;;;
;;; _fix_me_
;;; this reflects the current (4-apr-04) ERG, but not the Matrix. presumably,
;;; i would have to agree with emily, these should use L-HNDL and R-HNDL too.
;;; (17-apr-04; oe)
;;;
;;; --- but maybe i no longer believe that nowadays. (14-jul-04; oe)
;;;
subord-relation := arg0-relation &
[ MAIN h,
SUBORD h ].
conjunction-relation := subord-or-conj-relation &
[ L-INDEX i,
R-INDEX i ].
subord-or-conj-relation := arg0-relation &
[ L-HNDL u,
R-HNDL u ].
unspec-compound-relation := arg012-relation &
[ ARG0 e,
ARG1 x,
ARG2 x ].
quant-relation := arg0-relation &
[ ARG0 x,
RSTR h,
BODY h ].
unknown-relation := arg0-relation &
[ ARG u ].
;;;
;;; some basic types
;;;
list := top.
cons := list &
[ FIRST top,
REST list ].
null := list.
string := predsort.
flags := top &
[ OPTIONAL luk,
PERMUTE luk,
EQUAL list,
SUBSUME list,
WARN string,
BLOCK string,
AUTHOR string,
DATE string,
SOURCE string,
RANK string,
COUNT string ].
mrs_transfer_rule := top &
[ FILTER mrs,
CONTEXT mrs,
INPUT mrs,
OUTPUT mrs,
FLAGS flags ].
;;;
;;; the top-level entry point for (grammar-specific) predicate hierarchies
;;;
predsort := top.
;;;
;;; a few `special-purpose' types, transfer operators in a sense
;;;
+upcase+ := string.
+downcase+ := string.
operator := top.
+copy+ := operator.