It is unlikely that Julius is gray. Chances are about even that Bernhard is a swan. Chances are about even that John went to the kitchen. There is a better than even chance that if either 'Julius is gray' or 'John went to the kitchen' but not both then Lily is a lion. There is a better than even chance that if either 'Bernhard is a swan' or 'John went to the kitchen' but not both then Jason is tired. There is almost no chance that if 'Julius is gray and Bernhard is a swan' then Greg is white.
Chances are about even that 'Greg is white' or 'John went to the kitchen' or both.
Chances are about even that 'Greg is white' or 'John went to the kitchen' or both.
It is highly unlikely that 'Greg is white' or 'John went to the kitchen' or 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.5::factB.
  0.5::factC.
  %hop1
  0.6::factX:-xor(factA,factC).
  0.6::factY:-xor(factB,factC).
  0.02::factZ:-and(factA,factB).

  %hop2
  conclusion:-or(factZ,factC).

  query(conclusion).
  
'Greg is white' or 'John went to the kitchen' or both.