Chances are about even that Jeff went to the hallway. There is a very good chance that Sandra left the milk. It is probable that Bernhard is a swan. It is probable that if either 'Jeff went to the hallway' or 'Bernhard is a swan' but not both then Greg is a frog. There is almost no chance that if 'Jeff went to the hallway' or 'Bernhard is a swan' or both then Julius is a lion. It is highly likely that if either 'Jeff went to the hallway' or 'Sandra left the milk' but not both then John dropped the milk.
Chances are about even that either 'John dropped the milk' or 'Sandra left the milk' but not both.
Chances are about even that either 'John dropped the milk' or 'Sandra left the milk' but not both.
It is highly unlikely that either 'John dropped the milk' or 'Sandra left the milk' 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.5::factA.
  0.8::factB.
  0.7::factC.
  %hop1
  0.7::factX:-xor(factA,factC).
  0.02::factY:-or(factA,factC).
  0.9::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'John dropped the milk' or 'Sandra left the milk' but not both.