It is impossible that Bernhard is yellow. It is probable that Jessica is a wolf. It is certain that Mary is in the hallway. Chances are about even that if either 'Jessica is a wolf' or 'Mary is in the hallway' but not both then John went to the office. We doubt that if either 'Mary is in the hallway' or 'Bernhard is yellow' but not both then Brian is a lion. Chances are slight that if 'Jessica is a wolf' or 'Mary is in the hallway' or both then Greg is a rhino.
There is almost no chance that either 'Jessica is a wolf' or 'John went to the office' but not both.
There is a very good chance that either 'Jessica is a wolf' or 'John went to the office' but not both.
There is almost no chance that either 'Jessica is a wolf' or 'John went to the office' 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.0::factA.
  0.7::factB.
  1.0::factC.
  %hop1
  0.5::factX:-xor(factB,factC).
  0.2::factY:-xor(factC,factA).
  0.1::factZ:-or(factB,factC).

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

  query(conclusion).
  
Either 'Jessica is a wolf' or 'John went to the office' but not both.