1975年美国明斯基提出了用框架(frame)来表示知识的方法。
框架是一种描述所论对象属性的数据结构。它能直观清楚地展示组织好的数据结构,同时还能表达出对象之间隐含的信息连接。它以层次化的方式将知识组织起来,是一种结构化表示法。一个框架由若干个槽(slot)组成,每个槽又可划分为若干个侧面(aspect),每个侧面可以有若干个值(value)。槽用于描述所论及对象的某一方面的属性,侧面用于描述相应属性的一个方面。槽值和侧面值可以是逻辑型、数字型或字符串,也可以是程序、条件、默认值或子框架等。
框架由框架名、槽、侧面和值4个部分组成,如下所示。
<框架名>
槽名1:侧面名1:值1,值2,…,值p1
侧面名2:值1,值2,…,值p2
侧面名3:值1,值2,…,值pm1
槽名2:侧面名1:值1,值2,…,值q1
侧面名2:值1,值2,…,值q2
侧面名3:值1,值2,…,值qm2
……
约束条件1,约束条件2,…,约束条件n
以下通过一些示例来说明框架的内容和表示方法。
例2.2 硕士生框架。
框架名:<硕士生>
姓名:格式(姓名)
性别:范围(男,女)
默认:男
出生年月:格式(年/月)
专业:格式(专业)
研究方向:格式(研究方向)
导师:格式(姓名)
项目:范围(国家级,省级,市级)
默认:省级
论文:范围(SCI,EI,核心,一般)
默认:核心
地址:<地址框架>
联系方式:手机号码格式(数字)
邮箱格式(邮箱地址)(https://www.xing528.com)
其中,格式在英文中常用“Unit”表示,指出填写槽值或侧面值时的格式,例如姓名槽应先写姓后写名;范围常用“Area”表示,指出所填的槽值仅能在指定的范围内选择。默认值(Default)用来表示当相应槽没填入槽值时,以默认值作为槽值。尖括号“<>”用来表示由它括起来的是框架名。
进一步,当知识结构比较复杂时,往往需要将多个框架相互关联。比如在大学校园里,不单要表示硕士,还有其他类型的学生需要表示。这时可以根据各种学生所共有的属性建立一个学生框架:将硕士等其他类型学生作为其子框架来使用,如图2.5所示。

图2.5 框架系统
学生框架:
框架名:<学生>
姓名:格式(姓名)
学号:学号格式(数字)
性别:范围(男,女)
默认:男
出生年月:格式<年/月>
I f-Needed:询问出生年月
地址:<地址框架>
联系方式:手机号码格式(数字)
邮箱格式(邮箱地址)
If-Needed:询问邮箱账户名
继承了学生框架属性的硕士生框架:
框架名:<硕士生>
AKO:<学生>
专业:格式(专业)
研究方向:格式(研究方向)
导师:格式(姓名)
项目:范围(国家级,省级,市级)
If-Needed:询问项目
If-Added:检查项目
论文:范围(SCI,EI,核心,一般)
默认:核心
框架的属性继承通过一个系统预先定义好的标准槽名AKO来反映。常用的标准槽名还有ISA、Subclass、Instance、Part-of、Infer、Possible-Reason等。
框架的继承通常由框架中设置的三个侧面——Default、If-Needed、If-Added来组合实现。框架之间的纵向联系通过ISA、AKO等来实现,横向联系可以通过一个框架的槽值或侧面值可以是另外一个框架的名字来建立。If-Needed用于指示系统可以通过调用该侧面的值所对应的过程来获取数据;If-Added用于如果槽值发生变化,则调用该侧面的值对应的过程来完成其他相关槽的后继处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
