It is almost certain that Bernhard is green. There is little chance that Julius is yellow. It is highly unlikely that Greg is yellow. There is a better than even chance that if 'Bernhard is green and Julius is yellow' then Lily is gray. It is highly unlikely that if either 'Julius is yellow' or 'Greg is yellow' but not both then Brian is a swan. It is unlikely that if 'Bernhard is green and Greg is yellow' then John went to the bedroom.
It is certain that either 'Brian is a swan' or 'Lily is gray' but not both.
It is highly unlikely that either 'Brian is a swan' or 'Lily is gray' but not both.
It is certain that either 'Brian is a swan' or 'Lily is gray' 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.1::factB.
  0.05::factC.
  %hop1
  0.6::factX:-and(factA,factB).
  0.05::factY:-xor(factB,factC).
  0.2::factZ:-and(factA,factC).

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

  query(conclusion).
  
Either 'Brian is a swan' or 'Lily is gray' but not both.