Chances are slight that Greg is a swan. It is probably the case that Mary got the milk. It is probably the case that Bernhard is white. It is likely that if 'Bernhard is white and Greg is a swan' then Brian is a rhino. It is highly likely that if 'Greg is a swan' or 'Mary got the milk' or both then Jeff went to the garden. It is certain that if 'Mary got the milk and Bernhard is white' then Bill moved to the office.
Chances are about even that either 'Bill moved to the office' or 'Brian is a rhino' but not both.
Chances are about even that either 'Bill moved to the office' or 'Brian is a rhino' but not both.
It is certain that either 'Bill moved to the office' or 'Brian is a rhino' 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.7::factB.
  0.7::factC.
  %hop1
  0.7::factX:-and(factC,factA).
  0.9::factY:-or(factA,factB).
  1.0::factZ:-and(factB,factC).

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

  query(conclusion).
  
Either 'Bill moved to the office' or 'Brian is a rhino' but not both.