summaryrefslogtreecommitdiff
path: root/examples/query
diff options
context:
space:
mode:
authorramona.enache <ramona.enache@chalmers.se>2012-06-21 14:21:18 +0000
committerramona.enache <ramona.enache@chalmers.se>2012-06-21 14:21:18 +0000
commitffa1e7731d3ef7a3892366f72b708e934eb840d5 (patch)
tree75d4d514e2891f5417edd35fa20db545a84de4a2 /examples/query
parent6e2c7623fd1cfc9b48fa98759583e7d0d3374d59 (diff)
added French grammar for patent queries
Diffstat (limited to 'examples/query')
-rw-r--r--examples/query/small/patentsQuery/LexQueryPatsFre.gf159
-rw-r--r--examples/query/small/patentsQuery/QueryPatsFre.gf386
2 files changed, 545 insertions, 0 deletions
diff --git a/examples/query/small/patentsQuery/LexQueryPatsFre.gf b/examples/query/small/patentsQuery/LexQueryPatsFre.gf
new file mode 100644
index 000000000..7577e1d66
--- /dev/null
+++ b/examples/query/small/patentsQuery/LexQueryPatsFre.gf
@@ -0,0 +1,159 @@
+instance LexQueryPatsFre of LexQueryPats = open
+ SyntaxFre,
+ ParadigmsFre,
+ ExtraFre,
+ IrregFre,
+ DiffFre,
+ StructuralFre,
+ (CR=CommonRomance),
+ ParamX,
+ QueryFre,
+ Prelude
+ in
+{
+
+oper
+--------------------------------------------------------------
+-- structural words and extra grammar constructs
+
+ about_Prep : Prep = mkPreposition ["à propos de"] ;
+
+ all_NP : NP = mkNP (mkPN "tout") ;
+
+ vpAP : VP -> AP = variants {} ;
+
+ what_IQuant : IQuant = which_IQuant ;
+
+ massInfoSg : CN -> NP = \cn ->
+ let g = cn.g ;
+ n = Sg
+ in lin NP {
+ s = \\c => {comp,ton = cn.s ! n ; c1,c2 = []} ;
+ a = CR.agrP3 g n ;
+ hasClit = False ;
+ isPol = False
+ } ;
+
+ massInfoPl : CN -> NP = \cn -> SyntaxFre.mkNP aPl_Det cn ;
+
+ PatsAdvVPSlash : VPSlash -> Adv -> VPSlash = \vp, adv -> lin VPSlash
+ {
+ s = vp.s ;
+ agr = vp.agr ;
+ clit1 = vp.clit1 ;
+ clit2 = vp.clit2 ;
+ clit3 = vp.clit3 ;
+ neg = vp.neg ;
+ comp = \\a => vp.comp ! a ++ adv.s ;
+ ext = vp.ext ;
+ c2 = vp.c2 ;
+ } ;
+
+ selectIP : NP -> IP = \np -> case np.a.n of
+ {Sg => whatSg_IP ;
+ _ => whatPl_IP
+ };
+
+
+--------------------------------------------------------------
+-- kinds
+
+ patent_number_CN : Kind =
+ let pn : CN = mkCN (mkCN (mkN "numéro")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "brevet")))
+ in lin Kind pn ;
+
+ claim_N : Kind = lin Kind (mkCN (mkN "revendication")) ;
+
+
+--------------------------------------------------------------
+-- activities
+
+ expire_V : Adv -> Activity = \pdate ->
+ lin Activity (mkVP (mkVP (mkV "expire")) pdate) ;
+
+ simp_expire_V : Activity =
+ lin Activity (mkVP (regV "expirer")) ;
+
+ apply_V : NP -> Activity = \pat -> lin Activity ( mkVP (mkVP (regV "appliquer")) (SyntaxFre.mkAdv for_Prep pat)) ;
+
+ compound_CN : Activity = let vp : VP = mkVP (mkCN (mkN "composé"))
+ in lin Activity vp ;
+
+ use_V2 : Set -> Activity = \s -> lin Activity (mkVP (passiveVP (dirV2 (regV "utiliser"))) (SyntaxFre.mkAdv in_Prep s));
+
+ approve_V2 : Adv -> Activity = \pdate -> lin Activity (mkVP (passiveVP (dirV2 (regV "approuver"))) pdate) ;
+
+ mention_V2 : NP -> Activity = \drug ->
+ lin Activity ( mkVP (mkVPSlash (dirV2 (regV "mentionner"))) drug) ;
+
+ contain_V2 : NP -> Activity = \chem ->
+ lin Activity (mkVP (mkVPSlash IrregFre.contenir_V2) chem) ;
+
+
+--------------------------------------------------------------
+-- properties
+
+ approve_prop_V2 : Adv -> Property = \pdate -> lin Property (vpAP (mkVP (passiveVP (dirV2 (regV "approuver"))) pdate)) ;
+
+ use_prop_V2 : Set -> Property = \s -> lin Property (vpAP (mkVP (passiveVP (dirV2 (regV "utiliser"))) (SyntaxFre.mkAdv in_Prep s))) ;
+
+
+
+--------------------------------------------------------------
+-- relations
+
+ active_ingredient_CN : Relation = makeRelation (mkCN (mkA "actif") (mkN "ingrédient")) ;
+
+ dosage_form_CN : Relation = makeRelation (mkCN (mkA "posologique") (mkN "forme")) ;
+
+ route_of_administration_CN : Relation = makeRelation (mkCN (mkCN (mkN "voie")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "administration")))) ;
+
+ patent_number_Rel : Relation = makeRelation (mkCN (mkCN (mkN "numéro")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "brevet")))) ;
+
+ patent_N : Relation = lin Relation {cn = mkCN (mkN "brevet") ; prep = for_Prep } ;
+
+ patent_with_N : Relation = lin Relation {cn = mkCN (mkN "brevet"); prep = with_Prep} ;
+
+ expiration_date_CN : Relation = makeRelation (mkCN (mkCN (mkN "date")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "expiration")))) ;
+
+ use_code_CN : Relation = makeRelation (mkCN (mkCN (mkN "code")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "utilisation")))) ;
+
+ application_number_CN : Relation = makeRelation (mkCN (mkCN (mkN "numéro")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "demande")))) ;
+
+
+ application_number_no_CN : Relation = lin Relation {cn = (mkCN (mkCN (mkN "numéro")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "demande")))); prep = mkPrep ""} ;
+
+ applicant_CN : Relation = lin Relation { cn = mkCN (mkN "demandeur") ; prep = for_Prep } ;
+
+
+ applicant_no_CN : Relation = lin Relation {cn = mkCN (mkN "demandeur"); prep = mkPrep ""} ;
+
+ approval_date_CN : Relation = makeRelation (mkCN (mkCN (mkN "date")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "approbation")))) ;
+
+
+ chemical_composition_CN : Relation = makeRelation (mkCN (mkA "chemique") (mkN "composition")) ;
+
+ chemical_substance_CN : Relation = lin Relation {cn = (mkCN (mkA "chimique") (mkN "substance")) ; prep = from_Prep | part_Prep } ;
+
+ drug_N : Relation = lin Relation {cn = mkCN (mkN "médicament") ; prep = with_Prep} ;
+
+ use_N : Relation = makeRelation (mkCN (mkN "utilisation")) ;
+
+ method_N : Relation = makeRelation (mkCN (mkN "méthode")) ;
+
+ drug_with_usage_form_CN : Relation = lin Relation {cn = mkCN (mkN "médicament") ; prep = mkPrep "" } ;
+
+ drug_preparation_CN : Relation = lin Relation {cn = mkCN (mkN "préparation") ; prep = for_Prep} ;
+
+ strength_N : Relation = makeRelation (mkCN (mkN "dosage")) ;
+
+ name_N : Relation = makeRelation (mkCN (mkN "nom")) ;
+
+ usage_form_CN = makeRelation ( mkCN (mkCN (mkN "formulaire")) (SyntaxFre.mkAdv possess_Prep (mkNP (mkN "utilisation")))) ;
+
+----------------------------------------------------------------------------
+oper makeRelation : CN -> Relation =
+ \s -> lin Relation {cn = s ; prep = possess_Prep} ;
+
+
+}
diff --git a/examples/query/small/patentsQuery/QueryPatsFre.gf b/examples/query/small/patentsQuery/QueryPatsFre.gf
new file mode 100644
index 000000000..f4808fbf1
--- /dev/null
+++ b/examples/query/small/patentsQuery/QueryPatsFre.gf
@@ -0,0 +1,386 @@
+--# -path=.:..:alltenses
+
+concrete QueryPatsFre of QueryPats = QueryFre ** open
+ LexQueryPatsFre,
+ ParadigmsFre,
+ IrregFre,
+ SyntaxFre,
+ ExtraFre,
+ (L=LangFre),
+ Prelude
+in {
+
+
+--------------------------------------------------------
+-- additions to the original query grammar
+
+lin
+
+ SThe k = SyntaxFre.mkNP the_Det k ;
+
+ SMassSg k = SyntaxFre.mkNP k ;
+
+ QWho a = mkUtt (mkQCl whoSg_IP a) ;
+
+-- QWhen : Set -> Activity -> Query ;
+
+ QMass s = mkUtt s ;
+
+ QExist s = mkUtt (L.ExistIP (L.IdetCN (L.IdetQuant what_IQuant L.NumPl) s))
+ | mkUtt (mkNP all_NP (SyntaxFre.mkAdv about_Prep (mkNP s))) ;
+
+
+---------------------------------------------------------
+-- from the patent query grammar
+
+lincat
+ Drug = NP ;
+ Patent = NP ;
+ ChemicalSubstance = NP ;
+ DrugUsageForm = NP ;
+ PatentNumber = NP ;
+ Applicant = NP ;
+ ApplicationNumber = NP ;
+ PatsDate = Adv ;
+ SimpDate = Adv ;
+
+
+lin
+PQInfo drug = QInfo (DrugToSet drug) ;
+
+PQActive drug =
+ let ai : Kind = KRelSet active_ingredient_CN (DrugToSet drug)
+ in
+ basicPlur ai ;
+
+
+PQDosage drug =
+ let df : Kind = KRelSet dosage_form_CN (DrugToSet drug)
+ in
+ basicBoth df | QExist df ;
+
+
+PQRoute drug =
+ let df : Kind = KRelSet route_of_administration_CN (DrugToSet drug)
+ in
+ basicBoth df | QExist df ;
+
+
+PQPatentNo =
+ let bu : Query = basicPlur patent_number_CN
+ in
+ bu | QExist patent_number_CN ;
+
+
+PQPatentDrug drug =
+ let df : Kind = KRelSet patent_number_Rel (DrugToSet drug)
+ in
+ basicSing df ;
+
+
+
+PQPatentPat patent =
+ let ai : Kind = KRelSet patent_number_Rel (PatentToSet patent)
+ in
+ basicSing ai ;
+
+
+PQExpPat patent =
+ let
+ ai : Kind = KRelSet expiration_date_CN (PatentToSet patent) ;
+ bu : Query = basicSing ai
+ in
+ bu ;
+ -- KAct when_IAdv (mkCl patent (mkVP expire_V))) ;
+
+
+PQExpDrug drug =
+ let
+ ai : Kind = KRelSet expiration_date_CN (SThe (KRelSet patent_N (DrugToSet drug)))
+ in
+ basicSing ai ;
+-- | mkUtt (mkQCl when_IAdv (mkCl (mkNP the_Art ai) (mkVP expire_V)));
+
+
+PQUseCode patent =
+ let df : Kind = KRelSet use_code_CN (PatentToSet patent)
+ in
+ basicBoth df ;
+
+
+PQAppNumber patent =
+ let df : Kind = KRelSet application_number_CN (PatentToSet patent)
+ in
+ basicSing df ;
+
+
+PQApplicant patent =
+ let df : Kind = KRelSet applicant_CN (PatentToSet patent) ;
+ bu : Query = basicSing df
+ in
+ bu ;
+-- | mkUtt (mkQS (mkQCl whoSg_IP (mkVP (mkVP apply_V) (SyntaxFre.mkAdv for_Prep patent))))
+-- | mkUtt (mkQS pastTense (mkQCl whoSg_IP (mkVP (mkVP apply_V) (SyntaxFre.mkAdv for_Prep patent))));
+
+
+PQAppDayDrug drug =
+ let df : Kind = KRelSet approval_date_CN (SThe (KRelSet patent_N (DrugToSet drug)))
+ in
+ basicSing df ;
+
+
+PQAppDayPat patent =
+ let df : Kind = KRelSet approval_date_CN (PatentToSet patent)
+ in
+ basicSing df ;
+
+
+PQAppDayPatApp patent applicant =
+ let df : Kind = KRelSet approval_date_CN (SThe (KRelSet patent_with_N (SThe (KRelSet applicant_CN (AppToSet applicant)))))
+ in
+ basicSing df ;
+
+
+PQAppDayNo appno =
+ let df : Kind = KRelSet approval_date_CN (SThe (KRelSet patent_with_N (SThe (KRelSet application_number_CN (AppNumToSet appno)))))
+ in
+ basicSing df ;
+
+
+PQChemComp drug =
+ let
+ df : Kind = KRelSet chemical_substance_CN (DrugToSet drug) ;
+ cc : Kind = KRelSet chemical_composition_CN (DrugToSet drug)
+ in
+ basicPlur df | basicSing cc ;
+
+
+PQCompounds =
+ let cc : Kind = KAct compound_CN (KRel drug_N)
+ in
+ basicPlur cc ;
+
+
+PQPrep =
+ basicPlur (KRel drug_preparation_CN)
+ | QExist (KRel drug_preparation_CN) ;
+
+
+PQDrugPrep drug =
+ let df : Kind = KRelSet drug_preparation_CN (DrugToSet drug)
+ in
+ basicSing df ;
+
+-----
+
+PQName drug =
+ let
+ df : CN = KRelSet name_N (DrugToSet drug)
+ in
+ basicSing df ;
+
+
+PQNameApp applicant =
+ let pt2 : Set = SIndef (KRelSet patent_with_N (SThe (KRelSet applicant_CN applicant))) ;
+ df : Kind = KRelSet drug_N pt2
+ in
+ basicSing df ;
+
+----
+
+PQMethods patent =
+ let pt1 : Kind = KProp (use_prop_V2 (PatentToSet patent)) (KRel method_N) ;
+ pt2 : Kind = KRelSet method_N (PatentToSet patent) ;
+ pt : Kind = pt1 | pt2
+ in
+ basicPlur pt ;
+
+
+PQDateMeth date =
+ let pdate : Set = SAll (KAct (expire_V date) (KRel patent_N)) ;
+ pt1 : Kind = KAct (use_V2 pdate) (KRel method_N) ;
+ pt2 : Kind = KProp (use_prop_V2 pdate) (KRel method_N) ;
+ pt3 : Kind = KRelSet method_N pdate ;
+ pt : Kind = pt1 | pt2 | pt3
+ in
+ basicPlur pt ;
+
+
+PQMethNo appno =
+ let pdate : Set = SThe (KRelSet patent_with_N (SThe (KRelSet application_number_no_CN appno))) ;
+ pt1 : Kind = KProp (use_prop_V2 (SThe (KRel patent_N))) (KRel method_N) ;
+ pt2 : Kind = KRelSet method_N (SThe (KRel patent_N)) ;
+ pt : Kind = pt1 | pt2
+ in
+ basicPlur pt ;
+
+----
+
+PQUse patent =
+ let df : Kind = KRelSet use_N (PatentToSet patent)
+ in
+ basicSing df ;
+
+
+PQUseDate date =
+ let pdate : Set = SThe (KAct (approve_V2 date) (KRel patent_N)) ;
+ pt : Kind = KRelSet use_N pdate
+ in
+ basicSing pt ;
+
+PQDateUse date =
+ let patent : Kind = KRel patent_N ;
+ pdate : Set = SAll (KProp (approve_prop_V2 date) patent) ;
+ pt : Kind = KRelSet use_N pdate
+
+ in
+ basicPlur pt ;
+
+
+PQUseDrug drug =
+ let df : Kind = KRelSet use_N (DrugToSet drug)
+ in
+ basicSing df ;
+
+
+PQUseChem chem =
+ let drug : Kind = KAct (contain_V2 chem) (KRel drug_N) ;
+ drugs : Set = SAll drug ;
+ df : Kind = KRelSet use_N drugs
+ in
+ basicSing df ;
+
+
+PQUseForm uform =
+ let drug : Kind = KRelSet usage_form_CN (UsageToSet uform) ;
+ drugs : Set = SAll drug ;
+ df : Kind = KRelSet use_N drugs
+ in
+ basicSing df ;
+
+---
+
+PQStrength drug =
+ let df : Kind = KRelSet strength_N (DrugToSet drug)
+ in
+ basicSing df ;
+
+
+PQStrengthChem chem =
+ let drug : Kind = KAct (contain_V2 chem) (KRel drug_N) ;
+ drugs : Set = SAll drug ;
+ df : Kind = KRelSet strength_N (DrugToSet drugs)
+ in
+ basicSing df ;
+
+---
+
+PQClaims drug =
+ let cc : Kind = KAct (mention_V2 drug) (mkCN claim_N)
+ in
+ basicPlur cc ;
+
+
+
+--------------------------------------------------------------------------------
+ oper basicSing : CN -> Utt =
+ \df ->
+ let sg_df : NP = SThe df ;
+ massdf : NP = SMassSg df
+ in
+ QSet sg_df
+ | QMass massdf
+ | QMass sg_df ;
+
+
+oper basicPlur : CN -> Utt =
+ \df ->
+ let sg_df : NP = SAll df ;
+ massdf : NP = SPlural df
+ in
+ QInfo sg_df
+ | QMass massdf
+ | QMass sg_df ;
+
+
+oper basicBoth : CN -> Utt =
+ \df ->
+ let sg_df : NP = SThe df ;
+ the_df : NP = SAll df ;
+ mass_sg_df : NP = SMassSg df ;
+ mass_pl_df : NP = SPlural df
+ in
+ QInfo the_df
+ | QInfo sg_df
+ | QMass mass_sg_df
+ | QMass sg_df
+ | QMass mass_pl_df
+ | QMass the_df ;
+
+--------------------------------------------------------------------------
+-- coercions
+
+lin DrugToSet d = d ;
+lin PatentToSet d = d ;
+lin ChemToSet d = d ;
+lin UsageToSet d = d ;
+lin PatNumToSet d = d ;
+lin AppToSet d = d ;
+lin AppNumToSet d = d ;
+--lin DateToSet : PatsDate -> Set ;
+
+
+
+ OnDate d = mkPatsDate on_Prep ;
+ BeforeDate d = mkPatsDate before_Prep ;
+ AfterDate d = mkPatsDate after_Prep ;
+
+ oper mkPatsDate : Prep -> Adv = \prep -> SyntaxFre.mkAdv prep (mkNP (mkPN "DATE")) ;
+
+
+
+
+-- lexicon
+
+oper mkDrug : Str -> NP =
+ \p -> mkNP (mkPN p) ;
+
+oper mkPatents : Str -> NP =
+ \p -> mkNP (mkPN p) ;
+
+oper mkChemicalSubstance : Str -> NP =
+ \p -> mkNP (mkPN p) ;
+
+oper mkDrugUsageForm : Str -> NP =
+ \p -> mkNP (mkPN p) ;
+
+oper mkPatentNumber : Str -> NP =
+ \p -> mkNP (mkPN p) ;
+
+oper mkApplicant : Str -> NP =
+ \p -> mkNP (mkPN p) ;
+
+oper mkApplicationNumber : Str -> NP =
+ \p -> mkNP (mkPN p);
+
+
+
+
+lin
+
+Aspirin = mkDrug "DRUG" ;
+
+Pats1230 = mkPatents "PATENT" ;
+
+Hydrogen = mkChemicalSubstance "CHEMICAL_SUBSTANCE" ;
+
+Inhalation = mkDrugUsageForm "DRUG_USAGE_FORM" ;
+
+P123 = mkPatentNumber "PATENT_NUMBER" ;
+
+JohnDoe = mkApplicant "APPLICANT" ;
+
+A123 = mkApplicationNumber "APPLICATION_NUMBER" ;
+
+
+} \ No newline at end of file