r7 - 10 Aug 2007 - 15:05:56 - TedLeungYou are here: OSAF >  Projects Web  >  DevelopmentHome > ServicesWorkingGroup > ContentModelProject > SchemaDisplayFormats

Schema Display Formats -- Options

We have a good deal of PIM schema info available, and more will be coming soon. We need to figure out how best to present that info to make it useful to everybody who needs to see it.

We've experimented with a variety of different formats for presenting schema information. Here are some examples, all of which describe the "Calendar Event" and its attributes.

Send me mail if you have opinions about what sort of format we should standardize on as we start to have more and more PIM schema to publish: skinner@osafoundation.org.

We're planning to have an XSL that will read our XML schema files and generate HTML documentation. Let me know if you have suggestions or feature requests about how that documentation should look.

Examples

  • "Calendar Event" in Plain Text
  • "Calendar Event" in Schema XML
  • "Calendar Event" in a diagram
  • "Calendar Event" as an HTML table <-- Be patient after clicking. After it loads it should scroll to the right place, but it takes awhile.
  • "Calendar Event" attributes presented as part of a polymorphism discussion


Plain Text

CalendarEvent
  owning calendar -> a Calendar item
  summary -> a String
  description -> a list of Strings
  categories -> a list of Strings
  startTime -> a Datetime
  endTime -> a Datetime
  organizer -> a list of (Contacts, Groups, People, Organizations)
  attendees -> a list of Invitations, or
               a list of (Contacts, Groups, People, Organizations)
  resources -> a list of Resource items
  location -> a list of Places (or Strings)
  recurrence -> a RecurrencePattern item
  reminder -> a list of Reminder items
  transparency -> ??? maybe a public/private flag?
  free/busy -> true/false
  eventGenre -> 'Holiday'/'Meeting'/'Birthday'/'Phone Call', etc.


Schema XML

  <Kind id="cal:CalendarEvent">
    <displayName>Calendar Event</displayName>
    <example>'Lunch with Tug'</example>
    <description>
      A Calendar Event represents an entry on a calendar.
    </description>
    <superKind itemref="cal:InformationItem"/>
    <attribute itemref="cal:summary"/>
    <attribute itemref="cal:comment"/>
    <attribute itemref="cal:categories"/>
    <attribute itemref="cal:startTime"/>
    <attribute itemref="cal:endTime"/>
    <attribute itemref="cal:organizer"/>
    <attribute itemref="cal:attendees"/>
    <attribute itemref="cal:location"/>
    <attribute itemref="cal:recurrence"/>
    <attribute itemref="cal:reminder"/>
    <attribute itemref="cal:transparency"/>
  </Kind>

  <AttributeDefinition id="cal:summary">
    <displayName>summary</displayName>
    <description>example: 'Lunch with Tug'. Similar to the ical 
      property 'Summary'</description>
    <cardinality>single</cardinality>
    <type itemref="core:String"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:comment">
    <displayName>comment</displayName>
    <description>Similar to the ical property 'Description'</description>
    <cardinality>list</cardinality>
    <type itemref="core:String"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:categories">
    <displayName>categories</displayName>
    <description>Similar to the ical property 'Categories'</description>
    <cardinality>list</cardinality>
    <type itemref="core:String"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:startTime">
    <displayName>start time</displayName>
    <description>When does this Calendar Event start?</description>
    <cardinality>single</cardinality>
    <required/>
    <type itemref="core:DateTime"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:endTime">
    <displayName>end time</displayName>
    <description>When does this Calendar Event end?</description>
    <cardinality>single</cardinality>
    <required/>
    <type itemref="core:DateTime"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:organizer">
    <displayName>organizer</displayName>
    <description>Similar to the ical property 'Organizer' -- has importance for iTIP. 
      (@@@ -- 'Type' should be something that can have values which could be any of a 
      variety of types: people, organizations, or groups)</description>
    <cardinality>list</cardinality>
    <type itemref="core:Contact"/>
    <inverseAttribute itemref="cal:@@@"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:attendees">
    <displayName>attendees</displayName>
    <description>Similar to the ical property 'Attendee'. Alternatively, we could 
      do something interesting here, perhaps have two attributes with 'attribute  
      inheritance', or have two attributes that are both sub-attributes of some 
      common super-attribute: participant, invitee.  In this case, 'organizer' 
      would also be a 'participant.  (@@@ -- 'Type' should really be something 
      that can have values which could be any of a variety of types: people, 
      organizations, groups, resources or maybe even just simple strings.)
    </description>
    <cardinality>list</cardinality>
    <type itemref="core:Contact"/>
    <inverseAttribute itemref="cal:@@@ -- attending?"/>
  </AttributeDefinition>

  <AttributeDefinition id="cal:location">
    <displayName>location</displayName>
    <description>Similar to the ical property 'Location'. (@@@ -- 'Type' should 
      really be something that can have values which could be either Places 
      or just simple strings.)</description>
    <cardinality>list</cardinality>
    <type itemref="core:Place"/>
    <inverseAttribute itemref="cal:@@@"/>
    <deletePolicy>strong reference</deletePolicy>
  </AttributeDefinition>

  <AttributeDefinition id="cal:recurrence">
    <displayName>recurrence</displayName>
    <description>Similar to the ical property 'Recurrence'.</description>
    <cardinality>list</cardinality>
    <type itemref="core:RecurrencePattern"/>
    <inverseAttribute itemref="cal:@@@"/>
    <deletePolicy>strong reference</deletePolicy>
  </AttributeDefinition>

  <AttributeDefinition id="cal:reminder">
    <displayName>reminder</displayName>
    <description>Similar to the ical property 'Reminder'.</description>
    <cardinality>list</cardinality>
    <type itemref="core:Reminder"/>
    <inverseAttribute itemref="cal:@@@"/>
    <deletePolicy>strong reference</deletePolicy>
  </AttributeDefinition>

  <AttributeDefinition id="cal:transparency">
    <displayName>transparency</displayName>
    <description>Similar to the ical property 'Transparency'.  (@@@ -- Transparency  
      Enum should have instances for 'free', 'busy', etc.  Actually, we might do 
      this differently, and have a reference to a FreeBusyItem.</description>
    <cardinality>single</cardinality>
    <type itemref="core:@@@ -- type?"/>
  </AttributeDefinition>


Contributors

Edit | WYSIWYG | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r7 < r6 < r5 < r4 < r3 | More topic actions
 
Open Source Applications Foundation
Except where otherwise noted, this site and its content are licensed by OSAF under an Creative Commons License, Attribution Only 3.0.
See list of page contributors for attributions.