;;; Hey, emacs(1), this is -*- Mode: TDL; Coding: utf-8; -*- got it? ;;; ;;; `multi-word' transfer rules: typically things we should process before the ;;; `regular' transfer rules consume some of the pieces these rules require. ;;; ;;; ;;; there are a couple of compounds that require idiosyncratic translation of ;;; the individual components, even if the output is a compound again. ;;; bånd+tvang_n := n+n_n+n_mtr & [ INPUT.RELS < [ PRED "_bånd_n_rel" ], [ PRED "_tvang_n_rel" ] >, OUTPUT.RELS < [ PRED "_leash_n_1_rel" ], [ PRED "_law_n_1_rel" ] > ]. duskull_n := n+n_n+n_mtr & [ INPUT.RELS < [ PRED "_dusk_n_rel" ], [ PRED "_ull_n_rel" ] >, OUTPUT.RELS < [ PRED "_cotton_n_1_rel" ], [ PRED "_grass_n_1_rel" ] > ]. detalj+program_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_detalj_n_rel" ], [ PRED "_program_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_detaljert_a_rel" ], [ PRED "_program_n_of_rel" ] > ]. fjell+klatring_n := n+n_n+nominalization_mtr & [ INPUT.RELS < [ PRED "_fjell_n_rel" ], [ PRED "_klatring_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_mountain_n_1_rel" ], [ PRED "_climb_v_1_rel" ], ... > ]. friluft+område_n := n+n_n+n_mtr & [ INPUT.RELS < [ PRED "_friluft_n_rel" ], [ PRED "_område_n_rel" ] >, OUTPUT.RELS < [ PRED "_recreation_n_1_rel" ], [ PRED "_area_n_of_rel" ] > ]. hund+kjører_n := n+n_n+n_omtr & [ INPUT.RELS < [ PRED "_hund_n_rel" ], [ PRED "_kjører_n_rel" ] >, OUTPUT.RELS < [ PRED "_dogsled_n_1_rel" ], [ PRED "_driver_n_of_rel" ] > ]. hus+dyr_farm+animal_n := n+n_n+n_omtr & [ INPUT.RELS < [ PRED "_hus_n_rel" ], [ PRED "_dyr_n_rel" ] >, OUTPUT.RELS < [ PRED "_farm_n_1_rel" ], [ PRED "_animal_n_1_rel" ] > ]. hus+dyr_pet_n := n+n_n_mtr & [ INPUT.RELS < [ PRED "_hus_n_rel" ], [ PRED "_dyr_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_pet_n_1_rel" ] > ]. god+behold_preservation := adj+n_n_mtr & [ INPUT.RELS < [ PRED "_god_a_rel" ], [ PRED "_behold_n_rel" ] >, OUTPUT.RELS < [ PRED "_preservation_n_1_rel" ] > ]. ;;; ;;; Optional to allow for more literal, automatically acquired translations. ;;; (04-jan-07; jtl) ;;; høyde+punkt_highlight_n := n+n_n_omtr & [ INPUT.RELS < [ PRED "_høyde_n_rel" ], [ PRED "_punkt_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_highlight_n_1_rel" ] > ]. i+behold_pp := pp_ad_mtr & [ INPUT.RELS < [ PRED "_i_p_rel" ], [ PRED "bare_div_q_rel" ], [ PRED "_behold_n_rel" ] >, OUTPUT.RELS < [ PRED "_intact_a_1_rel" ] > ]. karakterdyr_n := n+n_adj+n_omtr & [ INPUT.RELS < [ PRED "_karakter_n_rel" ], [ PRED "_dyr_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_typical_a_of_rel" ], [ PRED "_animal_n_1_rel" ], ... > ]. kultur+landskap_cultivated+land_n := n+n_adj+n_omtr & [ INPUT.RELS < [ PRED "_kultur_n_rel" ], [ PRED "_landskap_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_cultivated_a_1_rel" ], [ PRED "_land_n_of_rel" ] > ]. kultur+landskap_cultural+landscape_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_kultur_n_rel" ], [ PRED "_landskap_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_cultural_a_1_rel" ], [ PRED "_landscape_n_1_rel" ] > ]. kunst+snø_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_kunst_n_rel" ], [ PRED "_snø_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_artificial_a_1_rel" ], [ PRED "_snow_n_1_rel" ] > ]. ljore+hull_smoke+vent_n := n+n_n+n_mtr & [ INPUT.RELS < [ PRED "_ljore_n_rel" ], [ PRED "_hull_n_rel" ] >, OUTPUT.RELS < [ PRED "_smoke_n_1_rel" ], [ PRED "_vent_n_1_rel" ] > ]. lunningsplass_n_part_1 := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_lunning_n_rel" ], [ PRED "_plass_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_skidding_a_tmp_rel" ], [ PRED "_place_n_of_rel" ], ... > ]. lunningsplass_n_part_2 := adjective_prp_participle_mtr & [ INPUT.RELS < [ PRED "_skidding_a_tmp_rel" ] >, OUTPUT.RELS < [ PRED "_skid_v_1_rel" ], ... > ]. malm+furu_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_malm_n_rel" ], [ PRED "_furu_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_old_a_1_rel" ], [ PRED "_pine_n_1_rel" ] > ]. rød+sildre_purple+saxifrage_n := adj*n_adj+n_mtr & [ INPUT.RELS < [ PRED "_rød_a_rel" ], [ PRED "_sildre_n_rel" ] ... >, OUTPUT.RELS < [ PRED "_purple_a_1_rel" ], [ PRED "_saxifrage_n_1_rel" ], ... > ]. sand+strand_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_sand_n_rel" ], [ PRED "_strand_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_sandy_a_1_rel" ], [ PRED "_beach_n_1_rel" ] > ]. sol+brille_sunglasses_n := n+n_n_mtr & [ INPUT.RELS < [ PRED "_sol_n_rel" ], [ PRED "_brille_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_sunglasses_n_pair_rel", ARG0 [ NUM pl ] ] > ]. supplering_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_supplering_n_rel" ], [ PRED #p ], ... >, OUTPUT.RELS < [ PRED "_supplementary_a_1_rel" ], [ PRED #p ] > ]. ;;; ;;; SL compounds that are lexicalized in the target language. ;;; flat+myr_marsh_n := n+n_n_omtr & [ INPUT.RELS < [ PRED "_flat_n_rel" ], [ PRED "_myr_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_marsh_n_1_rel" ] > ]. flat+myr_flat_marsh_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_flat_n_rel" ], [ PRED "_myr_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_flat_a_1_rel" ], [ PRED "_marsh_n_1_rel" ] > ]. overnatting_compound := monotonic_omtr & [ INPUT [ RELS < [ PRED "_overnatting_n_rel", LBL #h0, ARG0 #x1 ], [ PRED "unspec_rel", LBL #h2, ARG1 #x3, ARG2 #x1 ], [ PRED "udef_q_rel", ARG0 #x1, RSTR #h3 ] >, HCONS < qeq & [ HARG #h3, LARG #h0 ] > ], OUTPUT.RELS < [ PRED "_overnight_a_1_rel", LBL #h2, ARG1 #x3 ] > ]. overnatting+plass_n := n+n_n_omtr & [ INPUT.RELS < [ PRED "_overnatting_n_rel" ], [ PRED "_plass_n_rel" ] ... >, OUTPUT.RELS < [ PRED "_lodging_n_1_rel" ] > ]. overnatting+plass_n := n+n_adj+n_mtr & [ INPUT.RELS < [ PRED "_overnatting_n_rel" ], [ PRED "_plass_n_rel" ] ... >, OUTPUT.RELS < [ PRED "_overnight_a_1_rel" ], [ PRED "_lodging_n_1_rel" ] > ]. i+peis+stue := monotonic_omtr & [ INPUT [ RELS < [ LBL #h6, ARG0 #e7, ARG1 #e8, ARG2 #x4, PRED "_i_p_rel"], [ LBL #h1, ARG0 #x2, PRED "_peis_n_rel"], [ LBL #h3, ARG0 #x4, PRED "_stue_n_rel" ], [ PRED "unspec_rel", LBL #h3, ARG1 #x4, ARG2 #x2 ], [ PRED "udef_q_rel", ARG0 #x2, RSTR #h5 ] >, HCONS < qeq & [ HARG #h5, LARG #h1 ] > ], OUTPUT.RELS < [ LBL #h6, ARG0 #e7, ARG1 #e8, ARG2 #x4, PRED _by_p_rel], [ LBL #h3, ARG0 #x4, PRED "_fireplace_n_1_rel" ] > ]. peis+stue_n := n+n_n_mtr & [ INPUT.RELS < [ PRED "_peis_n_rel" ], [ PRED "_stue_n_rel" ] ... >, OUTPUT.RELS < [ PRED "_lounge_n_1_rel" ] > ]. rund+skue_n := adj+n_n_mtr & [ INPUT.RELS < [ PRED "_rund_a_rel" ], [ PRED "_skue_n_rel" ] ... >, OUTPUT.RELS <[ PRED "_panorama_n_1_rel" ] > ]. ski+løper_n := n+n_n_mtr & [ INPUT.RELS < [ PRED "_ski_n_rel" ], [ PRED "_løper_n_rel" ] ... >, OUTPUT.RELS < [ PRED "_skier_n_1_rel" ] > ]. tur+gåer_n := n+n_n_mtr & [ INPUT.RELS < [ PRED "_tur_n_rel" ], [ PRED "_gåer_n_rel" ] ... >, OUTPUT.RELS < [ PRED "_hiker_n_1_rel" ] > ]. ;;; ;;; _fix_me_ ;;; during the `vaar' (2006) integration, we are left with a few compounds that ;;; are decomposed when used in isolation but not (recursively) decomposed when ;;; being part of a larger compound. thus, we actually know the following are ;;; modifiers of larger structures. but these should disappear eventually. ;;; (17-feb-06; oe) dagstur_n := n_n+n_mtr & [ INPUT.RELS < [ PRED "_dagstur_n_rel" ] >, OUTPUT.RELS < [ PRED "_day_n_of_rel" ], [ PRED "_trip_n_of_rel" ] ... > ]. fottur_n := n_nominalization_mtr & [ INPUT.RELS < [ PRED "_fottur_n_rel" ] >, OUTPUT.RELS < [ PRED "_hike_v_1_rel" ], ... > ]. høyfjell_n := n_adj+n_mtr & [ INPUT.RELS < [ PRED "_høyfjell_n_rel" ] >, OUTPUT.RELS < [ PRED "_high_a_1_rel" ], [ PRED "_mountain_n_1_rel" ] ... > ]. motorbåt_n := noun_mtr & [ INPUT.RELS < [ PRED "_motorbåt_n_rel" ] >, OUTPUT.RELS < [ PRED "_motorboat_n_1_rel" ] > ]. selvbetjening_n := n_n+n_mtr & [ INPUT.RELS < [ PRED "_selvbetjening_n_rel" ] >, OUTPUT.RELS < [ PRED "_self_n_1_rel" ], [ PRED "_service_n_1_rel" ] ... > ]. ;;; ;;; _fix_me_ ;;; during the `mo' integration, we now get more three-way compounds analysed ;;; into components (albeit by listing them in `compounds.logon' rather than ;;; the actual fix in the compound analyzer for full recursive decomposition). ;;; however, given the flat analysis of such compounds, unfortunately we fail ;;; to auto-generate rules for these (see `norgram.mtr' in the TRAG directory). ;;; (15-oct-06; oe) fotturrute_n := n*n*n_nominalization*n_mtr & [ INPUT.RELS < [ PRED "_fot_n_rel" ], [ PRED "_tur_n_rel" ], [ PRED "_rute_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_hike_v_1_rel" ], [ PRED "_trail_n_1_rel" ], ... > ]. fotturpioner_n := n*n*n_nominalization*n_mtr & [ INPUT.RELS < [ PRED "_fot_n_rel" ], [ PRED "_tur_n_rel" ], [ PRED "_pioner_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_hike_v_1_rel" ], [ PRED "_pioneer_n_1_rel" ], ... > ]. fotturstøvel_n := n*n*n_nominalization*n_mtr & [ INPUT.RELS < [ PRED "_fot_n_rel" ], [ PRED "_tur_n_rel" ], [ PRED "_støvel_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_hike_v_1_rel" ], [ PRED "_boot_n_1_rel" ], ... > ]. motorbåtrute := n*n*n_n*n_mtr & [ INPUT.RELS < [ PRED "_motor_n_rel" ], [ PRED "_båt_n_rel" ], [ PRED "_rute_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_motorboat_n_1_rel" ], [ PRED "_route_n_1_rel" ], ... > ]. nasjonalparkgrense_n := adj*n*n_adj*n*n_mtr & [ INPUT.RELS < [ PRED "_nasjonal_a_rel" ], [ PRED "_park_n_rel" ], [ PRED "_grense_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_national_a_1_rel" ], [ PRED "_park_n_1_rel" ], [ PRED "_boundary_n_1_rel" ], ... > ]. sommerskiløping_n := n*n*n_n*nominalization_mtr & [ INPUT.RELS < [ PRED "season_rel", CARG "sommer" ], [ PRED "_ski_n_rel" ], [ PRED "_løping_n_rel" ], ... >, OUTPUT.RELS < [ PRED season_rel, CARG "summer" ], [ PRED "_ski_v_1_rel" ], ... > ]. veidemannsliv_n := n*n*n_nominalization*n_mtr & [ INPUT.RELS < [ PRED "_veide_n_rel" ], [ PRED "_mann_n_rel" ], [ PRED "_liv_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_hunt_v_1_rel" ], [ PRED "_life_n_of_rel" ], ... > ]. ;;; ;;; a group of nouns analyzed as `measure' classifiers in NorGram, while the ;;; corresponding ERG analyses treat the noun as a head that is parasitic on ;;; the (semantic) agreement properties of its complement, e.g. ;;; ;;; - den typen fjell --> this type of mountain ;;; - en trofast skare bestyrere --> a loyal line of wardens ;;; ;;; _fix_me_ ;;; for some reason, no MTR variables are created for PRED values, unless the ;;; co-references are redundantly repeated in each instance definition :-{. ;;; (3-jan-07; oe) anntall_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_antall_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_number_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. flaske_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_flaske_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_bottle_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. flokk_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_flokk_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_herd_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. glass_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_glass_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_glass_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. gruppe_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_gruppe_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_group_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. mengde_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_mengde_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_group_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. milliard_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_milliard_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_billion_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. million_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_million_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_million_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. samling_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_samling_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_collection_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. serie_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_serie_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_series_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. skare_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_skare_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_line_n_of_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. type_measure := measure_classifier_mtr & [ INPUT.RELS < [ PRED "_type_n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ...>, OUTPUT.RELS < [ PRED "_type_n_of-n_rel" ], [ PRED #quantifier ], [ PRED #noun ], ... > ]. ;;; ;;; _fix_me_ ;;; there should be more of these; the pattern is still missing from TRAG. ;;; (2-dec-07; oe) lodd+rett_a := n+a_a_mtr & [ INPUT.RELS < [ PRED "_lodd_n_rel" ], [ PRED "_rett_a_rel" ], ...>, OUTPUT.RELS < [ PRED "_vertical_a_1_rel" ] > ]. ;;; ;;; a section on `phrasal verbs', e.g. more or less fixed units that tend to ;;; have a variation in syntactic form in the target language, e.g. ;;; ;;; `slå leir' --> `camp' ;;; `drive jakt [på ...]' --> `hunt [...]' ;;; ;;; ;;; _fix_me_ ;;; this is a tricky space, as `drive' also allows impersonal passives, e.g. ;;; ;;; @ Det drives jakt. >> There is hunting. ;;; @ Han driver jakt. >> He hunts. ;;; @ Han driver jakt på bjørn. >> He hunts bear. ;;; @ Jakt på bjørn drives i Sverige. >> Bear is hunted in Sweden. ;;; @ Det drives jakt på bjørn. >> There is bear hunting. ;;; drive+jakt+på_passive_v := monotonic_mtr & [ INPUT [ RELS < [ PRED "_drive_v_rel", LBL #h0, ARG0 #e0, ARG1 #u0 & u, ARG2 #x0 & x ], [ PRED "~bare_[^_]*_q_rel", ARG0 #x0, RSTR #h1 ], [ PRED "_jakt_n_rel", LBL #h2, ARG0 #x0, ARG1 #p0 & p ], [ PRED "parg_d_rel", LBL #h0, ARG1 #e0, ARG2 #x0 ] >, HCONS < qeq & [ HARG #h1, LARG #h2 ] > ], OUTPUT.RELS < [ PRED "_hunt_v_1_rel", LBL #h0, ARG0 #e0, ARG1 #u0, ARG2 #p0 ], [ PRED parg_d_rel, LBL #h0, ARG1 #e0, ARG2 #p0 ] >, FLAGS [ EQUAL < #u0, #x0 >, SUBSUME < #p0 > ] ]. drive+jakt+på_active_v := arg12+rnp_arg12_v_mtr & [ INPUT.RELS < [ PRED "_drive_v_rel" ], [ PRED "~bare_[^_]*_q_rel" ], [ PRED "_jakt_n_rel" ] >, OUTPUT.RELS < [ PRED "_hunt_v_1_rel" ] > ]. drive+jakt_v := arg12+np_arg1_v_mtr & [ INPUT.RELS < [ PRED "_drive_v_rel" ], [ PRED "~bare_[^_]*_q_rel" ], [ PRED "_jakt_n_rel" ] >, OUTPUT.RELS < [ PRED "_hunt_v_1_rel" ] > ]. ;;; ;;; the following rules are optional since they are problematic wehn `inntrykk' ;;; is further modified by an attributive adjective; hence, we need `make an ;;; impression' as a fall-back. (03-jan-07; jtl) ;;; ;;; --- i added a FILTER statement that should prevent these problems, but as ;;; to me `make an impression' seems an equally good translation as `impress' ;;; (which, admittedly, it very cute too), keep these rules optional. ;;; (21-oct-07; oe) gjøre+inntrykk+på_v := arg12+np+pp_arg12_v_omtr & [ INPUT.RELS < [ PRED "_gjøre_v_rel" ], [ PRED "bare_sg_q_rel" ], [ PRED "_inntrykk_n_rel" ], [ PRED "_på_p_rel" ] >, FILTER.RELS < [ LBL #h0, ARG1 #x0 ] >, OUTPUT.RELS < [ PRED "_impress_v_1_rel" ] > ]. gjøre+inntrykk_v := arg12+np_arg1_v_omtr & [ INPUT.RELS < [ PRED "_gjøre_v_rel" ], [ PRED "~(?:bare_sg|en)_q_rel" ], [ PRED "_inntrykk_n_rel", LBL #h0, ARG0 #x0 ] >, FILTER.RELS < [ LBL #h0, ARG1 #x0 ] >, OUTPUT.RELS < [ PRED "_impress_v_1_rel" ] > ]. se+vekk+fra_v := arg1+pp_arg12_mtr & [ INPUT.RELS < [ PRED "_se_v_rel" ], [ PRED "_vekk+fra_p_rel" ] >, OUTPUT.RELS < [ PRED "_disregard_v_1_rel" ] > ]. stå+klar_v := arg1+pp_arg1_mtr & [ INPUT.RELS < [ PRED "_stå_v_rel" ], [ PRED "_klar-ready_a_rel" ] >, OUTPUT.RELS < [ PRED "_ready_a_1_rel" ] > ]. ta+skalpen+på_v := arg12+np+pp_arg12_v_mtr & [ INPUT.RELS < [ PRED "_ta_v_rel" ], [ PRED "def_q_rel" ], [ PRED "_skalp_n_rel" ], [ PRED "_på_p_rel" ] >, OUTPUT.RELS < [ PRED "_conquer_v_1_rel" ] > ]. ;;; ;;; _fix_me_ ;;; i remain somewhat unconvinced of this `idiom' (as does helge, i believe); ;;; but while it is around, take advantage of it. (18-apr-04; oe) ;;; vise+hensyn_sg := monotonic_mtr & [ INPUT [ RELS < [ PRED "_vise*hensyn*til_v_rel", LBL #h0, ARG0 #e1, ARG1 #x2, ARG2 #x3 ], [ ARG0 #x4 & x, RSTR #h5 & h ], [ PRED "_hensyn_n_sel_rel", LBL #h6, ARG0 #x4 ] >, HCONS < qeq & [ HARG #h5, LARG #h6 ] > ], OUTPUT.RELS < [ PRED "_considerate_a_of_rel", LBL #h0, ARG0 #e1, ARG1 #x2, ARG2 #x3 ] >, FLAGS.EQUAL < #x4, #h5 > ]. ;;; ;;; the following is a case where we would like to generalize over a set of ;;; cognate direct objects to `gå'. i think this could be a nice example of ;;; constructing a transfer-only hierarchy of predicates, possibly broken down ;;; by colour (aka language). ;;; gå+tur_take_v := arg12_v_omtr & [ CONTEXT.RELS < [ PRED "_tur_n_rel", ARG0 #x1 & x ] >, INPUT.RELS < [ PRED "_gå_v_rel", ARG2 #x1 ] >, OUTPUT.RELS < [ PRED "_take_v_1_rel" ] >, FLAGS.EQUAL < #x1 > ]. gå+rundtur_take_v := arg12_v_omtr & [ CONTEXT.RELS < [ PRED "_rundtur_n_rel", ARG0 #x1 ] >, INPUT.RELS < [ PRED "_gå_v_rel", ARG2 #x1 ] >, OUTPUT.RELS < [ PRED "_take_v_1_rel" ] > ]. gå+av+veien_v := monotonic_mtr & [ INPUT.RELS < [ LBL #h0, PRED "_gå_v_rel", ARG0 #e1, ARG1 #x2 ], [ LBL #h0, PRED "_av+veien_a_rel", ARG1 #e1 ], [ LBL #h0, PRED "_for_p_rel", ARG1 #e1, ARG2 #x3 ] >, OUTPUT.RELS < [ LBL #h0, PRED "_avoid_v_1_rel", ARG0 #e1, ARG1 #x2, ARG2 #x3 ] > ]. ;;; ;;; _fix_me_ ;;; and here is another such example, this time for `lage'. (9-jul04; oe) ;;; lage+rett_prepare_v := arg12_v_omtr & [ CONTEXT.RELS < [ PRED "_rett_n_rel", ARG0 #x1 ] >, INPUT.RELS < [ PRED "_lage_v_rel", ARG2 #x1 ] >, OUTPUT.RELS < [ PRED "_prepare_v_1_rel" ] > ]. lage+mat_prepare_v := arg12_v_omtr & [ CONTEXT.RELS < [ PRED "_mat_n_rel", ARG0 #x1 ] >, INPUT.RELS < [ PRED "_lage_v_rel", ARG2 #x1 ] >, OUTPUT.RELS < [ PRED "_prepare_v_1_rel" ] > ]. runde+år_turn_v := arg12_v_omtr & [ CONTEXT.RELS < [ PRED "_år_n_rel", ARG0 #x0 ] >, INPUT.RELS < [ PRED "_runde_v_rel" ] >, OUTPUT.RELS < [ PRED "_turn_v_1_rel" ] > ]. ;;; ;;; a test case of relatively complex input matching plus overwriting ;;; skog+og+mark := monotonic_omtr & [ CONTEXT.HCONS < qeq & [ HARG #h2, LARG #h3 ] >, INPUT [ RELS < [ PRED "udef_q_rel", LBL #h0, ARG0 #x1, RSTR #h2, BODY #h10 ], [ PRED "and_rel", LBL #h3, ARG0 #x1, L-INDEX #x4, R-INDEX #x5 ], [ PRED "bare_sg_q_rel", ARG0 #x4, RSTR #h6 ], [ PRED "_skog_n_rel", LBL #h7, ARG0 #x4 ], [ PRED "bare_sg_q_rel", ARG0 #x5, RSTR #h8 ], [ PRED "_mark_n_rel", LBL #h9, ARG0 #x5 ] >, HCONS < qeq & [ HARG #h6, LARG #h7 ], qeq & [ HARG #h8, LARG #h9 ] > ], OUTPUT [ RELS < [ PRED _the_q_rel, LBL #h0, ARG0 #x1, RSTR #h2, BODY #h10 ], [ PRED "_back+country_n_1_rel", LBL #h3, ARG0 #x1 & [ PERS 3, NUM sg, GRIND - ] ] > ] ]. ; PH 2008-01-13 velge+og+vrake := monotonic_omtr & [ INPUT.RELS < [ PRED "and_rel", LBL #h0, ARG0 #e0, L-INDEX #e1, R-INDEX #e2 ], [ PRED "_velge_v_rel", ARG0 #e1, ARG1 #x0 ], [ PRED "_vrake_v_rel", ARG0 #e2, ARG1 #x0 ] >, OUTPUT [ RELS < [ PRED "_take_v_1_rel", LBL #h0, ARG0 #e0, ARG1 #x0, ARG2 #x1 ], [ PRED _a_q_rel, ARG0 #x1 & [ NUM sg, PERS 3, GRIND - ], RSTR #h1 ], [ LBL #h2, PRED "_pick_n_of_rel", ARG0 #x1 ] >, HCONS < qeq & [ HARG #h1, LARG #h2 ] > ] ]. ;;; ;;; _fix_me_ ;;; stative predicates like, for example, `_se-på_v' seem to want to translate ;;; as a predicative, assuming there is an adverb that turns into a relational ;;; adjective. yet, there should be ways of doing this more generically ... ;;; (24-jul-04; oe) ;;; --- there is actually an interesting problem here: since both events could ;;; have modifiers (and we are effectively loosing the adverbial event), record ;;; the fact that two events were equated for later fix-up in the `snug' phase. ;;; se*på+alvorlig_concerned_j := monotonic_mtr & [ INPUT.RELS < [ PRED "_se*på_v_rel", LBL #h0, ARG0 #e1, ARG1 #x2, ARG2 #x3 ], [ PRED "_alvorlig_a_rel", LBL #h0, ARG0 #e4, ARG1 #e1 ] >, OUTPUT.RELS < [ PRED "_concerned_a_about_rel", LBL #h0, ARG0 #e1 & [ STATIVE + ], ARG1 #x2, ARG2 #x3 ], [ PRED equate, ARG0 #e1, ARG1 #e4 ] > ]. ;;; ;;; NorGram analyzes non-agreeing predicatives (e.g. `Bil er dyrt.', `Vafler er ;;; godt.', et al.) by means of an intervening entity: `a situation involving a ;;; car'. because we end up replacing one index with another (the downstairs ;;; index of the actual noun), we need to call on the final `snug' machinery in ;;; case there were intersective modifiers on the car. forcing plural is what ;;; came out of a series of discussions among developers: `far from perfect', ;;; according to helge :-). (22-dec-06; oe) ;;; sit-involving := monotonic_mtr & [ CONTEXT [ RELS < [ PRED "udef_q_rel", LBL #h7, ARG0 #x0, RSTR #h0, BODY #h6 ] >, HCONS < qeq & [ HARG #h0, LARG #h1 ] > ], INPUT [ RELS < [ PRED "nominalize_rel", LBL #h1, ARG0 #x0 & x, ARG1 #h2 ], [ PRED "sit-involving_rel", LBL #h2, ARG1 #x1 ], [ PRED #pred, LBL #h3, ARG0 #x1 & x ], [ ARG0 #x1, RSTR #h5 & h ] >, HCONS < qeq & [ HARG #h5, LARG #h3 ] > ], OUTPUT.RELS < [ PRED #pred, LBL #h1, ARG0 #x0 & [ NUM pl ] ], [ PRED intersective_equate, ARG0 #x0, ARG1 #x1 ], [ PRED intersective_equate, ARG0 #h1, ARG1 #h3 ] >, FLAGS.EQUAL < #x0, #x1, #h5 > ]. ;;; ;;; experimenting with context restriction. (23-nov-05; jtl) ;;; preparere_groom_v := arg12_v_omtr & [ CONTEXT.RELS < [ PRED "_spor_n_rel", ARG0 #x1 ] >, INPUT.RELS < [ PRED "_preparere_v_rel", ARG2 #x1] >, OUTPUT.RELS < [ PRED "_groom_v_1_rel" ] > ]. ;;; ;;; we leave `tilbake', which is type shifting to the prepositions phase. ;;; (14-dec-06; jtl) frem+og+tilbake_p := monotonic_mtr & [ INPUT.RELS < [ PRED "_frem+og+tilbake_p_rel", LBL #h0, ARG1 #e2, ARG2 #x3 ] >, OUTPUT.RELS < [ PRED _and_c_rel, LBL #h0, L-HNDL #h5, L-INDEX #e6, R-HNDL #h7, R-INDEX #e8 ], [ PRED "_tilbake_p_rel", LBL #h5, ARG0 #e6, ARG1 #e2, ARG2 #x3 ], [ PRED _forth_p_dir_rel, LBL #h7, ARG0 #e8, ARG1 #e2, ARG2 #x3 ] > ]. ;;; ;;; _fix_me_ ;;; we need to decide how to organize this file; things are getting confusing. ;;; (28-feb-06; oe) hele_a_full_x := degree_specifier_mtr & [ CONTEXT.RELS < [ PRED "card_rel", LBL #h0, ARG0 #e0 ] >, INPUT.RELS < [ PRED "_hele_x_deg_rel", LBL #h0, ARG1 #e0 ] >, OUTPUT.RELS < [ PRED "_a+full_x_deg_rel" ] > ]. helt+fra_p := monotonic_mtr & [ INPUT.RELS < [ PRED "_helt_x_deg_rel", LBL #h0, ARG1 #e1 ], [ PRED "_fra_p_rel", LBL #h0, ARG0 #e1, ARG1 #u2, ARG2 #u3 ] >, OUTPUT.RELS < [ PRED _ever+since_p_rel, LBL #h0, ARG0 #e1, ARG1 #u2, ARG2 #u3 ] > ]. helt+siden_p := monotonic_mtr & [ INPUT.RELS < [ PRED "_helt_x_deg_rel", LBL #h0, ARG1 #e1 ], [ PRED "_siden_p_rel", LBL #h0, ARG0 #e1, ARG1 #u2, ARG2 #u3 ] >, OUTPUT.RELS < [ PRED _ever+since_p_rel, LBL #h0, ARG0 #e1, ARG1 #u2, ARG2 #u3 ] > ]. midt+i_p := monotonic_omtr & [ INPUT.RELS < [ PRED "_midt_x_deg_rel", LBL #h0, ARG1 #e1 ], [ PRED "_i_p_rel", LBL #h0, ARG0 #e1, ARG1 #u2, ARG2 #u3 ] >, OUTPUT [ RELS < [ PRED _in_p_rel, LBL #h0, ARG0 #e1, ARG1 #u2, ARG2 #x4 ], [ PRED "_middle_n_of_rel", LBL #h5, ARG0 #x4 & [ GRIND - ], ARG1 #u3 ], [ PRED _the_q_rel, ARG0 #x4, RSTR #h6 ] >, HCONS < qeq & [ HARG #h6, LARG #h5 ] > ] ]. noen+gang_a := monotonic_mtr & [ INPUT [ RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e1, ARG1 #e2 & e, ARG2 #x3 & x ], [ PRED "noen_q_rel", ARG0 #x3, RSTR #h4 ], [ PRED "_gang_n_rel", LBL #h5, ARG0 #x3 ] >, HCONS < qeq & [ HARG #h4, LARG #h5 ] > ], OUTPUT.RELS < [ PRED _ever_a_1_rel, LBL #h0, ARG0 #e1, ARG1 #e2 ] >, FLAGS.EQUAL < #e2, #x3 > ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; decomposed lexical adverbials, e.g. `back' as ``{at | to} some definite ;;; place which is back''. for the time being, NorGram has decomposed some but ;;; analyzes others as a single adverbial EP. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; ERG-analysis of away has changed. see now `abcd.mtr'. (19-dec-06; jtl) ;;; #| av+sted_away := adverb_lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_av+sted_a_rel" ] >, OUTPUT.RELS < [ PRED _away_p_rel ], ... > ]. borte_away := adverb_lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_borte_a_rel" ] >, OUTPUT.RELS < [ PRED _away_p_rel ], ... > ]. |# ;;; Added the current one as "_borte_a_rel" no longer in norgram.smi ;;; and the treatment of _away_p_rel has changed. ;;; I have made it optional since we might still need the other ;;; rule in abcd.mtr ;;; (19-dec-06; jtl) borte_a := lexical_pp_place_adverb_omtr & [ INPUT.RELS < [ PRED "_borte_rel" ], ... >, OUTPUT.RELS < [ PRED _away_p_rel ] > ]. den+dag+i+dag_today := lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_den+dag+i+dag_rel" ], ...>, OUTPUT.RELS < [ PRED _today_a_1_rel ], ... > ]. den+gang_today := lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_den+gang_rel" ], ...>, OUTPUT.RELS < [ PRED _then_p_temp_rel ], ... > ]. ;;; ;;; _fix_me_ ;;; quite some edit distance here; is it motivated? (17-apr-04; oe) ;;; ;;; --- come to think of it, the `[...] der Kvarvenveier slutter' analysis is ;;; presumably not the one we want, hence the `der_where' may be unmotivated. ;;; (21-jul-04; oe) ;;; --- if nothing else, we need the CONTEXT condition to avoid matching on the ;;; (now decomposed) lexical PP `der' as in `Han sover der.' (10-jun-06; oe) ;;; der_where := monotonic_mtr & [ INPUT [ RELS < [ PRED "def_q_rel", LBL #h0, ARG0 #x0, RSTR #h1, BODY #h2 ], [ PRED "sted_rel", LBL #h3, ARG0 #x0 ], [ PRED "_der_rel", LBL #h3, ARG1 #x0 ] >, HCONS < qeq & [ HARG #h1, LARG #h3 ], qeq & [ HARG #h3, LARG #h4 ] > ], OUTPUT [ RELS < [ PRED free_relative_q_rel, LBL #h0, ARG0 #x0, RSTR #h1, BODY #h2 ], [ PRED place_n_rel, LBL #h4, ARG0 #x0 & [ PERS 3, NUM sg, GRIND - ] ] >, HCONS < qeq & [ HARG #h1, LARG #h4 ] > ] ]. der_there_r := lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_der_rel" ], ... >, OUTPUT.RELS < [ PRED _there_a_1_rel ], ... > ]. der+borte_over+there_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_der+borte_rel" ], ... >, OUTPUT.RELS < [ PRED _over_p_rel ], [ PRED _there_a_1_rel ], ... > ]. der+inne_there_r := lexical_pp_place_omtr & [ INPUT.RELS < [ PRED "_der+inne_rel" ], ... >, OUTPUT.RELS < [ PRED _there_a_1_rel ], ... > ]. der+inne_in+there_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_der+inne_rel" ], ... >, OUTPUT.RELS < [ PRED _in_p_rel ], [ PRED _there_a_1_rel ], ... > ]. der+nede_down+there_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_der+nede_rel" ], ... >, OUTPUT.RELS < [ PRED _down_p_rel ], [ PRED _there_a_1_rel ], ... > ]. der+oppe_up+there_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_der+oppe_rel" ], ... >, OUTPUT.RELS < [ PRED _up_p_rel ], [ PRED _there_a_1_rel ], ... > ]. der+ute_out+there_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_der+ute_rel" ], ... >, OUTPUT.RELS < [ PRED _out_p_rel ], [ PRED _there_a_1_rel ], ... > ]. her_here := lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_her_rel" ], ... >, OUTPUT.RELS < [ PRED _here_a_1_rel ], ... > ]. her+inne_here_r := lexical_pp_place_omtr & [ INPUT.RELS < [ PRED "_her+inne_rel" ], ... >, OUTPUT.RELS < [ PRED _here_a_1_rel ], ... > ]. her+inne_in+here_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_her+inne_rel" ], ... >, OUTPUT.RELS < [ PRED _in_p_rel ], [ PRED _here_a_1_rel ], ... > ]. her+nede_down+here_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_her+nede_rel" ], ... >, OUTPUT.RELS < [ PRED _down_p_rel ], [ PRED _here_a_1_rel ], ... > ]. her+oppe_up+here_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_her+oppe_rel" ], ... >, OUTPUT.RELS < [ PRED _up_p_rel ], [ PRED _here_a_1_rel ], ... > ]. her+ute_out+here_r := lexical_pp_place_proper_pp_place_mtr & [ INPUT.RELS < [ PRED "_her+ute_rel" ], ... >, OUTPUT.RELS < [ PRED _out_p_rel ], [ PRED _here_a_1_rel ], ... > ]. hvor_where := monotonic_mtr & [ INPUT [ RELS < [ PRED "def_q_rel", LBL #h0, ARG0 #x0, RSTR #h1, BODY #h2 ], [ PRED "sted_rel", LBL #h3, ARG0 #x0 ] >, HCONS < qeq & [ HARG #h1, LARG #h3 ], qeq & [ HARG #h3, LARG #h4 ] > ], OUTPUT [ RELS < [ PRED free_relative_q_rel, LBL #h0, ARG0 #x0, RSTR #h1, BODY #h2 ], [ PRED place_n_rel, LBL #h4, ARG0 #x0 & [ PERS 3, NUM sg, GRIND - ] ] >, HCONS < qeq & [ HARG #h1, LARG #h4 ] > ] ]. inne_inside := lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_inne_rel" ], ... >, OUTPUT.RELS < [ PRED _inside_p_rel ], ... > ]. innover_inwards := adverb_lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_innover_p_rel", ARG2 a ] >, OUTPUT.RELS < [ PRED _inward_a_1_rel ], ... > ]. i+dag_today := lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_i+dag_rel" ], ... >, OUTPUT.RELS < [ PRED _today_a_1_rel ], ... > ]. i+går_yesterday := lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_i+går_rel" ], ...>, OUTPUT.RELS < [ PRED _yesterday_a_1_rel ], ... > ]. ;;; ;;; not im NorGram SEM-I any longer. (19-dec-06; jtl) ;;; #| i+morgen_tomorrow := adverb_lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_i+morgen_a_rel" ] >, OUTPUT.RELS < [ PRED _tomorrow_a_1_rel ], ... > ]. |# like+ved := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_like+ved_rel" ], ... >, OUTPUT.RELS < [ PRED _close+by_p_rel ] > ]. omkring := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_omkring_rel" ], ... >, OUTPUT.RELS < [ PRED _around_p_rel ] > ]. midtveis := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_midtveis_rel" ], ... >, OUTPUT.RELS < [ PRED "_midway_a_1_rel" ] > ]. nå_now := lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_nå_rel" ], ...>, OUTPUT.RELS < [ PRED _now_a_1_rel ], ... > ]. nede_down := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_nede_rel" ], ... >, OUTPUT.RELS < [ PRED _down_p_rel ] > ]. #| nede_downstairs := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_nede_rel" ], ... >, OUTPUT.RELS < [ PRED _downstairs_p_rel ] > ]. |# oppe_up := lexical_pp_place_adverb_omtr & [ INPUT.RELS < [ PRED "_oppe_rel" ], ... >, OUTPUT.RELS < [ PRED _up_p_rel ] > ]. oppe_upstairs := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_oppe_rel" ], ... >, OUTPUT.RELS < [ PRED _upstairs_p_rel ] > ]. oppover_upwards := adverb_lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_oppover_p_rel", ARG2 a ] >, OUTPUT.RELS < [ PRED _upward_a_1_rel ], ... > ]. overalt_everywhere := monotonic_mtr & [ INPUT.RELS < [ PRED "def_q_rel", LBL #h1, ARG0 #x2, RSTR #h3, BODY #h4 ], [ PRED "sted_rel", LBL #h5, ARG0 #x2 ], [ PRED "_overalt_rel", LBL #h5, ARG1 #x2 ] >, OUTPUT.RELS < [ PRED every_q_rel, LBL #h1, ARG0 #x2, RSTR #h3, BODY #h4 ], [ PRED place_n_rel, LBL #h5, ARG0 #x2 & [ PERS 3, NUM sg, GRIND - ] ] > ]. rundt := lexical_pp_place_adverb_mtr & [ INPUT.RELS < [ PRED "_rundt_rel" ], ... >, OUTPUT.RELS < [ PRED _around_p_rel ] > ]. snar_soon_time := lexical_pp_time_mtr & [ INPUT.RELS < [ PRED "_snar_rel" ], ... >, OUTPUT.RELS < [ PRED _soon_p_rel ], ... > ]. ;;; ;;; _fix_me_ ;;; in the (21-dec-03 version of the) `hike' treebank, dan appears to have used ;;; both `_back_p_rel' and the decomposed version; why? (24-jan-04; oe) ;;; ;;; --- the plain `_back_p_rel' fails to generate as an event modifer. ;;; #| tilbake_back_r := preposition_omtr & [ INPUT.RELS < [ PRED "_tilbake_a_rel", LBL #h1, ARG1 #i2 ] >, OUTPUT.RELS < [ PRED _back_p_rel, ARG0 e_untensed ] > ]. |# tilbake_back_r := adverb_lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_tilbake_a_rel", LBL #h1, ARG1 #i2 ] >, OUTPUT.RELS < [ PRED _back_p_rel ], ... > ]. til+bords := lexical_pp_place_proper_pp_omtr & [ INPUT.RELS < [ PRED "_til+bords_rel" ], ... >, OUTPUT.RELS < [ PRED _to_p_rel ], [ PRED "_table_n_1_rel" ], ... > ]. til+bords := lexical_pp_place_proper_pp_mtr & [ INPUT.RELS < [ PRED "_til+bords_rel" ], ... >, OUTPUT.RELS < [ PRED _at_p_rel ], [ PRED "_table_n_1_rel" ], ... > ]. til+bunns := lexical_pp_place_proper_pp_mtr & [ INPUT.RELS < [ PRED "_til+bunns_rel" ], ... >, OUTPUT.RELS < [ PRED _to_p_rel ], [ PRED "_bottom_n_1_rel" ], ... > ]. til+fjells_to+the+mountains := lexical_pp_place_proper_pp_omtr & [ INPUT.RELS < [ PRED "_til+fjells_rel" ], ... >, OUTPUT.RELS < [ PRED _to_p_rel ], [ PRED "_mountain_n_1_rel", LBL #h3, ARG0 [ NUM pl ] ], ... > ]. til+fjells_in+the+mountains := lexical_pp_place_proper_pp_mtr & [ INPUT.RELS < [ PRED "_til+fjells_rel" ], ... >, OUTPUT.RELS < [ PRED _in_p_rel ], [ PRED "_mountain_n_1_rel", LBL #h3, ARG0 [ NUM pl ] ], ... > ]. til+gårds_to+the+farm := lexical_pp_place_proper_pp_omtr & [ INPUT.RELS < [ PRED "_til+gårds_rel" ], ... >, OUTPUT.RELS < [ PRED _to_p_rel ], [ PRED "_farm_n_1_rel", LBL #h3, ARG0 [ NUM pl ] ], ... > ]. til+gårds_to+the+farms := lexical_pp_place_proper_pp_mtr & [ INPUT.RELS < [ PRED "_til+gårds_rel" ], ... >, OUTPUT.RELS < [ PRED _to_p_rel ], [ PRED "_farm_n_1_rel", LBL #h3, ARG0 [ NUM pl ] ], ... > ]. til+høyre_to+the+right := lexical_pp_place_proper_pp_omtr & [ INPUT.RELS < [ PRED "_til+høyre_rel" ], ... >, OUTPUT.RELS < [ PRED _to_p_rel ], [ PRED "_right_n_1_rel" ], ... > ]. til+høyre := monotonic_mtr & [ INPUT.RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_til+høyre_rel", LBL #h1, ARG1 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ] >, OUTPUT.RELS < [ PRED _on_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_right_n_1_rel", LBL #h1, ARG0 #x0 ] > ]. til+venstre_on+the+left := lexical_pp_place_proper_pp_omtr & [ INPUT.RELS < [ PRED "_til+venstre_rel" ], ... >, OUTPUT.RELS < [ PRED _on_p_rel ], [ PRED "_left_n_1_rel" ], ... > ]. til+venstre_to+the+left := monotonic_mtr & [ INPUT.RELS < [ PRED "_til+venstre_rel", LBL #h1, ARG1 #x0 ], [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ] >, OUTPUT.RELS < [ PRED _to_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_left_n_1_rel", LBL #h1, ARG0 #x0 ] > ]. ;;; ;;; This should be restricted to `her til lands', but currently that ;;; construction does not parse. (07-oct-06; jtl) ;;; til+lands_in+this+country := monotonic_omtr & [ INPUT.RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_til+lands_rel", LBL #h1, ARG1 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ], [ PRED "def_q_rel", LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ PRED _in_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_country_n_of_rel", LBL #h1, ARG0 #x0 ], [ PRED _this_q_dem_rel, LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] > ]. ;;; ;;; in other contexts `til lands' as contrasting with `til vanns'. ;;; (07-oct-06; jtl) til+lands_at+dry+land := monotonic_mtr & [ INPUT.RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_til+lands_rel", LBL #h1, ARG1 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ], [ PRED "def_q_rel", LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ PRED _at_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_dry_a_1_rel", LBL #h1, ARG1 #x0 ], [ PRED "_land_n_of_rel", LBL #h1, ARG0 #x0 ], [ PRED udef_q_rel, LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] > ]. til+vanns_at+the+open+sea := monotonic_mtr & [ INPUT.RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_til+lands_rel", LBL #h1, ARG1 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ], [ PRED "def_q_rel", LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ PRED _at_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_open_a_1_rel", LBL #h1, ARG1 #x0 ], [ PRED "_sea_n_of_rel", LBL #h1, ARG0 #x0 ], [ PRED def_q_rel, LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] > ]. til+sjøs_at+the+open+sea := monotonic_mtr & [ INPUT.RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_til+sjøs_rel", LBL #h1, ARG1 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ], [ PRED "def_q_rel", LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ PRED _at_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_open_a_1_rel", LBL #h1, ARG1 #x0 ], [ PRED "_sea_n_of_rel", LBL #h1, ARG0 #x0 ], [ PRED def_q_rel, LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] > ]. til+topps := monotonic_mtr & [ INPUT.RELS < [ PRED "unspec_loc_rel", LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_til+topps_rel", LBL #h1, ARG1 #x0 ], [ PRED "sted_rel", LBL #h1, ARG0 #x0 ], [ PRED "def_q_rel", LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ PRED _to_p_rel, LBL #h0, ARG0 #e0, ARG1 #e1, ARG2 #x0 ], [ PRED "_top_n_1_rel", LBL #h1, ARG0 #x0 ], [ PRED _the_q_rel, LBL #h2, ARG0 #x0, RSTR #h3, BODY #h4 ] > ]. til+værs := lexical_pp_place_proper_pp_mtr & [ INPUT.RELS < [ PRED "_til+værs_rel" ], ... >, OUTPUT.RELS < [ PRED _in_p_rel ], [ PRED "_air_n_1_rel" ], ... > ]. ute_outside := lexical_pp_place_mtr & [ INPUT.RELS < [ PRED "_ute_rel" ], ... >, OUTPUT.RELS < [ PRED _outside_p_rel ], ... > ]. sommerstid := monotonic_mtr & [ INPUT.RELS < [ LBL #h5, ARG1 #x2, PRED "_sommerstid_rel"], [ PRED "tid_rel", LBL #h5, ARG0 #x2 ], [ PRED "unspec_loc_rel", LBL #h6, ARG0 #e7, ARG1 #e8, ARG2 #x2 ], [ PRED "def_q_rel", LBL #h1, ARG0 #x2, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ LBL #h6, ARG0 #e7, ARG1 #e8, ARG2 #x2, PRED _in_p_temp_rel ], [ LBL #h5, ARG0 #x2, CARG "summer", PRED season_rel ], [ PRED def_q_rel, LBL #h1, ARG0 #x2, RSTR #h3, BODY #h4 ] > ]. vinterstid := monotonic_mtr & [ INPUT.RELS < [ LBL #h5, ARG1 #x2, PRED "_vinterstid_rel"], [ PRED "tid_rel", LBL #h5, ARG0 #x2 ], [ PRED "unspec_loc_rel", LBL #h6, ARG0 #e7, ARG1 #e8, ARG2 #x2 ], [ PRED "def_q_rel", LBL #h1, ARG0 #x2, RSTR #h3, BODY #h4 ] >, OUTPUT.RELS < [ LBL #h6, ARG0 #e7, ARG1 #e8, ARG2 #x2, PRED _in_p_temp_rel ], [ LBL #h5, ARG0 #x2, CARG "winter", PRED season_rel ], [ PRED def_q_rel, LBL #h1, ARG0 #x2, RSTR #h3, BODY #h4 ] > ]. ;;; ;;; i added a few more variables to FLAGS.EQUAL, and now these rules appear to ;;; work as they should; so i eliminated the old variants. (9-oct-06; oe) ;;; prep+medio_p := monotonic_mtr & [ CONTEXT [ RELS < [ RSTR #h5 & h, ARG0 #x4 & x ] >, HCONS < qeq & [ HARG #h5, LARG #h6 ] > ], INPUT.RELS < [ PRED #p9, LBL #h1, ARG0 e & #e1, ARG1 #u2, ARG2 e & #e3 ], [ PRED "_medio_p_rel", LBL #h1, ARG0 #e3, ARG2 #x4 ] >, OUTPUT.RELS < [ PRED #p9, LBL #h1, ARG0 #e1, ARG1 #u2, ARG2 #x4 ], [ PRED "_mid_a_1_rel", LBL #h6, ARG1 #x4 ] >, FLAGS.EQUAL < #e3, #x4, #h5 > ]. prep+primo_p := monotonic_mtr & [ CONTEXT [ RELS < [ RSTR #h5 & h, ARG0 #x4 & x ] >, HCONS < qeq & [ HARG #h5, LARG #h6 ] > ], INPUT.RELS < [ PRED #p9, LBL #h1, ARG0 e & #e1, ARG1 #u2, ARG2 e & #e3 ], [ PRED "_primo_p_rel", LBL #h1, ARG0 #e3, ARG2 #x4 ] >, OUTPUT.RELS < [ PRED #p9, LBL #h1, ARG0 #e1, ARG1 #u2, ARG2 #x4 ], [ PRED "_early_a_1_rel", LBL #h6, ARG1 #x4 ] >, FLAGS.EQUAL < #e3, #x4, #h5 > ]. prep+ultimo_p := monotonic_mtr & [ CONTEXT [ RELS < [ RSTR #h5 & h, ARG0 #x4 & x ] >, HCONS < qeq & [ HARG #h5, LARG #h6 ] > ], INPUT.RELS < [ PRED #p9, LBL #h1, ARG0 e & #e1, ARG1 #u2, ARG2 e & #e3 ], [ PRED "_ultimo_p_rel", LBL #h1, ARG0 #e3, ARG2 #x4 ] >, OUTPUT.RELS < [ PRED #p9, LBL #h1, ARG0 #e1, ARG1 #u2, ARG2 #x4 ], [ PRED "_late_a_for_rel", LBL #h6, ARG1 #x4 ] >, FLAGS.EQUAL < #e3, #x4, #h5 > ]. flere_several := monotonic_mtr & optional_mtr & [ INPUT.RELS < [ LBL #h1, PRED "_mange_a_rel", ARG0 #e2, ARG1 #x3 ], [ LBL #h1, PRED "comp_pos_rel", ARG1 #e2 ] >, OUTPUT.RELS < [ LBL #h1, PRED "_several_a_1_rel", ARG0 #e2, ARG1 #x3 ] > ]. desto_all+the+more_x := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, PRED "_desto_x_deg_rel", ARG1 #e2 ], [ LBL #h1, PRED "comp_pos_rel", ARG0 #e2, ARG1 #e1 ] >, OUTPUT.RELS < [ LBL #h1, PRED "_all+the+more_x_rel", ARG1 #e1 ] > ]. ;;;;;;;;;;;;;;;; ta_sykkelen_fatt := monotonic_omtr & [ INPUT [ RELS < [ PRED "_ta*fatt_v_rel", LBL #h0, ARG0 #e1, ARG1 #x2, ARG2 #x3 & x ], [ PRED "def_q_rel", ARG0 #x3, RSTR #h4 ], [ PRED "_sykkel_n_rel", LBL #h5, ARG0 #x3 ] >, HCONS < qeq & [ HARG #h4, LARG #h5 ] > ], OUTPUT [ RELS < [ PRED "_start_v_1_rel", LBL #h0, ARG0 #e1, ARG1 #h6 ], [ LBL #h7, PRED "_bike_v_1_rel", ARG1 #x2 ] >, HCONS < qeq & [ HARG #h6, LARG #h7 ] > ], FLAGS.EQUAL < #x3 > ]. ta+beina+fatt_n := ta_X_fatt_omtr & [ INPUT.RELS < [ PRED "_ben_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_walk_v_1_rel" ], ... > ]. ta+bilen+fatt_n := ta_X_fatt_omtr & [ INPUT.RELS < [ PRED "_bil_n_rel" ], ... >, OUTPUT.RELS < [ PRED "_drive_v_1_rel" ], ... > ]. neste_ := adj+n_n_mtr & [ INPUT.RELS < [ PRED "_neste_a_rel" ], [ PRED "generic-nom_rel" ] >, OUTPUT.RELS < [ PRED "_next_n_1_rel" ] > ]. tobent_a := adj+n_n_mtr & [ INPUT.RELS < [ PRED "_tobent_a_rel" ], [ PRED "generic_nonpro_rel" ] >, OUTPUT.RELS < [ PRED "_biped_n_1_rel" ] > ]. tobent_a := adj+n_n+n_mtr & [ INPUT.RELS < [ PRED "_tobent_a_rel" ], [ PRED #p ], ... >, OUTPUT.RELS < [ PRED "_biped_n_1_rel" ], [ PRED #p ], ... > ]. etter+sigende_pp := monotonic_mtr & [ INPUT.RELS < [ PRED "_etter_p_rel", LBL #h0, ARG0 #e1, ARG1 #i2, ARG2 #x4 ], [ PRED "_sigende_n_rel", LBL #h5, ARG0 #x4 ]>, OUTPUT.RELS < [ PRED _according+to_p_rel, LBL #h0, ARG0 #e1, ARG1 #i2, ARG2 #x4 ], [ PRED "_report_n_of_rel", LBL #h5, ARG0 #x4 & [ NUM pl ] ] > ]. på+ferde_a := intersective_attribute_mtr & [ INPUT.RELS < [ PRED "_på+ferde_rel" ] >, OUTPUT.RELS < [ PRED "_active_a_1_rel" ], ... > ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; _fix_me_ ;;; to make do with a single rule, copy over all possible arguments, whether ;;; there or not; this may insert unbound variables into the OUTPUT, but that is ;;; much the same as if those roles were not present; the transfer rules for the ;;; actual predicates, typically, will get rid of the spurious roles anyway. ;;; sadly, we cannot use +copy+ here, as we need to change the LBL, and that is ;;; (still) not supported with the use of the +copy+ operator. ;;; (18-oct-07; ph & oe) gjerne_like_a := monotonic_omtr & [ INPUT.RELS < [ LBL #h0, PRED "_gjerne_a_rel", ARG1 #e0 ], [ LBL #h0, PRED #pred, ARG0 #e0, ARG1 #p0, ARG2 #p1, ARG3 #p2, ARG4 #p3 ] >, OUTPUT [ RELS < [ LBL #h0, PRED "_like_v_1_rel", ARG0 #e0, ARG1 #p0, ARG2 #h1 ], [ LBL #h2, PRED #pred, ARG0 #e1 & e_untensed, ARG1 #p0, ARG2 #p1, ARG3 #p2, ARG4 #p3 ], [ PRED intersective_equate, ARG0 #e1, ARG1 #e0 ], [ PRED intersective_equate, ARG0 #h2, ARG1 #h0 ] >, HCONS < qeq & [ HARG #h1, LARG #h2 ] > ] ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ingenting+av_q := monotonic_mtr & [ INPUT [ RELS < [ LBL #h1, PRED "ingenting_q_rel", ARG0 #x2, RSTR #h3, BODY #h4 ], [ LBL #h5, PRED "part_of_rel", ARG0 #x2, ARG1 #x6 ] > ], OUTPUT [ RELS < [ LBL #h1, PRED _no_q_rel, ARG0 #x2, RSTR #h3, BODY #h4 ], [ LBL #h5, PRED _of_p_rel, ARG1 #x2, ARG2 #x6 ], [ LBL #h5, PRED thing_rel, ARG0 #x2] > ] ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; This should add a pronoun to `egen' when it isn't there. ;;; egen_sg_a := monotonic_mtr & [ CONTEXT.HCONS < qeq & [ HARG #h2, LARG #h3 ] >, INPUT [ RELS < [ LBL #h0, PRED "bare_sg_q_rel", ARG0 #x1, RSTR #h2, BODY #h11 ], [ LBL #h3, PRED "_egen_a_rel", ARG0 #e10, ARG1 #x1 ] > ], OUTPUT [ RELS < [ LBL #h0, PRED def_q_rel, ARG0 #x1, RSTR #h2, BODY #h11 ], [ LBL #h3, PRED poss_rel, ARG0 #e10, ARG1 #x1, ARG2 #x4 ], [ LBL #h3, PRED "_own_a_1_rel", ARG0 #e12, ARG1 #x1 ], [ PRED pron_rel, LBL #h5, ARG0 #x4 ], [ PRED pronoun_q_rel, ARG0 #x4, RSTR #h6 ] >, HCONS < qeq & [ HARG #h6, LARG #h5 ] > ] ]. egen_div_a := monotonic_mtr & [ CONTEXT.HCONS < qeq & [ HARG #h2, LARG #h3 ] >, INPUT [ RELS < [ LBL #h0, PRED "bare_div_q_rel", ARG0 #x1, RSTR #h2, BODY #h11 ], [ LBL #h3, PRED "_egen_a_rel", ARG0 #e10, ARG1 #x1 ] > ], OUTPUT [ RELS < [ LBL #h0, PRED def_q_rel, ARG0 #x1, RSTR #h2, BODY #h11 ], [ LBL #h3, PRED poss_rel, ARG0 #e10, ARG1 #x1, ARG2 #x4 ], [ LBL #h3, PRED "_own_a_1_rel", ARG0 #e12, ARG1 #x1 ], [ PRED pron_rel, LBL #h5, ARG0 #x4 ], [ PRED pronoun_q_rel, ARG0 #x4, RSTR #h6 ] >, HCONS < qeq & [ HARG #h6, LARG #h5 ] > ] ]. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; inn+i_p := prep+prep_prep_mtr & [ INPUT.RELS < [ PRED "_inn_p_rel" ], [ PRED "_i_p_rel" ] >, OUTPUT.RELS < [ PRED _into_p_rel ] > ]. ;;; ;;; This is put here to fire before the comp_pos_rule. (04-dec-06; jtl) ;;; bakre_a := monotonic_mtr & [ INPUT.RELS < [ LBL #h1, PRED "_bakre_a_rel", ARG0 #e2, ARG1 #x3 ], [ LBL #h1, PRED "comp_pos_rel", ARG1 #e2 ] >, OUTPUT [ RELS < [ LBL #h1, PRED _in_p_rel, ARG0 e_untensed, ARG1 #x3, ARG2 #x4 ], [ PRED def_q_rel, ARG0 #x4, RSTR #h5 ], [ LBL #h3, PRED "_back_n_1_rel", ARG0 #x4 & [ PERS 3, NUM sg, GRIND - ] ] >, HCONS < qeq & [ HARG #h5, LARG #h3 ] > ] ]. ;;; ;;; for `den ene' there is a generic mechanism to insert the additional `card' ;;; EP for `one' anaphors in English, hence we can just drop the `_ene_a' here. ;;; den+ene_the+one_a := monotonic_mtr & [ CONTEXT.RELS < [ PRED "generic_nonpro_rel", LBL #h0, ARG0 #x0 ], [ PRED "~def_q_rel|den_dem_rel", ARG0 #x0 ] >, INPUT.RELS < [ PRED "_ene_a_rel", LBL #h0, ARG1 #x0 ] > ]. ; PH 2008-01-30 (noen.unknown) i+anmarsj_p := pp_pp_mtr & [ INPUT.RELS < [ PRED "_i_p_rel" ], [ PRED "bare_sg_q_rel", ARG0 x & [ NUM sg ] ], [ PRED "_anmarsj_n_rel" ] >, OUTPUT.RELS < [ PRED _on_p_rel ], [ PRED _the_q_rel, ARG0 x & [ NUM sg ] ], [ PRED "_way_n_of_rel" ] > ]. ; PH 2008-01-31 til+fortrengsel+for_p := pp+prep_pp+prep_omtr & [ INPUT.RELS < [ PRED "_til_p_rel" ], [ PRED "bare_sg_q_rel", ARG0 x & [ NUM sg ] ], [ PRED "_fortrengsel_n_rel" ], [ PRED "_for_p_rel" ] >, OUTPUT.RELS < [ PRED _at_p_rel ], [ PRED _the_q_rel, ARG0 x & [ NUM sg ] ], [ PRED "_expense_n_1_rel" ], [ PRED _of_p_rel ] > ]. i-til+utlandet_pp := pp_ad_mtr & [ INPUT.RELS < [ PRED "~i_p_rel|til_p_rel" ], [ PRED "def_q_rel" ], [ PRED "_utland_n_rel" ] >, OUTPUT.RELS < [ PRED _abroad_p_rel ] > ]. ; PH 2008-02-02 flesteparten+av_q := monotonic_mtr & [ CONTEXT [ RELS < [ PRED "part_of_rel", LBL #h2 ] >, HCONS < qeq & [ HARG #h1, LARG #h2 ] > ], INPUT.RELS < [ PRED "flesteparten_q_rel", LBL #h0, ARG0 #x0, RSTR #h1 ]>, OUTPUT.RELS < [ PRED udef_q_rel, LBL #h0, ARG0 #x0, RSTR #h1 ], [ PRED much-many_a_rel, LBL #h2, ARG0 #e1 & e_untensed, ARG1 #x0 ], [ PRED superl_rel, LBL #h2, ARG0 e_untensed, ARG1 #e1 ] > ]. ; PH 2008-02-02 for+tiden_a := monotonic_mtr & [ INPUT.RELS < [ PRED "_for+tiden_rel", ARG1 #x ], [ PRED "tid_rel", ARG0 #x ], [ PRED "def_q_rel", ARG0 #x ], [ PRED "unspec_loc_rel", LBL #h, ARG1 #e, ARG2 #x ]>, OUTPUT.RELS < [ PRED "_current_a_1_rel", LBL #h, ARG0 e_untensed, ARG1 #e ] > ].