It is almost certain that Mary got the football. It is unlikely that Brian is green. It is unlikely that John went to the garden. It is highly likely that if 'John went to the garden and Mary got the football' then Bernhard is a rhino. There is a better than even chance that if 'Mary got the football' or 'John went to the garden' or both then Julius is a swan. There is a better than even chance that if 'Mary got the football' or 'Brian is green' or both then Lily is a lion.
There is a very good chance that 'Julius is a swan' or 'Lily is a lion' or both.
There is a very good chance that 'Julius is a swan' or 'Lily is a lion' or both.
There is almost no chance that 'Julius is a swan' or 'Lily is a lion' 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.95::factA.
  0.2::factB.
  0.2::factC.
  %hop1
  0.9::factX:-and(factC,factA).
  0.6::factY:-or(factA,factC).
  0.6::factZ:-or(factA,factB).

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

  query(conclusion).
  
'Julius is a swan' or 'Lily is a lion' or both.