Jade
在一个JADE平台中,有且仅有一个叫做主容器的容器。当其他的容器启动时,他们必须在主容器中注册。
主容器除了可以提供其他一般容器注册功能之外,它还包含了两个特殊的智能体。
AMS(Agent Management System)提供一些智能体管理功能。例如:它给智能体提供命名服务,并且它也可以从容器中创建和删除智能体。
DF(Directory Facilitator)提供了黄页功能。当一个智能体需要利用其他智能体提供的服务时,它便可以到DF中去查找。
FIPA Message Structure
Ontology本体
一个共同的词汇,包括已达成一致的定义和这些定义之间的关系,用来描述特定的主题领域。
The Music Shop example
这个示例考虑了一个销售者代理管理的简单电子音乐商店,在这里有两种类型的物品(即CD和音乐书)可供销售。
每个物品都有一个序列号。每张CD都有一个名称和一定数量的曲目,每个曲目都有一个标题和时长。每本音乐书都有一个标题。销售者代理拥有一些物品,并可以将它们卖给其他买家代理。
在示例中,买家代理将询问销售者代理是否拥有特定的CD,如果是这样,他将请求他出售该CD。
This example considers a Seller agent managing a simple electronic music shop where two types of item (i.e. CDs and musical books) are available for sale. Each item has a serial number. Each CD has a name and a number of tracks each one has a title and a duration. Each musical book has a title. The Seller agent owns a number of items and can sell them to other Buyer agents. In the example a Buyer agent will ask the Seller agent if he owns a given CD and, if this is the case, he will request him to sell that CD.
插槽可以声明为可选(OPTIONAL),表示其值可以为null。否则,插槽被认为是强制性的(MANDATORY)。
插槽可以具有基数(cardinality)> 1,即该插槽的值是给定类型的元素的集合。例如,CD概念的模式中的曲目插槽可以包含1个或多个类型为Track的元素。
合并本体
为了简单起见,我们将所有的谓词、代理动作和概念都包含在MusicShopOntology中,但事实上,概念Item、谓词Owns和代理动作Sell与音乐商店领域并没有严格相关。它们可以被包含在另一个更通用的本体中,例如称为ECommerceOntology,并且MusicShopOntology可以被定义为通过添加CD、Book和Track概念来扩展ECommerceOntology。
在Vocabulary接口中定义了所有的常量。通过这种方式组织事物,每个常量都可以像在ExtendedOntology中定义一样访问,即使它实际上是在其中一个基本本体中定义的。
“iota” 运算符(由 SLVocabulary.IOTA 常量表示)是 SL 语言的运算符,允许创建表示“满足给定谓词(包含变量 X)为真的唯一 X”的 IRE。
通信过程
为了让JADE对给定的内容表达式执行适当的语义检查,有必要对话语领域中的所有可能元素进行分类(即可以作为代理发送的有效句子的内容,作为ACL消息的内容),根据它们的通用语义特征。这种分类源自FIPA中定义的ACL语言,该语言要求每个ACL消息的内容根据ACL消息的表现具有适当的语义。更详细地说,在第一层次上,我们区分谓词Predicates和项Terms (or entities)。
-
Predicates 是表达一些关于世界状态的表达式,可以是真或假,例如:
(Works-for (Person :name John) (Company :name TILAB))
表示“人John为公司TILAB工作”。谓词可以有意义地用作INFORM或QUERY-IF消息的内容,而如果用作REQUEST消息的内容,则毫无意义。 -
Terms (or entities) 是识别在世界中“存在”的实体(抽象或具体)的表达式,代理人们讨论和推理。它们进一步分类为:
- Concepts,即指示具有复杂结构的实体的表达式,可以用插槽的术语定义,例如:
(Person :name John :age 33)
概念通常直接用作ACL消息的内容是没有意义的,通常在谓词和其他概念中引用。 - Agent actions,即指示某些代理可以执行的操作的特殊概念,例如:
(Sell (Book :title “The Lord of the rings”) (Person :name John))
将代理行动单独处理是有用的,因为与“普通”概念不同,它们是某些类型的ACL消息(如REQUEST)的有意义内容。传播行为(即ACL消息)本身就是代理行为。 - Primitives,即指示原子实体(如字符串和整数)的表达式。
- Aggregates,即指示其他实体组的实体的表达式,例如:
(sequence (Person :name John) (Person :name Bill))
- Identifying Referential Expressions (IRE),即表达式,标识谓词为真的实体(或实体)的表达式,例如:
(all ?x (Works-for ?x (Company :name TILAB))
标识“使谓词(Works-for x (Company :name TILAB))为真的所有元素x”,即所有为公司TILAB工作的人。这些表达式通常用于查询(例如作为QUERY_REF消息的内容),并且需要变量。 - Variables,即(通常用于查询的)表达式,指示先验未知的通用元素。
- Concepts,即指示具有复杂结构的实体的表达式,可以用插槽的术语定义,例如:
jade.content包直接包含两种内容语言的编解码器(SL语言和LEAP语言)。
SL语言是一种人类可读的字符串编码(即SL中的内容表达式是一个字符串)内容语言,可能是(与KIF一起)科学界处理智能代理时最为流行的内容语言。
LEAP语言是一种非人类可读的字节编码(即LEAP中的内容表达式是一系列字节)内容语言,它是在LEAP项目内专门为JADE定义的。
(Sell )
ContentManager类提供了将Java对象转换为字符串(或字节序列)并将它们插入ACL消息的内容槽中以及反之的所有方法。