There is almost no chance that Bernhard is yellow. Chances are slight that Winona is a cat. It is probable that John went to the garden. It is certain that if either 'Winona is a cat' or 'John went to the garden' but not both then Greg is a rhino. Chances are slight that if either 'John went to the garden' or 'Bernhard is yellow' but not both then Mary grabbed the milk. Chances are slight that if either 'Bernhard is yellow' or 'Winona is a cat' but not both then Brian is white.
There is little chance that either 'Mary grabbed the milk' or 'Bernhard is yellow' but not both.
There is little chance that either 'Mary grabbed the milk' or 'Bernhard is yellow' but not both.
It is likely that either 'Mary grabbed the milk' or 'Bernhard is yellow' 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.1::factB.
  0.7::factC.
  %hop1
  1.0::factX:-xor(factB,factC).
  0.1::factY:-xor(factC,factA).
  0.1::factZ:-xor(factA,factB).

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

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