It is highly likely that Sandra got the milk. It is highly unlikely that Yann is hungry. It is probably not the case that Gertrude is a sheep. It is likely that if either 'Sandra got the milk' or 'Gertrude is a sheep' but not both then Bill went to the office. It is highly unlikely that if 'Gertrude is a sheep and Sandra got the milk' then Fred left the football. We doubt that if 'Gertrude is a sheep' or 'Sandra got the milk' or both then Julius is a swan.
It is highly unlikely that either 'Bill went to the office' or 'Fred left the football' but not both.
Chances are about even that either 'Bill went to the office' or 'Fred left the football' but not both.
It is highly unlikely that either 'Bill went to the office' or 'Fred left 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.9::factA.
  0.05::factB.
  0.25::factC.
  %hop1
  0.7::factX:-xor(factA,factC).
  0.05::factY:-and(factC,factA).
  0.2::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Bill went to the office' or 'Fred left the football' but not both.