It is highly unlikely that Mary went to the hallway. There is a very good chance that Daniel got the football. There is little chance that John discarded the apple. Chances are about even that if 'John discarded the apple' or 'Daniel got the football' or both then Bernhard is a rhino. It is impossible that if 'Mary went to the hallway' or 'Daniel got the football' or both then Sandra grabbed the milk. It is highly unlikely that if 'Daniel got the football and John discarded the apple' then Brian is a swan.
There is a very good chance that either 'Sandra grabbed the milk' or 'Daniel got the football' but not both.
There is a very good chance that either 'Sandra grabbed the milk' or 'Daniel got the football' but not both.
It is impossible that either 'Sandra grabbed the milk' or 'Daniel got the football' 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.05::factA.
  0.8::factB.
  0.1::factC.
  %hop1
  0.5::factX:-or(factC,factB).
  0.0::factY:-or(factA,factB).
  0.05::factZ:-and(factB,factC).

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

  query(conclusion).
  
Either 'Sandra grabbed the milk' or 'Daniel got the football' but not both.