It is almost certain that Bernhard is gray. It is highly unlikely that John dropped the apple. Chances are about even that Sandra left the apple. It is highly likely that if 'Sandra left the apple and Bernhard is gray' then Greg is a frog. It is highly likely that if either 'Bernhard is gray' or 'John dropped the apple' but not both then Brian is a swan. It is almost certain that if 'Bernhard is gray and John dropped the apple' then Lily is white.
It is almost certain that either 'John dropped the apple' or 'Sandra left the apple' but not both.
Chances are about even that either 'John dropped the apple' or 'Sandra left the apple' but not both.
It is almost certain that either 'John dropped the apple' or 'Sandra left 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.95::factA.
  0.05::factB.
  0.5::factC.
  %hop1
  0.9::factX:-and(factC,factA).
  0.9::factY:-xor(factA,factB).
  0.95::factZ:-and(factA,factB).

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

  query(conclusion).
  
Either 'John dropped the apple' or 'Sandra left the apple' but not both.