It is certain that Sandra put down the milk. We doubt that John moved to the office. There is almost no chance that Brian is a rhino. There is a very good chance that if 'Brian is a rhino and John moved to the office' then Jeff left the apple. Chances are about even that if 'Brian is a rhino' or 'John moved to the office' or both then Bernhard is gray. There is little chance that if 'Sandra put down the milk and Brian is a rhino' then Mary went to the hallway.
It is unlikely that either 'Mary went to the hallway' or 'John moved to the office' but not both.
It is unlikely that either 'Mary went to the hallway' or 'John moved to the office' but not both.
It is certain that either 'Mary went to the hallway' or 'John moved to the office' 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
  1.0::factA.
  0.2::factB.
  0.02::factC.
  %hop1
  0.8::factX:-and(factC,factB).
  0.5::factY:-or(factC,factB).
  0.1::factZ:-and(factA,factC).

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

  query(conclusion).
  
Either 'Mary went to the hallway' or 'John moved to the office' but not both.