There is almost no chance that Greg is white. It is impossible that Julius is a swan. Chances are about even that John left the milk. There is almost no chance that if 'Julius is a swan' or 'Greg is white' or both then Winona is a sheep. There is a better than even chance that if either 'Julius is a swan' or 'John left the milk' but not both then Brian is yellow. There is almost no chance that if 'John left the milk and Julius is a swan' then Bernhard is a frog.
It is certain that either 'John left the milk' or 'Greg is white' but not both.
Chances are about even that either 'John left the milk' or 'Greg is white' but not both.
It is certain that either 'John left the milk' or 'Greg is white' 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.02::factA.
  0.0::factB.
  0.5::factC.
  %hop1
  0.02::factX:-or(factB,factA).
  0.6::factY:-xor(factB,factC).
  0.02::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'John left the milk' or 'Greg is white' but not both.