There is almost no chance that Julius is a rhino. It is probably not the case that Sandra dropped the milk. It is probably not the case that John went to the hallway. Chances are slight that if 'Sandra dropped the milk' or 'Julius is a rhino' or both then Lily is a lion. It is impossible that if 'Julius is a rhino' or 'John went to the hallway' or both then Yann is tired. Chances are about even that if 'Julius is a rhino' or 'John went to the hallway' or both then Bernhard is a frog.
There is almost no chance that either 'Yann is tired' or 'Lily is a lion' but not both.
There is almost no chance that either 'Yann is tired' or 'Lily is a lion' but not both.
It is certain that either 'Yann is tired' 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.02::factA.
  0.25::factB.
  0.25::factC.
  %hop1
  0.1::factX:-or(factB,factA).
  0.0::factY:-or(factA,factC).
  0.5::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Yann is tired' or 'Lily is a lion' but not both.