It is highly unlikely that Greg is a swan. Chances are about even that Brian is yellow. It is highly unlikely that Julius is gray. It is probable that if either 'Julius is gray' or 'Greg is a swan' but not both then Sandra took the milk. It is certain that if 'Julius is gray and Brian is yellow' then Jeff dropped the apple. It is almost certain that if 'Brian is yellow and Greg is a swan' then John went to the office.
It is probable that either 'Julius is gray' or 'Greg is a swan' but not both.
It is improbable that either 'Julius is gray' or 'Greg is a swan' but not both.
It is probable that either 'Julius is gray' or 'Greg is a swan' 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.05::factA.
  0.5::factB.
  0.05::factC.
  %hop1
  0.7::factX:-xor(factC,factA).
  1.0::factY:-and(factC,factB).
  0.95::factZ:-and(factB,factA).

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

  query(conclusion).
  
Either 'Julius is gray' or 'Greg is a swan' but not both.