It is likely that Mary is in the school. It is almost certain that Fred moved to the office. It is probable that Greg is yellow. It is probably the case that if either 'Fred moved to the office' or 'Greg is yellow' but not both then Winona is a wolf. There is a very good chance that if either 'Mary is in the school' or 'Greg is yellow' but not both then Julius is a rhino. Chances are about even that if either 'Mary is in the school' or 'Fred moved to the office' but not both then Sandra left the milk.
It is impossible that either 'Julius is a rhino' or 'Fred moved to the office' but not both.
There is a better than even chance that either 'Julius is a rhino' or 'Fred moved to the office' but not both.
It is impossible that either 'Julius is a rhino' or 'Fred moved to the office' 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.7::factA.
  0.95::factB.
  0.7::factC.
  %hop1
  0.7::factX:-xor(factB,factC).
  0.8::factY:-xor(factA,factC).
  0.5::factZ:-xor(factA,factB).

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

  query(conclusion).
  
Either 'Julius is a rhino' or 'Fred moved to the office' but not both.