It is probably not the case that Greg is a swan. It is likely that Brian is white. It is probably not the case that Mary went to the office. It is unlikely that if either 'Mary went to the office' or 'Greg is a swan' but not both then Jeff discarded the milk. It is unlikely that if either 'Mary went to the office' or 'Brian is white' but not both then Sumit is thirsty. There is a very good chance that if 'Greg is a swan and Brian is white' then Bernhard is yellow.
It is certain that either 'Bernhard is yellow' or 'Mary went to the office' but not both.
It is probably not the case that either 'Bernhard is yellow' or 'Mary went to the office' but not both.
It is certain that either 'Bernhard is yellow' or 'Mary went to the office' 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.25::factC.
  %hop1
  0.2::factX:-xor(factC,factA).
  0.2::factY:-xor(factC,factB).
  0.8::factZ:-and(factA,factB).

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

  query(conclusion).
  
Either 'Bernhard is yellow' or 'Mary went to the office' but not both.