summaryrefslogtreecommitdiff
path: root/examples/query/small/patentsQuery/LexQueryPatsEng.gf
blob: 09206388e9585d4a63d8208289433f9d28918541 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
instance LexQueryPatsEng of LexQueryPats = open
  SyntaxEng,
  (M=MakeStructuralEng),
  ParadigmsEng,
  ExtraEng,
  IrregEng, 
  LangEng,
  ResEng,
  QueryEng
   in 
{

oper 
-------------------------------------------------------------- 
-- structural words and extra grammar constructs

   about_Prep : Prep  = mkPrep "about" ;

   all_NP : NP = SyntaxEng.mkNP (mkPN "all") ;

   vpAP : VP -> AP = PartVP ;
   
   what_IQuant : IQuant = M.mkIQuant "what" "what" ;

   massInfoSg : CN -> NP = \cn -> SyntaxEng.mkNP cn ;
 
   massInfoPl : CN -> NP = \cn -> SyntaxEng.mkNP aPl_Det cn ;
 
   PatsAdvVPSlash : VPSlash -> Adv -> VPSlash = LangEng.AdvVPSlash ;  

   selectIP : NP -> IP = \np -> case np.a of 
     {AgP3Sg _ => whatSg_IP ;
      _        => whatPl_IP
     };


--------------------------------------------------------------
-- kinds 

   patent_number_CN : Kind = lin Kind  (mkCN (mkN "patent" (mkN "number"))) ;

   claim_N : Kind = lin Kind (mkCN (mkN "claim")) ;

 
--------------------------------------------------------------
-- activities 

   expire_V : Adv -> Activity = \pdate -> 
        lin Activity (mkVP (mkVP (mkV "expire")) pdate) ;

   simp_expire_V : Activity =  
        lin Activity (mkVP (mkV "expire")) ;

   apply_V : NP -> Activity = \pat ->  lin Activity ( mkVP (mkVP (mkV "apply" "applies" "applied" "applied" "applying")) (SyntaxEng.mkAdv for_Prep pat)) ;

   compound_CN : Activity = let vp : VP = mkVP (mkCN (mkN "compound"))
            in  lin Activity vp ;
  
   use_V2 : Set -> Activity = \s -> lin Activity (mkVP (passiveVP (mkV2 (mkV "use" "uses" "used" "used" "using"))) (SyntaxEng.mkAdv in_Prep s));

   approve_V2 : Adv -> Activity = \pdate -> lin Activity (mkVP (passiveVP (mkV2 (mkV "approve" "approves" "approved" "approved" "approving"))) pdate) ;
 
   mention_V2 : NP -> Activity = \drug -> 
    lin Activity ( mkVP (mkVPSlash (mkV2 (mkV "mention" "mentions" "mentioned" "mentioned" "mentioning"))) drug) ;

   contain_V2 : NP -> Activity  = \chem ->
    lin Activity (mkVP (mkVPSlash (mkV2 (mkV "contain" "contains" "contained" "contained" "containing"))) chem) ;


--------------------------------------------------------------
-- properties 

   approve_prop_V2 : Adv -> Property  = \pdate -> lin Property (vpAP (mkVP (passiveVP (mkV2 (mkV "approve" "approves" "approved" "approved" "approving"))) pdate)) ;

   use_prop_V2 : Set -> Property = \s -> lin Property (vpAP (mkVP (passiveVP (mkV2 (mkV "use" "uses" "used" "used" "using"))) (SyntaxEng.mkAdv in_Prep s))) ;
  
  

--------------------------------------------------------------
-- relations  
 
   active_ingredient_CN : Relation = makeRelation (mkCN (mkA "active")  (mkN "ingredient")) ;

   dosage_form_CN : Relation = makeRelation (mkCN (mkN "dosage" (mkN "form"))) ;

   route_of_administration_CN : Relation = makeRelation (mkCN (mkN "route") (SyntaxEng.mkAdv (mkPrep "of") (SyntaxEng.mkNP (mkN "administration")))) ;

   patent_number_Rel : Relation  = makeRelation (mkCN (mkN "patent" (mkN "number"))) ;

   patent_N : Relation = lin Relation {cn = mkCN (mkN "patent") ; prep = for_Prep } ;
  
   patent_with_N : Relation = lin Relation {cn = mkCN (mkN "patent"); prep = with_Prep} ;

   expiration_date_CN : Relation  = makeRelation (mkCN (mkN "expiration" (mkN "date"))) ;

   use_code_CN : Relation = makeRelation (SyntaxEng.mkCN (mkN "use" (mkN "code"))) ; 

   application_number_CN : Relation  = makeRelation ((mkCN (mkN "application" (mkN  "number"))) | (mkCN (mkN ["patent application"] (mkN  "number")))) ;


   application_number_no_CN : Relation  = lin Relation {cn = ((mkCN (mkN "application" (mkN  "number"))) | (mkCN (mkN ["patent application"] (mkN  "number")))); prep = noPrep} ;
  
   applicant_CN : Relation = lin Relation { cn = mkCN (mkN "applicant") ; prep = for_Prep } ;


   applicant_no_CN : Relation = lin Relation {cn = mkCN (mkN "applicant"); prep = noPrep} ;

   approval_date_CN : Relation = makeRelation (mkCN (mkN "approval" (mkN "date"))) ;


   chemical_composition_CN : Relation = makeRelation (mkCN (mkA "chemical") (mkN "composition")) ;
 
   chemical_substance_CN : Relation = lin Relation {cn = (mkCN (mkA "chemical") (mkN "substance")) ; prep = from_Prep | part_Prep } ;

   drug_N : Relation = lin Relation {cn = mkCN (mkN "drug") ; prep = with_Prep} ;
 
   use_N : Relation = makeRelation (mkCN (mkN "use")) ;  

   method_N : Relation  = makeRelation (mkCN (mkN "method")) ;

   drug_with_usage_form_CN : Relation = lin Relation {cn = mkCN (mkN "drug") ; prep = noPrep } ;

   drug_preparation_CN : Relation = lin Relation {cn = mkCN (mkN "drug" (mkN "preparation")) ; prep = for_Prep} ; 
  
   strength_N : Relation  = makeRelation (mkCN (mkN "strength")) ;

   name_N : Relation = makeRelation (mkCN (mkN "name")) ;

   usage_form_CN = makeRelation (mkCN (mkN "usage" (mkN "form"))) ;

----------------------------------------------------------------------------
oper makeRelation : CN -> Relation =
    \s -> lin Relation {cn = s ; prep = possess_Prep} ;


}