It is unlikely that Bernhard is gray. We doubt that Greg is a frog. It is probable that Daniel grabbed the milk. It is probable that if either 'Greg is a frog' or 'Bernhard is gray' but not both then Brian is a swan. Chances are slight that if either 'Greg is a frog' or 'Daniel grabbed the milk' but not both then John discarded the apple. It is almost certain that if 'Greg is a frog' or 'Bernhard is gray' or both then Mary dropped the milk.
It is probably not the case that 'Bernhard is gray' or 'John discarded the apple' or both.
It is probably not the case that 'Bernhard is gray' or 'John discarded the apple' or both.
It is likely that 'Bernhard is gray' or 'John discarded the apple' 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.2::factA.
  0.2::factB.
  0.7::factC.
  %hop1
  0.7::factX:-xor(factB,factA).
  0.1::factY:-xor(factB,factC).
  0.95::factZ:-or(factB,factA).

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

  query(conclusion).
  
'Bernhard is gray' or 'John discarded the apple' or both.