There is little chance that Brian is a swan. It is highly likely that Lily is yellow. Chances are slight that Greg is a frog. It is unlikely that if either 'Greg is a frog' or 'Lily is yellow' but not both then Mary went to the kitchen. We doubt that if 'Lily is yellow and Greg is a frog' then Sandra got the milk. Chances are slight that if 'Brian is a swan and Lily is yellow' then John put down the apple.
We believe that either 'Mary went to the kitchen' or 'Lily is yellow' but not both.
We believe that either 'Mary went to the kitchen' or 'Lily is yellow' but not both.
There is little chance that either 'Mary went to the kitchen' or 'Lily 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.1::factA.
  0.9::factB.
  0.1::factC.
  %hop1
  0.2::factX:-xor(factC,factB).
  0.2::factY:-and(factB,factC).
  0.1::factZ:-and(factA,factB).

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

  query(conclusion).
  
Either 'Mary went to the kitchen' or 'Lily is yellow' but not both.