There is almost no chance that Julius is green. There is little chance that Jessica is a cat. It is probably the case that Greg is a swan. There is a better than even chance that if either 'Greg is a swan' or 'Julius is green' but not both then Sandra dropped the milk. There is a very good chance that if either 'Julius is green' or 'Greg is a swan' but not both then Lily is yellow. It is impossible that if either 'Greg is a swan' or 'Julius is green' but not both then Bernhard is white.
There is almost no chance that either 'Julius is green' or 'Bernhard is white' but not both.
There is almost no chance that either 'Julius is green' or 'Bernhard is white' but not both.
There is a very good chance that either 'Julius is green' or 'Bernhard is white' 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.02::factA.
  0.1::factB.
  0.7::factC.
  %hop1
  0.6::factX:-xor(factC,factA).
  0.8::factY:-xor(factA,factC).
  0.0::factZ:-xor(factC,factA).

  %hop2
  conclusion:-xor(factA,factZ).

  query(conclusion).
  
Either 'Julius is green' or 'Bernhard is white' but not both.