Chances are slight that Jessica is a cat. There is little chance that Julius is gray. It is unlikely that Mary discarded the milk. There is a better than even chance that if either 'Jessica is a cat' or 'Julius is gray' but not both then Bernhard is green. There is almost no chance that if 'Mary discarded the milk and Jessica is a cat' then Greg is a rhino. There is a better than even chance that if 'Mary discarded the milk and Julius is gray' then Brian is white.
It is probably not the case that either 'Mary discarded the milk' or 'Jessica is a cat' but not both.
It is probably not the case that either 'Mary discarded the milk' or 'Jessica is a cat' but not both.
It is probable that either 'Mary discarded the milk' or 'Jessica is a cat' 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.1::factB.
  0.2::factC.
  %hop1
  0.6::factX:-xor(factA,factB).
  0.02::factY:-and(factC,factA).
  0.6::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'Mary discarded the milk' or 'Jessica is a cat' but not both.