Chances are slight that Gertrude is a cat. It is unlikely that Jason is thirsty. We doubt that John dropped the apple. It is probably not the case that if 'Jason is thirsty' or 'John dropped the apple' or both then Greg is a swan. There is almost no chance that if 'Gertrude is a cat and Jason is thirsty' then Julius is a lion. It is highly likely that if 'Jason is thirsty and John dropped the apple' then Bernhard is yellow.
It is unlikely that either 'John dropped the apple' or 'Greg is a swan' but not both.
It is unlikely that either 'John dropped the apple' or 'Greg is a swan' but not both.
It is highly likely that either 'John dropped the apple' or 'Greg 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.1::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.25::factX:-or(factB,factC).
  0.02::factY:-and(factA,factB).
  0.9::factZ:-and(factB,factC).

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

  query(conclusion).
  
Either 'John dropped the apple' or 'Greg is a swan' but not both.