For explaining this, I think it makes sense two describe two main use cases (but there are possibly many more).
To give structured data about things that happened.
Not different to using all the other types Schema.org offers (or any other vocabulary, for that matter): represent entities described in your document and provide structured data about them. Actions are of course not so "obvious" entities like person, movies, or places, … but still.
Example: Alice liked Bob’s post at 2016-03-23. We have three obvious entities here:
- Alice is a
- Bob is a
- The post is a
But the date 2016-03-23 doesn’t belong to any of these entities. We need a fourth entity to capture it accordingly (together with the fact that a like happened):
(In another answer, I created a simple
To give structured data about things that humans and bots can do.
This use case is somewhat different from the "regular" Schema.org use. It can directly allow humans and bots to do things on/with your page. Thanks to the structured
Action markup, the various actions and their purpose can be understood by user agents, which might offer buttons etc. in the interfaces for their human users.
A popular example is Google’s Sitelinks Search Box. By providing a
SearchAction, you describe how your site’s search function can be used, which allows Google Search to display a search field on their search results that executes a search on your site.
(By the way, Google has many more
Action uses for Gmail. For example, the Rsvp Action, making use of
RsvpAction, can display a button in the Gmail interface which allows users to confirm their attendance to an event.)
Yandex seems to intend to make use of button actions (e.g., to buy a product) in the future.