It is probably not the case that Sandra dropped the milk. It is probably the case that Julius is a swan. It is probably not the case that Mary went to the garden. It is likely that if 'Mary went to the garden and Sandra dropped the milk' then Bernhard is yellow. It is unlikely that if 'Sandra dropped the milk' or 'Julius is a swan' or both then Brian is yellow. It is unlikely that if 'Mary went to the garden' or 'Julius is a swan' or both then Winona is a mouse.
It is likely that either 'Mary went to the garden' or 'Winona is a mouse' but not both.
It is probably not the case that either 'Mary went to the garden' or 'Winona is a mouse' but not both.
It is likely that either 'Mary went to the garden' or 'Winona is a mouse' 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.25::factA.
  0.7::factB.
  0.25::factC.
  %hop1
  0.7::factX:-and(factC,factA).
  0.2::factY:-or(factA,factB).
  0.2::factZ:-or(factC,factB).

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

  query(conclusion).
  
Either 'Mary went to the garden' or 'Winona is a mouse' but not both.