It is highly unlikely that Julius is a swan. It is highly unlikely that Sandra put down the milk. It is highly likely that John dropped the apple. It is certain that if 'John dropped the apple' or 'Sandra put down the milk' or both then Lily is a rhino. It is impossible that if either 'Julius is a swan' or 'Sandra put down the milk' but not both then Brian is green. It is improbable that if 'Julius is a swan' or 'John dropped the apple' or both then Mary went to the kitchen.
It is highly likely that either 'Lily is a rhino' or 'Brian is green' but not both.
It is highly likely that either 'Lily is a rhino' or 'Brian is green' but not both.
It is improbable that either 'Lily is a rhino' or 'Brian is green' 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.05::factA.
  0.05::factB.
  0.9::factC.
  %hop1
  1.0::factX:-or(factC,factB).
  0.0::factY:-xor(factA,factB).
  0.1::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Lily is a rhino' or 'Brian is green' but not both.