It is almost certain that John went to the hallway. There is almost no chance that Jessica is a cat. It is highly likely that Lily is a swan. It is probable that if 'John went to the hallway and Lily is a swan' then Julius is gray. There is a very good chance that if 'John went to the hallway and Jessica is a cat' then Greg is a rhino. Chances are about even that if 'John went to the hallway' or 'Lily is a swan' or both then Mary left the football.
It is highly unlikely that either 'John went to the hallway' or 'Mary left the football' but not both.
Chances are about even that either 'John went to the hallway' or 'Mary left the football' but not both.
It is highly unlikely that either 'John went to the hallway' or 'Mary left the football' 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.02::factB.
  0.9::factC.
  %hop1
  0.7::factX:-and(factA,factC).
  0.8::factY:-and(factA,factB).
  0.5::factZ:-or(factA,factC).

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

  query(conclusion).
  
Either 'John went to the hallway' or 'Mary left the football' but not both.