It is unlikely that Sandra dropped the milk. We believe that Jason is thirsty. It is probably not the case that John went to the office. It is probably not the case that if either 'John went to the office' or 'Sandra dropped the milk' but not both then Julius is a swan. There is little chance that if either 'Jason is thirsty' or 'Sandra dropped the milk' but not both then Brian is green. Chances are slight that if 'Sandra dropped the milk' or 'John went to the office' or both then Bernhard is a frog.
There is a better than even chance that either 'Jason is thirsty' or 'John went to the office' but not both.
There is a better than even chance that either 'Jason is thirsty' or 'John went to the office' but not both.
It is impossible that either 'Jason is thirsty' or 'John went 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
  0.2::factA.
  0.75::factB.
  0.25::factC.
  %hop1
  0.25::factX:-xor(factC,factA).
  0.1::factY:-xor(factB,factA).
  0.1::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Jason is thirsty' or 'John went to the office' but not both.