summaryrefslogtreecommitdiff
path: root/examples/query/small/patentsQuery/QueryPatEng.gf
diff options
context:
space:
mode:
authorramona.enache <ramona.enache@chalmers.se>2012-06-20 14:33:55 +0000
committerramona.enache <ramona.enache@chalmers.se>2012-06-20 14:33:55 +0000
commitf819b20ab2a2e36cd0ac04370f2b7da61b725cfd (patch)
treed2fd223a355da862a7e16cea92609c1504bfc11c /examples/query/small/patentsQuery/QueryPatEng.gf
parent2df13efeeaa6ee4a442279e64c57f89a92b9bd80 (diff)
added first draft of patents query grammar
Diffstat (limited to 'examples/query/small/patentsQuery/QueryPatEng.gf')
-rw-r--r--examples/query/small/patentsQuery/QueryPatEng.gf254
1 files changed, 254 insertions, 0 deletions
diff --git a/examples/query/small/patentsQuery/QueryPatEng.gf b/examples/query/small/patentsQuery/QueryPatEng.gf
new file mode 100644
index 000000000..78489449d
--- /dev/null
+++ b/examples/query/small/patentsQuery/QueryPatEng.gf
@@ -0,0 +1,254 @@
+--# -path=.:..:alltenses
+
+concrete QueryPatEng of QueryPat = QueryEng ** open
+ SyntaxEng,
+ LexPatsQueryEng,
+ LangEng,
+ ParadigmsEng
+in {
+
+
+--------------------------------------------------------
+-- additions to the original query grammar
+
+lin
+
+ SThe k = SyntaxEng.mkNP the_Det k ;
+
+ SMassSg k = SyntaxEng.mkNP k ;
+
+ QWho a = mkUtt (mkQCl whoSg_IP a) ;
+
+-- QWhen : Set -> Activity -> Query ;
+
+ QMass s = mkUtt s ;
+
+
+---------------------------------------------------------
+-- from the patent query grammar
+
+lincat
+ Drug = NP ;
+ Patent = NP ;
+ ChemicalSubstance = NP ;
+ DrugUsageForm = NP ;
+ PatentNumber = NP ;
+ Applicant = NP ;
+ ApplicationNumber = NP ;
+ PatsDate = 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 ;
+ -- | mkUtt (ExistIP (IdetCN (IdetQuant what_IQuant NumPl) df)) ;
+
+
+PQRoute drug =
+ let
+ df : Kind = KRelSet route_of_administration_CN (DrugToSet drug)
+ in
+ basicBoth df ;
+-- | mkUtt (ExistIP (IdetCN (IdetQuant what_IQuant NumPl) df)) ;
+
+
+PQPatentNo =
+ let bu : Query = basicPlur patent_number_CN
+ in
+ bu ;
+-- | mkUtt (ExistIP (IdetCN (IdetQuant what_IQuant NumPl) 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 ;
+-- | mkUtt (mkQCl when_IAdv (mkCl patent (mkVP expire_V))) ;
+
+
+PQExpDrug drug =
+ let
+ ai : Kind = KRelSet expiration_date_CN (SThe (KRelSet patent_N (DrugToSet drug))) ;
+ bu : Query = basicSing ai
+ in
+ bu ;
+-- | 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) (SyntaxEng.mkAdv for_Prep patent))))
+-- | mkUtt (mkQS pastTense (mkQCl whoSg_IP (mkVP (mkVP apply_V) (SyntaxEng.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 ;
+
+
+--------------------------------------------------------------------------------
+ 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 ;
+
+
+{- use later as more options for QInfo
+
+ | mkUtt (mkQCl (mkIP (mkIDet what_IQuant) information_N) (mkClSlash (mkNP youPl_Pron) (PatsAdvVPSlash (mkVPSlash have_V2) (SyntaxEng.mkAdv about_Prep drug))))
+ | mkUtt (mkQCl (mkIP (mkIDet what_IQuant) information_N) (mkClSlash (mkNP i_Pron) (SlashVV can_VV (PatsAdvVPSlash (mkVPSlash get_V2) (SyntaxEng.mkAdv about_Prep drug)))))
+ | mkUtt (mkNP all_Predet (massInfoSg (mkCN (mkCN information_N) (SyntaxEng.mkAdv about_Prep drug))))
+ | mkUtt (mkNP all_NP (SyntaxEng.mkAdv about_Prep drug))
+ | mkUtt drug ;
+-}
+
+--------------------------------------------------------------------------
+-- 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 ;
+
+
+
+--------------------------------------------------------------------------
+-- 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" ;
+
+
+ OnDate = mkPatsDate on_Prep ;
+ BeforeDate = mkPatsDate before_Prep ;
+ AfterDate = mkPatsDate after_Prep ;
+
+oper mkPatsDate : Prep -> Adv = \prep -> SyntaxEng.mkAdv prep (mkNP (mkPN "DATE")) ;
+
+
+
+}
+