It is probably the case that Greg is a lion. It is likely that Bernhard is gray. It is unlikely that Mary got the football. It is impossible that if 'Mary got the football and Bernhard is gray' then Lily is a swan. It is highly likely that if 'Mary got the football and Bernhard is gray' then John moved to the office. It is likely that if either 'Bernhard is gray' or 'Mary got the football' but not both then Sandra left the apple.
There is a very good chance that either 'John moved to the office' or 'Lily is a swan' but not both.
Chances are slight that either 'John moved to the office' or 'Lily is a swan' but not both.
There is a very good chance that either 'John moved to the office' or 'Lily is a swan' 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.7::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  0.0::factX:-and(factC,factB).
  0.9::factY:-and(factC,factB).
  0.7::factZ:-xor(factB,factC).

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

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