It is impossible that Mary discarded the apple. It is unlikely that Julius is gray. It is probably not the case that Brian is yellow. It is impossible that if 'Julius is gray' or 'Brian is yellow' or both then Winona is a wolf. There is a better than even chance that if 'Mary discarded the apple and Julius is gray' then Greg is yellow. It is almost certain that if either 'Brian is yellow' or 'Mary discarded the apple' but not both then John went to the hallway.
It is probably not the case that either 'John went to the hallway' or 'Greg is yellow' but not both.
It is probably not the case that either 'John went to the hallway' or 'Greg is yellow' but not both.
It is certain that either 'John went to the hallway' or 'Greg is yellow' 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.0::factA.
  0.2::factB.
  0.25::factC.
  %hop1
  0.0::factX:-or(factB,factC).
  0.6::factY:-and(factA,factB).
  0.95::factZ:-xor(factC,factA).

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

  query(conclusion).
  
Either 'John went to the hallway' or 'Greg is yellow' but not both.