There is a better than even chance that Bernhard is yellow. Chances are about even that Greg is white. There is almost no chance that Mary got the milk. It is probably the case that if 'Mary got the milk' or 'Bernhard is yellow' or both then Lily is a swan. It is probably the case that if 'Bernhard is yellow and Mary got the milk' then Sandra left the milk. Chances are about even that if 'Greg is white' or 'Bernhard is yellow' or both then Bill moved to the office.
There is almost no chance that either 'Mary got the milk' or 'Greg is white' but not both.
Chances are about even that either 'Mary got the milk' or 'Greg is white' but not both.
There is almost no chance that either 'Mary got the milk' or 'Greg 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.6::factA.
  0.5::factB.
  0.02::factC.
  %hop1
  0.7::factX:-or(factC,factA).
  0.7::factY:-and(factA,factC).
  0.5::factZ:-or(factB,factA).

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

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