It is highly unlikely that Bernhard is gray. It is probably not the case that Jason is tired. There is a very good chance that Daniel grabbed the milk. It is impossible that if either 'Bernhard is gray' or 'Jason is tired' but not both then Bill went to the bedroom. It is probable that if 'Jason is tired' or 'Daniel grabbed the milk' or both then Brian is a swan. There is a very good chance that if either 'Daniel grabbed the milk' or 'Jason is tired' but not both then John discarded the apple.
It is certain that either 'John discarded the apple' or 'Bernhard is gray' but not both.
Chances are about even that either 'John discarded the apple' or 'Bernhard is gray' but not both.
It is certain that either 'John discarded the apple' or 'Bernhard is gray' 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.05::factA.
  0.25::factB.
  0.8::factC.
  %hop1
  0.0::factX:-xor(factA,factB).
  0.7::factY:-or(factB,factC).
  0.8::factZ:-xor(factC,factB).

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

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