There is almost no chance that Bernhard is gray. Chances are about even that John took the football. It is highly likely that Julius is a frog. There is little chance that if 'Bernhard is gray' or 'John took the football' or both then Mary got the milk. It is likely that if either 'John took the football' or 'Julius is a frog' but not both then Lily is green. It is improbable that if either 'Julius is a frog' or 'John took the football' but not both then Winona is a mouse.
It is highly unlikely that either 'Julius is a frog' or 'John took the football' but not both.
Chances are about even that either 'Julius is a frog' or 'John took the football' but not both.
It is highly unlikely that either 'Julius is a frog' or 'John took the football' 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.5::factB.
  0.9::factC.
  %hop1
  0.1::factX:-or(factA,factB).
  0.7::factY:-xor(factB,factC).
  0.1::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Julius is a frog' or 'John took the football' but not both.