There is almost no chance that Sandra left the milk. There is a very good chance that Greg is yellow. There is a better than even chance that John went to the hallway. It is unlikely that if 'John went to the hallway' or 'Sandra left the milk' or both then Yann is tired. We believe that if 'Sandra left the milk' or 'John went to the hallway' or both then Brian is a rhino. There is a very good chance that if 'Greg is yellow' or 'John went to the hallway' or both then Julius is a frog.
We doubt that either 'Brian is a rhino' or 'John went to the hallway' but not both.
We doubt that either 'Brian is a rhino' or 'John went to the hallway' but not both.
We believe that either 'Brian is a rhino' or 'John went to the hallway' 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.02::factA.
  0.8::factB.
  0.6::factC.
  %hop1
  0.2::factX:-or(factC,factA).
  0.75::factY:-or(factA,factC).
  0.8::factZ:-or(factB,factC).

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

  query(conclusion).
  
Either 'Brian is a rhino' or 'John went to the hallway' but not both.