Chances are about even that Sandra dropped the milk. It is impossible that Bernhard is a rhino. There is little chance that Winona is a sheep. There is almost no chance that if 'Winona is a sheep and Sandra dropped the milk' then John discarded the apple. Chances are about even that if 'Bernhard is a rhino' or 'Sandra dropped the milk' or both then Julius is a swan. Chances are about even that if either 'Sandra dropped the milk' or 'Bernhard is a rhino' but not both then Greg is gray.
It is probably not the case that either 'John discarded the apple' or 'Greg is gray' but not both.
It is probably not the case that either 'John discarded the apple' or 'Greg is gray' but not both.
It is likely that either 'John discarded the apple' or 'Greg is gray' 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.5::factA.
  0.0::factB.
  0.1::factC.
  %hop1
  0.02::factX:-and(factC,factA).
  0.5::factY:-or(factB,factA).
  0.5::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'John discarded the apple' or 'Greg is gray' but not both.