It is impossible that Greg is yellow. It is unlikely that Julius is green. It is unlikely that Bernhard is a swan. It is highly unlikely that if either 'Bernhard is a swan' or 'Julius is green' but not both then Sandra left the apple. There is almost no chance that if 'Bernhard is a swan and Julius is green' then Daniel got the milk. It is certain that if 'Julius is green' or 'Greg is yellow' or both then John went to the garden.
It is likely that 'Daniel got the milk' or 'John went to the garden' or both.
We doubt that 'Daniel got the milk' or 'John went to the garden' or both.
It is likely that 'Daniel got the milk' or 'John went to the garden' 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.0::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.05::factX:-xor(factC,factB).
  0.02::factY:-and(factC,factB).
  1.0::factZ:-or(factB,factA).

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

  query(conclusion).
  
'Daniel got the milk' or 'John went to the garden' or both.