It is impossible that Brian is a swan. It is highly unlikely that Daniel dropped the apple. We doubt that Lily is yellow. It is unlikely that if either 'Brian is a swan' or 'Lily is yellow' but not both then Greg is a swan. There is a very good chance that if either 'Daniel dropped the apple' or 'Brian is a swan' but not both then John left the football. It is highly likely that if 'Brian is a swan' or 'Daniel dropped the apple' or both then Bernhard is a rhino.
It is probably not the case that either 'Daniel dropped the apple' or 'Lily is yellow' but not both.
It is probably not the case that either 'Daniel dropped the apple' or 'Lily is yellow' but not both.
It is probably the case that either 'Daniel dropped the apple' or 'Lily is yellow' 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.05::factB.
  0.2::factC.
  %hop1
  0.2::factX:-xor(factA,factC).
  0.8::factY:-xor(factB,factA).
  0.9::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'Daniel dropped the apple' or 'Lily is yellow' but not both.