There is little chance that Daniel took the milk. It is improbable that Brian is yellow. It is highly unlikely that Greg is a swan. It is unlikely that if 'Brian is yellow' or 'Daniel took the milk' or both then Lily is green. It is probably the case that if 'Brian is yellow' or 'Greg is a swan' or both then Bernhard is green. It is probably not the case that if 'Brian is yellow and Greg is a swan' then Mary picked up the apple.
It is probably the case that either 'Brian is yellow' or 'Daniel took the milk' but not both.
We doubt that either 'Brian is yellow' or 'Daniel took the milk' but not both.
It is probably the case that either 'Brian is yellow' or 'Daniel took 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.1::factA.
  0.1::factB.
  0.05::factC.
  %hop1
  0.2::factX:-or(factB,factA).
  0.7::factY:-or(factB,factC).
  0.25::factZ:-and(factB,factC).

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

  query(conclusion).
  
Either 'Brian is yellow' or 'Daniel took the milk' but not both.