It is almost certain that Lily is gray. It is probably the case that Jessica is a mouse. It is probably the case that Bernhard is white. There is a better than even chance that if 'Jessica is a mouse and Lily is gray' then Sandra dropped the milk. Chances are slight that if 'Jessica is a mouse' or 'Lily is gray' or both then John moved to the garden. It is impossible that if 'Bernhard is white and Lily is gray' then Mary got the football.
We doubt that either 'Bernhard is white' or 'Mary got the football' but not both.
It is likely that either 'Bernhard is white' or 'Mary got the football' but not both.
We doubt that either 'Bernhard is white' or 'Mary got the football' 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.95::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  0.6::factX:-and(factB,factA).
  0.1::factY:-or(factB,factA).
  0.0::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Bernhard is white' or 'Mary got the football' but not both.