It is likely that Bernhard is a rhino. It is unlikely that Jason is tired. There is almost no chance that John left the milk. It is almost certain that if 'John left the milk' or 'Bernhard is a rhino' or both then Bill moved to the office. There is little chance that if either 'Jason is tired' or 'John left the milk' but not both then Greg is gray. There is little chance that if either 'Jason is tired' or 'John left the milk' but not both then Lily is green.
There is almost no chance that either 'Greg is gray' or 'Bernhard is a rhino' but not both.
It is probably the case that either 'Greg is gray' or 'Bernhard is a rhino' but not both.
There is almost no chance that either 'Greg is gray' or 'Bernhard is a rhino' 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.7::factA.
  0.2::factB.
  0.02::factC.
  %hop1
  0.95::factX:-or(factC,factA).
  0.1::factY:-xor(factB,factC).
  0.1::factZ:-xor(factB,factC).

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

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