2:- ensure_loaded(semlib(errors)). 6
7semlex(n,many,Index,Att-[sem:'QUA'|Att],Sem):-
8 att(Att,pos,'NN'), !,
9 Sem = lam(X,B:drs([],[B:Index:pred(X,quantity,n,1)])).
10
11semlex(n,much,Index,Att-[sem:'QUA'|Att],Sem):-
12 att(Att,pos,'NN'), !,
13 Sem = lam(X,B:drs([],[B:Index:pred(X,amount,n,3)])).
14
15semlex(n,there,Index,Att-[sem:'UNK'|Att],Sem):-
16 att(Att,pos,'EX'), !,
17 Sem = lam(X,B:drs([B:[]:Y],[B:Index:pred(Y,location,n,1),
18 B:[]:rel(Y,X,rel,0)])).
19
20
24
25semlex(n,other,Index,Att-[sem:'ALT'|Att],Sem):- 26 \+ option('--semantics',drg),
27 att(Att,pos,'NNS'), !,
28 Sem = lam(X,merge(B0:drs([],[B0:Index:pred(X,person,n,1)]),
29 alfa(def,
30 B1:drs([B1:[]:Y],[B1:[]:pred(Y,person,n,1)]),
31 B2:drs([],[B2:[]:not(B3:drs([],[B3:[]:eq(X,Y)]))])))).
32
33semlex(n,Sym,Index,Att-[sem:'DOM'|Att],Sem):- 34 att(Att,pos,Pos),
35 member(Pos,['CD','NNP','NN']),
36 att(Att,namex,NE), neClass(NE,tim),
37 dofm(Sym,DID), !,
38 Sem = lam(X,B:drs([],[B:Index:timex(X,date([]:'+',[]:'XXXX',[]:'XX',Index:DID))])).
39
40semlex(n,Sym,Index,Att-[sem:'YOC'|Att],Sem):- 41 att(Att,pos,'CD'),
42 att(Att,namex,NE), neClass(NE,tim),
43 year(Sym,Year), !,
44 Sem = lam(X,B:drs([],[B:Index:timex(X,date([]:'+',Index:Year,[]:'XX',[]:'XX'))])).
45
46semlex(n,Sym,Index,Att-[sem:'MOY'|Att],Sem):- 47 att(Att,pos,'CD'),
48 att(Att,namex,NE), neClass(NE,tim),
49 month(Sym,MID), !,
50 Sem = lam(X,B:drs([],[B:Index:timex(X,date([]:'+',[]:'XXXX',Index:MID,[]:'XX'))])).
51
52semlex(n,Sym,Index,Att-[sem:'MOY'|Att],Sem):- 53 att(Att,pos,'NNP'),
54 att(Att,namex,NE), neClass(NE,tim),
55 month(Sym,MID), !,
56 Sem = lam(X,B:drs([],[B:Index:timex(X,date([]:'+',[]:'XXXX',Index:MID,[]:'XX'))])).
57
58semlex(n,Sym,Index,Att1-[sem:'GPE'|Att2],Sem):- 59 att(Att1,namex,'gpe-nam'),
60 ( att(Att1,pos,'NNS'); att(Att1,pos,'NN') ), !,
61 rel(from,Att1-Att2,Relation),
62 Sem = lam(X,B:drs([B:[]:Y],[B:Index:pred(X,person,n,1),
63 B:[]:named(Y,Sym,gpe,nam),
64 B:[]:rel(X,Y,Relation,1)])).
65
66semlex(n,Sym,Index,Att-[sem:'DEC'|Att],Sem):- 67 att(Att,pos,'NNS'),
68 decade(Sym,DID), !,
69 Sem = lam(X,B:drs([],[B:Index:timex(X,date([]:'+',Index:DID,[]:'XX',[]:'XX'))])).
70
71semlex(n,Sym,Index,Att-[sem:'SCO'|Att],Sem):- 72 att(Att,pos,'CD'),
73 string2score(Sym,Score), !,
74 Sem = lam(X,B:drs([],[B:Index:named(X,Score,sco,num)])). 75
76semlex(n,Sym,Index,Att-[sem:'QUA'|Att],Sem):- 77 att(Att,pos,'CD'),
78 string2digit(Sym,Digit), !,
79 Sem = lam(X,B:drs([],[B:Index:card(X,Digit,eq),B:[]:pred(X,thing,n,12)])).
80
81semlex(n,Sym,Index,Att-[sem:Tag|Att],Sem):- 82 att(Att,pos,'NNP'), !,
83 att(Att,namex,NE), neClassType(NE,Class,Type,Tag),
84 Sem = lam(X,B:drs([],[B:Index:named(X,Sym,Class,Type)])).
85
86semlex(n,Sym,Index,Att-[sem:Tag|Att],Sem):- 87 att(Att,pos,'NNPS'), !,
88 att(Att,namex,NE), neClassType(NE,Class,Type,Tag),
89 Sem = lam(X,B:drs([],[B:Index:named(X,Sym,Class,Type)])).
90
91semlex(n,most,Index,Att-[sem:'TOP'|Att],Sem):-
92 att(Att,pos,'JJS'), !,
93 att(Att,sense,Sense),
94 Sem = lam(X,B:drs([],[B:Index:pred(X,most,n,Sense)])).
95
96semlex(n,Sym,Index,Att-[sem:'TOP'|Att],Sem):-
97 att(Att,pos,'JJS'),
99 !,
100 att(Att,sense,Sense),
101 Sem = lam(X,B:drs([],[B:Index:pred(X,Sym,n,Sense),B:[]:pred(X,most,r,1)])).
102
103semlex(n,Sym,Index,Att-[sem:'TOP'|Att],Sem):-
104 \+ option('--semantics',drg),
105 \+ option('--semantics',amr),
106 att(Att,pos,'JJS'), !,
107 Sem = lam(X,B1:drs([],[B1:[]:imp(B2:drs([B2:[]:Y],[B2:[]:not(B3:drs([],[B3:[]:eq(Y,X)]))]),B4:drs([],[B4:Index:rel(X,Y,Sym,0)]))])).
108
113
118
119semlex(n,Sym,Index,Att-[sem:'CON'|Att],Sem):-
120 option('--plural',true),
121 att(Att,pos,'NNS'), !,
122 att(Att,sense,Sense),
123 Sem = lam(X,B:drs([],[B:Index:pred(X,Sym,n,Sense),B:[]:card(X,2,ge)])).
124
125semlex(n,Sym,Index,Att-[sem:'CON'|Att],Sem):- !,
126 att(Att,sense,Sense),
127 Sem = lam(X,B:drs([],[B:Index:pred(X,Sym,n,Sense)])).
128
129
133
134semlex(n/pp,Sym,Index,Att-[sem:'ROL'|Att],Sem):-
135 att(Att,pos,Pos),
136 member(Pos,['NNP','NNPS']), !,
137 att(Att,namex,NE), neClassType(NE,Class,Type),
138 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:named(X,Sym,Class,Type)]),
139 app(P,X)))).
140
141
142semlex(n/pp,Sym,Index,Att-[sem:'ROL'|Att],Sem):- !,
143 att(Att,sense,Sense),
144 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,Sense)]),
145 app(P,X)))).
146
147semlex(n/pp,Sym,Index,Att1-[sem:'ROL'|Att2],Sem):-
148 att(Att1,sense,Sense),
149 roles(play,(s:dcl\np)/np,[_,Role],Att1-Att2), !,
150 Sem = lam(P,lam(X,merge(B:drs([[]:Y],
151 [B:Index:pred(Y,Sym,n,Sense),
152 B:[]:role(X,Y,Role,1),
153 B:[]:pred(X,person,n,1)]),
154 app(P,Y)))).
155
156semlex((n/pp)/pp,Sym,Index,Att-[sem:'ROL'|Att],Sem):- !,
157 att(Att,sense,Sense),
158 Sem = lam(P1,lam(P2,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,Sense)]),
159 merge(app(P1,X),app(P2,X)))))).
160
161semlex(((n/pp)/pp)/pp,Sym,Index,Att-[sem:'ROL'|Att],Sem):- !,
162 att(Att,sense,Sense),
163 Sem = lam(P1,lam(P2,lam(P3,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,Sense)]),
164 merge(app(P1,X),merge(app(P2,X),app(P3,X)))))))).
165
166semlex(n/(s:_\np),Sym,Index,Att-[sem:'CON'|Att],Sem):- !,
167 att(Att,sense,Sense),
168 closing(CC),
169 Sem = lam(VP,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,Sense)]),
170 app(app(VP,lam(P,app(P,X))),CC)))).
171
172semlex((n/(s:_\np))/pp,Sym,Index,Att-[sem:'ROL'|Att],Sem):- !,
173 att(Att,sense,Sense),
174 closing(CC),
175 Sem = lam(P,lam(VP,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,Sense)]),
176 merge(app(app(VP,lam(P,app(P,X))),CC),
177 app(P,X)))))).
178
179semlex((n/pp)/(s:_\np),Sym,Index,Att-[sem:'ROL'|Att],Sem):- !,
180 att(Att,sense,Sense),
181 closing(CC),
182 Sem = lam(VP,lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,Sense)]),
183 merge(app(app(VP,lam(P,app(P,X))),CC),
184 app(P,X)))))).
185
186
190
194
195semlex(n/n,Sym,Index,Att-[sem:'NIL'|Att],Sem):-
196 att(Att,pos,'DT'), !,
197 warning('wrongly classified determiner ~p at ~p',[Sym,Index]),
198 Sem = lam(P,lam(X,app(P,X))).
199
200semlex(Cat,many,Index,Att-[sem:'QUA'|Att],Sem):-
201 cat(Cat,n|n), !,
202 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,quantity,n,1)]),app(P,X)))).
203
204semlex(Cat,much,Index,Att-[sem:'QUA'|Att],Sem):-
205 cat(Cat,n|n), !,
206 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,amount,n,3)]),app(P,X)))).
207
208semlex(Cat,only,Index,Att-[sem:'EXC'|Att],Sem):-
209 cat(Cat,n|n), !,
210 \+ option('--semantics',amr), !,
211 Sem = lam(P,lam(X,merge(app(P,X),B1:drs([],[B1:[]:imp(merge(B2:drs([B2:Index:Y],[]),app(P,Y)),B3:drs([],[B3:[]:eq(X,Y)]))])))).
212
213
231
232
236
237semlex(Cat,Sym,Index,Att-[sem:'ALT'|Att],Sem):-
238 \+ option('--semantics',drg),
239 \+ option('--semantics',amr),
240 member(Sym,[other,previous,different]),
241 cat(Cat,n|n), !,
242 Sem = lam(P,lam(X,merge(app(P,X),
243 alfa(def,
244 merge(B1:drs([B1:[]:Y],[]),app(P,Y)),
245 B2:drs([],[B2:[]:not(B3:drs([],[B3:Index:eq(X,Y)]))]))))).
246
247
251
252semlex(Cat,Sym,Index,Att1-[sem:'EXG'|Att2],Sem):-
253 cat(Cat,n|n),
254 att(Att1,pos,'VBG'),
255 roles(Sym,s:dcl\np,[Role],Att1-Att2), !,
256 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],
257 [B:Index:pred(E,Sym,v,0),
258 B:[]:role(X,E,Role,-1)]),
259 app(P,X)))).
260
261
265
266semlex(Cat,Sym,Index,Att1-[sem:'EXT'|Att2],Sem):-
267 cat(Cat,n|n),
268 att(Att1,pos,'VBN'),
269 roles(Sym,s:pss\np,[Role],Att1-Att2), !,
270 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],
271 [B:Index:pred(E,Sym,v,0),
272 B:[]:role(X,E,Role,-1)]),
273 app(P,X)))).
274
275
279
280semlex(Cat,'%',Index,Att1-['UOM'|Att2],Sem):-
281 att(Att1,pos,'NN'),
282 cat(Cat,n|n), !,
283 semlex(Cat,percent,Index,Att1-Att2,Sem).
284
285semlex(Cat,Sym,Index,Att-[sem:'UOM'|Att],Sem):-
286 cat(Cat,n|n),
287 att(Att,pos,'$'), !,
288 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,n,1)]),app(P,X)))).
289
290semlex(Cat,'&',Index,Att-[sem:'ORG'|Att],Sem):-
291 cat(Cat,n|n),
292 att(Att,namex,Ne), neClassType(Ne,org,Type), !,
293 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:named(X,'&',org,Type)]),
294 app(P,X)))).
295
296semlex(Cat,Sym,Index,Att-[sem:'SCO'|Att],Sem):-
297 att(Att,pos,'CD'),
298 cat(Cat,n|n),
299 string2score(Sym,Score), !,
300 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:named(X,Score,sco,num)]),
301 app(P,X)))).
302
303semlex(Cat,Sym,Index,Att-[sem:'DOM'|Att],Sem):-
304 att(Att,pos,'CD'),
305 att(Att,namex,NE), neClass(NE,tim),
306 cat(Cat,n|n),
307 dofm(Sym,DID), !,
308 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:timex(X,date([]:'+',[]:'XXXX',[]:'XX',Index:DID))]),
309 app(P,X)))).
310
311semlex(Cat,Sym,Index,Att-[sem:'MOY'|Att],Sem):-
312 att(Att,pos,'NNP'),
313 att(Att,namex,NE), neClass(NE,tim),
314 cat(Cat,n|n),
315 month(Sym,MID), !,
316 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:timex(X,date([]:'+',[]:'XXXX',Index:MID,[]:'XX'))]),
317 app(P,X)))).
318
319semlex(Cat,YID,Index,Att-[sem:'YOC'|Att],Sem):-
320 att(Att,pos,'CD'),
321 att(Att,namex,NE),
322 neClass(NE,tim),
323 cat(Cat,n|n),
324 year(YID,Year), !,
325 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:timex(X,date([]:'+',Index:Year,[]:'XX',[]:'XX'))]),
326 app(P,X)))).
327
328semlex(Cat,Sym,Index,Att1-[sem:'REL'|Att2],Sem):- 329 att(Att1,pos,Pos),
330 member(Pos,['NN','NNS']),
331 cat(Cat,n|n), !,
332 ( att(Att1,relation,Rel), \+ Rel=unknown, !, Att2=Att1; Rel = of, Att2=[relation:of|Att1] ),
333 ( Rel = '=', !, RelCond = eq(X,Y); RelCond = rel(X,Y,Rel,0) ),
334 att(Att1,sense,Sense),
335 Sem = lam(P,lam(X,merge(B:drs([B:[]:Y],
336 [B:Index:pred(Y,Sym,n,Sense),
337 B:[]:RelCond]),
338 app(P,X)))).
339
340semlex(Cat,Sym,Index,Att1-[sem:'GPE'|Att2],Sem):- 341 cat(Cat,n|n),
342 att(Att1,pos,'JJ'),
343 att(Att1,namex,'gpe-nam'), !,
344 rel(of,Att1-Att2,Relation),
345 Sem = lam(P,lam(X,merge(B:drs([B:[]:Y],
346 [B:Index:named(Y,Sym,gpe,nam),
347 B:[]:rel(X,Y,Relation,1)]),
348 app(P,X)))).
349
361
362semlex(Cat,Sym,Index,Att1-[sem:Tag|Att2],Sem):- 363 cat(Cat,n|n),
364 att(Att1,pos,Pos),
365 member(Pos,['NNP','NNPS']), !,
366 att(Att1,namex,Ner), neClassType(Ner,Class,Type,Tag),
367 ( att(Att1,relation,Rel), \+ Rel=unknown, !, Att2=Att1; Rel = '=', Att2=[relation:Rel|Att1] ),
368 ( Rel = '=', !, RelCond = eq(X,Y); RelCond = rel(X,Y,Rel,0) ),
369 Sem = lam(P,lam(X,merge(B:drs([B:[]:Y],
370 [B:Index:named(Y,Sym,Class,Type),
371 B:[]:RelCond]),
372 app(P,X)))).
373
374semlex(Cat,Sym,Index,Att-[sem:Tag|Att],Sem):-
375 att(Att,pos,Pos),
376 member(Pos,['NNP','NNPS']),
377 cat(Cat,n|n), !,
378 att(Att,namex,Ner), neClassType(Ner,Class,Type,Tag),
379 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:named(X,Sym,Class,Type)]),
380 app(P,X)))).
381
382
386
387semlex(Cat,Sym,Index,Att-[sem:'QUA'|Att],Sem):-
388 cat(Cat,n|n),
389 string2digit(Sym,Digit), !,
390 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:card(X,Digit,eq)]),app(P,X)))).
391
392semlex(Cat,Sym,Index,Att-[sem:'QUA'|Att],Sem):-
393 cat(Cat,n|n),
394 string2digit(Sym,Digit), !,
395 Sem = lam(P,lam(X,merge(app(P,X),B:drs([],[B:Index:card(X,Digit,eq)])))).
396
397
415
416
420
421semlex(Cat,Sym,Index,Att-[sem:'MOR'|Att],Sem):-
422 att(Att,pos,'JJR'), \+ Sym=more,
423 option('--semantics',amr),
424 cat(Cat,n|n), !,
425 att(Att,sense,Sense),
426 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:rel(X,E,mod,1),B:Index:pred(E,Sym,a,Sense),B:[]:pred(E,more,r,1)]),app(P,X)))).
427
428semlex(Cat,Sym,Index,Att1-[sem:'MOR'|Att2],Sem):-
429 att(Att1,pos,'JJR'), \+ Sym=more,
430 cat(Cat,n|n), !,
431 att(Att1,sense,Sense),
432 roles(Sym,s:adj\np,[Role],Att1-Att2),
433 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:role(X,E,Role,-1),B:Index:pred(E,Sym,a,Sense),B:[]:pred(E,more,r,1)]),app(P,X)))).
434
435semlex(Cat,Sym,Index,Att-[sem:'TOP'|Att],Sem):-
436 att(Att,pos,'JJS'), \+ Sym=most,
437 option('--semantics',amr),
438 cat(Cat,n|n), !,
439 att(Att,sense,Sense),
440 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:rel(X,E,mod,1),B:Index:pred(E,Sym,a,Sense),B:[]:pred(E,most,r,1)]),app(P,X)))).
441
442semlex(Cat,Sym,Index,Att1-[sem:'TOP'|Att2],Sem):-
443 att(Att1,pos,'JJS'), \+ Sym=most,
444 cat(Cat,n|n), !,
445 att(Att1,sense,Sense),
446 roles(Sym,s:adj\np,[Role],Att1-Att2),
447 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:role(X,E,Role,-1),B:Index:pred(E,Sym,a,Sense),B:[]:pred(E,most,r,1)]),app(P,X)))).
448
458
459
463
464semlex(Cat,Sym,Index,Att-[sem:'IST'|Att],Sem):-
465 cat(Cat,n|n),
466 option('--semantics',amr), !,
467 att(Att,sense,Sense),
468 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:rel(X,E,mod,1),B:Index:pred(E,Sym,a,Sense)]),app(P,X)))).
469
470
474
475semlex(Cat,Sym,Index,Att1-[sem:'IST'|Att2],Sem):-
476 cat(Cat,n|n), !,
477 att(Att1,sense,Sense),
478 roles(Sym,s:adj\np,[Role],Att1-Att2), !,
479 Sem = lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:role(X,E,Role,-1),B:Index:pred(E,Sym,a,Sense)]),app(P,X)))).
480
481semlex(Cat,Sym,Index,Att1-[sem:'IST'|Att2],Sem):-
482 cat(Cat,(n|pp)|(n|pp)), !,
483 att(Att1,sense,Sense),
484 roles(Sym,s:adj\np,[Role],Att1-Att2), !,
485 Sem = lam(PP,lam(P,lam(X,merge(B:drs([B:[]:E],[B:[]:role(X,E,Role,-1),B:Index:pred(E,Sym,a,Sense)]),app(app(PP,P),X))))).
486
487
491
492semlex(Cat,Sym,Index,Att-[sem:'IST'|Att],Sem):-
493 cat(Cat,n|n), !,
494 att(Att,sense,Sense),
495 Sem = lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,a,Sense)]),app(P,X)))).
496
497semlex(Cat,Sym,Index,Att-[sem:'IST'|Att],Sem):-
498 cat(Cat,(n|pp)|(n|pp)), !,
499 att(Att,sense,Sense),
500 Sem = lam(PP,lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,a,Sense)]),app(app(PP,P),X))))).
501
502
506
509semlex(Cat,Sym,Index,Att-[sem:'MOR'|Att],Sem):-
510 Cat = ((n/n)/(n/n))\(s:adj\np), !,
511 att(Att,sense,Sense),
512 Sem = lam(M,lam(C,lam(P,lam(X,merge(app(P,X),
513 app(app(M,lam(Q,app(Q,X))),
514 lam(E,merge(B1:drs([B1:[]:Z],[]),
515 app(app(C,lam(Y,B2:drs([],[B2:Index:rel(E,Y,Sym,Sense)]))),Z))))))))).
516
519semlex(Cat,Sym,Index,Att-[sem:'MOR'|Att],Sem):-
520 Cat = (n/n)\(s:adj\np), !,
521 att(Att,sense,Sense),
522 Sem = lam(M,lam(P,lam(X,merge(B1:drs([B1:[]:Y],[]),
523 merge(app(P,Y),
524 app(app(M,lam(Q,app(Q,X))),lam(E,B:drs([],[B:Index:rel(E,Y,Sym,Sense)])))))))).
527
530semlex(Cat,_Sym,_Index,Att-[sem:'MOR'|Att],Sem):-
531 Cat = (n/n)/(s:adj\np), !,
532 closing(CC),
533 Sem = lam(VP,lam(N,lam(X,app(app(VP,lam(P,merge(app(P,X),app(N,X)))),CC)))).
534
538
539semlex(Cat,_Sym,_Index,Att-[sem:'NIL'|Att],Sem):-
540 att(Att,pos,'DT'),
541 member(Cat,[(n/n)/(n/n),(n\n)/(n\n),(n/n)\(n/n)]), !,
542 Sem = lam(Z,lam(P,lam(X,app(app(Z,P),X)))).
543
544
548
549semlex(Cat,Sym,Index,Att-[sem:'QUA'|Att],Sem):-
550 member(Cat,[(n/n)/(n/n),
551 (n\n)/(n\n),
552 (n/n)\(n/n)]),
553 string2digit(Sym,Digit), !,
554 Sem = lam(Z,lam(P,lam(X,merge(B:drs([],[B:Index:card(X,Digit,eq)]),
555 app(app(Z,P),X))))).
556
557
561
562semlex(Cat,Sym,Index,Att1-[sem:'TOP'|Att2],Sem):-
563 att(Att1,pos,'JJS'),
564 member(Cat,[(n/n)/(n/n), 565 (n/n)\(n/n)]), !, 566 att(Att1,sense,Sense),
567 roles(Sym,s:adj\np,[Role],Att1-Att2), !,
568 Sem = lam(Z,lam(P,lam(X,merge(app(app(Z,P),X),
569 B:drs([B:[]:E],[B:[]:role(X,E,Role,-1),
570 B:Index:pred(E,Sym,a,Sense),
571 B:[]:pred(E,most,r,1)]))))).
572
573semlex(Cat,Sym,Index,Att-[sem:'TOP'|Att],Sem):-
574 \+ option('--semantics',drg),
575 att(Att,pos,'JJS'),
576 member(Cat,[(n/n)/(n/n), 577 (n/n)\(n/n)]), !, 578 Sem = lam(Z,lam(P,lam(X,merge(app(app(Z,P),X),
579 B1:drs([],[B1:[]:imp(merge(B2:drs([B2:[]:Y],[B2:[]:not(B3:drs([],[B3:[]:eq(X,Y)]))]),
580 app(app(Z,P),Y)),
581 B4:drs([],[B4:Index:rel(X,Y,Sym,0)]))]))))).
582
586
587semlex(Cat,more,Index,Att-[sem:'MOR'|Att],Sem):-
588 member(Cat,[(n/n)/(n/n),(n/n)\(n/n)]), !,
589 Sem = lam(Z,lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,more,r,1)]),
590 app(app(Z,P),X))))).
591
592
596
597semlex(Cat,Sym,Index,Att-[sem:'INT'|Att],Sem):-
598 att(Att,pos,Pos),
599 member(Pos,['NNP','NNPS']),
600 member(Cat,[(n/n)/(n/n),
601 (n\n)/(n\n),
602 (n/n)\(n/n)]), !,
603 att(Att,namex,Ne), neClassType(Ne,Class,Type),
604 Sem = lam(Z,lam(P,lam(X,merge(B:drs([],[B:Index:named(X,Sym,Class,Type)]),
605 app(app(Z,P),X))))).
606
607semlex(Cat,Sym,Index,Att-[sem:'INT'|Att],Sem):-
608 member(Cat,[(n/n)/(n/n),
609 (n\n)/(n\n),
610 (n/n)\(n/n)]), !,
611 att(Att,sense,Sense),
612 Sem = lam(Z,lam(P,lam(X,merge(B:drs([],[B:Index:pred(X,Sym,r,Sense)]),
613 app(app(Z,P),X))))).
614
615semlex(Cat,Sym,Index,Att-[sem:'INT'|Att],Sem):-
616 Cat = ((n/n)/(n/n))/((n/n)/(n/n)), !,
617 att(Att,sense,Sense),
618 Sem = lam(M,lam(A,lam(P,lam(X,app(app(app(M,A),lam(Y,merge(B:drs([],[B:Index:pred(Y,Sym,r,Sense)]),app(P,Y)))),X))))).
619
623
626semlex(Cat,except,Index,Att-[sem:'NOT'|Att],Sem):-
627 Cat = (n\n)/pp, !,
628 Sem = lam(PP,lam(P,lam(X,merge(app(P,X),B:drs([],[B:Index:not(app(PP,X))]))))).
629
630semlex(Cat,Sym,Index,Att-[sem:'IST'|Att],Sem):-
631 Cat = (n\n)/pp, !,
632 att(Att,sense,Sense),
633 Sem = lam(PP,lam(P,lam(X,merge(app(P,X),merge(B:drs([],[B:Index:pred(X,Sym,r,Sense)]),app(PP,X)))))).
634
637semlex(Cat,to,Index,Att-[sem:'DIS'|Att],Sem):-
638 Cat = (n\n)/n, !,
639 Sem = lam(N,lam(P,lam(X,B:drs([],[B:Index:or(app(P,X),app(N,X))])))).
640
643semlex(Cat,Sym,Index,Att1-[sem:'AND'|Att2],Sem):-
644 member(Sym,[a,an]),
645 Cat = (n\n)/n, !,
646 rel(for,Att1-Att2,Relation),
647 Sem = lam(N,lam(P,lam(X,B1:drs([],[B1:[]:imp(merge(B2:drs([B2:[]:Y],[]),app(N,Y)),
648 merge(B3:drs([],[B3:Index:rel(X,Y,Relation,0)]),app(P,X)))])))).
649
650semlex(Cat,Sym,Index,Att-[sem:'PRX'|Att],Sem):-
651 option('--semantics',amr),
652 member(Sym,[this,these]),
653 Cat = (n\n)/n, !,
654 Sem = lam(N,lam(P,lam(X,alfa(def,merge(B1:drs([B1:[]:Y],[B1:Index:pred(Y,this,r,2)]),app(N,Y)),
655 merge(B2:drs([],[B2:[]:rel(X,Y,rel,0)]),app(P,X)))))).
656
657semlex(Cat,Sym,Index,Att-[sem:'DST'|Att],Sem):-
658 option('--semantics',amr),
659 member(Sym,[that,those]),
660 Cat = (n\n)/n, !,
661 Sem = lam(N,lam(P,lam(X,alfa(def,merge(B1:drs([B1:[]:Y],[B1:Index:pred(Y,that,r,2)]),app(N,Y)),
662 merge(B2:drs([],[B2:[]:rel(X,Y,rel,0)]),app(P,X)))))).
663
664semlex(Cat,Sym,Index,Att-[sem:'PRX'|Att],Sem):-
665 member(Sym,[the,this,these]),
666 Cat = (n\n)/n, !,
667 Sem = lam(N,lam(P,lam(X,alfa(def,merge(B1:drs([B1:[]:Y],[]),app(N,Y)),
668 merge(B2:drs([],[B2:Index:rel(X,Y,rel,0)]),app(P,X)))))).
669
670semlex(Cat,Sym,Index,Att-[sem:'DST'|Att],Sem):-
671 member(Sym,[that,those]),
672 Cat = (n\n)/n, !,
673 Sem = lam(N,lam(P,lam(X,alfa(def,merge(B1:drs([B1:[]:Y],[]),app(N,Y)),
674 merge(B2:drs([],[B2:Index:rel(X,Y,rel,0)]),app(P,X)))))).
675
676semlex(Cat,Sym,Index,Att-[sem:'INT'|Att],Sem):-
677 Cat = (n\n)/n, !,
678 Sem = lam(N,lam(P,lam(X,merge(merge(B1:drs([B1:[]:Y],[]),app(N,Y)),
679 merge(B2:drs([],[B2:Index:rel(X,Y,Sym,0)]),app(P,X)))))).
680
681semlex((n/n)/n,Sym,Index,Att-[sem:'UOM'|Att],Sem):-
682 att(Att,pos,'$'), !,
683 Sem = lam(N,lam(P,lam(X,merge(merge(B1:drs([B1:[]:Y],[B1:Index:pred(Y,Sym,n,1)]),app(N,Y)),
684 merge(B2:drs([],[B2:[]:rel(X,Y,rel,0)]),app(P,X)))))).
685
686semlex(Cat,Sym,Index,Att-[sem:'INT'|Att],Sem):-
687 Cat = (n/n)/n, !,
688 att(Att,sense,Sense),
689 Sem = lam(N,lam(P,lam(X,merge(merge(B1:drs([B1:[]:Y],[B1:Index:pred(Y,Sym,n,Sense)]),app(N,Y)),
690 merge(B2:drs([],[B2:[]:rel(X,Y,rel,0)]),app(P,X)))))).
691
692semlex(((n/n)\(n/n))/(n/n),_,Index,Att-[sem:'DIS'|Att],Sem):- !,
693 Sem = lam(M2,lam(M1,lam(P,lam(X,B:drs([],[B:Index:or(app(app(M1,P),X),
694 app(app(M2,P),X))]))))).
695
696semlex(((n/n)\(n/n))/n,_,Index,Att-[sem:'DIS'|Att],Sem):- !,
697 Sem = lam(N,lam(M,lam(P,lam(X,B:drs([],[B:Index:or(app(app(M,P),X),
698 merge(app(N,X),app(P,X)))]))))).
699
700semlex(((n/pp)\(n/pp))/n,_,Index,Att-[sem:'INT'|Att],Sem):- !,
701 Sem = lam(N,lam(RN,lam(PP,lam(X,merge(B:drs([B:[]:Y],[B:Index:rel(X,Y,rel,0)]),
702 merge(app(N,Y),app(app(RN,PP),X))))))).
703
704
705
709
710semlex(Cat,Sym,Index,Att-[sem:'AND'|Att],Sem):-
711 member(Cat,[(n\n)/np,
712 (n/n)/np,
713 (n/n)\np,
714 (n\n)\np]), !,
715 Sem = lam(Q,lam(P,lam(X,merge(app(P,X),app(Q,lam(Y,B:drs([],[B:Index:rel(X,Y,Sym,0)]))))))).
716
717semlex(Cat,Sym,Index,Att-[sem:'AND'|Att],Sem):-
718 Cat = ((n/(s:to\np))\(n/(s:to\np)))/np, !,
719 Sem = lam(Q,lam(N,lam(VP,lam(X,merge(app(app(N,VP),X),app(Q,lam(Y,B:drs([],[B:Index:rel(X,Y,Sym,0)])))))))).
720
721semlex(Cat,Sym,Index,Att-[sem:'AND'|Att],Sem):-
722 member(Cat,[((n/n)\(n/n))/np,
723 ((n/pp)\(n/pp))/np]), !,
724 Sem = lam(Q,lam(Z,lam(P,lam(Y,app(app(Z,lam(X,merge(app(Q,lam(Y,B:drs([],[B:Index:rel(X,Y,Sym,0)]))),
725 app(P,X)))),Y))))).
726
727
731
732semlex(Cat,Sym,Index,Att1-[sem:'SUB'|Att2],Sem):-
733 member(Cat,[n/s:em,n/s:qem,n/s:bem]), !,
734 att(Att1,sense,Sense),
735 roles(Sym,(s:dcl\np)/s:_,[Role,_],Att1-Att2),
736 Sem = lam(S,lam(X,merge(B1:drs([],
737 [B1:Index:pred(X,Sym,n,Sense)]),
738 app(S,lam(E,B2:drs([],[B2:[]:role(X,E,Role,1)])))))).
739
740semlex(Cat,Sym,Index,Att1-[sem:'SUB'|Att2],Sem):-
741 Cat = n/s:_, !,
742 att(Att1,sense,Sense),
743 roles(Sym,(s:dcl\np)/s:_,[Role,_],Att1-Att2),
744 plosing(CC),
745 Sem = lam(S,lam(X,B:drs([B:[]:K],
746 [B:Index:pred(X,Sym,n,Sense),
747 B:[]:role(X,K,Role,1),
748 B:[]:prop(K,app(S,CC))]))).
749
750semlex(Cat,Sym,Index,Att1-[sem:'SUB'|Att2],Sem):-
751 Cat = (n/pp)/s:_, !,
752 att(Att1,sense,Sense),
753 plosing(CC),
754 roles(Sym,(s:dcl\np)/s:_,[Role,_],Att1-Att2),
755 Sem = lam(S,lam(P,lam(X,merge(B:drs([B:[]:K],
756 [B:Index:pred(X,Sym,n,Sense),
757 B:[]:rel(X,K,Role,0),
758 B:[]:prop(K,app(S,CC))]),app(P,X))))).
759
760
764
765semlex(n/np,Sym,Index,Att-[sem:'AND'|Att],Sem):- !,
766 att(Att,sense,Sense),
767 Sem = lam(NP,lam(X,merge(B1:drs([],[B1:Index:pred(X,Sym,n,Sense)]),
768 app(NP,lam(Y,B2:drs([],[B2:[]:rel(X,Y,rel,0)])))))).
769
770
774
775semlex(Cat,Sym,_Index,Att1-[sem:'AND'|Att2],Sem):-
776 member(Cat,[(n\n)/(s:to\np), (n\n)/(s:to/np)]), !,
777 roles(Sym,(s:dcl\np)/s:_,[Role,_],Att1-Att2),
778 Sem = lam(VP,lam(N,lam(X,merge(app(N,X),
779 app(app(VP,
780 lam(P,app(P,X))),
781 lam(Y,B:drs([],[B:[]:role(X,Y,Role,1)]))))))).
782
783semlex(Cat,_Sym,_Index,Att-[sem:'AND'|Att],Sem):-
784 member(Cat,[(n\n)/(s:_\np), (n\n)/(s:_/np)]), !,
785 closing(CC),
786 Sem = lam(VP,lam(N,lam(X,merge(app(N,X),
787 app(app(VP,
788 lam(P,app(P,X))),
789 CC))))).
790
791semlex(((n\n)/(s:dcl\np))/n,_,Index,Att1-[sem:'AND'|Att2],Sem):- !,
792 closing(CC),
793 rel(of,Att1-Att2,Relation),
794 Sem = lam(N,lam(VP,lam(P,lam(X,merge(app(P,X),app(app(VP,lam(P,merge(B:drs([B:[]:Y],[B:Index:rel(Y,X,Relation,1)]),
795 merge(app(N,Y),app(P,Y))))),CC)))))).
796
797semlex((n\n)/s:_, Sym,Index,Att-[sem:'SUB'|Att],Sem):- !,
798 plosing(CC),
799 Sem = lam(S,lam(P,lam(X,merge(B:drs([B:[]:Z],[B:Index:rel(X,Z,Sym,0),
800 B:[]:prop(Z,app(S,CC))]),
801 app(P,X)))))