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?