There is a very good chance that Winona is a sheep. It is probable that Brian is gray. There is a very good chance that Mary put down the apple. Chances are slight that if either 'Winona is a sheep' or 'Mary put down the apple' but not both then Gertrude is a cat. It is probably not the case that if either 'Brian is gray' or 'Mary put down the apple' but not both then John went to the office. There is little chance that if 'Winona is a sheep and Brian is gray' then Bernhard is a lion.
There is a very good chance that either 'John went to the office' or 'Mary put down the apple' but not both.
There is a very good chance that either 'John went to the office' or 'Mary put down the apple' but not both.
It is unlikely that either 'John went to the office' or 'Mary put down the apple' 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.8::factA.
  0.7::factB.
  0.8::factC.
  %hop1
  0.1::factX:-xor(factA,factC).
  0.25::factY:-xor(factB,factC).
  0.1::factZ:-and(factA,factB).

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

  query(conclusion).
  
Either 'John went to the office' or 'Mary put down the apple' but not both.