It is probably not the case that Jessica is a mouse. It is improbable that Sandra left the football. There is little chance that Brian is green. It is certain that if 'Brian is green' or 'Sandra left the football' or both then John got the milk. It is likely that if 'Jessica is a mouse' or 'Sandra left the football' or both then Gertrude is a sheep. There is a better than even chance that if 'Sandra left the football and Jessica is a mouse' then Bernhard is a rhino.
It is probably not the case that either 'John got the milk' or 'Gertrude is a sheep' but not both.
It is probably not the case that either 'John got the milk' or 'Gertrude is a sheep' but not both.
It is certain that either 'John got the milk' or 'Gertrude is a sheep' 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.25::factA.
  0.1::factB.
  0.1::factC.
  %hop1
  1.0::factX:-or(factC,factB).
  0.7::factY:-or(factA,factB).
  0.6::factZ:-and(factB,factA).

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

  query(conclusion).
  
Either 'John got the milk' or 'Gertrude is a sheep' but not both.