It is highly likely that Julius is gray. It is almost certain that Daniel took the milk. There is almost no chance that Gertrude is a sheep. Chances are slight that if 'Julius is gray' or 'Daniel took the milk' or both then Bernhard is a rhino. There is a very good chance that if either 'Daniel took the milk' or 'Julius is gray' but not both then Sandra dropped the milk. It is highly unlikely that if either 'Daniel took the milk' or 'Gertrude is a sheep' but not both then Lily is yellow.
We doubt that either 'Bernhard is a rhino' or 'Julius is gray' but not both.
There is a very good chance that either 'Bernhard is a rhino' or 'Julius is gray' but not both.
We doubt that either 'Bernhard is a rhino' or 'Julius 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.9::factA.
  0.95::factB.
  0.02::factC.
  %hop1
  0.1::factX:-or(factA,factB).
  0.8::factY:-xor(factB,factA).
  0.05::factZ:-xor(factB,factC).

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

  query(conclusion).
  
Either 'Bernhard is a rhino' or 'Julius is gray' but not both.