It is impossible that Julius is gray. Chances are slight that Yann is thirsty. There is little chance that John moved to the office. There is a very good chance that if 'Yann is thirsty' or 'John moved to the office' or both then Jessica is a cat. It is impossible that if 'Yann is thirsty and John moved to the office' then Brian is a rhino. It is impossible that if 'Julius is gray and Yann is thirsty' then Sandra put down the milk.
It is probable that either 'Yann is thirsty' or 'John moved to the office' but not both.
It is unlikely that either 'Yann is thirsty' or 'John moved to the office' but not both.
It is probable that either 'Yann is thirsty' or 'John 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.0::factA.
  0.1::factB.
  0.1::factC.
  %hop1
  0.8::factX:-or(factB,factC).
  0.0::factY:-and(factB,factC).
  0.0::factZ:-and(factA,factB).

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

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