It is impossible that Lily is a swan. It is certain that Winona is a mouse. It is impossible that Greg is a rhino. It is certain that if 'Winona is a mouse' or 'Lily is a swan' or both then Julius is yellow. It is improbable that if 'Lily is a swan' or 'Greg is a rhino' or both then Mary went to the hallway. We doubt that if 'Greg is a rhino and Lily is a swan' then John discarded the apple.
It is certain that either 'Julius is yellow' or 'Mary went to the hallway' but not both.
It is certain that either 'Julius is yellow' or 'Mary went to the hallway' but not both.
It is unlikely that either 'Julius is yellow' or 'Mary went to the hallway' 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.
  1.0::factB.
  0.0::factC.
  %hop1
  1.0::factX:-or(factB,factA).
  0.1::factY:-or(factA,factC).
  0.2::factZ:-and(factC,factA).

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

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