concrete StructuralSom of Structural = CatSom ** open Prelude, ResSom, (N=NounSom), ParadigmsSom in { ------- -- Ad* {- lin almost_AdA = mkAdA "" ; lin almost_AdN = ss "" ; lin at_least_AdN = ss "" ; lin at_most_AdN = ss "" ; lin so_AdA = ss "" ; lin too_AdA = ss "" ; lin very_AdA = mkAdA "" ; lin as_CAdv = { s = "" ; p = [] } ; lin less_CAdv = { s = "" ; p = [] } ; lin more_CAdv = { s = "" ; p = [] } ; lin how_IAdv = ss "" ; lin how8much_IAdv = ss "" ; lin when_IAdv = ss "" ; lin where_IAdv = ss "" ; lin why_IAdv = ss "" ; lin always_AdV = ss "" ; lin everywhere_Adv = ss "" ; lin here7from_Adv = ss "" ; lin here7to_Adv = ss "" ; lin here_Adv = ss "" ; lin quite_Adv = ss "" ; lin somewhere_Adv = ss "" ; lin there7from_Adv = ss "" ; lin there7to_Adv = ss "" ; lin there_Adv = ss "" ; -} ------- -- Conj lin and_Conj = {s2 = table {Definite => "ee" ; Indefinite => "oo"} ; s1 = [] ; n = Pl} ; lin or_Conj = {s2 = \\_ => "ama" ; s1 = [] ; n = Sg} ; -- mise with interrogatives -- lin if_then_Conj = mkConj -- lin both7and_DConj = mkConj "" "" pl ; -- lin either7or_DConj = mkConj "" "" pl ; -- -- lin but_PConj = ss "" ; -- lin otherwise_PConj = ss "" ; -- lin therefore_PConj = ss "" ; ----------------- -- *Det and Quant --lin how8many_IDet = R.indefDet "" pl ; lin all_Predet = {s = "giddi" ; isPoss = True ; da = M GA} ; --lin not_Predet = { s = "" } ; --lin only_Predet = { s = "" } ; lin most_Predet = {s = "badi" ; isPoss = True ; da = F DA} ; {- lin every_Det = R.defDet [] pl ** { s = mkVow } ; lin few_Det = R.indefDet "" pl ; lin many_Det = R.indefDet "" pl ; lin much_Det = R.indefDet "" sg ; -} lin somePl_Det = { sp = \\_,_ => "qaar" ; isPoss, isNum = False ; st = Definite ; -- NB. Indefinite means actually only IndefArt. n = Pl ; s = \\x,_ => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ; shortPoss = \\x => BIND ++ defStems ! x ++ BIND ++ "a qaarkood" ; } ; lin someSg_Det = somePl_Det ** { n = Sg ; s = table { M x => \\_ => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ; F x => \\_ => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } ; shortPoss = table { M x => BIND ++ defStems ! M x ++ BIND ++ "a qaarkiis" ; F x => BIND ++ defStems ! F x ++ BIND ++ "a qaarkeed" } } ; --lin no_Quant = mkPrep no_Quant lin that_Quant = defQuant "aas" "kaas" "taas" "kuwaas" True ; -- true = nominative marker is i lin this_Quant = defQuant "an" "kan" "tan" "kuwan" True ; lin which_IQuant = defIQuant "ee" ; {- ----- -- NP lin everybody_NP = defNP "" N.NumPl ; lin everything_NP = defNP "" N.NumSg ; lin nobody_NP = mkVerb; "" lin nothing_NP = defNP "" N.NumSg ; lin somebody_NP = defNP "" N.NumSg ; lin something_NP = defNP "" N.NumSg ; oper defNP : Str -> Num -> NP = {} ; -} ------- -- Prep lin above_Prep = mkPrep (mkPrep ka) [] [] "dul" ; -- lin after_Prep = mkPrep "" -- lin before_Prep = mkPrep "" ; -- lin behind_Prep = mkPrep "" ; lin between_Prep = possPrep (nUl "dhex") ; -- lin by8agent_Prep = mkPrep ; -- lin by8means_Prep = mkPrep ; -- lin during_Prep = mkPrep ; -- lin except_Prep = mkPrep ; -- lin for_Prep = mkPrep ; -- lin from_Prep = mkPrep "" ; lin in8front_Prep = possPrep (nUl "hor") ; lin in_Prep = mkPrep ku ; lin on_Prep = mkPrep ku ; -- lin part_Prep = mkPrep ; -- lin possess_Prep = mkPrep ; -- lin through_Prep = mkPrep ; -- lin to_Prep = mkPrep ; lin under_Prep = let hoos : CatSom.Prep = possPrep (nUl "hoos") in hoos ** {c2 = Ku} ; lin with_Prep = mkPrep la ; -- lin without_Prep = mkPrep ; ------- -- Pron -- Pronouns are closed class, no constructor in ParadigmsSom. it_Pron = he_Pron ** {s = \\_ => [] ; sp = \\_ => [] ; a = Impers} ; i_Pron = pronTable ! Sg1 ; youPol_Pron, youSg_Pron = pronTable ! Sg2 ; he_Pron = pronTable ! Sg3 Masc ; she_Pron = pronTable ! Sg3 Fem ; we_Pron = pronTable ! Pl1 Incl ; youPl_Pron = pronTable ! Pl2 ; they_Pron = pronTable ! Pl3 ; {- lin whatPl_IP = ; lin whatSg_IP = ; lin whoPl_IP = ; lin whoSg_IP = ; -} ------- -- Subj -- lin although_Subj = mkSubj "" False ; -- lin because_Subj = mkSubj "" False ; -- lin if_Subj = mkSubj "" True ; lin that_Subj = {s = "in"} ; -- lin when_Subj = mkSubj "" False ; ------ -- Utt lin language_title_Utt = ss "af soomaali" ; lin no_Utt = ss "maya" ; lin yes_Utt = ss "haa" ; ------- -- Verb lin have_V2 = mkV2 have_V noPrep ; -- TODO: check if {sii = "l" ++ BIND ; isCopula=True} makes sense for present tense negative lin can8know_VV = can_VV ; -- can (capacity) lin can_VV = mkVV "kar" ; -- can (possibility) lin must_VV = mkVV waa_in ; lin want_VV = mkVV (mkV "rabid" "rab" "rab") subjunctive ; ------ -- Voc {- lin please_Voc = ss "" ; -} }