Chances are slight that Greg is a frog. There is a very good chance that Bernhard is gray. It is certain that John grabbed the apple. It is almost certain that if either 'Bernhard is gray' or 'Greg is a frog' but not both then Sumit is thirsty. It is highly likely that if 'John grabbed the apple' or 'Bernhard is gray' or both then Fred left the football. Chances are about even that if 'Bernhard is gray' or 'John grabbed the apple' or both then Brian is a rhino.
It is highly likely that 'Brian is a rhino' or 'Bernhard is gray' or both.
It is highly likely that 'Brian is a rhino' or 'Bernhard is gray' or both.
There is little chance that 'Brian is a rhino' or 'Bernhard is gray' 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.1::factA.
  0.8::factB.
  1.0::factC.
  %hop1
  0.95::factX:-xor(factB,factA).
  0.9::factY:-or(factC,factB).
  0.5::factZ:-or(factB,factC).

  %hop2
  conclusion:-or(factZ,factB).

  query(conclusion).
  
'Brian is a rhino' or 'Bernhard is gray' or both.