The Calendar Framework is called EventKit, and its corresponding user interfaces are in EventKitUI. The basic underlying model allows you to describe a calendar as well as a single event.
The hierarchy is that the central database has a set of calendars, while each calendar has the events representing the actual entry (e.g., every Monday at 10 am).
Events, just like Contacts, can be augmented with geolocation information; or if they only have an address, this can be used to geocode it.
This chapter digs deep into this, as well as taking note ...