There is almost no chance that Emily is a sheep. It is highly unlikely that Lily is a swan. It is probably the case that Greg is a rhino. There is little chance that if 'Lily is a swan and Greg is a rhino' then Mary went to the kitchen. It is likely that if 'Lily is a swan and Greg is a rhino' then John put down the milk. It is impossible that if either 'Emily is a sheep' or 'Lily is a swan' but not both then Bernhard is green.
There is a better than even chance that 'Mary went to the kitchen' or 'John put down the milk' or both.
There is almost no chance that 'Mary went to the kitchen' or 'John put down the milk' or both.
There is a better than even chance that 'Mary went to the kitchen' or 'John put down the milk' 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.02::factA.
  0.05::factB.
  0.7::factC.
  %hop1
  0.1::factX:-and(factB,factC).
  0.7::factY:-and(factB,factC).
  0.0::factZ:-xor(factA,factB).

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

  query(conclusion).
  
'Mary went to the kitchen' or 'John put down the milk' or both.