It is almost certain that Brian is a frog. It is impossible that Winona is a sheep. It is unlikely that Daniel got the milk. It is likely that if either 'Daniel got the milk' or 'Brian is a frog' but not both then Bernhard is green. There is little chance that if 'Winona is a sheep' or 'Daniel got the milk' or both then John left the football. It is highly likely that if 'Brian is a frog' or 'Winona is a sheep' or both then Lily is yellow.
It is unlikely that either 'John left the football' or 'Daniel got the milk' but not both.
It is unlikely that either 'John left the football' or 'Daniel got the milk' but not both.
It is probably the case that either 'John left the football' 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.95::factA.
  0.0::factB.
  0.2::factC.
  %hop1
  0.7::factX:-xor(factC,factA).
  0.1::factY:-or(factB,factC).
  0.9::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'John left the football' or 'Daniel got the milk' but not both.