It is unlikely that Greg is yellow. It is likely that Sandra put down the milk. There is almost no chance that John picked up the apple. It is probably the case that if 'Sandra put down the milk' or 'Greg is yellow' or both then Bernhard is a swan. It is probable that if either 'Greg is yellow' or 'Sandra put down the milk' but not both then Mary discarded the milk. We doubt that if either 'John picked up the apple' or 'Greg is yellow' but not both then Lily is a rhino.
It is probable that either 'John picked up the apple' or 'Sandra put down the milk' but not both.
It is probable that either 'John picked up the apple' or 'Sandra put down the milk' but not both.
There is almost no chance that either 'John picked up the apple' or 'Sandra put down 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.2::factA.
  0.7::factB.
  0.02::factC.
  %hop1
  0.7::factX:-or(factB,factA).
  0.7::factY:-xor(factA,factB).
  0.2::factZ:-xor(factC,factA).

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

  query(conclusion).
  
Either 'John picked up the apple' or 'Sandra put down the milk' but not both.