ActivityStreams Schema: Hierarchy of Types

As I work on the proposed spec which I'll be submitting imminently as a 
basis for our social API, it occurs to me that we really ought to (A) 
work out our base types (as Evan brought up earlier this week), and (B) 
work our our classification system.

I figure that we have three broad groups of Objects:

  * "Actors" - people, robots, etc. The "users" of our social system,
    whether sentient or not.
  * "Content objects" - notes, articles, videos, etc. These are
    "passive" objects - they can only be created and acted on by the
    previous
      o With "Media" as a subclass for things like videos and audio,
        which share a common property set
  * "Other" - Things like groups, which don't really fall into either of
    the two previous categories

This gives us an ontology somewhat like this (where each indent level 
implies a subclass relationship)

  * as:Object - Base type
      o as:Actor?
        A "producer"/"consumer" in AS ontology
          + as:Person - A human being
          + Others for "bots"?
      o as:<Something> (Content objects; This is kind of like what
        Tantek would call a post)
        Can have things like comments, list of people who like, etc
          + as:Note - shortform text (e.g. a tweet)
          + as:Article - longform text
          + as:Media(Object?) - Various types of multimedia (all share
            common properties)
              # as:Audio
              # as:Video
              # as:Image
              # ...
          + as:Location
          + as:Collection
          + ...
      o as:Group

This then gives us a basis for declaring common properties (e.g. a 
Person doesn't have comments, but all content objects do)

Thoughts?

Owen

Received on Tuesday, 4 November 2014 20:58:39 UTC