We believe that Bernhard is a swan. We doubt that John put down the milk. It is highly unlikely that Sandra left the football. It is certain that if 'Sandra left the football and Bernhard is a swan' then Winona is a wolf. Chances are about even that if 'Sandra left the football' or 'John put down the milk' or both then Greg is yellow. It is improbable that if either 'John put down the milk' or 'Sandra left the football' but not both then Julius is gray.
There is little chance that either 'Greg is yellow' or 'John put down the milk' but not both.
There is little chance that either 'Greg is yellow' or 'John put down the milk' but not both.
It is probably the case that either 'Greg is yellow' or 'John put down 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.75::factA.
  0.2::factB.
  0.05::factC.
  %hop1
  1.0::factX:-and(factC,factA).
  0.5::factY:-or(factC,factB).
  0.1::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Greg is yellow' or 'John put down the milk' but not both.