Hey,
I wanted to jump on this and make a quick expansion on what Charles was saying.
I believe the effect of the rule you want is if something is false, then you would like your prediction to be false. For example, suppose we are working with the rule: people who know each other should be friends
Knows(A, B) -> Friends(A, B)
Charles did a great job explaining this, because we are working with implication if Knows("Connor", "Charles") = 0 then the head Friends("Connor", "Charles") is free to be of any value. So other potentials that have the atom Friends("Connor", "Charles") will dictate what that value is.
If we want the effect that people who don't know each other are not friends, we need to encode the negative variant of the rule.
!Knows(A, B) -> !Friends(A, B)
Now if Knows("Connor", "Charles") = 0 then !Knows("Connor", "Charles") = 1. The rule is satisfied when !Friends("Connor", "Charles") = 1 or Friends("Connor", "Charles") = 0.
Hope that helps!
-Connor