When is necessary to add class for semantics? : I want to write semantic beautiful no-nonsense HTML. When is the right time to include class and when it's not? Should I add class on every element of my HTML?

To write semantic markup, we must use HTML tags correctly so that our markup is both human-readable and machine-readable. When we write semantic markup we can no longer select HTML elements based on visual presentation. Instead, we select HTML elements based on their semantic meaning, and then use CSS to define the visual presentation of our content. When writing semantic markup, the presentation of web page elements is kept completely separate and distinct from the markup of the content itself.

    <body> 

    <ul class="post">
    <li class="title"> <h3>Title of Post</h3> </li>
    <li class="content"><p> Lorem Ipsum bla bla..</p></li>
    <li class="hastag"><a href="site.come/hash/samplepost">#samplepost </a> 
    </li>
    </ul>

    </body>

    <style> 
    .title{code}
    .content{code}
    .hashtag{code}
    </style>

or

    <body>

    <ul class="post">
    <li> <h3>Title of Post</h3> </li>
    <li><p>Ipsum bla bla..</p></li>
    <li><a href="site.come/hash/samplepost">#samplepost </a></li>
    </ul>

    </body>

    <style> 
    .post > li > h3{code}
    .post > li > p {code}
    .post > li > a {code}
    </style>

Which of these is more semantic? Should we use class on everything or only when necessary?