It is unlikely that Daniel took the milk. It is improbable that Sandra left the milk. There is almost no chance that Antoine is thirsty. Chances are slight that if either 'Antoine is thirsty' or 'Daniel took the milk' but not both then Bernhard is green. There is a better than even chance that if either 'Antoine is thirsty' or 'Daniel took the milk' but not both then John dropped the apple. There is little chance that if 'Antoine is thirsty' or 'Daniel took the milk' or both then Greg is a rhino.
It is probably the case that 'John dropped the apple and Greg is a rhino'.
There is almost no chance that 'John dropped the apple and Greg is a rhino'.
It is probably the case that 'John dropped the apple and Greg is a rhino'.

  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.2::factA.
  0.1::factB.
  0.02::factC.
  %hop1
  0.1::factX:-xor(factC,factA).
  0.6::factY:-xor(factC,factA).
  0.1::factZ:-or(factC,factA).

  %hop2
  conclusion:-and(factY,factZ).

  query(conclusion).
  
'John dropped the apple and Greg is a rhino'.