It is improbable that John moved to the office. It is certain that Gertrude is a wolf. It is almost certain that Mary dropped the apple. There is a better than even chance that if 'Gertrude is a wolf' or 'Mary dropped the apple' or both then Bernhard is a swan. It is likely that if 'Mary dropped the apple and Gertrude is a wolf' then Winona is a wolf. It is highly likely that if 'Mary dropped the apple and John moved to the office' then Lily is green.
It is impossible that either 'John moved to the office' or 'Gertrude is a wolf' but not both.
It is highly likely that either 'John moved to the office' or 'Gertrude is a wolf' but not both.
It is impossible that either 'John moved to the office' or 'Gertrude is a wolf' 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.1::factA.
  1.0::factB.
  0.95::factC.
  %hop1
  0.6::factX:-or(factB,factC).
  0.7::factY:-and(factC,factB).
  0.9::factZ:-and(factC,factA).

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

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