It is probably the case that Julius is green. It is impossible that Bill moved to the office. It is probable that Bernhard is gray. Chances are slight that if either 'Bill moved to the office' or 'Julius is green' but not both then Brian is yellow. It is highly likely that if either 'Bernhard is gray' or 'Bill moved to the office' but not both then Sandra got the milk. Chances are slight that if 'Bernhard is gray and Bill moved to the office' then Jason is thirsty.
There is a better than even chance that either 'Sandra got the milk' or 'Bill moved to the office' but not both.
There is a better than even chance that either 'Sandra got the milk' or 'Bill moved to the office' but not both.
It is impossible that either 'Sandra got the milk' or 'Bill 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.7::factA.
  0.0::factB.
  0.7::factC.
  %hop1
  0.1::factX:-xor(factB,factA).
  0.9::factY:-xor(factC,factB).
  0.1::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'Sandra got the milk' or 'Bill moved to the office' but not both.