There is a very good chance that Greg is gray. It is probably the case that Julius is a rhino. Chances are about even that Mary grabbed the milk. It is certain that if either 'Julius is a rhino' or 'Mary grabbed the milk' but not both then Brian is a swan. Chances are about even that if 'Greg is gray' or 'Mary grabbed the milk' or both then Antoine is bored. It is probable that if 'Mary grabbed the milk' or 'Julius is a rhino' or both then John dropped the milk.
It is highly unlikely that either 'Antoine is bored' or 'Greg is gray' but not both.
Chances are about even that either 'Antoine is bored' or 'Greg is gray' but not both.
It is highly unlikely that either 'Antoine is bored' or 'Greg is gray' 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.8::factA.
  0.7::factB.
  0.5::factC.
  %hop1
  1.0::factX:-xor(factB,factC).
  0.5::factY:-or(factA,factC).
  0.7::factZ:-or(factC,factB).

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

  query(conclusion).
  
Either 'Antoine is bored' or 'Greg is gray' but not both.