It is highly unlikely that Greg is a swan. There is a better than even chance that Lily is a lion. It is almost certain that Julius is a rhino. It is probably not the case that if either 'Julius is a rhino' or 'Greg is a swan' but not both then Antoine is thirsty. It is almost certain that if 'Lily is a lion and Greg is a swan' then Mary went to the bedroom. It is unlikely that if 'Lily is a lion and Julius is a rhino' then John moved to the office.
It is almost certain that either 'Mary went to the bedroom' or 'John moved to the office' but not both.
It is improbable that either 'Mary went to the bedroom' or 'John moved to the office' but not both.
It is almost certain that either 'Mary went to the bedroom' 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.05::factA.
  0.6::factB.
  0.95::factC.
  %hop1
  0.25::factX:-xor(factC,factA).
  0.95::factY:-and(factB,factA).
  0.2::factZ:-and(factB,factC).

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

  query(conclusion).
  
Either 'Mary went to the bedroom' or 'John moved to the office' but not both.