There is a better than even chance that Greg is a swan. It is highly likely that Jason is thirsty. It is likely that Mary took the football. It is probably the case that if either 'Mary took the football' or 'Jason is thirsty' but not both then Julius is a lion. There is almost no chance that if 'Jason is thirsty and Mary took the football' then Jeff moved to the garden. Chances are slight that if either 'Mary took the football' or 'Greg is a swan' but not both then Brian is yellow.
It is certain that 'Jeff moved to the garden' or 'Brian is yellow' or both.
It is highly unlikely that 'Jeff moved to the garden' or 'Brian is yellow' or both.
It is certain that 'Jeff moved to the garden' or 'Brian 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.6::factA.
  0.9::factB.
  0.7::factC.
  %hop1
  0.7::factX:-xor(factC,factB).
  0.02::factY:-and(factB,factC).
  0.1::factZ:-xor(factC,factA).

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

  query(conclusion).
  
'Jeff moved to the garden' or 'Brian is yellow' or both.