Unknown and false (solved)

Posted by William on
URL: http://owlready.306.s1.nabble.com/Unknown-and-false-solved-tp1539.html

See the following code

from owlready2 import *

test = get_ontology("http://test.org/test.owl")


with test:
    class Human(Thing):
        pass

    class Man(Human):
        pass

    class Woman(Human):
        pass

    class love(Man >> Woman):
        pass

    Man.is_a.append(love.max(1, Woman))  # Man.love.append(Woman)

    a = Man('a')
    b = Woman('b')
    c = Woman('c')
    a.love.append(b)
    AllDifferent([b,c])
    AllDisjoint([Man, Woman])

# close_world(test)
sync_reasoner(debug=0)
print(a.love)
print(a.INDIRECT_is_a)
print(c.INDIRECT_is_a)


Whenever I use Man.is_a.append(love.max(1, Woman))  or Man.love.append(Woman), the result is the same: c is not in a.love. But in the first case, c is indeed not in a.love, but in the second case, it is just unknown whether a loves c. How do I distinguish the two cases? How do I conclude that c is indeed not loved by a?