It is almost certain that Bernhard is a rhino. It is unlikely that Lily is a swan. It is probably not the case that Mary left the milk. It is highly unlikely that if 'Lily is a swan' or 'Bernhard is a rhino' or both then Fred put down the apple. Chances are slight that if 'Lily is a swan and Bernhard is a rhino' then John went to the kitchen. It is likely that if 'Mary left the milk and Bernhard is a rhino' then Brian is a frog.
It is highly unlikely that either 'Fred put down the apple' or 'John went to the kitchen' but not both.
It is highly unlikely that either 'Fred put down the apple' or 'John went to the kitchen' but not both.
There is a very good chance that either 'Fred put down the apple' or 'John went to the kitchen' 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.95::factA.
  0.2::factB.
  0.25::factC.
  %hop1
  0.05::factX:-or(factB,factA).
  0.1::factY:-and(factB,factA).
  0.7::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Fred put down the apple' or 'John went to the kitchen' but not both.