It is highly unlikely that Greg is a swan. It is probable that Emily is a sheep. Chances are about even that John discarded the milk. It is impossible that if 'Greg is a swan and Emily is a sheep' then Bernhard is green. It is probably the case that if 'John discarded the milk and Emily is a sheep' then Brian is yellow. It is improbable that if either 'Emily is a sheep' or 'John discarded the milk' but not both then Mary left the football.
It is highly unlikely that 'Bernhard is green' or 'Mary left the football' or both.
It is highly unlikely that 'Bernhard is green' or 'Mary left the football' or both.
We believe that 'Bernhard is green' or 'Mary left the football' 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.05::factA.
  0.7::factB.
  0.5::factC.
  %hop1
  0.0::factX:-and(factA,factB).
  0.7::factY:-and(factC,factB).
  0.1::factZ:-xor(factB,factC).

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

  query(conclusion).
  
'Bernhard is green' or 'Mary left the football' or both.