It is likely that Greg is a rhino. We doubt that Julius is gray. Chances are about even that Bill moved to the office. It is impossible that if either 'Julius is gray' or 'Greg is a rhino' but not both then Lily is green. It is highly likely that if 'Greg is a rhino' or 'Julius is gray' or both then Bernhard is yellow. It is unlikely that if either 'Bill moved to the office' or 'Julius is gray' but not both then Mary went to the bedroom.
It is impossible that either 'Julius is gray' or 'Bernhard is yellow' but not both.
Chances are about even that either 'Julius is gray' or 'Bernhard is yellow' but not both.
It is impossible that either 'Julius is gray' or 'Bernhard is yellow' 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.2::factB.
  0.5::factC.
  %hop1
  0.0::factX:-xor(factB,factA).
  0.9::factY:-or(factA,factB).
  0.2::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Julius is gray' or 'Bernhard is yellow' but not both.