When an agent A communicates with another agent B, a certain amount of information I is transferred from A to B by means of an ACL message. Inside the ACL message, I is represented as a content expression consistent with a proper content language (e.g. SL) and encoded in a proper format (e.g. string). Both A and B have their own (possibly different) way of internally representing I. Taking into account that the way an agent internally represents a piece information must allow an easy handling of that piece of information, it is quite clear that the representation used in an ACL content expression is not suitable for the inside of an agent.

For example the information that there is a person whose name is Giovanni and who is 33 years old in an ACL content expression could be represented as the string (Person :name Giovanni :age 33) Storing this information inside an agent simply as a string variable is not suitable to handle the information as e.g. getting the age of Giovanni would require each time to parse the string. Considering software agents written in Java (as JADE agents are), information can conveniently be represented inside an agent as Java objects. For example representing the above information about Giovanni as an instance (a Java object) of an application-specific class

Download Jade Tutorial Application - Defined Content Languages and Ontologies