It is almost certain that John got the milk. Chances are slight that Gertrude is a mouse. Chances are about even that Lily is a frog. We doubt that if 'John got the milk and Gertrude is a mouse' then Mary moved to the office. There is almost no chance that if either 'John got the milk' or 'Lily is a frog' but not both then Julius is yellow. There is almost no chance that if 'John got the milk' or 'Gertrude is a mouse' or both then Greg is green.
It is almost certain that either 'John got the milk' or 'Greg is green' but not both.
It is almost certain that either 'John got the milk' or 'Greg is green' but not both.
There is little chance that either 'John got the milk' or 'Greg is green' 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.95::factA.
  0.1::factB.
  0.5::factC.
  %hop1
  0.2::factX:-and(factA,factB).
  0.02::factY:-xor(factA,factC).
  0.02::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'John got the milk' or 'Greg is green' but not both.