It is unlikely that Winona is a sheep. It is highly likely that Sandra put down the milk. We doubt that Lily is green. Chances are slight that if 'Lily is green and Sandra put down the milk' then Brian is a swan. It is probably not the case that if either 'Winona is a sheep' or 'Lily is green' but not both then Gertrude is a sheep. There is a better than even chance that if 'Lily is green and Winona is a sheep' then Mary left the apple.
There is little chance that either 'Gertrude is a sheep' or 'Brian is a swan' but not both.
There is little chance that either 'Gertrude is a sheep' or 'Brian is a swan' but not both.
It is likely that either 'Gertrude is a sheep' or 'Brian is a swan' 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.2::factA.
  0.9::factB.
  0.2::factC.
  %hop1
  0.1::factX:-and(factC,factB).
  0.25::factY:-xor(factA,factC).
  0.6::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Gertrude is a sheep' or 'Brian is a swan' but not both.