We doubt that Julius is a swan. There is almost no chance that Bill went to the bedroom. It is impossible that Bernhard is gray. There is a very good chance that if 'Bernhard is gray and Bill went to the bedroom' then Lily is a frog. It is highly likely that if either 'Bill went to the bedroom' or 'Julius is a swan' but not both then Winona is a sheep. We believe that if either 'Bernhard is gray' or 'Bill went to the bedroom' but not both then Sandra grabbed the apple.
We believe that either 'Bernhard is gray' or 'Sandra grabbed the apple' but not both.
There is almost no chance that either 'Bernhard is gray' or 'Sandra grabbed the apple' but not both.
We believe that either 'Bernhard is gray' 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.2::factA.
  0.02::factB.
  0.0::factC.
  %hop1
  0.8::factX:-and(factC,factB).
  0.9::factY:-xor(factB,factA).
  0.75::factZ:-xor(factC,factB).

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

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