It is almost certain that Bernhard is green. It is highly unlikely that Mary dropped the milk. It is unlikely that John went to the hallway. It is almost certain that if 'Bernhard is green' or 'Mary dropped the milk' or both then Julius is a rhino. There is a very good chance that if 'Bernhard is green' or 'Mary dropped the milk' or both then Greg is a frog. We doubt that if either 'Bernhard is green' or 'John went to the hallway' but not both then Lily is yellow.
There is little chance that 'Greg is a frog' or 'Julius is a rhino' or both.
It is almost certain that 'Greg is a frog' or 'Julius is a rhino' or both.
There is little chance that 'Greg is a frog' or 'Julius is a rhino' or 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.05::factB.
  0.2::factC.
  %hop1
  0.95::factX:-or(factA,factB).
  0.8::factY:-or(factA,factB).
  0.2::factZ:-xor(factA,factC).

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

  query(conclusion).
  
'Greg is a frog' or 'Julius is a rhino' or both.