h-event: Difference between revisions
GRegorLove (talk | contribs)  (→Examples in the wild:  +my example, note additional dt-published property)  | 
				 (→See Also:  mention rsvps on h-entry)  | 
				||
| Line 178: | Line 178: | ||
* [[h-card]]  | * [[h-card]]  | ||
* [[hCalendar]]  | * [[hCalendar]]  | ||
* [[h-entry]]s can be RSVPs to events, using the p-rsvp property  | |||
[[Category:Draft Specifications]]  | [[Category:Draft Specifications]]  | ||
Revision as of 16:44, 3 July 2017
<entry-title>h-event</entry-title> h-event is a simple, open format for events on the web. h-event is often used with both event listings and individual event pages. h-event is one of several open microformat draft standards suitable for embedding data in HTML/HTML5.
h-event is the microformats2 update to hCalendar.
- Status
 - This is a Living Specification yet mature enough to encourage additional implementations and feedback.
 - Participate
 - Open Issues
 - IRC: #microformats on Freenode
 
- License
 - Per CC0, to the extent possible under law, the editors have waived all copyright and related or neighboring rights to this work. In addition, as of 2025-11-03, the editors have made this specification available under the Open Web Foundation Agreement Version 1.0.
 
Example
Here is a simple event example:
<div class="h-event">
  <h1 class="p-name">Microformats Meetup</h1>
  <p>From 
    <time class="dt-start" datetime="2013-06-30 12:00">30<sup>th</sup> June 2013, 12:00</time>
    to <time class="dt-end" datetime="2013-06-30 18:00">18:00</time>
    at <span class="p-location">Some bar in SF</span></p>
  <p class="p-summary">Get together and discuss all things microformats-related.</p>
</div>
Parsed JSON:
{
  "items": [
    {
      "type": [
        "h-event"
      ],
      "properties": {
        "name": [
          "Microformats Meetup"
        ],
        "start": [
          "2013-06-30 12:00:00"
        ],
        "end": [
          "2013-06-30 18:00:00"
        ],
        "location": [
          "Some bar in SF"
        ],
        "summary": [
          "Get together and discuss all things microformats-related."
        ]
      }
    }
  ]
}
Get started
The class h-event is a root class name that indicates the presence of an h-event.
p-name, dt-start, dt-end, p-location, p-summary, and the other h-event property class names listed below define properties of the h-event.
See microformats2-parsing to learn more about property class names.
Properties
h-event properties, inside an element with class h-event:
p-name- event name (or title)p-summary- short summary of the eventdt-start- datetime the event startsdt-end- datetime the event endsdt-duration- duration of the eventp-description- more detailed description of the eventu-url- permalink for the eventp-category- event category(ies)/tag(s)p-location- where the event takes place, optionally embedded h-card, h-adr, or h-geo
Experimental properties currently in use in the wild but not (yet) part of the official h-entry spec:
p-attendee- a person attending the event, optionally embed h-card
- This draft has not been updated in almost 2 years. During this period, 
h-entryp-rsvphas been standardised, thus making it robust and mature enough for the addition. I guess it's about time to unlabelp-attendeeas experimental.- I've filed https://github.com/microformats/h-event/issues/2 to track advancing this draft as a whole. Let's do that with the existing draft before discussing p-attendee in particular. And rather than guessing, take a look at the vocabulary maturity levels in h-entry and perhaps help evaluate (in another issue) p-attendee according to those criteria. Tantek 01:10, 28 February 2017 (UTC)
 
 - I would also suggest to extend expected value to h-entry, so that, while the personal info can be preserved, the attendee can also support p-rsvp property of h-entry.
- I don't understand this. p-attendee is supposed to represent a person, e.g. an h-card. How would it having that be an h-entry make sense and work (from a publishing and consuming code perspective)? This proposed extension to p-attendee may be worth its own issue as well. Tantek 01:10, 28 February 2017 (UTC)
 
 
All properties are optional.
Status
h-event is a microformats.org draft specification. Public discussion on h-event takes place on h-event-feedback and the #microformats irc channel on irc.freenode.net.
h-event is ready to use and implemented in the wild, but for backwards compatibility you should also mark h-events up as classic hCalendar events.
Property Details
(stub, to be expanded)
p-location
p-location is typically a physical address, optionally marked up with h-adr, for example:
<p class="p-location h-adr">
  <span class="p-street-address">17 Austerstræti</span>
  <span class="p-locality">Reykjavík</span>
  <span class="p-country-name">Iceland</span>
</p>
Reserved Properties
Reserved properties:
p-organizer- a person (co-)organizing the event, optionally embed h-cardMain article: h-card- proposed as way to implement copying an event organizer to Eventbrite
 
Examples in the wild
Real world in the wild examples:
- ... add uses of h-event you see in the wild here.
 - W3Conf 2013 uses h-event for the main event, and h-card for all the speakers and notable attendees. The h-cards make particularly good use of implied name, url, and photo properties.
 - Tantek Çelik uses h-event on his home page
 - microformats.org at 7 years presentation with h-event
 - Rise of the Indie Web hCards (from Personal Democracy Forum 2012 #pdf12 #pdf2012) has microformats2 h-event and h-card markup
 - WebMaker by Mozilla has h-event and h-card on event search (e.g. search near Portland Oregon) and event pages (e.g. IndieWebCamp 2012).[1]
 - IndieWebCamp has microformats2 h-event markup with embedded h-cards for the organizers and the location.
 - Mozilla Events page has microformats2 h-event markup with attendees marked up with h-card.
 - https://gregorlove.com/events has h-event markup, for example: https://gregorlove.com/2017/06/homebrew-website-club/
- has additional property from h-entry: 
dt-published 
 - has additional property from h-entry: 
 
See microformats2 examples in the wild for more
Validating
Test and validate microformats2 markup in general with:
- https://pin13.net/mf2/ - enter your markup directly
 - https://pin13.net/ - enter a URL to a page to test where it says "Microformats Parser"
 
Backward Compatibility
Publisher Compatibility
For backward compatibility, you may wish to use classic hCalendar classnames in addition to the more future-proof h-event properties, for example:
<div class="h-event vevent">
  <h1 class="p-name summary">Some great event</h1>
</div>
</div>
Parser Compatibility
Microformats parsers SHOULD detect classic properties only if a classic root class name is found and parse them as microformats2 properties.
If an "h-event" is found, don't look for a "vevent" on the same element.
Compat root class name: vevent
Properties: (parsed as p- plain text unless otherwise specified)
summary- parse asp-namedtstart- parse asdt-startdtend- parse asdt-endduration- parse asdt-durationdescriptionurl- parse as u-categorylocation- including compat rootvcardin the absence ofh-card, and compat rootadrin the absence ofh-adrgeo- parse asp-location h-geoincluding compat rootgeo
iCalendar Compatibility
hCalendar-specific implementations that perform custom display or translation to iCalendar .ics SHOULD prefer p-name over p-summary, and use p-summary value(s) as a fallback if there is no p-name.
Background
This work is based on the existing hCalendar and iCalendar specifications.
Design Principles
(stub, expand)
See Also
- h-calendar-to-do
 - microformats2
 - microformats2-parsing
 - h-adr
 - h-geo
 - h-card
 - hCalendar
 - h-entrys can be RSVPs to events, using the p-rsvp property