There is a better than even chance that Daniel got the football. There is little chance that Brian is yellow. There is almost no chance that Julius is a swan. It is unlikely that if 'Brian is yellow' or 'Julius is a swan' or both then Greg is a lion. It is highly unlikely that if 'Julius is a swan and Daniel got the football' then Mary discarded the milk. It is highly unlikely that if either 'Brian is yellow' or 'Daniel got the football' but not both then Lily is a rhino.
It is highly unlikely that either 'Julius is a swan' or 'Greg is a lion' but not both.
It is highly unlikely that either 'Julius is a swan' or 'Greg is a lion' but not both.
It is certain that either 'Julius is a swan' or 'Greg is a lion' 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.6::factA.
  0.1::factB.
  0.02::factC.
  %hop1
  0.2::factX:-or(factB,factC).
  0.05::factY:-and(factC,factA).
  0.05::factZ:-xor(factB,factA).

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

  query(conclusion).
  
Either 'Julius is a swan' or 'Greg is a lion' but not both.