It is highly unlikely that John moved to the office. We believe that Bernhard is gray. It is improbable that Daniel dropped the apple. It is probably not the case that if 'John moved to the office' or 'Daniel dropped the apple' or both then Mary is in the hallway. There is little chance that if 'Daniel dropped the apple' or 'Bernhard is gray' or both then Lily is a swan. It is unlikely that if 'John moved to the office' or 'Bernhard is gray' or both then Brian is a rhino.
We believe that either 'Mary is in the hallway' or 'Bernhard is gray' but not both.
We believe that either 'Mary is in the hallway' or 'Bernhard is gray' but not both.
We doubt that either 'Mary is in the hallway' or 'Bernhard is gray' 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.05::factA.
  0.75::factB.
  0.1::factC.
  %hop1
  0.25::factX:-or(factA,factC).
  0.1::factY:-or(factC,factB).
  0.2::factZ:-or(factA,factB).

  %hop2
  conclusion:-xor(factX,factB).

  query(conclusion).
  
Either 'Mary is in the hallway' or 'Bernhard is gray' but not both.