Search code examples
logicrdfowlprotegereasoning

Barack doesn’t like anything that Donald likes


How to express:

Barack doesn’t like anything that Donald likes.

in Protege?


My attempt:

I have Barack and Donald as individuals and like as a property, however, when clicking on Barack, the best I can get is:

Barack like Donald

which is not good. Any ideas?


The answer appears to not be working.


Solution

  • In the individuals tab, where you can assert the type (not object property assertion) of an individual, you write (for Barack):

    likes only (not (inverse likes value Donald))

    or

    likes only (not (inverse likes some {Donald}))

    (Both are equivalent).

    @MikeKinghan is insofar right as it was a slight overstatement (indeed, the statement you gave does not imply Barack liking anything). As for you not getting any interesting inferences in Protege, do not forget the open world assumption. Here is a working example, consisting of three axioms:

    a1: EquivalentClasses(:PeopleDislikingMexicanBorderWall ObjectComplementOf(ObjectHasValue(:likes :MexicanBorderWall)))

    a2: ClassAssertion(ObjectAllValuesFrom(:likes ObjectComplementOf(ObjectSomeValuesFrom(ObjectInverseOf(:likes) ObjectOneOf(:Donald)))) :Barack)

    a3: ObjectPropertyAssertion(:likes :Donald :MexicanBorderWall)

    If you add these statements, the reasoner will correctly infer that Barack is an instance of PeopleDislikingMexicanBorderWall.