4
5semlex(pp,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
6 Sem = lam(X,B:drs([B:[]:Y],[B:Index:pred(Y,thing,n,12),
7 B:[]:rel(X,Y,Sym,0)])).
8
9
17
18semlex(pp/np,Sym,Index,Att1-[sem:'REL'|Att2],Sem):-
19 option('--roles',verbnet),
20 roles(Sym,pp/np,[Role],Att1-Att2), !,
21 Sem = lam(Q,lam(X,app(Q,lam(Y,B:drs([],[B:Index:role(X,Y,Role,1)]))))).
22
23semlex(pp/np,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
24 Sem = lam(Q,lam(X,app(Q,lam(Y,B:drs([],[B:Index:rel(X,Y,Sym,0)]))))).
25
26
30
31semlex(pp/n,Sym,Index,Att-[sem:'UOM'|Att],Sem):-
32 att(Att,pos,'$'), !,
33 Sem = lam(N,lam(X,merge(B:drs([B:[]:Y],[B:Index:pred(Y,Sym,n,1),B:[]:rel(X,Y,rel,0)]),
34 app(N,Y)))).
35
36semlex(pp/n,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
37 Sem = lam(N,lam(X,merge(B:drs([B:[]:Y],[B:Index:rel(X,Y,Sym,0)]),app(N,Y)))).
38
39
49
50semlex(pp/(s:ng\np),Sym,Index,Att1-[sem:'SUB'|Att2],Sem):-
51 roles(Sym,pp/(s:ng\np),[Role],Att1-Att2), !,
52 plosing(CC),
53 NP = lam(P,merge(B2:drs([B2:[]:Y],[]),app(P,Y))),
54 Sem = lam(VP,lam(E,B1:drs([B1:[]:P],[B1:Index:role(E,P,Role,1),
55 B1:[]:prop(P,app(app(VP,NP),CC))]))).
56
57
62
63semlex(pp/(s:adj\np),Sym,Index,Att1-[sem:'REL'|Att2],Sem):-
64 roles(Sym,(s:adj\np),[Role],Att1-Att2), !,
65 Sem = lam(VP,lam(X,app(app(VP,lam(P,merge(B:drs([B:[]:Y],[]),app(P,Y)))),
66 lam(E,C:drs([],[C:Index:role(X,E,Role,1)]))))).
67
68semlex(pp/(s:b\np),Sym,Index,Att1-[sem:'REL'|Att2],Sem):-
69 roles(Sym,pp/(s:b\np),[Role],Att1-Att2), !,
70 Sem = lam(VP,lam(X,app(app(VP,lam(P,merge(B:drs([B:[]:Y],[]),app(P,Y)))),
71 lam(E,C:drs([],[C:Index:role(X,E,Role,1)]))))).
72
73semlex(pp/(s:_\np),Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
74 Sem = lam(VP,lam(X,app(app(VP,lam(P,merge(B:drs([B:[]:Y],[]),app(P,Y)))),
75 lam(E,C:drs([],[C:Index:rel(X,E,Sym,0)]))))).
76
77
78
81semlex((pp/(s:_\np))/np,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
82 Sem = lam(NP,lam(VP,lam(E,app(app(VP,NP),lam(F,B:drs([],[B:Index:rel(E,F,Sym,0)])))))).
83
84semlex(pp/s:_,Sym,Index,Att1-[sem:'SUB'|Att2],Sem):-
85 roles(Sym,pp/s:_,[Role],Att1-Att2), !,
86 Sem = lam(S,lam(E,app(S,lam(X,B:drs([],[B:Index:role(E,X,Role,1)]))))).
87
88semlex(pp/s,Sym,Index,Att1-[sem:'SUB'|Att2],Sem):-
89 roles(Sym,pp/s,[Role],Att1-Att2), !,
90 Sem = lam(S,lam(E,app(S,lam(X,B:drs([],[B:Index:role(E,X,Role,1)]))))).
91
92semlex(pp/s:_,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
93 Sem = lam(S,lam(E,app(S,lam(X,B:drs([],[B:Index:rel(E,X,Sym,0)]))))).
94
95semlex(pp/s,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
96 Sem = lam(S,lam(E,app(S,lam(X,B:drs([],[B:Index:rel(E,X,Sym,0)]))))).
97
98
102
103semlex((pp\np)/np,Sym,Index,Att-[sem:'REL'|Att],Sem):- !,
104 Sem = lam(Q1,lam(Q2,lam(X,merge(app(Q2,lam(Z,B1:drs([],[B1:[]:rel(X,Z,rel,0)]))),
105 app(Q1,lam(Y,B2:drs([],[B2:Index:rel(X,Y,Sym,0)]))))))).
106
107
108
112
113semlex(Cat,Sym,Index,Att-[sem:'NOT'|Att],Sem):-
114 option('--semantics',drg),
115 notSymbol(Sym),
116 member(Cat,[pp/pp,pp\pp]), !,
117 Sem = lam(P,lam(E,B:drs([],[B:Index:pred(E,Sym,s,1),B:[]:not(app(P,E))]))).
118
119semlex(Cat,Sym,Index,Att-[sem:'NOT'|Att],Sem):-
120 notSymbol(Sym),
121 member(Cat,[pp/pp,pp\pp]), !,
122 Sem = lam(P,lam(E,B:drs([],[B:Index:not(app(P,E))]))).
123
124semlex(Cat,Sym,Index,Att-[sem:'IST'|Att],Sem):-
125 member(Cat,[pp/pp,pp\pp]), !,
126 att(Att,sense,Sense),
127 Sem = lam(P,lam(E,merge(app(P,E),
128 B:drs([],[B:Index:pred(E,Sym,r,Sense)])))).
129
130semlex(Cat,Sym,Index,Att-[sem:'REL'|Att],Sem):-
131 member(Cat,[(pp\pp)\np,
132 (pp\pp)/np,
133 (pp/pp)/np]), !,
134 Sem = lam(NP,lam(P,lam(E,merge(app(P,E),
135 app(NP,lam(X,B:drs([],[B:Index:rel(E,X,Sym,0)]))))))).
136
137semlex(Cat,Sym,Index,Att-[sem:'REL'|Att],Sem):-
138 member(Cat,[(pp\pp)\s:dcl,
139 (pp\pp)/s:dcl,
140 (pp/pp)/s:dcl]), !,
141 Sem = lam(S,lam(P,lam(E,merge(app(P,E),
142 app(S,lam(X,B:drs([],[B:Index:rel(E,X,Sym,0)]))))))).
143
144semlex(Cat,Sym,Index,Att-[sem:'NOT'|Att],Sem):-
145 notSymbol(Sym),
146 member(Cat,[(pp\pp)/(pp\pp),
147 (pp/pp)/(pp/pp)]), !,
148 Sem = lam(Z,lam(P,lam(Y,app(app(Z,lam(X,B:drs([],[B:Index:not(app(P,X))]))),Y)))).
149
150semlex(Cat,Sym,Index,Att-[sem:'IST'|Att],Sem):-
151 member(Cat,[(pp\pp)/(pp\pp),
152 (pp/pp)/(pp/pp)]), !,
153 att(Att,sense,Sense),
154 Sem = lam(Z,lam(P,lam(Y,app(app(Z,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,r,Sense)]),
155 app(P,X)))),Y)))).
156
157
161
162semlex(Cat,the,Index,Att1-[sem:'DEF'|Att2],Sem):-
163 member(Cat,[(pp\pp)/n]), !,
164 role(['Time'],Att1-Att2,[Role]),
165 Sem = lam(N,lam(P,lam(E,merge(app(P,E),
166 alfa(def,merge(B1:drs([B1:[]:X],[]),
167 app(N,X)),
168 B2:drs([],[B2:Index:role(E,X,Role,1)])))))).
169
170semlex(Cat,Sym,Index,Att-[sem:'DEF'|Att],Sem):-
171 member(Cat,[(pp\pp)/n]), !,
172 Sem = lam(N,lam(P,lam(E,merge(app(P,E),
173 alfa(def,merge(B1:drs([B1:[]:X],[]),
174 app(N,X)),
175 B2:drs([],[B2:Index:rel(E,X,Sym,0)])))))).
176
177
181
182semlex(pp\n,'-',Index,Att-[sem:'UNK'|Att],Sem):- !,
183 Sem = lam(N,lam(X,alfa(def,merge(B1:drs([B1:[]:Y],[]),app(N,Y)),
184 B2:drs([],[B2:Index:rel(X,Y,loc_rel,0)])))).
185
186semlex(pp\n,'-',Index,Att-[sem:'UNK'|Att],Sem):- !,
187 Sem = lam(N,lam(X,merge(B:drs([B:[]:Y],[B:Index:rel(X,Y,rel,0)]),
188 app(N,Y)))).
189
190semlex(pp\n,'-',Index,Att-[sem:'UNK'|Att],Sem):- !,
191 Sem = lam(N,lam(X,merge(B:drs([B:[]:Y],[B:Index:rel(X,Y,attribute,0)]),
192 app(N,Y))))