It is impossible that Daniel got the milk. It is improbable that Emily is a mouse. It is probable that Jason is tired. It is certain that if 'Emily is a mouse and Jason is tired' then Lily is a frog. It is highly likely that if 'Jason is tired and Daniel got the milk' then Bernhard is yellow. It is probably not the case that if 'Daniel got the milk' or 'Emily is a mouse' or both then Jeff left the apple.
It is probably the case that either 'Jason is tired' or 'Daniel got the milk' but not both.
It is probably the case that either 'Jason is tired' or 'Daniel got the milk' but not both.
It is probably not the case that either 'Jason is tired' or 'Daniel got 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.0::factA.
  0.1::factB.
  0.7::factC.
  %hop1
  1.0::factX:-and(factB,factC).
  0.9::factY:-and(factC,factA).
  0.25::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'Jason is tired' or 'Daniel got the milk' but not both.