There is almost no chance that Sandra left the football. It is probable that Jessica is a cat. It is unlikely that Mary moved to the office. It is likely that if either 'Sandra left the football' or 'Mary moved to the office' but not both then Julius is a rhino. Chances are slight that if 'Jessica is a cat' or 'Mary moved to the office' or both then Brian is white. It is improbable that if either 'Mary moved to the office' or 'Sandra left the football' but not both then John dropped the apple.
It is almost certain that either 'John dropped the apple' or 'Mary moved to the office' but not both.
We doubt that either 'John dropped the apple' or 'Mary moved to the office' but not both.
It is almost certain that either 'John dropped the apple' or 'Mary 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
  0.02::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  0.7::factX:-xor(factA,factC).
  0.1::factY:-or(factB,factC).
  0.1::factZ:-xor(factC,factA).

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

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