There is little chance that Greg is gray. It is probably not the case that Brian is yellow. It is highly unlikely that Sandra took the milk. It is likely that if 'Sandra took the milk and Greg is gray' then John is in the garden. Chances are about even that if 'Sandra took the milk' or 'Greg is gray' or both then Julius is a frog. Chances are about even that if 'Greg is gray' or 'Brian is yellow' or both then Bernhard is a lion.
It is likely that either 'Brian is yellow' or 'Sandra took the milk' but not both.
It is probably not the case that either 'Brian is yellow' or 'Sandra took the milk' but not both.
It is likely that either 'Brian is yellow' or 'Sandra took the milk' 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.25::factB.
  0.05::factC.
  %hop1
  0.7::factX:-and(factC,factA).
  0.5::factY:-or(factC,factA).
  0.5::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'Brian is yellow' or 'Sandra took the milk' but not both.