It is impossible that Daniel dropped the milk. There is almost no chance that John took the apple. It is certain that Julius is a frog. There is a better than even chance that if either 'John took the apple' or 'Daniel dropped the milk' but not both then Bernhard is white. It is highly unlikely that if 'Daniel dropped the milk' or 'Julius is a frog' or both then Bill went to the office. There is a better than even chance that if 'Julius is a frog and Daniel dropped the milk' then Lily is a lion.
It is certain that either 'Julius is a frog' or 'Lily is a lion' but not both.
It is certain that either 'Julius is a frog' or 'Lily is a lion' but not both.
It is impossible that either 'Julius is a frog' or 'Lily is a lion' 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.0::factA.
  0.02::factB.
  1.0::factC.
  %hop1
  0.6::factX:-xor(factB,factA).
  0.05::factY:-or(factA,factC).
  0.6::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Julius is a frog' or 'Lily is a lion' but not both.