It is probably not the case that Jeff discarded the milk. It is probably the case that Julius is gray. There is little chance that Bernhard is a swan. We doubt that if either 'Jeff discarded the milk' or 'Bernhard is a swan' but not both then John moved to the garden. It is highly unlikely that if either 'Bernhard is a swan' or 'Jeff discarded the milk' but not both then Brian is white. It is probable that if 'Julius is gray and Jeff discarded the milk' then Sandra got the milk.
There is a better than even chance that either 'Julius is gray' or 'Sandra got the milk' but not both.
There is a better than even chance that either 'Julius is gray' or 'Sandra got the milk' but not both.
It is impossible that either 'Julius is gray' or 'Sandra got the milk' 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.25::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.2::factX:-xor(factA,factC).
  0.05::factY:-xor(factC,factA).
  0.7::factZ:-and(factB,factA).

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

  query(conclusion).
  
Either 'Julius is gray' or 'Sandra got the milk' but not both.