It is unlikely that Lily is yellow. It is likely that Greg is white. We doubt that John went to the garden. It is almost certain that if either 'John went to the garden' or 'Greg is white' but not both then Winona is a cat. Chances are slight that if 'Greg is white and John went to the garden' then Julius is a rhino. It is almost certain that if either 'John went to the garden' or 'Greg is white' but not both then Brian is a swan.
It is likely that either 'Winona is a cat' or 'Brian is a swan' but not both.
It is highly unlikely that either 'Winona is a cat' or 'Brian is a swan' but not both.
It is likely that either 'Winona is a cat' 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.7::factB.
  0.2::factC.
  %hop1
  0.95::factX:-xor(factC,factB).
  0.1::factY:-and(factB,factC).
  0.95::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'Winona is a cat' or 'Brian is a swan' but not both.