There is almost no chance that John went to the garden. It is unlikely that Sandra grabbed the apple. It is almost certain that Greg is green. It is impossible that if either 'Sandra grabbed the apple' or 'John went to the garden' but not both then Daniel got the milk. It is impossible that if 'John went to the garden' or 'Greg is green' or both then Yann is hungry. It is unlikely that if either 'John went to the garden' or 'Greg is green' but not both then Lily is a lion.
There is almost no chance that either 'Daniel got the milk' or 'John went to the garden' but not both.
There is almost no chance that either 'Daniel got the milk' or 'John went to the garden' but not both.
It is likely that either 'Daniel got the milk' or 'John went to the garden' 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.2::factB.
  0.95::factC.
  %hop1
  0.0::factX:-xor(factB,factA).
  0.0::factY:-or(factA,factC).
  0.2::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'Daniel got the milk' or 'John went to the garden' but not both.