There is little chance that Bernhard is a frog. It is highly unlikely that John left the football. It is almost certain that Mary went to the office. Chances are about even that if 'John left the football' or 'Mary went to the office' or both then Winona is a wolf. It is certain that if 'Bernhard is a frog' or 'Mary went to the office' or both then Lily is a rhino. There is a very good chance that if 'John left the football and Mary went to the office' then Julius is gray.
It is highly unlikely that either 'Lily is a rhino' or 'Bernhard is a frog' but not both.
It is highly likely that either 'Lily is a rhino' or 'Bernhard is a frog' but not both.
It is highly unlikely that either 'Lily is a rhino' or 'Bernhard is a frog' 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.1::factA.
  0.05::factB.
  0.95::factC.
  %hop1
  0.5::factX:-or(factB,factC).
  1.0::factY:-or(factA,factC).
  0.8::factZ:-and(factB,factC).

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

  query(conclusion).
  
Either 'Lily is a rhino' or 'Bernhard is a frog' but not both.