It is highly unlikely that Greg is yellow. It is probably the case that Brian is white. We doubt that Bernhard is a swan. It is probably not the case that if 'Greg is yellow' or 'Brian is white' or both then Mary grabbed the milk. Chances are slight that if 'Brian is white' or 'Greg is yellow' or both then Julius is a frog. We doubt that if either 'Bernhard is a swan' or 'Brian is white' but not both then John went to the kitchen.
Chances are about even that either 'Mary grabbed the milk' or 'Brian is white' but not both.
Chances are about even that either 'Mary grabbed the milk' or 'Brian is white' but not both.
It is certain that either 'Mary grabbed the milk' or 'Brian is white' 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.05::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  0.25::factX:-or(factA,factB).
  0.1::factY:-or(factB,factA).
  0.2::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Mary grabbed the milk' or 'Brian is white' but not both.