World number one Aryna Sabalenka edges a tight encounter against Olympic champion Zheng Qinwen to reach the French Open semi-finals.