There is little chance that Julius is a rhino. Chances are about even that Bernhard is gray. We doubt that Mary dropped the milk. It is unlikely that if either 'Julius is a rhino' or 'Mary dropped the milk' but not both then Antoine is hungry. It is certain that if either 'Julius is a rhino' or 'Mary dropped the milk' but not both then Jason is tired. It is unlikely that if 'Bernhard is gray' or 'Julius is a rhino' or both then John discarded the apple.
We believe that either 'Antoine is hungry' or 'Jason is tired' but not both.
We doubt that either 'Antoine is hungry' or 'Jason is tired' but not both.
We believe that either 'Antoine is hungry' or 'Jason is tired' 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.1::factA.
  0.5::factB.
  0.2::factC.
  %hop1
  0.2::factX:-xor(factA,factC).
  1.0::factY:-xor(factA,factC).
  0.2::factZ:-or(factB,factA).

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

  query(conclusion).
  
Either 'Antoine is hungry' or 'Jason is tired' but not both.