We doubt that Brian is yellow. It is improbable that Julius is gray. It is unlikely that Jeff went to the bedroom. It is probable that if either 'Brian is yellow' or 'Julius is gray' but not both then Yann is hungry. It is unlikely that if either 'Jeff went to the bedroom' or 'Brian is yellow' but not both then John got the milk. There is almost no chance that if either 'Brian is yellow' or 'Julius is gray' but not both then Bernhard is a swan.
It is unlikely that either 'Yann is hungry' or 'John got the milk' but not both.
It is unlikely that either 'Yann is hungry' or 'John got the milk' but not both.
It is certain that either 'Yann is hungry' or 'John got the milk' 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.1::factB.
  0.2::factC.
  %hop1
  0.7::factX:-xor(factA,factB).
  0.2::factY:-xor(factC,factA).
  0.02::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'Yann is hungry' or 'John got the milk' but not both.