There is almost no chance that Brian is yellow. It is highly likely that John went to the bedroom. It is highly unlikely that Lily is a swan. It is unlikely that if 'Lily is a swan and John went to the bedroom' then Greg is green. It is probably not the case that if either 'Brian is yellow' or 'John went to the bedroom' but not both then Jessica is a cat. It is probably not the case that if either 'Lily is a swan' or 'John went to the bedroom' but not both then Bernhard is a rhino.
It is probably not the case that 'Lily is a swan' or 'Bernhard is a rhino' or both.
It is probably not the case that 'Lily is a swan' or 'Bernhard is a rhino' or both.
It is almost certain that 'Lily is a swan' or 'Bernhard is a rhino' 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.02::factA.
  0.9::factB.
  0.05::factC.
  %hop1
  0.2::factX:-and(factC,factB).
  0.25::factY:-xor(factA,factB).
  0.25::factZ:-xor(factC,factB).

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

  query(conclusion).
  
'Lily is a swan' or 'Bernhard is a rhino' or both.