It is probably the case that Brian is a swan. There is little chance that Lily is white. It is unlikely that Julius is a lion. It is probable that if 'Brian is a swan' or 'Lily is white' or both then Mary went to the bedroom. There is little chance that if 'Julius is a lion' or 'Brian is a swan' or both then John left the milk. It is certain that if 'Julius is a lion and Lily is white' then Sandra got the football.
It is unlikely that either 'Lily is white' or 'John left the milk' but not both.
It is unlikely that either 'Lily is white' or 'John left the milk' but not both.
It is certain that either 'Lily is white' or 'John left 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.7::factA.
  0.1::factB.
  0.2::factC.
  %hop1
  0.7::factX:-or(factA,factB).
  0.1::factY:-or(factC,factA).
  1.0::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'Lily is white' or 'John left the milk' but not both.