There is little chance that Julius is a rhino. It is unlikely that Lily is a swan. It is unlikely that Greg is a frog. It is probably not the case that if 'Julius is a rhino and Greg is a frog' then Brian is green. It is probably not the case that if 'Greg is a frog and Julius is a rhino' then John picked up the milk. It is likely that if 'Lily is a swan' or 'Greg is a frog' or both then Daniel left the milk.
It is probably not the case that 'John picked up the milk' or 'Daniel left the milk' or both.
It is probably not the case that 'John picked up the milk' or 'Daniel left the milk' or both.
It is certain that 'John picked up the milk' or 'Daniel left 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.1::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.25::factX:-and(factA,factC).
  0.25::factY:-and(factC,factA).
  0.7::factZ:-or(factB,factC).

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

  query(conclusion).
  
'John picked up the milk' or 'Daniel left the milk' or both.