; Semantic Rewriting Rule set ; author: Adam Pease - apease@articulatesoftware.com ; implements the semantic rewriting of CELT, as described in ; Pease, A., and Li, J. (2010) Controlled English to Logic Translation. ; In Theory and Applications of Ontology, ed. Roberto Poli, ; Michael Healy, and Achilles Kameas, Springer, ISBN: 978-90-481-8846-8. ; This software is released under the GNU Public License ; . ;; ----------------------------------------------------------------------------------------------------------------- ;; statives ;; ----------------------------------------------------------------------------------------------------------------- ; agree - ReachingAgreement ; believe - believes Formula ; belong ; concern ; consist ; contain ; depend ; deserve ; disagree ; dislikes ; doubt ; feel ; fit ; hates nsubj(?P,?A), dobj(?P,?O), +sumo(dislikes,?P) ==> (dislikes(?A,?O)). ; hear ; imagine ; impress ; include ; involve ; know ; like ; love ; matter ; mean ; measure ; mind ; need ; owe ; owns nsubj(?P,?A), dobj(?P,?O), sumo(possesses,?P) ==> (possesses(?A,?O)). ; prefer ; promise ; realise ; recognise ; remember ; seem ; sound ; suppose ; surprise ; understand ; want ; weigh ; wish ; writes ; +sumo(?C,?X), isChildOf(?C,ContentDevelopment) ==> (authors(?A,?X)). ;---Demo2 - located--- num(pm*,?X) ==> !. ;sumo(?T,?X), isInstanceOf(?T,Entity) ==> {(names ?X ?T)}. prep_in(located*,?Y), amod(?X,located*), sumo(?T,?Y), isInstanceOf(?T,LandArea) ==> {(located ?X ?T)}. nsubj(located*,?X), advmod(located*,where*) ==> {(located ?X ?WH)}. prep_from(?X,?Y), sumo(?T,?Y), isSubclass(?T,Organism) ==> (origin(?X,?T)). prep_including(?V,?X), sumo(?T,?X), isSubclass(?T,Substance) ==> {(patient ?V ?T)}. ; TODO: to specific since Penicillium_Fungi is not in lexicon as part of speech 1 prep_from(?V,Penicillium_Fungi*) ==> {(origin ?V Fungus)}. det(?A,which*), nsubjpass(?V,?A), auxpass(?V,be*), sumo(?T,?A) ==> {(patient ?V ?which)}. det(?A,which*), nsubjpass(?V,?A), sumo(?T,?A) ==> {(patient ?V ?which)}. ; leader sumo(?T,?Y), prep_of(leader*,?Y), rcmod(?A,leader*), nsubj(?A,?X) ==> {(leader ?T ?X)}. sumo(?T,?Y), prep_of(leader*,?Y), nsubj(who*,leader*) ==> {(and (leader ?T ?X) (names ?X ?WH))}. sumo(?T,?Y), prep_of(leader*,?Y), nsubj(?X,leader*) ==> {(leader ?T ?X)}. sumo(Nation,?X), nn(?Y,?X), prep_of(dictator*,?Y), prep_as(be*,dictator*), nsubj(be*,?A) ==> {(dictator ?X ?A)}. sumo(Nation,?X), prep_of(dictator*,?X), nsubj(who*,dictator*) ==> {(and (dictator ?X ?Y) (names ?Y ?WH))}. prep_of(dictator*,?X), prep_as(be*,dictator*), nsubj(be*,?A), sumo(Nation,?X) ==> {(dictator ?X ?A)}. ; author names(?P,?N1), dobj(?W,?P), nsubj(?W,?A), sumo(Writing, ?W), names(?A,?N2) ==> {(author ?N1 ?N2)}. dobj(?W,?P), nsubj(?W,who*), sumo(Writing, ?W) ==> {(and (author ?P ?X) (names ?X ?WH))}. ;---Demo2--- ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition: about ;; ----------------------------------------------------------------------------------------------------------------- ;; --------------------- ;; about as "refers to" ;; --------------------- nsubj(be*,?X), prep_about(be*,?Y), sumo(?C,?Y), isSubclass(?C,Process) ==> {(and (instance ?Y ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(ContentDevelopment,?X) ==> {(and (instance ?X ContentDevelopment) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,ContentDevelopment) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Directing,?X) ==> {(and (instance ?X Directing) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Directing) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(ExpressingApproval,?X) ==> {(and (instance ?X ExpressingApproval) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,ExpressingApproval) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(ExpressingDisapproval,?X) ==> {(and (instance ?X ExpressingDisapproval) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,ExpressingDisapproval) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Learning,?X) ==> {(and (instance ?X Learning) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Learning) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Reasoning,?X) ==> {(and (instance ?X Reasoning) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Reasoning) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Selecting,?X) ==> {(and (instance ?X Selecting) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Selecting) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Uncovering,?X) ==> {(and (instance ?X Uncovering) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Uncovering) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Vocalizing,?X) ==> {(and (instance ?X Vocalizing) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Vocalizing) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(conclusion, ?X) ==> {(and (instance ?X conclusion) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Cooperation,?X) ==> {(and (instance ?X Cooperation) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Cooperation) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(EducationalProcess,?X) ==> {(and (instance ?X EducationalProcess) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,EducationalProcess) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(FactualText,?X) ==> {(and (instance ?X FactualText) (refers ?X ?Y))}. prep_about(?X,?Y), +sumo(?C,?X), isSubclass(?C, FactualText) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(LinguisticExpression,?X) ==> {(and (instance ?X LinguisticExpression) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,LinguisticExpression) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(ProbabilityRelation,?X) ==> {(and (instance ?X ProbabilityRelation) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,ProbabilityRelation) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Promise,?X) ==> {(and (instance ?X Promise) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Promise) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Proposition,?X) ==> {(and (instance ?X Proposition) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Proposition) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Supposition,?X) ==> {(and (instance ?X Supposition) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Supposition) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Communication,?X) ==> {(and (instance ?X Communication) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Communication) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?Z,?Y), dobj(?Z,?X), sumo(?C,?X), isSubclass(?C,Communication) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(PropositionalAttitude,?X) ==> {(and (instance ?X PropositionalAttitude) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C, PropositionalAttitude) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isInstanceOf(?C, PropositionalAttitude) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(PsychologicalAttribute,?X) ==> {(and (instance ?X PsychologicalAttribute) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,PsychologicalAttribute) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(PsychologicalProcess,?X) ==> {(and (instance ?X PsychologicalProcess) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,PsychologicalProcess) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(SubjectiveAssessmentAttribute,?X) ==> {(and (instance ?X SubjectiveAssessmentAttribute) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,SubjectiveAssessmentAttribute) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(ContentBearingObject,?X) ==> {(and (instance ?X ContentBearingObject) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,ContentBearingObject) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(ContentBearingPhysical,?X) ==> {(and (instance ?X ContentBearingPhysical) (refers ?X ?Y))}. prep_about(?X,?Y), +sumo(?C,?X), isSubclass(?C,ContentBearingPhysical) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(IntentionalProcess,?X) ==> {(and (instance ?X IntentionalProcess) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C, IntentionalProcess) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prepc_about(?X,?Y), sumo(IntentionalProcess,?X) ==> {(and (instance ?X IntentionalProcess) (refers ?X ?Y))}. prepc_about(?X,?Y), sumo(?C,?X), isSubclass(?C,IntentionalProcess) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Artifact,?X) ==> {(and (instance ?X Artifact) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Artifact) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(EmotionalState,?X) ==> {(and (instance ?X EmotionalState) (refers ?X ?Y))}. prep_about(?X,?Y), +sumo(?C,?X), isSubclass(?C,EmotionalState) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubAttribute(?C,?D), isInstanceOf(?D,EmotionalState) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubAttribute(?C,Unhappiness) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Process,?X) ==> {(and (instance ?X Process) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Process) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(Quantity,?X) ==> {(and (instance ?X Quantity) (refers ?X ?Y))}. prep_about(?X,?Y), sumo(?C,?X), isSubclass(?C,Quantity) ==> {(and (instance ?X ?C) (refers ?X ?Y))}. prep_about(?X,?Y), +equals(True,?X) ==> (refers(?X,?Y)). prep_about(?X,?Y), +equals(False,?X) ==> (refers(?X,?Y)). nsubj(write*,?S), dobj(write*,?X), ccomp(write*,be*), prep_about(be*,?Y), sumo(?C,?X), isSubclass(?C,ContentBearingObject) ==> {(and (authors ?S ?X) (instance ?X ?C) (refers ?X ?Y))}. ;; ----------------------- ;; about as "around/near" ;; ----------------------- nsubj(?V,?X), advmod(?V,about*), prep_in(?V,?L), +sumo(?C,?L), isSubclass(?C,GeographicArea) ==> {(and (located ?X,?L) (orientation ?X ?L Near))}. ;; ------------------------- ;; about as "approximately" ;; ------------------------- ;; wide ---------- nsubj(wide*,?Subject), cop(wide*,be*), advmod(wide*,about*), pobj(about*,?UnitOfMeasure), equals(?EquivalentUnit,?UnitOfMeasure), unit(measure1,?ClassOfUnitOfMeasure), measure(?Subject,measure1), value(measure1,?Number), valueToken(?Number,?NumberCategory), num(?UnitOfMeasure,?NumberCategory), sumo(?ClassOfAttribute,wide*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute) ==> {(and (width ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. nsubj(wide*,?Subject), cop(wide*,be*), advmod(wide*,about*), pobj(about*,?UnitOfMeasure), equals(?EquivalentUnit,?UnitOfMeasure), unit(measure1,?ClassOfUnitOfMeasure), measure(?Subject,measure1), value(measure1,?Number), valueToken(?Number,?NumberCategory), num(?UnitOfMeasure,?NumberCategory), sumo(?ClassOfAttribute,wide*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute) ==> {(and (width ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. nsubj(wide*,?Subject), cop(wide*,be*), advmod(wide*,about*), num(?UnitOfMeasure,?NumberCategory), pobj(about*,?UnitOfMeasure), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), sumo(?ClassOfAttribute,wide*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute), value(measure1,?Number), measure(?Subject,measure1), valueToken(?Number,?NumberCategory), unit(measure1,?ClassOfUnitOfMeasure) ==> {(and (width ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. ;; deep ---------- ;; nsubj(be*,?Subject), num(?UnitOfMeasure,?NumberCategory), prep_about(be*,?UnitOfMeasure), advmod(be*,deep*), ;; sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), sumo(?ClassOfAttribute,deep*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute), ;; value(measure1,?Number), valueToken(?Number,?NumberCategory), measure(?Subject,measure1), unit(measure1,?ClassOfUnitOfMeasure) ;; ==> {(and (depth ?Subject ?Y) (equal ?X ((TopFn ?Subject) (BottomFn ?Subject) ?Number)) (approximateValue ?X ?Y))}. ;; nsubj(deep*,?Subject), cop(deep*,be*), advmod(deep*,about*), num(?UnitOfMeasure,?NumberCategory), pobj(about*,?UnitOfMeasure), ;; sumo(?ClassOfAttribute,deep*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute), equals(?EquivalentUnit,?UnitOfMeasure), ;; unit(measure1,?ClassOfUnitOfMeasure), valueToken(?Number,?NumberCategory), measure(?subject,measure1), value(measure1,?Number) ;; ==> {(and (depth ?Subject ?Y) (equal ?X ((TopFn ?Subject) (BottomFn ?Subject) ?Number)) (approximateValue ?X ?Y))}. ;; long ---------- nsubj(be*,?Subject), advmod(be*,about*), num(?UnitOfMeasure,?NumberCategory), pobj(about*,?UnitOfMeasure), advmod(be*,long*), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), sumo(SubjectiveAssessmentAttribute, long*), unit(measure1,?ClassOfUnitOfMeasure), value(measure1,?Number), measure(?Subject,measure1), valueToken(?Number,?NumberCategory) ==> {(and (length ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. nsubj(be*,?Subject), prep(be*,about*), num(?UnitOfMeasure,?NumberCategory), npadvmod(long*,?UnitOfMeasure), pcomp(about*,long*), sumo(?ClassOfNumberCategory,?NumberCategory), isSubclass(?ClassOfNumberCategory,Number), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), sumo(SubjectiveAssessmentAttribute,long*), unit(measure1,?ClassOfUnitOfMeasure),value(measure1,?Number), measure(?Subject,measure1), valueToken(?Number,?NumberCategory) ==> {(and (length ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. ;; thick ---------- ;nsubj(thick-8,panel-3), cop(thick-8,is-4), advmod(thick-8,about-5), num(inches-7,3-6), pobj(about-5,inches-7), ;sumo(Putting,panel-3), sumo(Inch,inches-7), sumo(Wood,wooden-2), value(measure1,3), unit(measure1,Inch), ;valueToken(3,3-6), measure(panel-3,measure1) ;nsubj(thick*,?Subject), cop(thick*,be*), advmod(thick*,about*), num(?UnitOfMeasure,?NumberCategory), pobj(about*,?UnitOfMeasure), ;sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), value(measure1,?Number), unit(measure1,?ClassOfUnitOfMeasure), ;valueToken(?Number,?NumberCategory), measure(?Subject,measure1) ;==> {(and (width ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. ;; tall ---------- nsubj(tall*,?Subject), cop(tall*,be*), advmod(tall*,about*), pobj(about*,?UnitOfMeasure), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), unit(measure1,?ClassOfUnitOfMeasure), measure(?Subject,measure1), value(measure1,?Number), sumo(?ClassOfAttribute,tall*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute), sumo(Making,?Subject) ==> {(and (height ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y)) (instance ?Subject Building)}. nsubj(tall*,?Subject), cop(tall*,be*), advmod(tall*,about*), pobj(about*,?UnitOfMeasure), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), unit(measure1,?ClassOfUnitOfMeasure), measure(?Subject,measure1), value(measure1,?Number), sumo(?ClassOfAttribute,tall*), isSubclass(?ClassOfAttribute,SubjectiveAssessmentAttribute) ==> {(and (height ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. ;; high ---------- nsubj(high*,?Subject), cop(high*,be*), advmod(high*,about*), num(?UnitOfMeasure,?NumberCategory), pobj(about*,?UnitOfMeasure), sumo(Motion,high*), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), measure(?Subject,measure1), unit(measure1,?ClassOfUnitOfMeasure), value(measure1,?Number), valueToken(?Number,?NumberCategory), sumo(Making,?Subject) ==> {(and (height ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y)) (instance ?Subject Building)}. nsubj(high*,?Subject), cop(high*,be*), advmod(high*,about*), num(?UnitOfMeasure,?NumberCategory), pobj(about*,?UnitOfMeasure), sumo(Motion,high*), sumo(?ClassOfUnitOfMeasure,?UnitOfMeasure), measure(?Subject,measure1), unit(measure1,?ClassOfUnitOfMeasure), value(measure1,?Number), valueToken(?Number,?NumberCategory) ==> {(and (height ?Subject ?Y) (equal ?X (MeasureFn ?Number ?ClassOfUnitOfMeasure)) (approximateValue ?X ?Y))}. ;; old ---------- ;subj(old-6,Steve-1), cop(old-6,is-2), advmod(old-6,about-3), num(years-5,40-4), pobj(about-3,years-5), ;sumo(SubjectiveAssessmentAttribute,old-6), equals(YearDuration,years-5) ;nsubj(old*,?Subject), cop(old*,be*), advmod(old*,about*), num(years*,?Number), pobj(about*,years*), equals(YearDuration,years*), ;sumo(SubjectiveAssessmentAttribute,old*) ;==> {(and (age ?Subject ?Y) (equal ?X (MeasureFn ?Number Year)) (approximateValue ?X ?Y))}. ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition: around ;; ----------------------------------------------------------------------------------------------------------------- prep_around(?V,?Y), sumo(Object,?Y) ==> {(traverses ?V ?Y)}. ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition: in ;; ----------------------------------------------------------------------------------------------------------------- ;; born in ---------- ; ---Demo2: begin--- prep_in(be_bear*,?Y), tense(PAST,be_bear*), nsubjpass(be_bear*,?X), names(?X,?N), sumo(?T,?Y), isInstanceOf(?T,Nation) ==> {(birthplace ?N ?T)}. ; ---Demo2: end--- prep_in(be_bear*,?Y), tense(PAST,be_bear*), nsubjpass(be_bear*,?X) ==> {(birthplace ?X ?Y)}. ; ---Demo2: begin--- tense(PAST,be*), nsubjpass(bear*,?WH), sumo(Attribute,bear*), advmod(bear*,where-1), auxpass(bear*,be*), names(?WH,?N) ==> {(birthplace ?N ?Y)}. ; ---Demo2: end--- tense(PAST,be*), nsubjpass(bear*,?WH), sumo(Attribute,bear*), advmod(bear*,where-1), auxpass(bear*,be*) ==> {(birthplace ?WH ?Y)}. ;; result in ---------- sumo(result,result*), nsubj(result*,?X), prep_in(result*,?Y) ==> {(causes ?X ?Y)}. ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition: of ;; ----------------------------------------------------------------------------------------------------------------- ;; of as "about" ---------- prep_of(?X,?A), sumo(?C,?X), isSubclass(?C,Proposition), possessive(?A,?P), poss(?Y,?B), conj_and(?X,?Y) ==> {(and (instance ?X ?C) (refers ?X ?Y) (refers ?Y ?A) (refers ?Y ?B))}. prep_of(?X,?Y), sumo(?C,?X), isSubclass(?C,Proposition) ==> {(and (instance ?X ?C) (refers ?X,?Y))}. ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition: out of ;; ----------------------------------------------------------------------------------------------------------------- ;; run out of ---------- nsubj(run*,?SUBJECT), prep_out_of(run*,?RESOURCE), sumo(Running,run*), sumo(?CLASS,?RESOURCE) ==> {(and (instance ?PROCESS Process) (patient ?PROCESS ?SUBJECT) (instance ?RESOURCE ?CLASS) (resourceExhausted ?PROCESS ?RESOURCE)))}. ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition (aux): to ;; ----------------------------------------------------------------------------------------------------------------- ;; try to ------------ aux(?Y,to*), xcomp(?X,?Y), sumo(IntentionalProcess,?X) ==> { (and (instance ?X IntentionalProcess) (hasPurpose ?X ?Y)) }. ;; ----------------------------------------------------------------------------------------------------------------- ;; preposition: whilte ;; ----------------------------------------------------------------------------------------------------------------- ;; Y while X ------------ prepc_while(?Y,?X) ==> { (equal (WhenFn ?Y) (WhenFn ?X)) }. ;; ----------------------------------------------------------------------------------------------------------------- ;; Q/A ;; ----------------------------------------------------------------------------------------------------------------- ;; X found (establish) Y of Z ---------- prep_of(?Y,?Z), names(?X,?NAME), dobj(?V,?Y), nsubj(?V,?X) ==> {(and (agent ?V ?X) (patient ?V ?Y) (names ?X ?NAME))}. prep_of(?Y,?Z), dobj(?V,?Y), nsubj(?V, who-1) ==> {(and (agent ?V ?X) (patient ?V ?Y) (names ?X ?WH))}. ;; A receive (recipient of) B including C => A receive C ---------- names(?A,?NAME), nsubj(recipient*,?A), cop(recipient*,be*), prep_including(?B,?C), prep_of(recipient*,?B), num(?C,?YR), year(time-1, ?YEAR) ==> {(and (and (names ?A ?NAME) (instance ?GET Getting) (agent ?GET ?A) (patient ?GET ?C)) (time ?GET (YearFn ?YEAR)))}. dobj(receive*,?C), sumo(Getting,receive*), nsubj(receive*,who-1), prep_in(?C,?YR), time(receive*,time-1), year(time-1,?YEAR) ==> {(and (and (names ?A ?WH) (instance ?GET Getting) (agent ?GET ?A) (patient ?GET ?C)) (time ?GET (YearFn ?YEAR)))}. names(?A,?NAME), sumo(Getting,receive*), nsubj(receive*,?A), dobj(receive*,?C), advmod(?V,when-1), aux(?V,do*) ==> {(and (and (names ?A ?NAME) (instance ?GET Getting) (agent ?GET ?A) (patient ?GET ?C)) (time ?GET (YearFn ?WH)))}. ;; ----------------------------------------------------------------------------------------------------------------- ;; measures ;; ----------------------------------------------------------------------------------------------------------------- ; Long, wide, deep, thick, tall, high, and old are the only adjectives used as measure words nsubj(wide*,?S), cop(wide*,be*), sumo(?C,wide*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(width ?S (MeasureFn ?U ?V))}. ; nsubj(deep*,?S), cop(deep*,be*), sumo(?C,deep*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(depth (TopFn ?S) (BottomFn ?S) ?X)}. nsubj(long*,?S), cop(long*,be*), sumo(?C,long*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(length ?S (MeasureFn ?U ?V))}. nsubj(thick*,?S), cop(thick*,be*), sumo(?C,thick*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(width ?S (MeasureFn ?U ?V))}. nsubj(tall*,?S), cop(tall*,be*), sumo(?C,tall*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(height ?S (MeasureFn ?U ?V))}. nsubj(high*,?S), cop(high*,be*), sumo(?C,high*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(height ?S (MeasureFn ?U ?V))}. nsubj(old*,?S), cop(old*,be*), sumo(?C,old*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(age ?S (MeasureFn ?U ?V))}. nsubj(be*, ?S), npadvmod(wide*, ?U2), advmod(be*,wide*), sumo(?C,wide*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(width ?S (MeasureFn ?U ?V))}. ; nsubj(be*, ?S), npadvmod(deep*, ?U2), advmod(be*,deep*), sumo(?C,deep*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(depth (TopFn ?S) (BottomFn ?S) ?X)}. nsubj(be*, ?S), npadvmod(long*, ?U2), advmod(be*,long*), sumo(?C,long*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(length ?S (MeasureFn ?U ?V))}. nsubj(be*, ?S), npadvmod(thick*, ?U2), advmod(be*,thick*), sumo(?C,thick*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(width ?S (MeasureFn ?U ?V))}. nsubj(be*, ?S), npadvmod(tall*, ?U2), advmod(be*,tall*), sumo(?C,tall*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(height ?S (MeasureFn ?U ?V))}. nsubj(be*, ?S), npadvmod(high*, ?U2), advmod(be*,high*), sumo(?C,high*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(height ?S (MeasureFn ?U ?V))}. nsubj(be*, ?S), npadvmod(old*, ?U2), advmod(be*,old*), sumo(?C,old*), unit(?M,?U), value(?M,?V), measure(?S,?M) ==> {(age ?S (MeasureFn ?U ?V))}. ;; ----------------------------------------------------------------------------------------------------------------- ;; prepositions ;; ----------------------------------------------------------------------------------------------------------------- ;{isCELTclass(?X,Person)} ==> (isCELTclass(?X,Person)). ;{isCELTclass(?X,Time)} ==> (isCELTclass(?X,Time)). ;{isSubclass(?X,Object)} ==> (isSubclass(?X,Time)). prep(interested*,in*), sumo(?C,interested*), nsubj(?R,?S), cop(interested*,be*) ==> {(inScopeOfInterest ?S ?O)}. prep(interested*,in*), sumo(?C,interested*), nsubj(?R,?S), cop(interested*,is*) ==> {(inScopeOfInterest ?S ?O)}. prep(interested*,in*), sumo(?C,interested*), nsubj(?R,?S), cop(interested*,was*) ==> {(inScopeOfInterest ?S ?O)}. prep(interested*,in*), sumo(?C,interested*), nsubj(?R,?S), cop(interested*,were*) ==> {(inScopeOfInterest ?S ?O)}. prep_in(interest*,?W), sumo(inScopeOfInterest,interest*), nsubjpass(interest*,?A) ==> {(inScopeOfInterest ?A ?W)}. prep_in(interest*,?W), sumo(inScopeOfInterest,interest*), nsubj(interest*,?A) ==> {(inScopeOfInterest ?A ?W)}. prep(interested*,in*), sumo(inScopeOfInterest,interested*), nsubj(interested*,?A), pobj(interested*,?W) ==> {(inScopeOfInterest ?A ?W)}. prep_in(?R,?O), sumo(inScopeOfInterest,interested*), nsubj(?R,?S), cop(interested*,be*) ==> {(inScopeOfInterest ?S ?O)}. prep_at(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (located(?X,?Y)). nmod:at(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (located(?X,?Y)). nmod:in(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Inside)}. nmod:in(?C,?Y), +sumo(?C,?Y), isSubclassOf(?C,Covering) ==> {(orientation ?X ?Y Inside)}. nmod:in(?X,?Y), +sumo(?C,?Y), +sumo(?C2,?X), isChildOf(?C,Object), isSubclass(?C2,BodyPart) ==> {(orientation ?X ?Y Inside)}. nmod:into(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(destination ?X ?Y)}. nmod:in(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(destination ?X ?Y)}. nmod:in(?X,?Y), isInstanceOf(?Y,Region) ==> {(located ?X ?Y)}. prep_inside(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Inside)}. prep_outside(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Outside)}. nmod:inside(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Inside)}. nmod:outside(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Outside)}. prep_on(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (located(?X,?Y)). nmod:on(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (located(?X,?Y)). ;; nmod:on(Terminator-2, Hulu-4), sumo(Terminator,Terminator-2), sumo(HuluProgram,Hulu-4), ;; number(SINGULAR, Terminator-2), number(SINGULAR, Hulu-4), root(ROOT-0, watch-1), ;; dobj(watch-1, Terminator-2), sumo(Looking,watch-1), case(Hulu-4, on-3) nmod:on(?X,?Y), +dobj(?V,?X), +sumo(?C,?Y), isInstanceOf(?C,ComputerProgram) ==> (instrument(?V,?Y)). nmod:on(?X,?Y), +nmod:by(?V,?X), +sumo(?C,?Y), isInstanceOf(?C,ComputerProgram) ==> (instrument(?V,?Y)). prep_on(?X,?Y), +dobj(?V,?X), +sumo(?C,?Y), isInstanceOf(?C,ComputerProgram) ==> (instrument(?V,?Y)). prep_on(?X,?Y), +prep_by(?V,?X), +sumo(?C,?Y), isInstanceOf(?C,ComputerProgram) ==> (instrument(?V,?Y)). prep_on(?X,?Y), +prep_by(?V,?X), +dobj(?V,?C), isInstanceOf(?Y,ComputerProgram) ==> (instrument(?V,?Y), authors(?X,?C)). prep_on(?X,?Y), +dobj(?V,?X), isInstanceOf(?Y,ComputerProgram) ==> (instrument(?V,?Y)). prep_on(?V,?Y), +sumo(PlayingMedia,?V), isInstanceOf(?Y,ComputerProgram) ==> (instrument(?V,?Y)). prep_on(?X,?Y), +prep_by(?V,?X), isInstanceOf(?Y,ComputerProgram), -dobj(?A,?B) ==> (instrument(?V,?Y)). prep_in(?X,?Y), +dobj(?V,?X), +sumo(?C,?Y), isInstanceOf(?C,ComputerProgram) ==> (instrument(?V,?Y)). prep_in(?X,?Y), prep_by(?V,?X), +dobj(?V,?C), isInstanceOf(?Y,ComputerProgram) ==> (instrument(?V,?Y), authors(?X,?C)). prep_in(?X,?Y), +prep_by(?V,?X), +sumo(?C,?Y), isInstanceOf(?C,ComputerProgram) ==> (instrument(?V,?Y)). prep_in(?X,?Y), +dobj(?V,?X), isInstanceOf(?Y,ComputerProgram) ==> (instrument(?V,?Y)). prep_in(?H,?P), prep_by(?S,?H), +dobj(?V,?S), isInstanceOf(?P,ComputerProgram), isInstanceOf(?S,ContentBearingObject) ==> (instrument(?V,?P), authors(?H,?S)). prep_on(?H,?P), prep_by(?S,?H), +dobj(?V,?S), isInstanceOf(?P,ComputerProgram), isInstanceOf(?S,ContentBearingObject) ==> (instrument(?V,?P), authors(?H,?S)). +dobj(?V,?S), prep_by(?V,?H), isInstanceOf(?S,ContentBearingObject), isInstanceOf(?H,Agent) ==> (authors(?H,?S)). +dobj(?V,?S), prep_by(?V,?H), isInstanceOf(?S,Proposition), isInstanceOf(?H,Agent) ==> (authors(?H,?S)). prep_in(?X,?Y), prep_by(?V,?X), isInstanceOf(?Y,ComputerProgram) ==> (instrument(?V,?Y), authors(?X,?V)). prep_to(?V,?S), prep_by(?V,?H), isInstanceOf(?S,Proposition), isInstanceOf(?H,Agent) ==> (authors(?H,?S), patient(?V,?S)). prep_to(?V,?S), prep_by(?V,?H), isInstanceOf(?S,ContentBearingObject), isInstanceOf(?H,Agent) ==> (authors(?H,?S), patient(?V,?S)). +dobj(?V,?O), +sumo(?CO,?O), isInstanceOf(?CO,ContentBearingObject), prep_by(?V,?H), +sumo(?C,?H), isInstanceOf(?H,Agent) ==> (authors(?V,?Y)). +dobj(?V,?O), +sumo(?CO,?O), isInstanceOf(?CO,Proposition), prep_by(?V,?H), +sumo(?C,?H), isInstanceOf(?H,Agent) ==> (authors(?V,?Y)). prep_by(?S,?H), isInstanceOf(?S,Proposition), isInstanceOf(?H,Agent) ==> (authors(?H,?S)). prep_by(?S,?H), isInstanceOf(?S,ContentBearingObject), isInstanceOf(?H,Agent) ==> (authors(?H,?S)). +sumo(PlayingMedia,?V), dobj(?V,?A), isInstanceOf(?A,Agent) ==> (authors(?A,?S), patient(?V,?S)). prep_to(direction*,?A), prep_in(?direction*,?P), isInstanceOf(?P,GeographicArea), isInstanceOf(?A,Agent), -prep_from(?X,?Y) ==> {(routeBetween ?R Here ?A)}. prep_to(direction*,?A), isInstanceOf(?A,Agent), -prep_from(?X,?Y) ==> {(routeBetween ?R Here ?A)}. prep_to(get*,?A), isInstanceOf(?A,Agent), -prep_from(?X,?Y) ==> {(routeBetween ?R Here ?A)}. prep_to(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (destination(?X,?Y)). nmod:to(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (destination(?X,?Y)). nmod:to(?X,?Y), +sumo(?C,?Y), isSubclass(Object,?C) ==> (destination(?X,?Y)). nmod:to(?X,?Y), isInstanceOf(?Y,Region) ==> (destination(?X,?Y)). prep_to(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Time) ==> {(EndFn ?X ?Y)}. prep_toward(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (destination(?X,?Y)). prep_towards(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (destination(?X,?Y)). nmod:from(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (origin(?X,?Y)). nmod:from(?X,?Y), isInstanceOf(?Y,Region) ==> (origin(?X,?Y)). ; prep_of(drink-4,water-6), sumo(Drinking,drink-4). prep_of(?V,?Y), sumo(?C,?V), isSubclass(?C,Process) ==> (dobj(?V,?Y)). prep_at(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (time(?X,?Y)). prep_in(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (time(?X,?Y)). prep_on(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (time(?X,?Y)). nmod:at(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (time(?X,?Y)). nmod:in(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (during(?X,?Y)). nmod:on(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (during(?X,?Y)). nmod:during(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (during(?X,?Y)). prep_for(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Person) ==> (destination(?X,?Y)). prep_for(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (duration(?X,?Y)). prep_since(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (starts(?Y,?X)). prep_through(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (duration(?X,?Y)). prep_through(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (traverses(?X,?Y)). prep_with(?X,?Y), +sumo(Human,?Y) ==> (agent(?X,?Y)). prep_with(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Person) ==> (agent(?X,?Y)). prep_with(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (instrument(?X,?Y)). nmod:with(?A,?Y), dobj(?P,?A), +sumo(?C,?Y), isChildOf(?C,Human) ==> (agent(?P,?Y)). nmod:with(?A,?Y), dobj(?P,?A), +sumo(?C,?Y), isSubclass(?C,Object) ==> (instrument(?P,?Y)). prep_across(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (traverses(?X,?Y)). prep_within(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (properlyFills(?X,?Y)). prep_into(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (properlyFills(?X,?Y)). prep_from(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> (origin(?X,?Y)). prep_from(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (BeginFn(?X,?Y)). prep_until(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (EndFn(?X,?Y)). prep_after(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (greaterThan(?X,?Y)). prep_before(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> (lessThan(?X,?Y)). ; prep_according_to ; prep_across_from ; prep_ahead_of prep_ahead_to(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Process) ==> {(earlier ?X (WhenFn ?Y))}. ; prep_along_with prep_along_with(?X,?Y), +sumo(Human,?Y) ==> (agent(?X,?Y)). prep_along_with(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Person) ==> (agent(?X,?Y)). ; prep_alongside_of ; Issue: parse has, e.g. "prepc_alongside_of(walk-2,of-4)" prep_alongside_of(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Near)}. prepc_alongside_of(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Near)}. ; prep_apart_from ; prep_as_for ; prep_as_from ; prep_as_of ; prep_as_per ; Issue: parse has, e.g. "prepc_as_per(walk-2,per-4)" prep_as_per(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Text) ==> (containsInformation(?X,?Y)). prepc_as_per(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Text) ==> (containsInformation(?X,?Y)). ; prep_as_to ; prep_aside_from ; prep_away_from ; prep_based_on ; prep_because_of ; prep_close_by prep_close_by(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Near)}. ; prep_close_to prep_close_to(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Near)}. ; prep_contrary_to ; prep_compared_to ; prep_compared_with ; prep_due_to ; prep_due_to(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Process), +sumo(?C2,?X), isSubclass(?C2,Process) ==> {(causes ?X ?Y)}. ; prep_depending_on ; prep_except_for ; prep_exclusive_of ; prep_contrary_to ; prep_followed_by ; prep_inside_of prep_inside_of(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(contains ?X ?Y)}. ; prep_instead_of ; prep_irrespective_of ; prep_next_to prep_next_to(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Near)}. ; prep_near_to prep_near_to(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y Near)}. ; prep_off_of ; prep_out_of ; prep_outside_of ; prep_owing_to ; pref_over prep_over(?V,?D), +sumo(?T,?D), isInstanceOf(?T,Object), +sumo(?P,?V), isSubclass(?P,Process) ==> {(destination ?V ?T)}. prep_over(?V,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(and (orientation ?LOC ?Y Above) (located ?V ?LOC))}. ; prep_preliminary_to ; prep_preparatory_to ; prep_previous_to prep_previous_to(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Process) ==> {(earlier ?X (WhenFn ?Y))}. prep_previous_to(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> {(earlier ?X ?Y)}. ; prep_prior_to prep_prior_to(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Process) ==> {(earlier ?X (WhenFn ?Y))}. prep_prior_to(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> {(earlier ?X ?Y)}. ; prep_pursuant_to ; prep_regardless_of ; prep_subsequent_to prep_prior_to(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Process) ==> {(earlier (WhenFn ?Y) ?X)}. prep_prior_to(?X,?Y), +sumo(?C,?Y), isCELTclass(?C,Time) ==> {(earlier ?Y ?X)}. ; prep_such_as ; prep_thanks_to ; prep_thanks_to(?X,?Y), +sumo(?C,?Y), isSubclass(?C,Process), +sumo(?C2,?X), isSubclass(?C2,Process) ==> {(causes ?X ?Y)}. ; prep_together_with ; prep_by_means_of ; prep_in_accordance_with ; prep_in_addition_to ; prep_in_case_of prep_in_front_of(?V,?Y), nsubj(?V,?Z) ==> {(and (equal ?F (FrontFn ?Y)) (orientation ?Z ?F Near))}. ; prep_in_lieu_of ; prep_in_place_of ; prep_in_spite_of ; prep_on_account_of ; prep_on_behalf_of ; prep_on_top_of prep_on_top_of(?X,?Y), +sumo(?C,?Y), isChildOf(?C,Object) ==> {(orientation ?X ?Y On)}. ; prep_with_regard_to ; home downstairs downtown inside outside upstairs uptown ; approval of, awareness of, belief in, concern for, confusion about, desire for ; fondness for, grasp of, hatred of, hope for, interest in, love of ; need for, participation in, reason for, respect for, success in, understanding of ; afraid of, angry at, aware of, capable of, careless about, familiar with ; fond of, happy about, interested in, jealous of, made of, married to ; proud of, similar to, sorry for, sure of, tired of, worried about ; apologize for, ask about, ask for, belong to, bring up, care for, find out ; give up, grow up, look for, look forward to, look up, make up ,pay for ; prepare for, study for, talk about, think about, trust in ,work for, worry about ; poss: possession modifier nmod:poss(?O,?Y), isCELTclass(?Y,Person), isChildOf(?O,Object) ==> {(possesses ?Y ?O)}. nmod:poss(?O,?Y), +sumo(Human,?Y), +sumo(?C,?O), isChildOf(?C,Object) ==> {(possesses ?Y ?O)}. poss(?R,?S), nsubj(?O,?R), cop(?O,?IS), sumo(?C,?R) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?O)). poss(?R,?S), nsubj(?R,?O), cop(?O,?IS), sumo(?C,?R) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?O)). poss(?R,?S), nsubj(?R,?O), cop(?R,?IS), sumo(?C,?R) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?O)). poss(?P,?S), sumo(?C,?P), isSubclass(?C,Process) ==> (agent(?P,?S)). nmod:poss(?R,?S), nsubj(?O,?R), cop(?O,?IS), sumo(?C,?R) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), nmod:of(?R,?O)). nmod:poss(?R,?S), nsubj(?R,?O), cop(?O,?IS), sumo(?C,?R) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), nmod:of(?R,?O)). nmod:poss(?R,?S), nsubj(?R,?O), cop(?R,?IS), sumo(?C,?R) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), nmod:of(?R,?O)). nmod:poss(?P,?S), sumo(?C,?P), isSubclass(?C,Process) ==> (agent(?P,?S)). sumo(?C,?R), nsubj(who*,?R), cop(who*,?IS), prep_of(?R,?S) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?WHO)). ; (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?O)) sumo(?C,?R), nsubj(?R,who*), cop(?R,?IS), prep_of(?R,?O) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?WHO)). ; sumo(brother,brother-5), nsubj(brother-5,John-3), cop(brother-5,is-2), prep_of(brother-5,who-1) sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,who*) ==> (sumo(?C,?R), nsubj(?R,?S), cop(?R,?IS), prep_of(?R,?WHO)). nsubjpass(?V, who*) ==> (agent(?V,?W), names(?W,?WH)). sumo(?C,customer*), nsubj(?R,?S), cop(customer*,?TOBE), nmod:of(?R,?O) ==> {(customer ?S ?O)}. sumo(?C,father*), nsubj(?R,?S), cop(father*,?TOBE), nmod:of(?R,?O) ==> {(father ?S ?O)}. sumo(?C,ancestor*), nsubj(?R,?S), cop(ancestor*,?TOBE), nmod:of(?R,?O) ==> {(ancestor ?S ?O)}. sumo(?C,aunt*), nsubj(?R,?S), cop(aunt*,?TOBE), nmod:of(?R,?O) ==> {(aunt ?S ?O)}. sumo(?C,cousin*), nsubj(?R,?S), cop(cousin*,?TOBE), nmod:of(?R,?O) ==> {(cousin ?S ?O)}. sumo(?C,grandfather*), nsubj(?R,?S), cop(grandfather*,?TOBE), nmod:of(?R,?O) ==> {(grandfather ?S ?O)}. sumo(?C,grandmother*), nsubj(?R,?S), cop(grandmother*,?TOBE), nmod:of(?R,?O) ==> {(grandmother ?S ?O)}. sumo(?C,nephew*), nsubj(?R,?S), cop(nephew*,?TOBE), nmod:of(?R,?O) ==> {(nephew ?S ?O)}. sumo(?C,niece*), nsubj(?R,?S), cop(niece*,?TOBE), nmod:of(?R,?O) ==> {(niece ?S ?O)}. sumo(?C,parent*), nsubj(?R,?S), cop(parent*,?TOBE), nmod:of(?R,?O) ==> {(parent ?S ?O)}. sumo(?C,sibling*), nsubj(?R,?S), cop(sibling*,?TOBE), nmod:of(?R,?O) ==> {(sibling ?S ?O)}. sumo(?C,brother*), nsubj(?R,?S), cop(brother*,?TOBE), nmod:of(?R,?O) ==> {(brother ?S ?O)}. sumo(?C,sister*), nsubj(?R,?S), cop(sister*,?TOBE), nmod:of(?R,?O) ==> {(sister ?S ?O)}. sumo(?C,uncle*), nsubj(?R,?S), cop(uncle*,?TOBE), nmod:of(?R,?O) ==> {(uncle ?S ?O)}. sumo(?C,mother*), nsubj(?R,?S), cop(mother*,?TOBE), nmod:of(?R,?O) ==> {(mother ?S ?O)}. sumo(?C,son*), nsubj(?R,?S), cop(son*,?TOBE), nmod:of(?R,?O) ==> {(son ?S ?O)}. sumo(?C,daughter*), nsubj(?R,?S), cop(daughter*,?TOBE), nmod:of(?R,?O) ==> {(daughter ?S ?O)}. sumo(?C,owner*), nsubj(?R,?S), cop(owner*,be*), prep_of(?R,?O) ==> {(possesses ?S ?O)}. sumo(?C,administrator*), nsubj(?R,?S), cop(administrator*,be*), prep_of(?R,?O) ==> {(administrator ?S ?O)}. nsubj(?R,?S), cop(owner*,be*), prep_of(?R,?O) ==> {(possesses ?S ?O)}. nsubj(?R,?S), cop(owner*,be*), nmod:of(?R,?O) ==> {(possesses ?S ?O)}. ;; catalog of dependency elements -------------- ; adverbial clause modifier ; HOL advcl(?X,?Y) ==> ; adverbial modifier ;; question words ------------------------------ ; Where does John go? advmod(go*, where-1), nsubj(go*, ?S), aux(go*,do*) ==> (destination(?V,?WH)). advmod(?V, where-1), nsubj(?V, ?S), aux(?V,do*), sumo(?C,do*), sumo(Human,?S), sumo(Living,?V) ==> (inhabits(?S,?WH)). nsubj(?V,?S), prep_in(?V,?L), sumo(Living,?V), sumo(Human,?S) ==> (inhabits(?S,?L)). ;; --------------------------------------------------------------------------------------------------------------------- ;; first to ... ;; --------------------------------------------------------------------------------------------------------------------- ;She was the first woman to fly a plane by herself across the Atlantic Ocean. ;nsubj(woman*,?WOMAN), cop(woman*,be*), det(woman*,the*), amod(woman*,first*), aux(?VERB,to*), vmod(woman*,?VERB), ;dobj(?VERB,?OBJ), prep_by(?VERB,herself*), prep_across(?VERB, ?LOC), ;sumo(?OCLASS,?OBJ), sumo(Woman,woman*), sumo(?VCLASS,?VERB), sumo(?LCLASS,?LOC), ;unit(measure1,Woman), valueToken(first, first*), value(measure1,first) ;==> {(and (instance ?WOMAN Woman) (instance ?VERB ?VCLASS) (instance ?OBJ ?OCLASS) (agent ?VERB ?WOMAN) (patient ?VERB ?OBJ) (traverses ?VERB ?LOC) ; (not (exists (?H) (and (instance ?H Human) (not (equal ?H ?WOMAN)) (agent ?VERB ?H)))) ; (not (exists (?W2 ?V2 ?O2) (and (instance ?W2 Woman) (instance ?V2 ?VCLASS) (instance ?O2 ?OCLASS) (agent ?V2 ?W2) (patient ?V2 ?O2) (traverses ?VERB ?LOC) ; (not (exists (?H2) (and (instance ?H2 Human) (not (equal ?H2 ?W2)) (agent ?V2 ?H2)))) ; (earlier (WhenFn ?V2) (WhenFn ?VERB))))))}. ;She was the first woman to fly a plane by herself. ;nsubj(woman*,?WOMAN), cop(woman*,be*), det(woman*,the*), amod(woman*,first*), aux(?VERB,to*), vmod(woman*,?VERB), ;dobj(?VERB,?OBJ), prep_by(?VERB,herself*), sumo(?OCLASS,?OBJ), sumo(Woman,woman*), sumo(?VCLASS,?VERB), ;unit(measure1,Woman), valueToken(first, first*), value(measure1,first) ;==> {(and (instance ?WOMAN Woman) (instance ?VERB ?VCLASS) (instance ?OBJ ?OCLASS) (agent ?VERB ?WOMAN) (patient ?VERB ?OBJ) ; (not (exists (?H) (and (instance ?H Human) (not (equal ?H ?WOMAN)) (agent ?VERB ?H)))) ; (not (exists (?W2 ?V2 ?O2) (and (instance ?W2 Woman) (instance ?V2 ?VCLASS) (instance ?O2 ?OCLASS) (agent ?V2 ?W2) (patient ?V2 ?O2) ; (not (exists (?H2) (and (instance ?H2 Human) (not (equal ?H2 ?W2)) (agent ?V2 ?H2)))) ; (earlier (WhenFn ?V2) (WhenFn ?VERB))))))}. ;She was the first woman to fly. ;nsubj(woman*,?WOMAN), cop(woman*,be*), det(woman*,the*), amod(woman*,first*), aux(?VERB,to*), vmod(woman*,?VERB), sumo(Woman,woman*), ;sumo(?CLASS,?VERB), unit(measure1,Woman), valueToken(first,first*), value(measure1,first) ;==> {(and (instance ?WOMAN Woman) (instance ?VERB ?CLASS) (agent ?VERB ?WOMAN) ; (not (exists (?W2 ?V2) (and (instance ?W2 Woman) (instance ?V2 ?CLASS) (agent ?V2 ?W2) (earlier (WhenFn ?V2) (WhenFn ?VERB))))))}. ;; --------------------------------------------------------------------------------------------------------------------- +nsubj(?V,?S), advmod(?V,alone*), sumo(Human,?S) ==> {(not (exists (?OTHER) (and (agent ?V ?OTHER) (not (equals ?OTHER ?S)))))}. +nsubj(?V,?S), prep_by(?V,himself*), sumo(Human,?S) ==> {(not (exists (?OTHER) (and (agent ?V ?OTHER) (not (equals ?OTHER ?S)))))}. +nsubj(?V,?S), prep_by(?V,herself*), sumo(Human,?S) ==> {(not (exists (?OTHER) (and (agent ?V ?OTHER) (not (equals ?OTHER ?S)))))}. ; When negation in SemRewrite works, add -agent(bear*, ?ANY) ; When was Human born? advmod(bear*,when-1), auxpass(bear*,be*), nsubjpass(bear*,?HUM), sumo(?C, bear*) ==> {(birthdate ?HUM ?WH)}. ; ---Demo2 begin--- advmod(?V,when*), auxpass(?V,be*), sumo(RadiatingSound,?V) ==> {(time ?V ?WH)}. ; ---Demo2 end--- ; When did Human die? advmod(die*,when-1), nsubj(die*,?HUM), sumo(?C,die*), sumo(?C2,do*) ==> {(deathdate ?HUM ?WH)}. ; Why is John a student? ; advmod(is-2,why-1), root(ROOT-0,is-2), nsubj(is-2,John-3), det(student-5,a-4), dep(is-2,student-5), sumo(student,student-5), sumo(Human,John-3) ; Why does John walk? ; advmod(walk-4,why-1), aux(walk-4,does-2), nsubj(walk-4,John-3), root(ROOT-0,walk-4), sumo(causes,does-2), sumo(Human,John-3), sumo(Walking,walk-4) advmod(?V,why-1), aux(?V,do*), +nsubj(?V,?A), sumo(?C,do*) ==> (causes(?X,?V)). ; When did she disappear? advmod(?V,when*), aux(?V,do*), +sumo(?C,?V), isSubclass(?C,Physical) ==> {(time ?V ?WH)}. ; When does John walk? advmod(?V,when-1), aux(?V,do*), sumo(?C,?V), +nsubj(?V,?A), sumo(?C2,do*) ==> {(and (agent ?V ?A) (instance ?V ?C) (equals ?WHEN (WhenFn ?V)))}. ; Who moves the cart? nsubj(?V,who-1) ==> {(and (instance ?I Human) (agent ?V ?I) (names ?I ?WH))}. nsubj(who-1,?V), cop(who-1,be*), sumo(Human,?V), names(?I,?WH) ==> {(and (instance ?I Human) (names ?I ?WH) (or (?R ?I ?I2) (?R ?I2 ?I)))}. +nsubj(who-1,?V), +cop(who-1,be*) ==> {(instance ?I Human) (names ?I ?WH)}. ; What did John do? dobj(do*,what-1), aux(do*,do*), sumo(?X,do*), nsubj(do*,?A) ==> (agent(?WH,?A). ; What did John kick? dobj(?V,what-1), aux(?V,do*), sumo(?C,do*), nsubj(?V,?A) ==> (agent(?V,?A), patient(?V,?WH)). ; What is...? nsubj(what-1,?O), cop(what-1,be*), +sumo(?C,?O) ==> (instance(?O,?WH)). ;; ------------------------------------- advmod(?V,?Y), nsubj(?V,?P), +sumo(Indoors,?Y) ==> {(and (located ?P ?INDOORS) (instance ?INDOORS Indoors) (exists (?BUILDING) (and (instance ?BUILDING Building) (orientation ?INDOORS ?BUILDING Inside))))}. advmod(?V,?Y), nsubj(?V,?P), +sumo(Outdoors,?Y) ==> {(and (located ?P ?OUTDOORS) (instance ?OUTDOORS Outdoors) (exists (?BUILDING) (and (instance ?BUILDING Building) (orientation ?OUTDOORS ?BUILDING Outside))))}. cop(?X,?Y), nsubj(?X,?P), +sumo(Indoors,?X) ==> {(and (located ?P ?INDOORS) (instance ?INDOORS Indoors) (exists (?BUILDING) (and (instance ?BUILDING Building) (orientation ?INDOORS ?BUILDING Inside))))}. cop(?X,?Y), nsubj(?X,?P), +sumo(Outdoors,?X) ==> {(and (located ?P ?OUTDOORS) (instance ?OUTDOORS Outdoors) (exists (?BUILDING) (and (instance ?BUILDING Building) (orientation ?OUTDOORS ?BUILDING Outside))))}. ;; helper verbs ---------------------------- ; John takes a walk. ; nsubj(takes-2,John-1), root(ROOT-0,takes-2), det(walk-4,a-3), dobj(takes-2,walk-4), sumo(Human,John-1), sumo(agent,takes-2), sumo(Walking,walk-4) ; John took a walk ; nsubj(took-2,John-1), root(ROOT-0,took-2), det(walk-4,a-3), dobj(took-2,walk-4), sumo(agent,took-2), sumo(Human,John-1), sumo(Walking,walk-4) ; John will take a walk. ; nsubj(take-3,John-1), aux(take-3,will-2), root(ROOT-0,take-3), det(walk-5,a-4), dobj(take-3,walk-5), sumo(Human,John-1), sumo(Walking,walk-5) ; John has taken a walk ; nsubj(taken-3,John-1), aux(taken-3,has-2), root(ROOT-0,taken-3), det(walk-5,a-4), dobj(taken-3,walk-5), sumo(agent,taken-3), sumo(Human,John-1), sumo(Walking,walk-5) nsubj(taken*,?S), aux(taken*,has*), dobj(taken*,?V), sumo(?X,taken*), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), past(?V,DUMMY), sumo(?C,?V)). nsubj(take*,?S), aux(take*,will*), dobj(take*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), future(?V,DUMMY), sumo(?C,?V)). nsubj(take*,?S), dobj(take*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), sumo(?C,?V)). nsubj(takes*,?S), dobj(takes*,?V), sumo(?C,?V), isSubclass(?C,Process), sumo(?T,takes*) ==> (nsubj(?V,?S), sumo(?C,?V)). nsubj(took*,?S), dobj(took*,?V), sumo(?C,?V), isSubclass(?C,Process), sumo(?T,took*) ==> (nsubj(?V,?S), past(?V,DUMMY), sumo(?C,?V)). ; For phrasal verb "make_up," e.g. "make up a story". Requires that the dobj be a subclass of Process, and uses that for the Suo-Kif process. nsubj(make_up*,?S), +dobj(make_up*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), sumo(?C,?V)). nsubj(make*,?S), aux(made*,has*), dobj(made*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), past(?V,DUMMY), sumo(?C,?V)). nsubj(make*,?S), aux(make*,have*), dobj(make*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), past(?V,DUMMY), sumo(?C,?V)). nsubj(make*,?S), aux(made*,have*), dobj(made*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), past(?V,DUMMY), sumo(?C,?V)). nsubj(make*,?S), dobj(make*,?V), tense(PAST,make*), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), past(?V,DUMMY), sumo(?C,?V)). nsubj(make*,?S), aux(make*,will*), dobj(make*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), future(?V,DUMMY), sumo(?C,?V)). nsubj(make*,?S), dobj(make*,?V), sumo(?C,?V), isSubclass(?C,Process) ==> (nsubj(?V,?S), sumo(?C,?V)). ;; ----------------------------------------------------------------------------------------------------------------- ;; advmod: traverses ;; V across N, isSubclass(N,Object) ;; Where do*? ;; eg. She was the first woman to fly a plane by herself across the Atlantic Ocean. ;; eg. Where did she fly? ;; ----------------------------------------------------------------------------------------------------------------- ; She was the first woman to fly a plane by herself across the Atlantic Ocean. prep_across(?F,?X), aux(?F,to*), sumo(?T,?X), +sumo(?C,?F), isSubclass(?C,Process), isInstanceOf(?T,Object) ==> {(destination ?F ?T)}. prep_across(?F,?X), aux(?F,to*), sumo(?T,?X) ==> {(destination ?F ?T)}. vmod(?W,?F), nsubj(?W, ?A) ==> {(agent ?F ?A)}. ; Where did she fly? advmod(?X,where*), aux(?X,do*), +sumo(?T,?X), isSubclass(?T,Process) ==> {(destination ?X ?WH)}. advmod(?X,where*), aux(?X,do*) ==> {(destination ?X ?WH)}. ;; ------------------------------------- ; auxilliary - be (am, are, is, was, were, being, been), can, could, dare, do (does, did), have (has, had, having), may, might, must, need, ought, shall, should, will, would nsubj(?V,?S), aux(?V,can*), sumo(?C,?V), isSubclass(?C,Process) ==> {(capability ?C agent ?S)}. ; These can no longer be triggered, since we now get the lemma instead of the verb form. ; aux(?V,did*), sumo(?C,did*), +sumo(?C2,?V), isSubclass(?C2,Process) ==> (past(?V,DUMMY)). ; aux(?V,does*), sumo(?C,does*), +sumo(?C2,?V), isSubclass(?C2,Process) ==> !. ; aux(?V,has*) ==> (past(?V,DUMMY)). ; aux(?V,had*) ==> (past(?V,DUMMY)). aux(?V,may*) ==> (possible(?V,DUMMY)). aux(?V,might*) ==> (possible(?V,DUMMY)). aux(?V,can*) ==> (possible(?V,DUMMY)). aux(?V,could*) ==> (possible(?V,DUMMY)). aux(?V,must*) ==> (necessary(?V,DUMMY)). aux(?V,should*) ==> (possible(?V,DUMMY)). aux(?V,should*) ==> (possible(?V,DUMMY)). aux(?V,must*) ==> (possible(?V,DUMMY)). ; future perfect progressive aux(?V,will*), aux(?V,have-3), aux(?V,be*), tense(FUTURE,?V), aspect(PROGRESSIVEPERFECT,?V) ==> (future(?V,DUMMY)). ; future perfect aux(?V,will*), aux(?V,have-3), tense(FUTURE,?V), aspect(PERFECT,?V) ==> (future(?V,DUMMY)). ; future simple aux(?V,will*), tense(FUTURE,?V) ==> (future(?V,DUMMY)). ; present perfect progressive aux(?V,have*), aux(?V,be*), tense(PRESENT,?V), aspect(PROGRESSIVEPERFECT,?V) ==> (past(?V,DUMMY)). ; present perfect aux(?V,have*), tense(PRESENT,?V), aspect(PERFECT,?V) ==> (past(?V,DUMMY)). ; past perfect progressive aux(?V,have*), aux(?V,be*), tense(PAST,?V), aspect(PROGRESSIVEPERFECT,?V) ==> (past(?V,DUMMY)). ; past perfect aux(?V,have*), tense(PAST,?V), aspect(PERFECT,?V) ==> (past(?V,DUMMY)). ; simple past tense(PAST,?V) ==> (past(?V,DUMMY)). ; passive auxiliary ; auxpass(?X,?Y), -past(?X,DUMMY) ==> (past(?X,DUMMY)). ; coordination ; clausal complement ; HOL ; clausal subject ; HOL ; clausal passive subject ; HOL ; copula +cop(?X,?Y), sumo(Entity,?Y) ==> !. +nsubj(?C2,?X), amod(?C2,?C), +cop(?C2,be*), det(?C2,?D), sumo(?Y,?C), +sumo(Human,?X), isInstanceOf(?Y,Nation) ==> (citizen(?X,?Y)). +nsubj(?C,?X), +cop(?C,be*), det(?C,?D), sumo(?Y,?C), +sumo(Human,?X), isInstanceOf(?Y,Nation) ==> (citizen(?X,?Y)). nsubj(?N, ?S), cop(?N, ?COP), vmod(?N,?V), sumo(?C,?N) ==> (instance(?S,?C), vmod(?S,?V)). ;; ----------------------------------------------------------------------------------------------------------------- ;; attribute(?S,?I) ;; ----------------------------------------------------------------------------------------------------------------- cop(?A,be*), det(?A,?DET), nsubj(?A,?S), +sumo(?I,?A), isInstanceOf(?I,Attribute) ==> (attribute(?S,?I)). cop(?S,be*), det(?A,?DET), nsubj(?S,?A), +sumo(?I,?A), isInstanceOf(?I,Attribute) ==> (attribute(?S,?I)). nsubj(?ATT,?SUB), cop(?ATT,?Y), +sumo(?C,?ATT), isInstanceOf(?C,Attribute) ==> (attribute(?SUB,?C)). +nsubj(?X,?A), cop(?X,?Y), +sumo(?C,?X) ==> (instance(?X,?C)). attribute(?X,?Y), isInstanceOf(?X,Human), isInstanceOf(?Y,Nation) ==> (citizen(?X,?Y)). attribute(?X,?Y), sumo(Human,?X), isInstanceOf(?Y,Nation) ==> (citizen(?X,?Y)). sumo(Attribute,is*) ==> !. ; ---Demo2: move to later--- ;nsubjpass(?X,?Y) ==> (patient(?X,?Y)). ; ---Demo2--- ; det(?X,What*), sumo(?O,?X) ==> (instance(?WHAT,?O)). ; det(?X,Which*), sumo(?O,?X) ==> (instance(?WHICH,?O)). ; det(?X,Some*) ; det(?X,All*) ; discourse element ; Amelia Mary Earhart (July 24, 1897 – July 2, 1937) was an American aviator, one of the first women to fly a plane long distances. ;; ----------------------------------------------------------------------------------------------------------------- ;; What N + V? isSubclass(N,Physical) & isSubclass(V,Process) ;; eg. What language did Amelia speak? ;; ----------------------------------------------------------------------------------------------------------------- det(?L,what*), dobj(?S,?L), sumo(?LT,?L), isSubclass(?LT,Physical), +sumo(?ST,?S), isSubclass(?ST,Process) ==> {(patient ?S ?WH)}. dobj(?E,?Y) ==> (patient(?E,?Y)). ; expletive - not needed? ; goes with ; indirect object iobj(?X,?Y) ==> (patient(?E,?Y)). ; marker ; mwe ; negation modifier ; note this needs to wrap the entire expression neg(?V,?N), sumo(?C,?N) ==> (not(?V,?DUMMY)). neg(?V,?Y) ==> (not(?V,?DUMMY)). ; noun compound modifier ; noun phrase as adverbial modifer ; nominal subject - copula handles a special case of this nsubj(?E,?X), equals(?A,?E), isInstanceOf(?A,Process), +sumo(?C,?X), isSubclass(?C,Agent) ==> (agent(?E,?X)). nsubj(?E,?X), +sumo(?A,?E), isSubclass(?A,Process), +sumo(?C,?X), isSubclass(?C,Agent) ==> (agent(?E,?X)). ; ---Demo2: removed--- ; nsubjpass(?E,?Y) ==> (patient(?E,?Y)). ; ---Demo2--- quantmod(?X,About*), num(?O,?X) ==> (approximateValue(?X,countid), num(?O,countid)). num(?O,one*) ==> (num(?O,1)). num(?O,two*) ==> (num(?O,2)). num(?O,three*) ==> (num(?O,3)). num(?O,four*) ==> (num(?O,4)). num(?O,five*) ==> (num(?O,5)). num(?O,six*) ==> (num(?O,6)). num(?O,seven*) ==> (num(?O,7)). num(?O,eight*) ==> (num(?O,8)). num(?O,nine*) ==> (num(?O,9)). num(?O,ten*) ==> (num(?O,10)). num(?O,eleven*) ==> (num(?O,11)). num(?O,twelve*) ==> (num(?O,12)). num(?O,thirteen*) ==> (num(?O,13)). num(?O,fourteen*) ==> (num(?O,14)). num(?O,fifteen*) ==> (num(?O,15)). num(?O,sixteen*) ==> (num(?O,16)). num(?O,seventeen*) ==> (num(?O,17)). num(?O,eighteen*) ==> (num(?O,18)). num(?O,nineteen*) ==> (num(?O,19)). num(?O,twenty*) ==> (num(?O,20)). num(?O,?N), +sumo(?C,?O) ==> (instance(?O,Collection), membersType(?O,?C), membersCount(?O,?N)). num(?dollars*,?N) ==> {(measure ?dollars* (MeasureFn ?NUnitedStatesDollar))}. ; current language doesn't allow functions ; element of compound number ; parataxis ; pcomp - prepositional complement ; pobj - object of a preposition ; preconj: preconjunct - can be ignored? ; predet predeterminer ; looks like another quantifier predet(?X,?Y) ==> (det(?X,?Y)). ; prep: prepositional modifier ; prepc: prepositional clausal modifier prepc_without(?X,?Y) ==> (not(?Y,?DUMMY)). ; prt: phrasal verb particle ; punct: punctuation ; quantmod: quantifier phrase modifer ; has to go above ; ref: reference - not in the collapsed model? ; root ; root(?X,?Y), -nsubj(?Y,?Z) ==> (nsubj(?Y,You)). root(?X,?Y) ==> !. ; tmod: temporal modifier nmod:tmod(?V,?T) ==> (during(?V,?T)). tmod(?V,?T) ==> (during(?V,?T)). ; vmod: reduced non-finite verbal modifier ; TODO: suspect rule, overly general vmod(?S,?V), sumo(?C,?S), isSubclass(?C,Human) ==> (agent(?V,?S)). ; xcomp: open clausal complement ; xsubj controlling subject advmod(?V,?Y), sumo(?C,?V), isSubclass(?C,Process) ==> (manner(?V,?Y)). ; agent - complement of a passive verb ; agent(?X,?Y) ==> (agent(?X,?Y)). ; adjectival modifier ; amod(?X,?Y) ==> (attribute(?X,?Y)). ; appositional modifier appos(?X,?Y) ==> (equals(?X,?Y)). ; adjectival complement acomp(?V,?A), sumo(?AC, ?A), nsubj(?V,?O), sumo(?C,?O), isSubclass(?C,Object) ==> (attribute(?O,?AC)). acomp(?V,?A), sumo(?AC, ?A), nsubj(?V,?O), sumo(?C,?O), isInstanceOf(?C,Object) ==> (attribute(?O,?AC)). amod(?X,?Y), sumo(?C,?Y) ==> (attribute(?X,?C)). ;; WSD: most polysemous ; light - 114 ; run - 110 ; play - 100 ; make - 97 ; set - 87 ; give - 86 ; point - 80 ; take - 77 ; line - 72 ; get - 67 ; roll - 65 ; good - 63 ; mark - 62 ; go - 60 ; dead - 60 ;; ------------------------------- ;; time and date ; --- begin: Demo2 --- day(?T,?D), month(?T,?M), year(?T,?Y), time(bear*,?T), nsubjpass(be_bear*, ?A) ==> {(birthdate ?A (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. ; TODO: too specific, should remove nn(birthday*,washington*), prep_in(birthday*,?X), +year(time*,?Y) ==> {(birthday "Washington" (YearFn ?Y))}. advmod(be*, ?WH), nn(birthday*, Washingtons*), nsubj(be*, birthday*) ==> {(birthday "Washington" ?WH)}. ; --- end: Demo2 --- minute(?T2,?MI), hour(?T2,?H), time(?V,?T2), day(?T,?D), month(?T,?M), year(?T,?Y), time(?V,?T) ==> {(time ?V (MinuteFn ?MI (HourFn ?H (DayFn ?D (MonthFn ?M (YearFn ?Y))))))}. minute(?T2,?M), hour(?T2,?H), time(?V,?T2) ==> {(time ?V (MinuteFn ?M (HourFn ?H ?D)))}. hour(?T2,?H), time(?V,?T2) ==> {(time ?V (HourFn ?H ?D))}. day(?T,?D), month(?T,?M), year(?T,?Y), time(?V,?T) ==> {(time ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. month(?T,?M), year(?T,?Y), time(?V,?T) ==> {(time ?V (MonthFn ?M (YearFn ?Y)))}. year(?T,?Y), time(?V,?T) ==> {(time ?V (YearFn ?Y))}. day(?T,?D), month(?T,?M), time(?V,?T) ==> {(time ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. day(?T,?D), time(?V,?T) ==> {(time ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. BirthDate(?V,?T), day(?T,?D), month(?T,?M), year(?T,?Y) ==> {(birthdate ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. BirthDate(?V,?T), month(?T,?M), year(?T,?Y) ==> {(birthdate ?V (MonthFn ?M (YearFn ?Y)))}. BirthDate(?V,?T), year(?T,?Y) ==> {(birthdate ?V (YearFn ?Y))}. BirthDate(?V,?T), day(?T,?D), month(?T,?M) ==> {(birthdate ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. BirthDate(?V,?T), day(?T,?D) ==> {(birthdate ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. DeathDate(?V,?T), day(?T,?D), month(?T,?M), year(?T,?Y) ==> {(deathdate ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. DeathDate(?V,?T), month(?T,?M), year(?T,?Y) ==> {(birthdate ?V (MonthFn ?M (YearFn ?Y)))}. DeathDate(?V,?T), year(?T,?Y) ==> {(deathdate ?V (YearFn ?Y))}. DeathDate(?V,?T), day(?T,?D), month(?T,?M) ==> {(deathdate ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. DeathDate(?V,?T), day(?T,?D) ==> {(deathdate ?V (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. ; TODO hour, minute, second StartTime(?V,?T), day(?T,?D), month(?T,?M), year(?T,?Y) ==> {(equal (BeginFn (WhenFn ?V)) (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. StartTime(?V,?T), month(?T,?M), year(?T,?Y) ==> {(equal (BeginFn (WhenFn ?V)) (MonthFn ?M (YearFn ?Y)))}. StartTime(?V,?T), year(?T,?Y) ==> {(equal (BeginFn (WhenFn ?V)) (YearFn ?Y))}. StartTime(?V,?T), day(?T,?D), month(?T,?M) ==> {(equal (BeginFn (WhenFn ?V)) (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. StartTime(?V,?T), day(?T,?D) ==> {(equal (BeginFn (WhenFn ?V)) (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. EndTime(?V,?T), day(?T,?D), month(?T,?M), year(?T,?Y) ==> {(equal (EndFn (WhenFn ?V)) (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. EndTime(?V,?T), month(?T,?M), year(?T,?Y) ==> {(equal (EndFn (WhenFn ?V)) (MonthFn ?M (YearFn ?Y)))}. EndTime(?V,?T), year(?T,?Y) ==> {(equal (EndFn (WhenFn ?V)) (YearFn ?Y))}. EndTime(?V,?T), day(?T,?D), month(?T,?M) ==> {(equal (EndFn (WhenFn ?V)) (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. EndTime(?V,?T), day(?T,?D) ==> {(equal (EndFn (WhenFn ?V)) (DayFn ?D (MonthFn ?M (YearFn ?Y))))}. ;; ------------------------------- ;; Pleonastic it from http://www.mitpressjournals.org/doi/pdf/10.1162/COLI_a_00152 ;; just eliminate these "wrappers" for now, but should make them all modal wrappers root(ROOT-0, ?VB), nsubj(?VB, it*), cop(?VB, be*) ==> !. root(ROOT-0, became*), nsubj(became*, It*) ==> !. root(ROOT-0, becoming*), nsubj(becoming*, It*), aux(becoming*, is*) ==> !. root(ROOT-0, becomes*), nsubj(becomes*,It*) ==> !. root(ROOT-0, seems*), nsubj(seems*,It*) ==> !. root(ROOT-0, appears*), nsubj(appears*,It*) ==> !. root(ROOT-0, means*), nsubj(means*,It*) ==> !. root(ROOT-0, follows*), nsubj(follows*,It*) ==> !. ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:is|was|become|became)/) $.. (VP < (VBN $.. /S|SBAR/)))) ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:is|was|become|became)/) $.. (ADJP $.. (/S|SBAR/)))) ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:is|was|become|became)/) $.. (ADJP < (/S|SBAR/)))) ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:is|was|become|became)/) $.. (NP < /S|SBAR/))) ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:is|was|become|became)/) $.. (NP $.. ADVP $.. /S|SBAR/))) ;; NP < (PRP=m1) $.. (VP < (MD $.. (VP < ((/^V.*/ < /^(?:be|become)/) $.. (VP < (VBN $.. /S|SBAR/)))))) ;; NP < (PRP=m1) $.. (VP < (MD $.. (VP < ((/^V.*/ < /^(?:be|become)/) $.. (ADJP $.. (/S|SBAR/)))))) ;; NP < (PRP=m1) $.. (VP < (MD $.. (VP < ((/^V.*/ < /^(?:be|become)/) $.. (ADJP < (/S|SBAR/)))))) ;; NP < (PRP=m1) $.. (VP < (MD $.. (VP < ((/^V.*/ < /^(?:be|become)/) $.. (NP < /S|SBAR/))))) ;; NP < (PRP=m1) $.. (VP < (MD $.. (VP < ((/^V.*/ < /^(?:be|become)/) $.. (NP $.. ADVP $.. /S|SBAR/))))) ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:seems|appears|means|follows)/) $.. /S|SBAR/)) ;; NP < (PRP=m1) $.. (VP < ((/^V.*/ < /^(?:turns|turned)/) $.. PRT $.. /S|SBAR/) ;; ------------------------------- instance(?I,?C), isInstanceOf(?C,Entity) ==> (equals(?I,?C)). agent(?X,?Y) ==> {(agent ?X ?Y)}. approximateValue(?X,?Y) ==> {(approximateValue ?X ?Y)}. authors(?X,?Y) ==> {(authors ?X ?Y)}. attribute(?X,?Y) ==> {(attribute ?X ?Y)}. causes(?X,?Y) ==> {(causes ?X ?Y)}. citizen(?X,?Y) ==> {(citizen ?X ?Y)}. destination(?X,?Y) ==> {(destination ?X ?Y)}. dislikes(?X,?Y) ==> {(dislikes ?X ?Y)}. duration(?X,?Y) ==> {(duration ?X ?Y)}. during(?X,?Y) ==> {(during ?X ?Y)}. equals(?X,?Y) ==> {(equals ?X ?Y)}. greaterThan(?X,?Y) ==> {(greaterThan ?X ?Y)}. inhabits(?X,?Y) ==> {(inhabits ?X ?Y)}. instance(?X,?Y) ==> {(instance ?X ?Y)}. instrument(?X,?Y) ==> {(instrument ?X ?Y)}. lessThan(?X,?Y) ==> {(lessThan ?X ?Y)}. located(?X,?Y) ==> {(located ?X ?Y)}. manner(?X,?Y) ==> {(manner ?X ?Y)}. membersType(?X,?Y) ==> {(membersType ?X ?Y)}. membersCount(?X,?Y) ==> {(membersCount ?X ?Y)}. names(?X,?Y) ==> {(names ?X ?Y)}. necessary(?X,DUMMY) ==> {(necessary ?X DUMMY)}. ; Causes some tests to fail: ; not(?X,?Y) ==> {(not ?X ?Y)}. ;orientation(?X,?Y,?Z) ==> {(orientation ?X ?Y ?Z)}. origin(?X,?Y) ==> {(origin ?X ?Y)}. patient(?X,?Y) ==> {(patient ?X ?Y)}. possible(?X,DUMMY) ==> {(possible ?X DUMMY)}. properlyFills(?X,?Y) ==> {(properlyFills ?X ?Y)}. possesses(?X,?Y) ==> {(possesses ?X ?Y)}. refers(?X,?Y) ==> {(refers ?X ?Y)}. starts(?X,?Y) ==> {(starts ?X ?Y)}. traverses(?X,?Y) ==> {(traverses ?X ?Y)}. time(?X,?Y) ==> {(time ?X ?Y)}. BirthDate(?X,?Y) ==> {(birthdate ?X ?Y)}. DeathDate(?X,?Y) ==> {(deathdate ?X ?Y)}. past(?V,DUMMY) ==> {(earlier (WhenFn ?V) Now)}. future(?V,DUMMY) ==> {(earlier Now (WhenFn ?V))}. ;---Demo2: Man and Human--- sumo(Male,?H) ==> {(instance ?H Human)}. ;TODO: too specific since phenoxymethylpenicillin is not recognized as part of speech 1 nsubjpass(?V,phenoxymethylpenicillin*) ==> {(patient ?V Phenoxymethylpenicillin)}. nsubjpass(?V,?X), sumo(?T,?X) ==> (patient(?V,?T)). ;---Demo2: end--- ;---Demo2: advmod--- advmod(?V, ?X), sumo(?T, ?X), isSubclass(?T,Attribute) ==> {(attribute ?V ?T)}. sumo(?T,?X), advmod(?V, ?X) ==> {(attribute ?V ?X)}. dep(?V,?X), sumo(?T,?X), isSubclass(?T,Attribute) ==> {(attribute ?V ?T)}. ;---Demo2: end--- sumo(?X,be*) ==> !. sumo(?X,do*) ==> !. sumo(?T,?X), isSubclass(?T,Abstract), -isSubclass(?T,TimeInterval) ==> !. sumo(?T,?X), isInstanceOf(?T,Abstract) ==> !. ; ---Demo2 begin--- sumo(?T,?X), isInstanceOf(?T,Nation) ==> {(names ?X ?T)}. sumo(?T,?X), isInstanceOf(?T,Nation) ==> {(names ?X ?T)}. ; ---Demo2 end--- sumo(?T,?X) ==> {(instance ?X ?T)}. nsubj(?X,?Y), sumo(?C,?Y), isSubclass(?C,Agent) ==> (agent(?X,?Y)). nsubj(?X,?Y) ==> (patient(?X,?Y)). ; time TimeMeasure, Process ; person Human, OccupationalRole, SocialRole ; object all others ; mass Substance, Food, and special words such as ; money/furniture/data/life/beauty/truth/crime/law/education ; count all others