It is probably not the case that Daniel left the milk. It is likely that Lily is a lion. It is unlikely that Julius is a frog. It is certain that if 'Daniel left the milk' or 'Lily is a lion' or both then Sandra grabbed the apple. It is impossible that if 'Lily is a lion and Julius is a frog' then Bernhard is yellow. It is likely that if 'Lily is a lion' or 'Daniel left the milk' or both then Brian is yellow.
It is probably not the case that either 'Brian is yellow' or 'Sandra grabbed the apple' but not both.
It is probably not the case that either 'Brian is yellow' or 'Sandra grabbed the apple' but not both.
We believe that either 'Brian is yellow' or 'Sandra grabbed the apple' 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.25::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  1.0::factX:-or(factA,factB).
  0.0::factY:-and(factB,factC).
  0.7::factZ:-or(factB,factA).

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

  query(conclusion).
  
Either 'Brian is yellow' or 'Sandra grabbed the apple' but not both.