From 7755babaa2201affc7f8d801344356ea58ce2225 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 16 Dec 2010 15:53:07 +0000 Subject: [PATCH] some fixes in QuerySwe; a first version of QueryFre --- examples/query/LexQuery.gf | 2 +- examples/query/LexQueryEng.gf | 2 +- examples/query/LexQueryFre.gf | 32 +++++++++ examples/query/LexQuerySwe.gf | 4 +- examples/query/QueryFre.gf | 131 ++++++++++++++++++++++++++++++++++ examples/query/QueryI.gf | 11 ++- examples/query/QuerySwe.gf | 23 +++--- 7 files changed, 184 insertions(+), 21 deletions(-) create mode 100644 examples/query/LexQueryFre.gf create mode 100644 examples/query/QueryFre.gf diff --git a/examples/query/LexQuery.gf b/examples/query/LexQuery.gf index 9bbb67949..83bfeeaef 100644 --- a/examples/query/LexQuery.gf +++ b/examples/query/LexQuery.gf @@ -2,7 +2,7 @@ interface LexQuery = open Syntax in { oper located_A : A ; - give_V3 : V3 ; + giveMe : NP -> VP ; know_V2 : V2 ; -- structural words diff --git a/examples/query/LexQueryEng.gf b/examples/query/LexQueryEng.gf index 74b3c860c..b1afc765e 100644 --- a/examples/query/LexQueryEng.gf +++ b/examples/query/LexQueryEng.gf @@ -4,7 +4,7 @@ instance LexQueryEng of LexQuery = oper located_A : A = mkA "located" | mkA "situated" ; - give_V3 : V3 = mkV3 give_V ; + giveMe : NP -> VP = \np -> mkVP (mkV3 give_V) (mkNP i_Pron) np ; know_V2 = mkV2 know_V ; -- structural words diff --git a/examples/query/LexQueryFre.gf b/examples/query/LexQueryFre.gf new file mode 100644 index 000000000..6bfa934ee --- /dev/null +++ b/examples/query/LexQueryFre.gf @@ -0,0 +1,32 @@ +instance LexQueryFre of LexQuery = + open SyntaxFre, (M = MakeStructuralFre), ParadigmsFre, ExtraFre, IrregFre in { + +oper + located_A : A = mkA "situé" ; + + giveMe = \np -> mkVP (mkV2 (mkV "montrer")) np ; --- + know_V2 = connaître_V2 ; + +-- structural words + about_Prep : Prep = mkPrep "sur" ; + all_NP : NP = mkNP (mkPN "tout") ; --- + also_AdV : AdV = mkAdV "aussi" ; + also_AdA : AdA = mkAdA "aussi" ; + as_Prep : Prep = mkPrep "pour" ; --- only used for "vad har X för Y" + at_Prep : Prep = mkPrep "chez" ; --- | mkPrep "hos" | mkPrep "vid" ; + that_RP = which_RP ; + + participlePropCN : Prop -> CN -> CN = variants {} ; + + vpAP _ = mkAP (mkA "nonexistant") ; --- not used, see LexQuery.participlePropCN + + called_A : A = mkA "appelé" ; + + information_N : N = mkN "information" feminine ; + other_A : A = prefixA (mkA "autre") ; + otherwise_AdV : AdV = mkAdV "autrement" ; + otherwise_AdA : AdA = mkAdA "autrement" ; + what_IQuant : IQuant = which_IQuant ; + + +} diff --git a/examples/query/LexQuerySwe.gf b/examples/query/LexQuerySwe.gf index 8d95e840b..733f2e959 100644 --- a/examples/query/LexQuerySwe.gf +++ b/examples/query/LexQuerySwe.gf @@ -4,7 +4,7 @@ instance LexQuerySwe of LexQuery = oper located_A : A = compoundA (mkA "belägen" "beläget" "belägna" [] []) ; - give_V3 : V3 = mkV3 giva_V ; + giveMe : NP -> VP = \np -> mkVP (mkV3 giva_V) (mkNP i_Pron) np ; know_V2 = mkV2 veta_V ; -- structural words @@ -12,7 +12,7 @@ oper all_NP : NP = mkNP (mkPN "allt") ; --- also_AdV : AdV = mkAdV "också" ; also_AdA : AdA = mkAdA "även" ; - as_Prep : Prep = mkPrep "som" ; + as_Prep : Prep = mkPrep "för" ; --- only used for "vad har X för Y" at_Prep : Prep = mkPrep "på" ; --- | mkPrep "hos" | mkPrep "vid" ; that_RP = which_RP ; diff --git a/examples/query/QueryFre.gf b/examples/query/QueryFre.gf new file mode 100644 index 000000000..a837dedbd --- /dev/null +++ b/examples/query/QueryFre.gf @@ -0,0 +1,131 @@ +--# -path=.:present + +concrete QueryFre of Query = QueryI - [namePrep, propCalled, SFun] with + (Syntax = SyntaxFre), + (Lang = LangFre), + (LexQuery = LexQueryFre) ** +open + LexQueryFre, + ParadigmsFre, + IrregFre, + SyntaxFre, + ExtraFre, + (L = LangFre), + (M = MakeStructuralFre), + Prelude +in { + +-- deviations from functor +oper +-- prep not "av" + namePrep = on_Prep ; +-- verb "heta" + propCalled : NP -> Prop = \i -> + propVP (mkVP (mkAdV "aussi") (mkVP (mkV2 (reflV (mkV "appeler")) for_Prep) i)) ; + +lin + SFun s r = mkNP (mkNP the_Quant plNum r.cn) (mkAdv r.prep s) ; + + +-- lexicon + +lin + Located = relAP (mkAP located_A) in_Prep ; + + In = relVP useCopula in_Prep ; + + Employed = + relAP (mkAP (mkA "employé")) by8agent_Prep + | relAP (mkAP (mkA "payé")) by8agent_Prep + | relAP (mkAP (mkA "actif")) at_Prep + | relAP (mkAP (mkA "professionnellement aktif")) at_Prep + | relVP (mkVP (mkV "travailler")) at_Prep + ; + + HaveTitle = + relAP (mkAP (mkA "employé")) som_Prep + | relVP useCopula noPrep + | relVP (mkVP (mkV "travailler")) som_Prep + | relVP (mkVP have_V2 (mkNP the_Det (mkCN (mkN2 (mkN "titre" masculine) noPrep)))) + possess_Prep + ; + + EmployedAt s = + relAP (mkAP (mkA2 (mkA "employé") at_Prep) s) som_Prep + | relAP (mkAP (mkA2 (mkA "employé") by8agent_Prep) s) som_Prep + | relVP (mkVP (mkV2 (mkV "travailler") at_Prep) s) som_Prep + ; + + HaveTitleAt t = + relAP (mkAP (mkA2 (mkA "employé") som_Prep) (mkNP t)) at_Prep + | relAP (mkAP (mkA2 (mkA "employé") som_Prep) (mkNP t)) by8agent_Prep + | relVP (mkVP (mkNP a_Det t)) at_Prep + | relVP (mkVP (mkV2 (mkV "travailler") som_Prep) (mkNP t)) at_Prep + | relVP (mkVP have_V2 (mkNP the_Det (mkCN (mkN2 (mkN "titre") noPrep) + (mkNP t)))) at_Prep + ; + + Named n = propAP (mkAP (mkA2 called_A (mkPrep [])) n) ; + Start n = propVP (mkVP (mkV2 (mkV "commencer") with_Prep) n) ; + + Organization = mkCN (mkN "organisation" feminine) ; + Company = mkCN (mkN "entreprise") ; + Place = mkCN (mkN "lieu") | mkCN (mkN "endroit") ; + Person = + mkCN (mkN "personne") + | mkCN (mkN "personne" "gens" feminine) ; + + Location = mkFunctionP (mkN "localité") possess_Prep ; + Region = mkFunctionP (mkN "région" feminine) possess_Prep ; + Subregion = mkFunctionP (mkN "sous-région" feminine) possess_Prep ; + FName = mkFunctionP (mkN "nom") possess_Prep ; + FNickname = mkFunctionP (mkN "surnom") possess_Prep ; + FJobTitle = + mkFunctionP (mkN "titre" masculine) possess_Prep + | mkFunctionP (mkN "position" feminine) possess_Prep ; + + SJobTitle t = mkNP a_Det t ; + +oper + mkCountry : Str -> Str -> {np : NP ; a : A} = + \n,a -> {np = mkNP (mkPN n) ; a = mkA a} ; + + mkName : Str -> NP = + \s -> mkNP (mkPN s) ; + mkFunction : Str -> Fun = + \s -> {cn = mkCN (mkN s) ; prep = possess_Prep} ; + mkFunctionP : N -> Prep -> Fun = + \n,p -> {cn = mkCN n ; prep = p} ; + + som_Prep = mkPrep "comme" ; + + noPrep = mkPrep [] ; + + useCopula = mkVP être_V ; + +lin +-- JobTitles + JobTitle1 = mkCN (mkN "'JobTitle1") ; + JobTitle2 = mkCN (mkN "'JobTitle2") ; + JobTitle3 = mkCN (mkN "'JobTitle3") ; + JobTitle4 = mkCN (mkN "'JobTitle4") ; + +-- Locations + Location1 = mkName "'Location1" ; + Location2 = mkName "'Location2" ; + Location3 = mkName "'Location3" ; + Location4 = mkName "'Location4" ; + +-- Organizations + Organization1 = mkName "'Organization1" ; + Organization2 = mkName "'Organization2" ; + Organization3 = mkName "'Organization3" ; + Organization4 = mkName "'Organization4" ; + +-- Persons + Person1 = mkName "'Person1" ; + Person2 = mkName "'Person2" ; + Person3 = mkName "'Person3" ; + Person4 = mkName "'Person4" ; + +} diff --git a/examples/query/QueryI.gf b/examples/query/QueryI.gf index 6c98e0188..58e078a62 100644 --- a/examples/query/QueryI.gf +++ b/examples/query/QueryI.gf @@ -34,7 +34,7 @@ lin ---- | mkNP (GenNP s) sgNum Lang.name_N ---- | mkNP (GenNP s) plNum Lang.name_N ; in - mkUtt (mkImp (mkVP LexQuery.give_V3 ss (mkNP i_Pron))) + mkUtt (mkImp (giveMe ss)) | mkUtt (mkQS (mkQCl (Lang.CompIP whatSg_IP) ss)) | mkUtt (mkQS (mkQCl (Lang.CompIP (Lang.IdetIP (mkIDet which_IQuant))) ss)) | mkUtt ss ; @@ -47,11 +47,10 @@ lin QFun r s = mkUtt - (mkImp (mkVP LexQuery.give_V3 - (mkNP and_Conj s (detSet s r.cn)) (mkNP i_Pron))) + (mkImp (giveMe (mkNP and_Conj s (detSet s r.cn)))) | mkUtt (mkQS (mkQCl (mkIP what_IQuant plNum r.cn) s have_V2)) | mkUtt (mkQS (mkQCl whatSg_IP - (mkClSlash (mkClSlash s have_V2) (mkAdv as_Prep (mkNP aPl_Det r.cn))))) ; + (mkClSlash (mkClSlash s have_V2) (mkAdv LexQuery.as_Prep (mkNP aPl_Det r.cn))))) ; QFunPair s f = let @@ -60,7 +59,7 @@ lin ss : NP = mkNP and_Conj ss0 (mkNP (mkQuant they_Pron) plNum f.cn) | mkNP ss0 (mkAdv with_Prep (mkNP (mkQuant they_Pron) plNum f.cn)) in - mkUtt (mkImp (mkVP LexQuery.give_V3 ss (mkNP i_Pron))) + mkUtt (mkImp (giveMe ss)) | mkUtt (mkQS (mkQCl (Lang.CompIP whatPl_IP) ss)) | mkUtt (mkQS (mkQCl (Lang.CompIP (Lang.IdetIP (mkIDet which_IQuant))) ss)) | mkUtt ss ; @@ -69,7 +68,7 @@ lin let info : NP = mkNP (all_NP | (mkNP information_N)) (mkAdv about_Prep s) ; in - mkUtt (mkImp (mkVP LexQuery.give_V3 info (mkNP i_Pron))) + mkUtt (mkImp (giveMe info)) | mkUtt (mkQCl whatSg_IP (mkClSlash (mkClSlash (mkNP youSg_Pron) know_V2) (mkAdv about_Prep s))) | mkUtt info ; diff --git a/examples/query/QuerySwe.gf b/examples/query/QuerySwe.gf index ce9f6c482..929a0e64c 100644 --- a/examples/query/QuerySwe.gf +++ b/examples/query/QuerySwe.gf @@ -44,27 +44,27 @@ lin ; HaveTitle = - relAP (mkAP (mkA "anställd" "anställt")) as_Prep + relAP (mkAP (mkA "anställd" "anställt")) som_Prep | relVP UseCopula noPrep - | relVP (mkVP (mkV "arbeta")) as_Prep - | relVP (mkVP (mkV "jobba")) as_Prep + | relVP (mkVP (mkV "arbeta")) som_Prep + | relVP (mkVP (mkV "jobba")) som_Prep | relVP (mkVP have_V2 (mkNP the_Det (mkCN (mkN2 (mkN "titel" "titlar") noPrep)))) possess_Prep ; EmployedAt s = - relAP (mkAP (mkA2 (mkA "anställd" "anställt") at_Prep) s) as_Prep - | relAP (mkAP (mkA2 (mkA "anställd" "anställt") by8agent_Prep) s) as_Prep - | relVP (mkVP (mkV2 (mkV "arbeta") at_Prep) s) as_Prep - | relVP (mkVP (mkV2 (mkV "jobba") at_Prep) s) as_Prep + relAP (mkAP (mkA2 (mkA "anställd" "anställt") at_Prep) s) som_Prep + | relAP (mkAP (mkA2 (mkA "anställd" "anställt") by8agent_Prep) s) som_Prep + | relVP (mkVP (mkV2 (mkV "arbeta") at_Prep) s) som_Prep + | relVP (mkVP (mkV2 (mkV "jobba") at_Prep) s) som_Prep ; HaveTitleAt t = - relAP (mkAP (mkA2 (mkA "anställd" "anställt") as_Prep) (mkNP t)) at_Prep - | relAP (mkAP (mkA2 (mkA "anställd" "anställt") as_Prep) (mkNP t)) by8agent_Prep + relAP (mkAP (mkA2 (mkA "anställd" "anställt") som_Prep) (mkNP t)) at_Prep + | relAP (mkAP (mkA2 (mkA "anställd" "anställt") som_Prep) (mkNP t)) by8agent_Prep | relVP (mkVP (mkNP a_Det t)) at_Prep - | relVP (mkVP (mkV2 (mkV "arbeta") as_Prep) (mkNP t)) at_Prep - | relVP (mkVP (mkV2 (mkV "jobba") as_Prep) (mkNP t)) at_Prep + | relVP (mkVP (mkV2 (mkV "arbeta") som_Prep) (mkNP t)) at_Prep + | relVP (mkVP (mkV2 (mkV "jobba") som_Prep) (mkNP t)) at_Prep | relVP (mkVP have_V2 (mkNP the_Det (mkCN (mkN2 (mkN "titel" "titlar") noPrep) (mkNP t)))) at_Prep ; @@ -101,6 +101,7 @@ oper mkFunctionP : N -> Prep -> Fun = \n,p -> {cn = mkCN n ; prep = p} ; + som_Prep = mkPrep "som" ; lin -- JobTitles