If we wanted to represent content as different "types" we would create different Schemas, right?
Not necessarily. It is possible to have multiple view models for a single schema each of which represents a different semantic entity. I guess typically you would have different schemas, but there may be scenarios where to avoid schema bloat in the CMS you have more generic schemas.
To take your schema.org Event example, you might want to have a single CMS schema for Events but actually want to have different semantic types on your site (Festival, SportsEvent, BusinessEvent) each with a different view to render the content differently.
Key to this is of course the relationship between model and view (which has direct parallels in the relationship between Schemas and Component Templates in the CMS). We want to render the content with a certain view. A mapping is defined from view to model, and thus we convert the CMS model into this view model.
Is the documentation example RDFa? Could an implementer change the Microdata Language (say to Microdata per below)?
Like Rick says, you can take control of the format used for semantics by implementing your own helpers to replace the built in ones on
@Markup.Entity/Property (older DXA versions).
It might be worth adding a bit of background on the thinking behind DXA supporting almost arbitrary N->M schema->view model mappings. Many MVC implementations I have worked on enforce a 1-1 mapping between schemas and view models, however I have found that you can come unstuck in these scenarios. Some typical issues I have seen are:
Efficiency - My Article schema has 40 fields, but in my Article Summary view, I want to render the title, summary and image and a resolved link. In my Article Details view I want to render all 40 fields, but no resolved link. Having a single model for both is not optimal for either. In DXA we can easily create a simple ArticleSummary model with a resolved link, and a full Article model without the resolved link.
Reuse - Actually its not only articles that I want to render on the site with my Summary view (title, summary, image, link) - I want to reuse this view (and model) for rendering Events, Blog Posts, Products. In DXA this is simple (Teaser is a good example of this)
Performance - My Product schema contains some marketing content, which I enrich with pricing and availability from my eCommerce system, and technical data from a PIM system before rendering with a Product Details view. However I also want to provide the marketing content only in a lightweight JSON format to a fancy AJAX driven Product Carousel on my site. In DXA I can easily create a Product model for the Product Details View containing all data loaded from the 3 systems, and a lightweight ProductSummary model for the JSON, which contains only the required content, ensuring the model can be more quickly loaded and bandwidth to the browser (and resources it requires to parse/process the content) are optimized