There is a very good chance that Bernhard is a lion. We believe that Jessica is a cat. There is a very good chance that Sandra left the milk. There is a better than even chance that if 'Bernhard is a lion and Jessica is a cat' then Lily is gray. Chances are slight that if 'Jessica is a cat and Sandra left the milk' then Gertrude is a mouse. There is a very good chance that if 'Jessica is a cat' or 'Sandra left the milk' or both then John dropped the apple.
There is almost no chance that either 'John dropped the apple' or 'Lily is gray' but not both.
Chances are about even that either 'John dropped the apple' or 'Lily is gray' but not both.
There is almost no chance that either 'John dropped the apple' or 'Lily is gray' but not both.

  and(A,B) :- A,B.
  or(A,B) :- A;B.
  nand(A,B) :- not(and(A,B)).
  nor(A,B) :- not(or(A,B)).
  xor(A,B) :- or(A,B), nand(A,B).

  %hop0
  0.8::factA.
  0.75::factB.
  0.8::factC.
  %hop1
  0.6::factX:-and(factA,factB).
  0.1::factY:-and(factB,factC).
  0.8::factZ:-or(factB,factC).

  %hop2
  conclusion:-xor(factZ,factX).

  query(conclusion).
  
Either 'John dropped the apple' or 'Lily is gray' but not both.