It is almost certain that John moved to the garden. It is almost certain that Jason is tired. There is almost no chance that Mary went to the hallway. It is improbable that if 'John moved to the garden' or 'Jason is tired' or both then Bernhard is green. It is probable that if 'John moved to the garden' or 'Jason is tired' or both then Brian is a rhino. Chances are slight that if 'John moved to the garden and Mary went to the hallway' then Sandra left the apple.
There is almost no chance that either 'Sandra left the apple' or 'Brian is a rhino' but not both.
It is probable that either 'Sandra left the apple' or 'Brian is a rhino' but not both.
There is almost no chance that either 'Sandra left the apple' 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.95::factA.
  0.95::factB.
  0.02::factC.
  %hop1
  0.1::factX:-or(factA,factB).
  0.7::factY:-or(factA,factB).
  0.1::factZ:-and(factA,factC).

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

  query(conclusion).
  
Either 'Sandra left the apple' or 'Brian is a rhino' but not both.