It is unlikely that John went to the garden. It is likely that Jeff discarded the milk. It is likely that Sandra dropped the milk. There is little chance that if either 'Sandra dropped the milk' or 'Jeff discarded the milk' but not both then Greg is yellow. We believe that if 'John went to the garden and Sandra dropped the milk' then Julius is green. It is probably the case that if 'Jeff discarded the milk' or 'Sandra dropped the milk' or both then Bernhard is a swan.
It is impossible that 'Bernhard is a swan' or 'Greg is yellow' or both.
There is a better than even chance that 'Bernhard is a swan' or 'Greg is yellow' or both.
It is impossible that 'Bernhard is a swan' or 'Greg is yellow' 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.7::factB.
  0.7::factC.
  %hop1
  0.1::factX:-xor(factC,factB).
  0.75::factY:-and(factA,factC).
  0.7::factZ:-or(factB,factC).

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

  query(conclusion).
  
'Bernhard is a swan' or 'Greg is yellow' or both.