It is probably not the case that John moved to the garden. It is likely that Yann is bored. There is little chance that Lily is a rhino. It is unlikely that if 'John moved to the garden and Lily is a rhino' then Mary grabbed the milk. It is almost certain that if 'Lily is a rhino and Yann is bored' then Julius is a lion. It is probable that if either 'John moved to the garden' or 'Yann is bored' but not both then Bernhard is gray.
There is a better than even chance that either 'John moved to the garden' or 'Bernhard is gray' but not both.
There is a better than even chance that either 'John moved to the garden' or 'Bernhard is gray' but not both.
It is improbable that either 'John moved to the garden' or 'Bernhard is gray' but not 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.25::factA.
  0.7::factB.
  0.1::factC.
  %hop1
  0.2::factX:-and(factA,factC).
  0.95::factY:-and(factC,factB).
  0.7::factZ:-xor(factA,factB).

  %hop2
  conclusion:-xor(factA,factZ).

  query(conclusion).
  
Either 'John moved to the garden' or 'Bernhard is gray' but not both.