Appendix A. The Event Model

UML Representation of the Event Model

Figure Appendix A.1. 

The Events Schema

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:publicid:IDN+cde.com:babl:events:0.01" xmlns:ev="urn:publicid:IDN+cde.com:babl:events:0.01" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:evc="urn:publicid:IDN+cde.com:babl:events:codes:0.01" xmlns:babll="urn:berkeley:sims:doc-eng:names:babl:CoreComponents:CommonComponentTypes:0.01" xmlns:ublr="urn:oasis:names:tc:ubl:CommonAggregateTypes:1:0-beta" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:import namespace="urn:publicid:IDN+cde.com:babl:events:codes:0.01" schemaLocation="EventCodelist.xsd"/>
<xsd:import namespace="urn:berkeley:sims:doc-eng:names:babl:CoreComponents:CommonComponentTypes:0.01" schemaLocation="http://dream.berkeley.edu/doc-eng/xml/xsd/babl/schemas/babl_0p02/CoreComponents/CommonComponentTypes2.xsd"/>
<xsd:import namespace="urn:oasis:names:tc:ubl:CommonAggregateTypes:1:0-beta" schemaLocation="http://www.oasis-open.org/committees/ubl/lcsc/UBLv1-beta/xsd/common/UBL-Reusable-1.0-beta.xsd"/>
<xsd:annotation>
<xsd:documentation>University of California, Berkeley</xsd:documentation>
<xsd:documentation>School of Information Management and Systems</xsd:documentation>
<xsd:documentation>UC Berkeley Calendar Network</xsd:documentation>
<xsd:documentation>Final Master's Project</xsd:documentation>
<xsd:documentation>Allison Bloodworth, Nadine Fiebrich, Zhanna Shamis, Myra Liu</xsd:documentation>
<xsd:documentation>This document incorporates UC Berkeley Calendar Event modeling work done by Allison Bloodworth, Sara Leavitt, Lawrence Hall of Science, Kathleen Connors, Lawrence Hall of Science, Jeff McCullough, CalAgenda, Sarah Jones, CalAgenda and Mimi Mugler, Cal Agenda during the summer and fall of 2003.</xsd:documentation>
<xsd:documentation>This file contains a W3C schema definition for a group of calendar Events on the UC-Berkeley campus. This document outlines the transmission model for event information between calendars as well as the document in which Events will be placed when they are pulled from the central repository in order to transform them into a calendar using XSL.</xsd:documentation>
</xsd:annotation>
<!-- ######################################## -->
<!-- GLOBAL ELEMENTS -->
<!-- ######################################## -->
<xsd:element name="Events" type="ev:EventsType"/>
<xsd:element name="Event" type="ev:EventType">
<xsd:annotation>
<xsd:documentation>Something that takes place; an occurrence. In this model, an event is a calendar event that occurs on or in relation to the UC-Berkeley campus.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="AdditionalInfo" type="xsd:string"/>
<xsd:element name="ContactInfo" type="ev:ContactInfoType"/>
<xsd:element name="Description" type="xsd:string"/>
<xsd:element name="EventID" type="xsd:normalizedString"/>
<xsd:element name="Name" type="ev:NameType"/>
<xsd:element name="OrganizationName" type="xsd:normalizedString"/>
<xsd:element name="PersonalName" type="babll:PersonalNameType"/>
<xsd:element name="StartTime" type="xsd:date"/>
<xsd:element name="Title" type="xsd:normalizedString"/>
<xsd:element name="URL" type="xsd:anyURI"/>
<xsd:element name="WebPage" type="ev:WebPageType"/>
<!-- ######################################## -->
<!-- GLOBAL TYPES -->
<!-- ######################################## -->
<!-- Event CORE: EventTitle, EventSubtitle, EventID, EventType, Description, WebPage, Image, DateTime, Location -->
<!-- Event PARTIES: Audiences, Participants, Sponsors-->
<!-- Event DETAILS: EntryConditions, SupplementalInfo -->
<!-- Event ADMINISTRATIVE: PublicEventContact, EventListingContact, EventOccurenceStatus, EventSharingStatus, ChangeManagement -->
<!-- Event MARKETING: RelatedEvents, SpotlightThisEvent, CalendarAdministratorMessage, Keywords -->
<xsd:complexType name="EventsType">
<xsd:sequence>
<xsd:element ref="ev:Event" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- BEGIN EVENT TYPE ############################## -->
<xsd:complexType name="EventType">
<xsd:sequence>
<xsd:element name="EventTitle" type="xsd:normalizedString">
<xsd:annotation>
<xsd:documentation>The primary title of an Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EventSubtitle" type="xsd:normalizedString" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Any additional or secondary information that is part of the title of an Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="ev:EventID" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The unique identifier of an event within the central repository.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EventType" type="evc:EventTypeType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>A categorization of the event suitable for the university environment (e.g. Lecture, Seminar, Performance, etc.)</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="ev:Description" minOccurs="0">
<xsd:annotation>
<xsd:documentation>An overall description of the Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="ev:WebPage" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>A web page dedicated to the Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Image" type="ev:ImageType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>An image associated with the Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Audiences" type="ev:AudiencesType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Groups for whom the Event is intended.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Participants" type="ev:ParticipantsType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Entities who are actually participating in the event. (e.g. Speaker, Lecturer, Discussant, Performer, Dancer, etc.)</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Sponsors" type="ev:SponsorsType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Entities who are putting on the event, sponsoring the event financially, or are otherwise known as an organizer or supporter of the Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EntryConditions" type="ev:EntryConditionsType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Information on tickets, reservations, and attendance restrictions.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="SupplementalInfo" type="ev:SupplementalInfoType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Information about the Event that is not considered primary information.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="PublicEventContact" type="ev:PublicEventContactType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>A person for the public to contact with questions about the Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EventListingContact" type="ev:EventListingContactType" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>A person for calendar owners internal to the UCB Calendar Network to contact with questions about an Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EventOccurrenceStatus" type="evc:EventOccurrenceStatusType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indicates whether or not the Event is still scheduled to take place.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EventSharingStatus" type="evc:EventSharingStatusType">
<xsd:annotation>
<xsd:documentation>Indicates whether the Event is Public, meaning it can be shared with any calendar in the UCB Calendar Network, or Private, meaning the Event will not be shared, and will be displayed only on the sponsoring calendar.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ChangeManagement" type="ev:ChangeManagementType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indicates when and by whom the Event was entered, and when and by whom the Event was modified.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="RelatedEvents" type="ev:RelatedEventsType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Other events which bear some relation to the Event. This could be a parent-child-sibling relationship, or an indicator re: another event that may also be of interest to people attending the Event. </xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="SpotlightThisEvent" type="xsd:boolean" minOccurs="0">
<xsd:annotation>
<xsd:documentation>An indicator that the Event is special and should be highlighted in calendars. A marketing tool.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="CalendarAdministratorMessage" type="xsd:string" minOccurs="0">
<xsd:annotation>
<xsd:documentation>A message sent to a Calendar Administrator about the event which will not be published on any website. This can be used along with SpotlightThisEvent or when events are recommended within the UCB Calendar Network to explain to a Calendar Administrator why they should publish or spotlight the event on their website. </xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Keywords" type="ev:KeywordType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Specialized terms describing an Event that may be used to help users searching for events find events of interest to them.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Locations" type="ev:LocationsType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The place the event occurs.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="DateTime" type="ev:DateTimeType">
<xsd:annotation>
<xsd:documentation>The day and time an Event occurs. Includes information on repetition.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<!-- Event PARTIES############################## -->
<!-- Event DETAILS ############################## -->
<!-- Event ADMINISTRATIVE ############################## -->
<!-- Event MARKETING ############################## -->
<!-- Event LOCATION ############################## -->
<!-- Event DATETIME############################## -->
</xsd:sequence>
</xsd:complexType>
<!-- END EVENT TYPE ############################## -->
<xsd:complexType name="ImageType">
<xsd:sequence>
<xsd:element ref="ev:Title" minOccurs="0"/>
<xsd:element ref="ev:URL"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="NameType">
<xsd:sequence>
<xsd:choice>
<xsd:element ref="ev:PersonalName"/>
<xsd:element ref="ev:OrganizationName"/>
<xsd:element name="LocationName" type="xsd:normalizedString"/>
</xsd:choice>
<xsd:element ref="ev:Description" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="WebPageType">
<xsd:sequence>
<xsd:element ref="ev:Title" minOccurs="0"/>
<xsd:element ref="ev:URL"/>
</xsd:sequence>
</xsd:complexType>
<!-- ############################## -->
<xsd:complexType name="ContactInfoType">
<xsd:sequence>
<xsd:element name="PhoneNumber" type="ev:PhoneNumberType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="EmailAddress" type="xsd:normalizedString" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="FaxNumber" type="ev:FaxNumberType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="PreferredContactMethod" type="evc:PreferredContactMethodType" minOccurs="0"/>
<xsd:element name="Address" type="ublr:AddressType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="ev:WebPage" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PhoneNumberType">
<xsd:sequence>
<xsd:element name="Number" type="xsd:normalizedString"/>
<xsd:element name="Extension" type="xsd:normalizedString" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="FaxNumberType">
<xsd:sequence>
<xsd:element name="Number" type="xsd:normalizedString"/>
<xsd:element name="Extension" type="xsd:normalizedString" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<!-- Event PARTIES ############################## -->
<xsd:complexType name="ParticipantsType">
<xsd:sequence>
<xsd:element name="Participant" type="ev:ParticipantType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ParticipantType">
<xsd:sequence>
<xsd:element ref="ev:Name" minOccurs="0"/>
<xsd:element ref="ev:ContactInfo" minOccurs="0"/>
<xsd:element name="Role" type="evc:RoleType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>Indicates the method by which the Participant is participating in the Event (e.g. Speaker, Performer, etc.).</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ProfessionalAffiliation" type="ev:ProfessionalAffiliationType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="ev:WebPage" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="ev:Description" minOccurs="0">
<xsd:annotation>
<xsd:documentation>A description of the Participant. This may be a biography.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ProfessionalAffiliationType">
<xsd:sequence>
<xsd:element ref="ev:Title" minOccurs="0"/>
<xsd:element ref="ev:OrganizationName"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SponsorsType">
<xsd:sequence>
<xsd:element name="Sponsor" type="ev:SponsorType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SponsorType">
<xsd:sequence>
<xsd:element ref="ev:Name"/>
<xsd:element ref="ev:ContactInfo" minOccurs="0"/>
<xsd:element name="Level" type="evc:LevelType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>If there is a hierarchy of sponsors, indicates the Sponsor's level within that hierarchy (e.g. primary, secondary, etc.).</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Class" type="evc:ClassType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>The category into which a Sponsor falls (e.g. local or corporate).</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Logo" type="ev:ImageType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- Event DETAILS ############################## -->
<xsd:complexType name="EntryConditionsType">
<xsd:sequence>
<xsd:element name="AdmissionCharge" type="ev:AdmissionChargeType" minOccurs="0"/>
<xsd:element name="TicketInfo" type="ev:TicketInfoType" minOccurs="0"/>
<xsd:element name="ReservationInfo" type="ev:ReservationInfoType" minOccurs="0"/>
<xsd:element name="AttendanceRestrictions" type="ev:AttendanceRestrictionsType" minOccurs="0"/>
<xsd:element name="SoldOut" type="xsd:boolean" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AdmissionChargeType">
<xsd:choice>
<xsd:element name="Free" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="Cost" type="xsd:normalizedString" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="TicketInfoType">
<xsd:sequence>
<xsd:element name="TicketRequired" type="xsd:boolean" minOccurs="0"/>
<xsd:element name="TicketContactInfo" type="ev:EntryConditionsContactInfoType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EntryConditionsContactInfoType">
<xsd:sequence>
<xsd:element ref="ev:Name" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="ev:ContactInfo" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReservationInfoType">
<xsd:sequence>
<xsd:element name="Reservation" type="evc:ReservationType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indication that a reservation is required or recommended.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ReservationContactInfo" type="ev:EntryConditionsContactInfoType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AttendanceRestrictionsType">
<xsd:sequence>
<xsd:element name="AgeRestriction" type="xsd:normalizedString" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="RoleRestriction" type="evc:AudienceType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>Indicates which campus roles (e.g. students, faculty, staff) may attend the event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="DepartmentalRestriction" type="xsd:normalizedString" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>Indicates which campus Departments or organizations may attend the event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="UniversityMemberRestriction" type="xsd:boolean" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Must the attendee be a member of the university? (e.g. Student, Faculty, or Staff?)</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="OtherRestriction" type="xsd:normalizedString" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>Any other attendance restriction not covered by the categories above.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AudiencesType">
<xsd:sequence>
<xsd:element name="TargetAudience" type="evc:AudienceType" maxOccurs="unbounded"/>
<xsd:element name="OtherTargetAudience" type="xsd:normalizedString" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>This element should allow open entry of an AudienceType that is not in the calendar's AudienceType codelist.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!-- Event DETAILS ############################## -->
<xsd:complexType name="SupplementalInfoType">
<xsd:sequence>
<xsd:element name="Refreshments" type="xsd:string" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Information on refreshments, food, or meals that will be served at the Event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element ref="ev:AdditionalInfo" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Any additional info about the Event not covered elsewhere.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<!-- Event ADMINISTRATIVE ############################## -->
<xsd:complexType name="PublicEventContactType">
<xsd:sequence>
<xsd:element ref="ev:Name" minOccurs="0"/>
<xsd:element ref="ev:ContactInfo" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EventListingContactType">
<xsd:sequence>
<xsd:element ref="ev:Name" minOccurs="0"/>
<xsd:element ref="ev:ContactInfo" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ChangeManagementType">
<xsd:sequence>
<xsd:element name="DateEntered" type="ev:ModifierType"/>
<xsd:element name="DateModified" type="ev:ModifierType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="LastModified" type="ev:ModifierType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ModifierType">
<xsd:sequence>
<xsd:element ref="ev:PersonalName" minOccurs="0"/>
<xsd:element name="UserID" type="xsd:normalizedString" minOccurs="0"/>
<xsd:element name="Date" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
<!-- Event MARKETING ############################## -->
<xsd:complexType name="RelatedEventsType">
<xsd:sequence>
<xsd:element name="RelatedEvent" type="ev:RelatedEventType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RelatedEventType">
<xsd:sequence>
<xsd:element ref="ev:EventID"/>
<xsd:element name="RelationType" type="xsd:normalizedString"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KeywordType">
<xsd:sequence>
<xsd:element name="Keyword" type="xsd:normalizedString" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- Event LOCATION ############################## -->
<xsd:complexType name="LocationsType">
<xsd:choice>
<xsd:element name="OnCampusLocation" type="ev:OnCampusLocationType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="OffCampusLocation" type="ev:OffCampusLocationType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="OnCampusLocationType">
<xsd:sequence>
<xsd:element name="BuildingName" type="xsd:normalizedString" minOccurs="0"/>
<xsd:element name="RoomNumber" type="xsd:normalizedString" minOccurs="0"/>
<xsd:element name="Address" type="ublr:AddressType" minOccurs="0"/>
<xsd:element name="BuildingHours" type="xsd:string" minOccurs="0"/>
<xsd:element ref="ev:AdditionalInfo" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="OffCampusLocationType">
<xsd:sequence>
<xsd:element name="BuildingName" type="xsd:normalizedString" minOccurs="0"/>
<xsd:element name="RoomNumber" type="xsd:normalizedString" minOccurs="0"/>
<xsd:element name="Address" type="ublr:AddressType" minOccurs="0"/>
<xsd:element name="BuildingHours" type="xsd:string" minOccurs="0"/>
<xsd:element ref="ev:AdditionalInfo" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<!-- Event DATETIME ############################## -->
<xsd:complexType name="DateTimeType">
<xsd:sequence>
<xsd:annotation>
<xsd:documentation>A Period should be used when an event runs across multiple days at the same time each date, and DistinctDates should be used when an event either occurs on one day or multiple days that are not part of a span. It can also be used for events that occur on dates that really are a span if they occur at different times each day (thus a span cannot be used). Both Periods and DistinctDates may be used if an event has a Period as well as additional days that are not part of the original or any other Period. Multiple Periods or multiple DistinctDates may be used. APPLICATION LOGIC should be used to make sure the dates of these multiple DistinctDates and Periods don't overlap.</xsd:documentation>
<xsd:documentation>Must have at least one DistinctDates/DistinctDate/Date or Periods/Period/StartDate or a (Periods, DistinctDates?)|(DistinctDates, Periods?) structure. However this must be enforced as a business rule, as it cannot be enforced in the schema because doing that would violate the Unique Particle Attribution rule.</xsd:documentation>
</xsd:annotation>
<xsd:element name="DistinctDates" type="ev:DistinctDatesType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Periods" type="ev:PeriodsType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DistinctDatesType">
<xsd:sequence>
<xsd:element name="DistinctDate" type="ev:DistinctDateType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DistinctDateType">
<xsd:sequence>
<xsd:element name="Date" type="xsd:date"/>
<xsd:element name="Time" type="ev:TimeType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>The time an event occurs. Making this unbounded allows for events with multiple times, such as movies.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PeriodsType">
<xsd:sequence>
<xsd:element name="Period" type="ev:PeriodType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PeriodType">
<xsd:sequence>
<xsd:element name="StartDate" type="xsd:date">
<xsd:annotation>
<xsd:documentation>First day of multiple day Events.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EndDate" type="xsd:date" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Last day of multiple day Events. A business rule must be used to ensure that the user enters either an EndDate or a RepetitionRule-Count element.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ExceptionDates" type="ev:ExceptionDatesType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Dates within a Period that the Event does not occur (e.g. a conference spanning two weeks may not occur over a weekend, or a repeating event may not occur duing winter break).</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="RepeitionRules" type="ev:RepetitionRulesType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>A rule defining when and how often an Event occurs. Can be used to calculate specific dates on which the Event occurs.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Time" type="ev:TimeType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation>The time an event occurs. The time belongs to the date span, and the time applies to every date in the span. Making this unbounded allows for events with multiple times, such as movies.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ExceptionDatesType">
<xsd:sequence>
<xsd:element name="ExceptionDate" type="xsd:date" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RepetitionRulesType">
<xsd:sequence>
<xsd:element name="RepetitionRule" type="ev:RepetitionRuleType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="RepetitionRuleType">
<xsd:sequence>
<xsd:element name="Frequency" type="evc:FrequencyType">
<xsd:annotation>
<xsd:documentation>Indicates how frequently an event repeats (e.g. hourly, daily, weekly, monthly, yearly).</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Interval" type="xsd:integer" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indicates the number of units of frequency on which event repeats (e.g. every 2 hours, every 5 days, etc.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="Count" type="xsd:integer" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indicates the number of times an event repeats (e.g. daily for 10 days). This element or end date is required for a repeating event.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ByMinute" minOccurs="0" maxOccurs="60">
<xsd:annotation>
<xsd:documentation>Indicates the minute of the hour on which an event repeats (e.g. to repeat every 20 minutes for an hour, ByMinute would have values of 0, 20, and 40. ByHour would also need to be used to indicate which hour.) This element should be limited to values 0 through 59.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="[0-5][0-9]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ByHour" minOccurs="0" maxOccurs="24">
<xsd:annotation>
<xsd:documentation>Indicates the hour of the day, using a 24-hour clock, on which an event repeats (e.g. to repeat at 10am, 2pm, and 4pm, ByHour would equal 10, 14, and 16). This element should be limited to values 0  through 23.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="[0-1][0-9]|[2][0-3]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ByDayOfWeek" type="ev:ByDayOfWeekType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indicates the day of the week on which an event repeats. It can also include a number to indicate, for example, "the third Monday" if the Frequency is set to something other than weekly. (e.g. to repeat every third Monday of the month, DayInterval would be "3," and DayOfWeek would be "Monday")</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="ByWeekNo" minOccurs="0" maxOccurs="106">
<xsd:annotation>
<xsd:documentation>Indicates the week of the year on which an event repeats (e.g. the 5th week of the year). Negative values may also be used to indicate how close the week is to the end of the year (e.g. "-1" means the last week of the year), and thus this element should be limited to values -53 through 53, not including 0. </xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="-[1-9]|-[1-4][0-9]|-[5][0-3]|[1-9]|[1-4][0-9]|[5][0-3]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ByMonth" minOccurs="0" maxOccurs="12">
<xsd:annotation>
<xsd:documentation>Indicates the month of the year on which an event repeats (e.g. the 7th month of the year, July.). This should be limited to values 1-12.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="[1-9]|[1][0-2]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ByMonthDay" minOccurs="0" maxOccurs="62">
<xsd:annotation>
<xsd:documentation>Indicates the day of the month on which an event repeats (e.g. the 31st day of the month.).  Negative values may also be used to indicate how close the week is to the end of the month (e.g. "-1" means the last day of the specified month), and thus this element should be limited to values -31 through 31, not including 0.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="-[1-9]|-[1-2][0-9]|-[3][0-1]|[1-9]|[1-2][0-9]|[3][0-1]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ByYearDay" minOccurs="0" maxOccurs="732">
<xsd:annotation>
<xsd:documentation>Indicates the day of the year on which an event repeats (e.g. the 1st and 200th days of the year. Negative values may also be used to indicate how close the day is to the end of the year (e.g. "-1" means the last day of the year), and thus this element should be limited to values -366 through 366, not including 0.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="-[1-9]|-[0-2][1-9][0-9]|-[3][0-5][0-9]|-[3][6][0-6]|[1-9]|[0-2][1-9][0-9]|[3][0-5][0-9]|[3][6][0-6]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="BySetPosition" minOccurs="0" maxOccurs="732">
<xsd:annotation>
<xsd:documentation>Indicates the instance of the set of days on which the event will repeat. (E.g. if ByDayOfWeek is set to "Mon, Tues, Wed, Thurs, Fri", and you'd like the event to repeat for the next month every 2nd weekday, "BySetPostion" would be 2). Negative values may also be used to indicate how close the day is to the end of the set (e.g. "-1" means the last day of the set), and thus this element should be limited to values -366 through 366, not including 0.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="-[1-9]|-[0-2][1-9][0-9]|-[3][0-5][0-9]|-[3][6][0-6]|[1-9]|[0-2][1-9][0-9]|[3][0-5][0-9]|[3][6][0-6]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="BySeason" type="evc:BySeasonType" minOccurs="0" maxOccurs="4"/>
<xsd:element name="WeekStart" type="evc:DayType" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Defines which day of the week (e.g. Mon) on which a workweek starts. The default should be Monday. This is significant when a WEEKLY repetition rule has an interval greater than 1, and a BYDAYOFWEEK rule part is specified. This is also significant when in a YEARLY repetition rule when a BYWEEKNO rule part is specified. In this situation, WeekStart determines which week of the year is considered week 1, as week number one of the calendar year is the first week which contains at least four (4) days in that calendar year. </xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
<!-- We could easily create another version of this type which would allow for exception as well as repetition rules-->
</xsd:complexType>
<xsd:complexType name="ByDayOfWeekType">
<xsd:sequence>
<xsd:element name="DayOfWeek" type="ev:DayOfWeekType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DayOfWeekType">
<xsd:sequence>
<xsd:element name="Day" type="evc:DayType"/>
<xsd:element name="DayInterval" type="xsd:integer" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Indicates that it is the nth day of the interval. For example, Monday and 1 indicates that it is the first monday of the specified interval. Negative numbers can also be used to indicate that it is the last (-1), second to the last (-2), etc. day of the specified interval.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TimeType">
<xsd:sequence>
<xsd:element name="StartTime" type="xsd:time">
<xsd:annotation>
<xsd:documentation>Time the Event begins.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="EndTime" type="xsd:time" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Time the Event ends.</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="TimeDuration" type="xsd:duration" minOccurs="0">
<xsd:annotation>
<xsd:documentation>Primitive type which allows durations to be represented using the ISO-8601 standard format PnYnMnDTnHnMnS where nY = number of years, nM = number of months, nD = number of days, nH = number of hours, nM = number of minutes and nS = number of seconds.</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

The Events Codelist

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:publicid:IDN+cde.com:babl:events:codes:0.01" xmlns:evc="urn:publicid:IDN+cde.com:babl:events:codes:0.01" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:annotation>
<xsd:documentation>University of California, Berkeley</xsd:documentation>
<xsd:documentation>School of Information Management and Systems</xsd:documentation>
<xsd:documentation>UC Berkeley Calendar Network</xsd:documentation>
<xsd:documentation>Final Master's Project</xsd:documentation>
<xsd:documentation>Allison Bloodworth, Nadine Fiebrich, Zhanna Shamis, Myra Liu</xsd:documentation>
<xsd:documentation>This document incorporates UC Berkeley Calendar Event modeling work done by Allison Bloodworth, Sara Leavitt, Lawrence Hall of Science, Kathleen Connors, Lawrence Hall of Science, Jeff McCullough, CalAgenda, Sarah Jones, CalAgenda and Mimi Mugler, Cal Agenda during the summer and fall of 2003.</xsd:documentation>
<xsd:documentation>This file contains a codelist for Events.xsd. This is a preliminary list of some of the types used in the Berkeley Calendar Network Event model, but additional values still must be defined for most types below.</xsd:documentation>
</xsd:annotation>
<xsd:simpleType name="AudienceType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="students"/>
<xsd:enumeration value="staff"/>
<xsd:enumeration value="faculty"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ClassType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Local"/>
<xsd:enumeration value="Corporate"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="codeListAgencyIdentifierType">
<xsd:restriction base="xsd:token"/>
</xsd:simpleType>
<xsd:simpleType name="codeListIdentifierType">
<xsd:restriction base="xsd:token"/>
</xsd:simpleType>
<xsd:simpleType name="codeListVersionIdentifier">
<xsd:restriction base="xsd:token"/>
</xsd:simpleType>
<xsd:simpleType name="EventOccurrenceStatusType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="HappeningAsScheduled"/>
<xsd:enumeration value="Cancelled"/>
<xsd:enumeration value="Postponed"/>
<xsd:enumeration value="Rescheduled"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="EventSharingStatusType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Public"/>
<xsd:enumeration value="Private"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="EventTypeType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Conference/Symposium"/>
<xsd:enumeration value="Course"/>
<xsd:enumeration value="Exhibit"/>
<xsd:enumeration value="Film"/>
<xsd:enumeration value="Lecture"/>
<xsd:enumeration value="Other"/>
<xsd:enumeration value="Performing Arts"/>
<xsd:enumeration value="Performing Arts-Dance"/>
<xsd:enumeration value="Performing Arts-Music"/>
<xsd:enumeration value="Performing Arts-Theater"/>
<xsd:enumeration value="Seminar"/>
<xsd:enumeration value="Sport"/>
<xsd:enumeration value="Workshop"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="FrequencyType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Hourly"/>
<xsd:enumeration value="Daily"/>
<xsd:enumeration value="Weekly"/>
<xsd:enumeration value="Monthly"/>
<xsd:enumeration value="Yearly"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="languageCodeType">
<xsd:restriction base="xsd:language"/>
</xsd:simpleType>
<xsd:simpleType name="LevelType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Primary"/>
<xsd:enumeration value="Secondary"/>
<xsd:enumeration value="Tertiary"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="PreferredContactMethodType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Address"/>
<xsd:enumeration value="PhoneNumber"/>
<xsd:enumeration value="EmailAddress"/>
<xsd:enumeration value="FaxNumber"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ReservationType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="required"/>
<xsd:enumeration value="recommended"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="RoleType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Speaker"/>
<xsd:enumeration value="Discussant"/>
<xsd:enumeration value="Conductor"/>
<xsd:enumeration value="Singer"/>
<xsd:enumeration value="Dancer"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="DayType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Monday"/>
<xsd:enumeration value="Tuesday"/>
<xsd:enumeration value="Wednesday"/>
<xsd:enumeration value="Thursday"/>
<xsd:enumeration value="Friday"/>
<xsd:enumeration value="Saturday"/>
<xsd:enumeration value="Sunday"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="BySeasonType">
<xsd:restriction base="xsd:normalizedString">
<xsd:enumeration value="Winter"/>
<xsd:enumeration value="Spring"/>
<xsd:enumeration value="Summer"/>
<xsd:enumeration value="Fall"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="WeekStartType">
<xsd:restriction base="xsd:normalizedString"/>
</xsd:simpleType>
</xsd:schema>