Each agent can be decomposed into following components:
    (1) A network interface: It simply couples the agents to the network.
    (2) A communication interface: It is composed of several methods or functions for communicating with other agents.
    (3) A local knowledge model: Resources in this model include Java classes, other agent addresses, messaging languages
        (KQML), community ontologies and Strategies. Strategies are the general plans for coordination behavior that balances
        the agent's local interests with global (community) interests.
    (4) A domain knowledge model: The model comprises expertise that is required for an agent to perform functional tasks,
        and skills that may be methods for activating actions corresponding to the received requests.