Chances are slight that Mary grabbed the milk. It is impossible that Julius is white. It is probably not the case that Jessica is a cat. It is probably not the case that if 'Julius is white' or 'Jessica is a cat' or both then Brian is white. Chances are about even that if 'Julius is white and Jessica is a cat' then Bernhard is a swan. It is impossible that if 'Jessica is a cat' or 'Mary grabbed the milk' or both then John discarded the apple.
It is likely that either 'Julius is white' or 'John discarded the apple' but not both.
It is impossible that either 'Julius is white' or 'John discarded the apple' but not both.
It is likely that either 'Julius is white' or 'John discarded the apple' 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.0::factB.
  0.25::factC.
  %hop1
  0.25::factX:-or(factB,factC).
  0.5::factY:-and(factB,factC).
  0.0::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Julius is white' or 'John discarded the apple' but not both.