It is almost certain that John grabbed the apple. Chances are about even that Mary moved to the garden. It is almost certain that Lily is white. It is unlikely that if 'John grabbed the apple' or 'Lily is white' or both then Bernhard is white. Chances are about even that if 'John grabbed the apple' or 'Mary moved to the garden' or both then Greg is green. It is improbable that if 'Lily is white and Mary moved to the garden' then Bill left the milk.
It is probably not the case that either 'Bernhard is white' or 'Bill left the milk' but not both.
It is probably not the case that either 'Bernhard is white' or 'Bill left the milk' but not both.
It is certain that either 'Bernhard is white' or 'Bill left 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.95::factA.
  0.5::factB.
  0.95::factC.
  %hop1
  0.2::factX:-or(factA,factC).
  0.5::factY:-or(factA,factB).
  0.1::factZ:-and(factC,factB).

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

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