It is almost certain that Sandra dropped the milk. Chances are slight that Greg is a lion. It is impossible that Brian is yellow. There is a better than even chance that if 'Sandra dropped the milk and Brian is yellow' then Bernhard is a rhino. It is unlikely that if either 'Brian is yellow' or 'Greg is a lion' but not both then Julius is a swan. It is certain that if 'Sandra dropped the milk' or 'Brian is yellow' or both then Mary moved to the office.
It is impossible that either 'Mary moved to the office' or 'Greg is a lion' but not both.
It is highly likely that either 'Mary moved to the office' or 'Greg is a lion' but not both.
It is impossible that either 'Mary moved to the office' or 'Greg is a lion' 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.95::factA.
  0.1::factB.
  0.0::factC.
  %hop1
  0.6::factX:-and(factA,factC).
  0.2::factY:-xor(factC,factB).
  1.0::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'Mary moved to the office' or 'Greg is a lion' but not both.