There is almost no chance that Brian is gray. There is almost no chance that Bernhard is gray. It is unlikely that John left the apple. Chances are slight that if 'Bernhard is gray' or 'John left the apple' or both then Jeff moved to the office. It is likely that if 'John left the apple and Brian is gray' then Lily is white. There is a very good chance that if 'John left the apple' or 'Brian is gray' or both then Mary went to the garden.
It is almost certain that either 'Brian is gray' or 'Mary went to the garden' but not both.
It is unlikely that either 'Brian is gray' or 'Mary went to the garden' but not both.
It is almost certain that either 'Brian is gray' or 'Mary went to the garden' 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.02::factA.
  0.02::factB.
  0.2::factC.
  %hop1
  0.1::factX:-or(factB,factC).
  0.7::factY:-and(factC,factA).
  0.8::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Brian is gray' or 'Mary went to the garden' but not both.