A vowel is a sound generated by an open vocal tract, with vibration of the vocal cords and without friction. A consonant is every sound that is not a vowel. These two concepts are very simple and clear.
However, the whole concept of a semivowel seems to me a consequence of the false statement that the beginning sound and the final sound of a syllable (respectively, an onset and a coda) must be consonants. In several words of several languages, a diphthong (eg. "pay", "fly" and "yes" in English) or a triphthong (eg "Paraguay" and "why" in English) may begin/end a syllable. As far as I can hear, there isn't any difference in pronunciation of these vowels when are in the beginning or end of a syllable and when they are in the middle of it (nucleus). AFAIK, for instance, [flaɪ̯] and [flaj] are pronounced identically. Therefore, why are there different IPA symbols for semivowels (eg [w] and [j]) ?