It is highly likely that Yann is thirsty. It is impossible that Mary went to the hallway. There is almost no chance that Bernhard is yellow. It is almost certain that if 'Mary went to the hallway' or 'Bernhard is yellow' or both then Jessica is a sheep. It is unlikely that if either 'Yann is thirsty' or 'Bernhard is yellow' but not both then Greg is a rhino. It is certain that if 'Bernhard is yellow and Mary went to the hallway' then John dropped the apple.
It is impossible that either 'Yann is thirsty' or 'John dropped the apple' but not both.
It is highly likely that either 'Yann is thirsty' or 'John dropped the apple' but not both.
It is impossible that either 'Yann is thirsty' or 'John dropped the apple' 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.9::factA.
  0.0::factB.
  0.02::factC.
  %hop1
  0.95::factX:-or(factB,factC).
  0.2::factY:-xor(factA,factC).
  1.0::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'Yann is thirsty' or 'John dropped the apple' but not both.