We doubt that Lily is a swan. Chances are about even that Winona is a wolf. It is unlikely that Julius is yellow. It is certain that if either 'Julius is yellow' or 'Lily is a swan' but not both then Bernhard is green. It is likely that if 'Julius is yellow' or 'Lily is a swan' or both then Yann is hungry. There is little chance that if either 'Winona is a wolf' or 'Julius is yellow' but not both then Mary went to the office.
It is probably not the case that either 'Mary went to the office' or 'Yann is hungry' but not both.
It is probably not the case that either 'Mary went to the office' or 'Yann is hungry' but not both.
It is probably the case that either 'Mary went to the office' or 'Yann is hungry' 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.2::factA.
  0.5::factB.
  0.2::factC.
  %hop1
  1.0::factX:-xor(factC,factA).
  0.7::factY:-or(factC,factA).
  0.1::factZ:-xor(factB,factC).

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

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