I’ve been toying with an object model for my blog replacement. Here it is, complete with compulsory Poseidon logo background:

The model centres around ‘Article’. Articles are content provided by a user. An Article can be a blog entry, a comment, a longer essay or a note on a movie that I’ve seen.
Articles have a type, which is defined by their ArticleTemplate. ArticleTemplates are arranged in a hierarchy.
The attributes of an article are held as key-value pairs. The AttributeDefinitions of the article’s template define what these attributes are. AttributeDefinition objects can be used to validate individual attributes on an Article.
With this mechanism, the attributes of a blog entry can differ from a longer article, although they will share some common attributes – an author name, a title, body text.
Finally, articles can belong to multiple categories. This is to help classify blog entries and essays, although it may be less useful to other types of article.
Looking back, I seem to have created a generic object model, somewhat similar in purpose to Roundup’s, though much simpler. I have a nagging feeling that getting to terms with one or more real content management systems would be helpful right now, if I had the time.