;;; Hey, emacs(1), this is -*- Mode: TDL; Coding: utf-8; -*- got it? ;;; Author(s): ;;; 2008 Berthold Crysmann clocktime-minute_numbered-hour_mtr := monotonic_mtr & [INPUT [RELS <[PRED "de:clock_time_rel", LBL #l, ARG0 #0, CARG #hour], [PRED "de:_nach_p_rel", ARG1 #0, ARG2 #m0], [PRED "de:card_rel", LBL #larg, ARG0 e, ARG1 #m0, CARG #minute], [PRED "de:udef_q_rel", ARG0 #m0, RSTR #harg], [PRED "de:_minute_n_rel", LBL #larg, ARG0 #m0]>, HCONS ], OUTPUT [RELS < [PRED numbered_hour_rel, LBL #l, ARG0 #0, ARG1 #1, CARG #hour], [PRED card_rel, LBL #l, ARG0 #1 & i, ARG1 i, CARG #minute]>, HCONS <>]]. clocktime_numbered-hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:clock_time_rel", LBL #l, ARG0 #0, CARG #carg]>, OUTPUT [RELS < [PRED numbered_hour_rel, LBL #l, ARG0 #0, CARG #carg]>]]. 1-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "1:00"]>, OUTPUT.RELS <+copy+ & [CARG "1"]>]. 2-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "2:00"]>, OUTPUT.RELS <+copy+ & [CARG "2"]>]. 3-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "3:00"]>, OUTPUT.RELS <+copy+ & [CARG "3"]>]. 4-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "4:00"]>, OUTPUT.RELS <+copy+ & [CARG "4"]>]. 5-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "5:00"]>, OUTPUT.RELS <+copy+ & [CARG "5"]>]. 6-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "6:00"]>, OUTPUT.RELS <+copy+ & [CARG "6"]>]. 7-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "7:00"]>, OUTPUT.RELS <+copy+ & [CARG "7"]>]. 8-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "8:00"]>, OUTPUT.RELS <+copy+ & [CARG "8"]>]. 9-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "9:00"]>, OUTPUT.RELS <+copy+ & [CARG "9"]>]. 10-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "10:00"]>, OUTPUT.RELS <+copy+ & [CARG "10"]>]. 11-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "11:00"]>, OUTPUT.RELS <+copy+ & [CARG "11"]>]. 12-numbered_hour_mtr := monotonic_mtr & [INPUT.RELS <[PRED numbered_hour_rel, CARG "12:00"]>, OUTPUT.RELS <+copy+ & [CARG "12"]>]. named_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:_named_n_rel"]>, OUTPUT.RELS <+copy+ & [PRED named_rel]>]. poss-nominalisation_mtr := monotonic_mtr & [CONTEXT.RELS <[ PRED "de:nominalization_rel", ARG0 #x0, LBL #h0, ARG1 #h1], [PRED "~de:_.*_q_", ARG0 #x1]>, INPUT.RELS <[PRED #pred, LBL #h1, ARG0 #e0 & e, ARG2 a], [PRED "de:poss_rel", ARG1 #x0, ARG2 #x1] >, OUTPUT.RELS <[PRED #pred, LBL #h1, ARG0 #e0 & e & [PROG +], ARG1 p, ARG2 #x1]>]. udef-poss_def-implicit_q_mtr := quantifier_mtr & [ CONTEXT.RELS < [ PRED "de:poss_rel", ARG1 #x1, ARG2 #x2 ], [PRED "de:person_rel", ARG0 #x2], [PRED "de:wh_q_rel", ARG0 #x2] >, INPUT.RELS < [ PRED "de:_def_q_rel" , ARG0 #x1 ] > , OUTPUT.RELS < [ PRED "de:def_implicit_q_rel" ] > ]. udef-poss_def-explicit_q_mtr := quantifier_mtr & [ CONTEXT.RELS < [ PRED "de:poss_rel", ARG1 #x0 ] >, INPUT.RELS < [ PRED "de:_def_q_rel" , ARG0 #x0 ] > , OUTPUT.RELS < [ PRED "de:def_explicit_q_rel" ] > ]. mofy_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:mofy_rel", ARG0 #0, LBL #lbl, CARG #carg]>, OUTPUT.RELS < [PRED mofy_rel, ARG0 #0, LBL #lbl, CARG #carg]> ]. tue_dofw_mtr := dofw_mtr & [INPUT.RELS <[CARG "Dienstag"]>, OUTPUT.RELS < [CARG "Tue"]>]. ord-abstr-nom-mofy_dofm-mofy_mtr := monotonic_mtr & [CONTEXT.RELS <[PRED "de:unspec_temp_rel", LBL #lbl, ARG1 #0, ARG2 #2], [PRED mofy_rel, ARG0 #2]>, INPUT.RELS <[PRED "de:ord_rel", LBL #lbl, CARG #carg, ARG1 #0], [PRED "de:abstr_nom_rel", LBL #lbl, ARG0 #0] >, OUTPUT.RELS <[PRED dofm_rel, LBL #lbl, CARG #carg, ARG0 #0 ]> ]. unspec-temp_of_mtr := intersective_attribute_mtr & [CONTEXT.RELS <[PRED mofy_rel, ARG0 #2], [PRED dofm_rel, LBL #lbl, ARG0 #1]>, INPUT.RELS <[PRED "de:unspec_temp_rel", LBL #lbl, ARG1 #1, ARG2 #2]>, OUTPUT.RELS < [PRED of_p_rel, LBL #lbl, ARG1 #1, ARG2 #2 ]>]. ;;; Decompose multiples of 100 200_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "200"] >, OUTPUT.RELS <[CARG "2"], ...>]. 300_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "300"] >, OUTPUT.RELS <[CARG "3"], ...>]. 400_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "400"] >, OUTPUT.RELS <[CARG "4"], ...>]. 500_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "500"] >, OUTPUT.RELS <[CARG "5"], ...>]. 600_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "600"] >, OUTPUT.RELS <[CARG "6"], ...>]. 700_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "700"] >, OUTPUT.RELS <[CARG "7"], ...>]. 800_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "800"] >, OUTPUT.RELS <[CARG "8"], ...>]. 900_convert := hundred_convert_mtr & [INPUT.RELS <[CARG "900"] >, OUTPUT.RELS <[CARG "9"], ...>]. unspec-card-abstr-nom_appos-card_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:unspec_mod_rel", LBL #l1, ARG0 #e0 & e, ARG1 #x1 & x, ARG2 #x0 & x ], [PRED "de:abstr_nom_rel", LBL #l2, ARG0 #x0], [PRED "de:card_rel", CARG #carg, LBL #l2, ARG0 e, ARG1 #x0] >, OUTPUT.RELS <[PRED appos_rel, LBL #l1, ARG0 #e0, ARG1 #x1, ARG2 #x0], [PRED card_rel, CARG #carg, LBL #l2, ARG0 #x0, ARG1 i]>]. plus_swap_mtr := monotonic_mtr & [CONTEXT.RELS <[LBL #3, PRED "de:times_rel"]>, INPUT.RELS <[PRED "de:plus_rel", LBL #l, ARG0 i, ARG1 #1, ARG2 #2, ARG3 #3]>, OUTPUT.RELS < [PRED plus_rel, LBL #l, ARG0 i, ARG1 #1, ARG2 #3, ARG3 #2]>]. plus_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:plus_rel"]>, OUTPUT.RELS < +copy+ & [PRED plus_rel, ARG0 i ]>]. times_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:times_rel"]>, OUTPUT.RELS < +copy+ & [PRED times_rel]>]. card_mtr := intersective_attribute_mtr & [INPUT.RELS <[PRED "de:card_rel", CARG #carg]>, OUTPUT.RELS <[PRED card_rel, CARG #carg]> ]. ;;; Verbs koennen-modal_could_mtr := arg1_v_mtr & [INPUT.RELS <[PRED "de:_können_v_modal-haben_rel", ARG0 #0 & [MOOD subjunctive]]>, FLAGS.SUBSUME <#0>, OUTPUT.RELS <[PRED _could_v_modal_rel]> ]. koennen-modal_can_mtr := arg1_v_mtr & [INPUT.RELS <[PRED "de:_können_v_modal-haben_rel"]>, OUTPUT.RELS <[PRED _can_v_modal_rel]> ]. vorhaben_intend_v_mtr := monotonic_mtr & [INPUT.RELS < [PRED "de:_vorhaben_v_haben_rel", LBL #h1, ARG0 #e1 & e, ARG1 #x1, ARG2 #harg & h] >, OUTPUT.RELS < [PRED "_intend_v_for_rel", LBL #h1, ARG0 #e1, ARG1 #x1, ARG2 #harg] > ]. wollen-modal_intend-mtr := monotonic_mtr & [INPUT.RELS < [PRED "de:_wollen_v_modal-haben_rel", LBL #h1, ARG0 #e1 & e, ARG1 #x1, ARG2 #harg] >, OUTPUT.RELS < [PRED "_intend_v_for_rel", LBL #h1, ARG0 #e1, ARG1 #x1, ARG2 #h2] > ] . wollen-dass_intend_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:_wollen_v_haben_rel", LBL #l, ARG0 #e0, ARG1 #x1, ARG2 #h2], [LBL #h3, PRED "~_[vap]_", ARG0 e & [TENSE tensed]]>, CONTEXT.HCONS , OUTPUT.RELS <[PRED "_intend_v_for_rel", LBL #l, ARG0 #e0, ARG1 #x1, ARG2 #h2], +copy+ & [ARG0 [tense untensed, mood mood]] >]. versuchen-trans_try-to_v_mtr := monotonic_mtr & [INPUT.RELS < [PRED "de:_versuchen_v_haben_rel", ARG0 #0, ARG1 #1, LBL #l, ARG2 x & #2 & [NUM sg, PERS 3, GEND n]], [PRED "de:_pron_n_ppro_rel", ARG0 #2], [PRED "de:pronoun_q_rel", ARG0 #2]>, OUTPUT [RELS < [PRED "_try_v_1_rel", ARG0 #0, ARG1 #1, LBL #l, ARG2 #harg], [PRED ellipsis_ref_rel, LBL #larg, ARG0 e & [TENSE untensed], ARG1 #1]>, HCONS ]]. glauben-dass_believe-fin_mtr := arg12_v_mtr & [INPUT.RELS <[PRED "de:_glauben_v_haben_rel"]>, OUTPUT.RELS <[PRED "_believe_v_1_rel"]>]. believe_fin_nonfin_mtr := monotonic_omtr & [CONTEXT.RELS <[PRED "_believe_v_1_rel", LBL #l, ARG0 #e0, ARG1 #x1, ARG2 #h2]>, INPUT.RELS <[PRED prpstn_m_rel, LBL #h2, ARG0 [tense tensed]]>, OUTPUT.RELS <+copy+ & [ARG0 [tense untensed, mood mood]] >]. scheinen_seem_mtr := monotonic_mtr & [CONTEXT [RELS <[LBL #h3, ARG0 #e2]>, HCONS ], INPUT.RELS <[PRED "de:_scheinen_v_haben_rel", LBL #l, ARG0 #e1, ARG1 h & #h1, ARG2 a]>, OUTPUT.RELS <[PRED "_seem_v_to_rel", LBL #l, ARG0 #e1, ARG1 u, ARG2 h & #h1]>]. ;;;Pronouns pron-deictic_that_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:pronoun_q_rel", ARG0 #0], [PRED "de:_pron_n_deictic_rel", ARG0 #0]>, OUTPUT.RELS < +copy+ & [PRED _that_q_dem_rel], +copy+ & [PRED generic_entity_rel]> ]. ein_one_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:_indef_q_rel", ARG0 #0], [PRED "de:abstr_nom_rel", ARG0 #0]>, OUTPUT.RELS <+copy+ & [PRED pronoun_q_rel], +copy+ & [PRED "_one_n_1_rel"]>]. poss_pronoun_mtr := monotonic_mtr & [ CONTEXT.RELS < [ PRED "de:poss_rel", ARG1 #x1, ARG2 #x2 ], [PRED "de:pronoun_q_rel", ARG0 #x2] >, INPUT.RELS < [ PRED "de:pronoun_q_rel", ARG0 #x1 ], [PRED "de:pron_n_rel", ARG0 #x1] > , OUTPUT.RELS < +copy+ & [PRED def_implicit_q_rel ], +copy+ & [PRED generic_entity_rel]> ]. pron-reflselbst3-mtr := monotonic_mtr & [ CONTEXT.RELS <[ARG3 #x1, ARG0 #e2, LBL #l2 ]>, INPUT.RELS < [ PRED "de:_pron_n_refl_rel", LBL #l1, ARG0 #x1 ] , [ PRED "de:_selbst_a_rel", LBL #l2, ARG1 #e2] > , OUTPUT.RELS < [ PRED pron_rel, LBL #l1, ARG0 #x1 & [PRONTYPE refl] ] > ] . pron-reflselbst2-mtr := monotonic_mtr & [ CONTEXT.RELS <[ARG2 #x1, ARG0 #e2, LBL #l2 ]>, INPUT.RELS < [ PRED "de:_pron_n_refl_rel", LBL #l1, ARG0 #x1 ] , [ PRED "de:_selbst_a_rel", LBL #l2, ARG1 #e2] > , OUTPUT.RELS < [ PRED pron_rel, LBL #l1, ARG0 #x1 & [PRONTYPE refl] ] > ] . pron_refl_mtr := noun_mtr & [ INPUT.RELS < [ PRED "de:_pron_n_refl_rel" ] > , OUTPUT.RELS < [ PRED pron_rel, ARG0 [PRONTYPE refl] ] > ] . pron_imp_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:pron_n_rel", ARG0 #x]>, CONTEXT.RELS <[ARG0 #0 & e & [SF comm, TENSE pres, MOOD indicative], ARG1 #x ]>, FLAGS.SUBSUME <#0>, OUTPUT.RELS < +copy+ & [PRED pron_rel, ARG0 [NUM number, PRONTYPE zero_pron] ] >]. pron-ppro-mtr := noun_mtr & [ INPUT.RELS < [ PRED "de:_pron_n_ppro_rel" ] > , OUTPUT.RELS < [ PRED pron_rel, ARG0 [PRONTYPE std_pron]] > ] . _pron-mtr := noun_mtr & [ INPUT.RELS < [ PRED "de:_pron_n_rel" ] > , OUTPUT.RELS < [ PRED pron_rel, ARG0 [PRONTYPE std_pron]] > ] . pron-mtr := noun_mtr & [ INPUT.RELS < [ PRED "de:pron_n_rel" ] > , OUTPUT.RELS < [ PRED pron_rel, ARG0 [PRONTYPE std_pron]] > ] . person_mtr := noun_mtr & [INPUT.RELS <[PRED "de:person_rel"]>, OUTPUT.RELS <[PRED person_rel]>]. poss_part-of_mtr := monotonic_mtr & [ CONTEXT.RELS < [PRED card_rel, ARG1 #x1]>, INPUT.RELS < [ PRED "de:poss_rel" , LBL #l1, ARG0 #e1, ARG1 #x1, ARG2 #x2 ], [PRED "de:abstr_nom_rel", ARG0 #x1] > , OUTPUT.RELS < [ PRED part_of_rel, LBL #l1, ARG0 #x1 & x, ARG1 #x2] > ]. poss_mtr := monotonic_mtr & [ INPUT.RELS < [ PRED "de:poss_rel" , LBL #l1, ARG0 #e1, ARG1 #x1, ARG2 #x2 ] > , OUTPUT.RELS < [ PRED poss_rel, LBL #l1, ARG0 #e1, ARG1 #x1, ARG2 #x2] > ] . ;;; Coordination #| ev-coord-qeq_mtr := conjunction_mtr & [CONTEXT.RELS <[PRED prpstn_m_rel, MARG #h, ARG0 #0 ]>, INPUT.RELS <[PRED "de:_und_coord_rel", LBL #l, ARG0 #0 ]>, OUTPUT [RELS < [PRED _and_c_rel]>, HCONS < qeq & [HARG #h , LARG #l]>]]. |# und_and_coord_mtr := conjunction_mtr & [INPUT.RELS <[PRED "de:_und_coord_rel"]>, OUTPUT.RELS <[PRED _and_c_rel]>]. implicit_coord_mtr := conjunction_mtr & [INPUT.RELS <[PRED "de:implicit_coord_rel"]>, OUTPUT.RELS <[PRED implicit_conj_rel]>]. ;;; Wh-expressions wie_how_degree_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:wh_q_rel", ARG0 #x & x], [PRED "de:measure_rel", ARG2 #x], [PRED "de:abstr_degree_rel", ARG0 #x]>, OUTPUT.RELS <+copy+ & [PRED which_q_rel], +copy+ & [PRED measure_rel], +copy+ & [PRED abstr_deg_rel]>]. wann_when_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:wh_q_rel", ARG0 #x & x], [PRED "de:unspec_loc_rel", ARG2 #x], [PRED "de:time_rel", ARG0 #x]>, OUTPUT.RELS <+copy+ & [PRED which_q_rel], +copy+ & [PRED unspec_loc_rel], +copy+ & [PRED time_n_rel]>]. wo_where_mtr := monotonic_mtr & [INPUT.RELS <[PRED "de:wh_q_rel", ARG0 #x & x], [PRED "de:unspec_loc_rel", ARG2 #x], [PRED "de:place_rel", ARG0 #x]>, OUTPUT.RELS <+copy+ & [PRED which_q_rel], +copy+ & [PRED unspec_loc_rel], +copy+ & [PRED place_n_rel]>]. ;;; Conjunctions wenn_if_omtr := subordination_omtr & [INPUT.RELS <[PRED "de:_wenn_x_rel"]>, OUTPUT.RELS <[PRED "_if_x_then_rel"]>]. wenn_when_mtr := subordination_mtr & [INPUT.RELS <[PRED "de:_wenn_x_rel"]>, OUTPUT.RELS <[PRED "_when_x_subord_rel"]>]. falls_if_omtr := subordination_omtr & [INPUT.RELS <[PRED "de:_falls_x_rel"]>, OUTPUT.RELS <[PRED "_if_x_then_rel"]>]. um_in-order-to_mtr := subordination_mtr & [INPUT.RELS <[PRED "de:_um_x_rel"]>, OUTPUT.RELS <[PRED "_in+order+to_x_rel", ARG0 [SF prop, MOOD indicative, PERF -, PROG - ]]>]. ;;; Head switch weiter_keep-on_hs_mtr := head-switch_isect_gerund_mtr & [ INPUT.RELS < [ PRED "de:_weiter_a_rel"], [PRED #pred] >, OUTPUT.RELS < [PRED "_keep_v_on_rel"], [PRED #pred]>]. qtag_fix_sf_mtr := monotonic_mtr & [INPUT.RELS < [ PRED "de:q-tag", ARG0 [TENSE none], ARG1 [SF ques]]>, OUTPUT.RELS < +copy+ & [ARG1.SF prop]>]. qtag_copy_past_mtr := monotonic_mtr & [INPUT.RELS < [ PRED "de:q-tag", ARG0 [TENSE none], ARG1 [TENSE past]]>, OUTPUT.RELS < +copy+ & [ARG0.TENSE past]>]. qtag_copy_pres_mtr := monotonic_mtr & [INPUT.RELS < [ PRED "de:q-tag", ARG0 e & [TENSE none], ARG1 [TENSE pres]] >, OUTPUT.RELS < +copy+ & [ARG0.TENSE pres]>]. qtag_copy_fut_mtr := monotonic_mtr & [INPUT.RELS < [ PRED "de:q-tag", ARG0 e & [TENSE none], ARG1 [TENSE fut]] >, OUTPUT.RELS < +copy+ & [ARG0.TENSE fut]>]. qtag_copy_perf_mtr := monotonic_mtr & [INPUT.RELS < [ PRED "de:q-tag", ARG0 e & [TENSE none], ARG1 #e & e & [PERF +]] >, FLAGS.SUBSUME <#e>, OUTPUT.RELS < +copy+ & [ARG0.PERF +]>]. qtag_mtr := monotonic_mtr & [ CONTEXT.RELS <[ARG0 #e1, ARG1 #x1, LBL #l2]>, INPUT.RELS < [ PRED "de:q-tag", LBL #l0, ARG0 #e0, ARG1 #e1, CARG "~^(oder|ne)$"] >, OUTPUT [RELS < [PRED ne_x_rel, LBL #l1, ARG0 e & [SF prop], ARG1 #l2, ARG2 #l3], [PRED ellipsis_ref_rel, LBL #larg2, ARG0 #e0 & [SF ques], ARG1 #x2], [PRED pron_rel, LBL #larg1, ARG0 #x2], [PRED pronoun_q_rel, ARG0 #x2, RSTR #harg1], [PRED id_rel, LBL #l1, ARG0 e & [SF prop, TENSE untensed], ARG1 #x1, ARG2 #x2], [PRED neg_rel, LBL #l3, ARG0 e & [SF prop, TENSE untensed, MOOD indicative, PERF -, PROG - ], ARG1 #harg2]>, HCONS < qeq & [HARG #harg1, LARG #larg1], qeq & [HARG #harg2, LARG #larg2] >]]. qtag_copy_sg_mtr := monotonic_mtr & [INPUT.RELS < [ PRED id_rel, ARG1 [NUM sg], ARG2 [NUM pl]] >, OUTPUT.RELS < +copy+ & [ARG2.NUM sg]>]. qtag_copy_pl_mtr := monotonic_mtr & [INPUT.RELS < [ PRED id_rel, ARG1 [NUM pl], ARG2 [NUM sg]] >, OUTPUT.RELS < +copy+ & [ARG2.NUM pl]>].