vocabulary Blog;

/*

* Value Types
*/

Author Id is written as Auto Counter; Comment Id is written as Auto Counter; Name is written as String(64); Ordinal is written as Unsigned Integer(32); Post Id is written as Auto Counter; Style is written as String(20); Text is written as Text; Topic Id is written as Auto Counter;

/*

* Entity Types
*/

Author is identified by its Id; author-Name is of at most one Author,

Author is called one Name;

Comment is identified by its Id; Author wrote Comment,

Comment was written by one Author;

Content is identified by Style and Text where

Content is of at most one Style,
Content has one Text,
Text is of Content;

Content provides text of Comment,

Comment consists of one text-Content;

Post is identified by its Id; Post was written by one Author,

Author wrote Post;

Topic is identified by its Id; Post belongs to one Topic,

Topic contains Post;

Topic belongs to at most one parent-Topic [acyclic]; Topic is called one topic-Name,

Name is of at most one Topic;

Paragraph is where

Post includes Ordinal paragraph;

Content is of Paragraph,

Paragraph contains one Content;

Paragraph has Comment,

Comment is on one Paragraph;

/*

* Constraints:
*/

either Content provides text of Comment or Content is of Paragraph but not both;