It is almost certain that John moved to the office. There is little chance that Greg is yellow. There is little chance that Mary went to the kitchen. Chances are slight that if 'Greg is yellow and John moved to the office' then Sandra got the milk. It is probably not the case that if 'Greg is yellow' or 'John moved to the office' or both then Julius is a frog. We doubt that if 'Mary went to the kitchen' or 'John moved to the office' or both then Bernhard is a frog.
We doubt that either 'Bernhard is a frog' or 'John moved to the office' but not both.
We believe that either 'Bernhard is a frog' or 'John moved to the office' but not both.
We doubt that either 'Bernhard is a frog' 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.95::factA.
  0.1::factB.
  0.1::factC.
  %hop1
  0.1::factX:-and(factB,factA).
  0.25::factY:-or(factB,factA).
  0.2::factZ:-or(factC,factA).

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

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