It is impossible that Greg is a frog. Chances are about even that Daniel took the apple. It is probable that Bernhard is a swan. It is impossible that if 'Bernhard is a swan and Greg is a frog' then Gertrude is a cat. It is probable that if 'Bernhard is a swan and Daniel took the apple' then Jeff went to the bedroom. Chances are about even that if 'Greg is a frog' or 'Daniel took the apple' or both then Mary moved to the office.
It is probably not the case that either 'Jeff went to the bedroom' or 'Daniel took the apple' but not both.
It is probably not the case that either 'Jeff went to the bedroom' or 'Daniel took the apple' but not both.
It is certain that either 'Jeff went to the bedroom' or 'Daniel took the apple' 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.5::factB.
  0.7::factC.
  %hop1
  0.0::factX:-and(factC,factA).
  0.7::factY:-and(factC,factB).
  0.5::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'Jeff went to the bedroom' or 'Daniel took the apple' but not both.