There is almost no chance that Bernhard is yellow. Chances are slight that Julius is gray. Chances are about even that Brian is green. It is impossible that if 'Julius is gray' or 'Brian is green' or both then Winona is a mouse. It is highly likely that if 'Bernhard is yellow and Brian is green' then Bill went to the kitchen. It is probably not the case that if either 'Julius is gray' or 'Bernhard is yellow' but not both then Greg is a swan.
Chances are about even that either 'Winona is a mouse' or 'Greg is a swan' but not both.
There is almost no chance that either 'Winona is a mouse' or 'Greg is a swan' but not both.
Chances are about even that either 'Winona is a mouse' or 'Greg is a swan' 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.02::factA.
  0.1::factB.
  0.5::factC.
  %hop1
  0.0::factX:-or(factB,factC).
  0.9::factY:-and(factA,factC).
  0.25::factZ:-xor(factB,factA).

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

  query(conclusion).
  
Either 'Winona is a mouse' or 'Greg is a swan' but not both.