There is little chance that John picked up the milk. It is highly unlikely that Mary went to the office. It is probable that Daniel dropped the apple. Chances are slight that if either 'Mary went to the office' or 'John picked up the milk' but not both then Bernhard is gray. It is unlikely that if either 'Daniel dropped the apple' or 'Mary went to the office' but not both then Julius is a swan. Chances are slight that if either 'Daniel dropped the apple' or 'Mary went to the office' but not both then Sandra left the milk.
It is unlikely that either 'John picked up the milk' or 'Julius is a swan' but not both.
It is unlikely that either 'John picked up the milk' or 'Julius is a swan' but not both.
It is certain that either 'John picked up the milk' or 'Julius is a swan' 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.1::factA.
  0.05::factB.
  0.7::factC.
  %hop1
  0.1::factX:-xor(factB,factA).
  0.2::factY:-xor(factC,factB).
  0.1::factZ:-xor(factC,factB).

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

  query(conclusion).
  
Either 'John picked up the milk' or 'Julius is a swan' but not both.