It is impossible that Bernhard is yellow. There is a better than even chance that Jason is tired. We doubt that John moved to the garden. We believe that if 'Bernhard is yellow and John moved to the garden' then Julius is a frog. We believe that if 'Bernhard is yellow' or 'Jason is tired' or both then Sandra grabbed the milk. It is highly likely that if 'Bernhard is yellow' or 'John moved to the garden' or both then Brian is a swan.
There is almost no chance that either 'Brian is a swan' or 'John moved to the garden' but not both.
There is almost no chance that either 'Brian is a swan' or 'John moved to the garden' but not both.
It is probably the case that either 'Brian is a swan' or 'John moved 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.0::factA.
  0.6::factB.
  0.2::factC.
  %hop1
  0.75::factX:-and(factA,factC).
  0.75::factY:-or(factA,factB).
  0.9::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Brian is a swan' or 'John moved to the garden' but not both.