There is almost no chance that John moved to the office. It is likely that Julius is white. There is little chance that Bernhard is a swan. It is probable that if 'Julius is white and John moved to the office' then Daniel grabbed the apple. It is highly likely that if 'Julius is white' or 'John moved to the office' or both then Lily is gray. There is a better than even chance that if 'Bernhard is a swan and John moved to the office' then Mary took the football.
There is almost no chance that either 'Lily is gray' or 'John moved to the office' but not both.
There is a better than even chance that either 'Lily is gray' or 'John moved to the office' but not both.
There is almost no chance that either 'Lily is gray' 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.02::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.7::factX:-and(factB,factA).
  0.9::factY:-or(factB,factA).
  0.6::factZ:-and(factC,factA).

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

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