Chances are slight that Julius is yellow. It is almost certain that Bernhard is green. There is almost no chance that Mary went to the office. It is probably not the case that if either 'Bernhard is green' or 'Mary went to the office' but not both then Lily is green. Chances are about even that if 'Julius is yellow and Mary went to the office' then Antoine is thirsty. We doubt that if either 'Julius is yellow' or 'Mary went to the office' but not both then John took the milk.
We believe that either 'John took the milk' or 'Antoine is thirsty' but not both.
There is almost no chance that either 'John took the milk' or 'Antoine is thirsty' but not both.
We believe that either 'John took the milk' or 'Antoine is thirsty' 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.1::factA.
  0.95::factB.
  0.02::factC.
  %hop1
  0.25::factX:-xor(factB,factC).
  0.5::factY:-and(factA,factC).
  0.2::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'John took the milk' or 'Antoine is thirsty' but not both.