“C++程序设计”领域本体构建研究*
【摘要】根据教学规律和教学系统化设计理论,提出一种适用于教学领域的本体构建方法——ISD 本体构建方法。该方法系统性强,融合学科教学特点。使用该方法成功构建了“C++程序设计”双语课程资源本体库,解决了实际知识向形式化编码的转化等问题,使本体的重用成为可能。
【关键词】课程教学;领域本体;构建方法;C++程序设计
引言
为了能帮助学习C/C++的伙伴,博主推荐一个学习交流qun 710 -520- 381 编号 灵狐 有免费资料可以领取
现代教育技术的发展推动着教育教学诸多方面的变革, 同样也面临着一些问题。各教学系统因不同开发者使用不同系统工具和开发软件,相同系统间资源表示方式不同,不便于知识继承和共享,造成教学资源的重复建设,成为人们关注的焦点之一。
领域本体及语义网技术逐渐被应用于教育教学领域,促进了知识的共享和重用。本体是实现语义网的基础,因此, 很多教育技术研究人员开始使用和开发各种教学本体,以实现教学资源在语义层面上的共享和重用。然而,目前的学科领域本体数量很少,能够实现共享和重用的学科本体库更是捉襟见肘,远远达不到当前教学资源实现语义共享的需求。快速而高质量地构建各学科领域本体急待解决,以促进教学资源实现更大程度的共享,早日实现语义功能。
一 领域本体
本体,在信息科学领域,指的是概念化的明确的规范说明,能够以一种明确的、形式化的方式来表示领域知识,促进知识共享。本体用来表示特定领域内部不同主体之间进行交流的一种语义基础,领域本体就是本体中的一种。
领域本体是在特定领域中可重用的本体,提供了该特定领域的概念定义和概念之间的关系,是领域知识规范的抽象和描述。
教学领域本体是对学科概念的一种描述,任一门课程中的概念及其关系都能构成本体。在通常情况下,教学资源领域本体是以某学科知识章节的纵向联系和知识间的横向联系两维度为主线进行构建的。将课程中的知识点看作一个概念,知识点之间的关系表现为概念之间的关系,每个概念还与网络中的学习资源相关联。教学领域本体最终目的是捕获领域知识,提供人机对知识的共同理解。
本体构建和构建方法息息相关。好的方法是本体构建的保证。遗憾的是,目前国内外还没有专门的学科本体构建方法,故学科本体的构建速度和质量不高。
二 基于 ISD 的领域本体构建方法
教学领域本体的构建,某种程度上是教学系统化设计
(Instructional Systematic Design,ISD)的过程。教学系统化设计是运用系统方法对学习过程和学习资源进行统筹安排, 对教学目标、知识内容、教育者和学习者进行分析,编制教学资源,并对教学过程进行评价。本文对目前已有的本体构建方法进行了分析和比较,并将教学系统化设计理念融合到教学领域本体中去,结合教学的实际需要,确立了构建教学领域本体的设计原则,提出了一种适用于教学领域的方法, 即基于ISD 的本体构建方法。
1 构建原则
为保证本体的科学性和规范化,任何本体的构建都要按照知识概念的标准化表达和构建步骤的规范化过程这两个基本原则进行。同时,为体现具体学科特点,本体构建要遵循明确性、一致性、可进化性,以及对知识进行合适的粒度划分等原则。其中,明确性是指概念应尽可能的完整并能有效表达课程特性,保证其唯一性和确定性;一致性是指要始终保证概念在逻辑上的一致性,以确保最后推理结果的正确性; 可进化性是指概念可根据特定的要求进行扩展和进化,以与知识更新同步;合适的知识粒度是指知识粒度的划分要与教学步骤相对应,在保持知识的局部完整性的前提下,将学科
知识点表示到对应的教学步骤中。
1 构建方法
目前,人们常使用复用已有本体和利用本体工具等方法来构建本体,具体各不相同。常见的本体构建方法有“骨架法”、“评价法”等。但是,这些方法或多或少地存在着需求不充分、建设过程缺少规范性、缺乏评价标准等不足。同时,这些方法各自适合不同领域,不能满足学科本体的具体要求。本文结合教学普遍规律,从教学系统设计的具体过程出发,依据本体建模的基本的建模元语类(或概念)、关系、实例等,提出了一种新方法(图 1)。该方法可以从抽象到具体、自顶向下地建构学科领域本体,通过各种知识获取方法获得学科领域的主要概念和关系,用精确的语言加以描述, 能够生成学科本体的核心语义内容。
图 1 基于 ISD 的领域本体构建方法流程图
(1) 教学领域本体需求分析
充分理解构建学科本体的需求,是本体构建的必要条件。第一,在教学领域构建学科本体的目的。开发课程本体
是为了形成对具体某课程知识组织结构的共同理解与认识, 以满足异构系统间的信息交互和集成,提供基于语义的信息服务,为进一步建立个性化的课程资源管理系统服务。
第二,教学领域本体所涉及的具体学科。学科知识的范围和边界是模糊而交叉的,应把所有涉及到的学科或交叉学科都考虑在内,避免知识的缺漏。
第三,教学领域本体的使用对象是学生、教师,还是其他人。
第四,构建过程的时间分配。要考虑到课程知识的复杂性,不要求大求全,要以实用为基本原则,按工作量大小和难易程度合理分配时间。本体的进化需要更长的时间。
第五,本体描述语言的选择。本体描述语言的选择直接影响本体模型的表达能力和可扩展能力。目前的形式化本体描述语言主要有 RDF、RDFS、OIL、DAML、OWL 等,推荐使用 W3C 最新的描述标准。
(1) 建立核心本体库
首先,获取概念并定义类。通过收集学科领域的知识信息,充分了解知识的组织结构,从学科领域专家、专业权威书刊、网络以及已有的相关本体中获取学科的重点概念,并对这些概念进行分析抽象和归纳,依据概念唯一性、同级概念间互不相交、并集覆盖整个父类概念范围的要求,并形成以继承关系为主要关系的层级模型。这些模型化的概念被抽象为本体中最基本的类。类是本体的核心。定义本体的类, 应能表示出类的最突出的属性,一个概念只能创建一个类, 创建一个类应能增加其父类不具备的新属性。
其次,确定类的属性。概念层次结构是本体的骨架,类的属性和概念间的关系才是本体的血肉。类的属性用来描述概念的内部结构关系,是区别类的重要标志,包括类的固有性质和与其它个体的基本关系等。不同的类有不同的属性, 一个类可以有多个属性。一般,属性的表现形式有属性名和属性取值。类的属性和类一样,也具有很强的继承性,这样就减少了属性冗余,增强了概念的表达能力。确定了类的属性以后,对概念进行归纳和分类,逐步建立起类的层级化的分类模型。
根据教学知识点与教学资源之间的映射关系,学科领域本体中知识点类的属性可以定义为知识点同义词
( Synonym )、教学目标( TeachingGoals )、知识点大小
(KnowledgeScale)、重要程度(SignificanceLevel)、知识点之间关系、与章节的关系、与资源的关系(hasResource)等基本属性。
再次,建立类之间的逻辑关系。一个概念的定义和描述往往会涉及到多个其他概念。概念之间具有关联性,这一关联就是概念间的关系。概念的关系可以是多个,一个关系包括关系名和关系取值等。学科概念模型中的类除了具有父子关系(SubClassOf)外,还要构建符合教学步骤和教学规律的其他关系,据此,本文定义了学科知识点之间的六种基本关系(表 1)。所有关系形成了一个复杂的网状结构。网状结构与树状结构相结合,使得整个教学领域知识本体库成为一个语义复杂、完整但又清晰的、便于理解的语义网结构模型。在具体应用中也可以根据需要选一个或多个,或建立其他关系。
表 1 教学领域本体中类之间的基本逻辑关系
关系名 |
关系描述 |
hasPart |
知识点与章节的关系 |
hasResource |
知识点与资源的关系 |
hasUpperConcept |
知识之间的上位关系 |
hasLowerConcept |
知识之间的下位关系 |
hasParaConcept |
知识之间是同位关系 |
hasRelation |
知识点之间关系 |
最后,创建类的实例。明确了本体的概念及概念间的关系,类的层级模型和类之间的关系建立之后,添加实例并建立一个实例集。实例反映了具体概念的知识表示,每个实例是由实例名和实例url 地址组成。
(1) 进行形式化编码
确立了建模元语与概念之间的关系以后,接下来就要对本体进行编码了。本体最终是为了让机器理解教学中的概念及关系,也就是用计算机可识别的语言将本体描述出来,并将编码的过程和结果存储。本体编码就是将教学实际资源和本体进行关联,使类之间形成一个复杂的网状关系。在具体应用中,本体有非形式化语言、半形式化语言、形式化语言等形式,学科本体可以用自然语言、框架、逻辑语言等形式来描述本体。
OWL(Web Ontology Language,网络本体语言)是一种形式化本体描述语言,是 W3C 最新的一种语义网本体语言, 它提供了丰富的类公理,功能上超越了 XML、XML Schema、RDF 等,能准确描述知识的类、属性和实例及其复杂的逻辑关系,支持良好的知识推理,弥补了 RDF 与 XML。因此,本文推荐使用OWL 来描述本体。
(1) 调试和集成
本体的构建和描述离不开本体构建工具的支持。Protégé 体系软件是斯坦福大学为知识获取而开发的一个工具,是开放的模块化的,支持 RDF Schema、带 DTD 的 XML 文件、XML Schema 文件等格式的存储和导入。表 2 是 Protégé 与其他工具的比较。
表 2 几种本体构建工具主要性能比较
|
与其他语言的兼容性 |
存储方式 |
可获得性 |
可用性 |
Apoll |
Apoll meta language |
文件 |
开放资源 |
视图 |
LinkFactory |
XML/RDF(S)’DAML+OIL/HTML |
关系数据库 |
网站许可证 |
视图、本体库 |
OILEd |
OIL/RDF(S)/DAML+OIL/HTML |
文件 |
开放资源 |
本体库 |
OntoEditFree |
XML/RDF(S)/DAML+OIL |
文件 |
免费软件 |
无 |
Ontolingua |
Ontoligua/IDL/KIF |
文件 |
Web 免费访问 |
本体库 |
Protégé |
XML/RDF(S)/XML Schema/ Java/OWL/HTML |
文件、 关系数据库 |
开放资源 |
视图、本体库 |
WebODE |
XML/DAML+OIL/OWL |
关系数据库 |
网络注册 |
视图 |
WebOnto |
OCML |
文件 |
Web 免费访问 |
视图、本体库 |
从 Protégé 与其它工具的比较来看,Protégé 具有很多独特的优点,因其开放性、不断更新性、可扩展性、良好的互操作性、界面友好性及对中文的良好支持等多方面的优点, 成为人们构建本体的首选工具。
(1) 本体评价
构建完成的本体需要评价。但是目前没有标准化的本体评价方法。本文综合现有的本体评价方法,结合教学课程本体构建实践,认为教学领域本体构建应该从正确性、清晰性、一致性、可扩展性和有效性等方面进行评价。
(2) 本体进化
学科知识是无边界和不断扩展的。因此,进化是领域本体建设的重要环节。教学领域本体的构建是个不断进化和衍生的过程,在核心本体建好的基础上,不断修改和完善来扩展和进化本体,才能逐步建成一个较为完整和实用的教学领域本体来。
三 基于 ISD 的领域本体构建方法应用实例
“C++程序设计”课程随着教学内容的发展变化,教学资源不断更新。采用本体标准化的描述方式,建立通用的规范的教学资源库,实现资源的广泛共享和重用,是该课程资源库建设与发展的重要方向。本文以“C++程序设计”双语课程为例,采用ISD 本体构建方法,以课程知识的纵向和横向关系相结合的方式,构建了该课程本体。
1 需求分析
理清本体的实际需求,是成功构建的必要条件。第一, 开发“C++程序设计”双语课程资源本体的目的是为了形成对该课程知识组织结构的共同理解与认识,满足异构网中双语教学资源信息的交互和集成,并能提供基于语义的信息服务,为进一步建立个性化的“C++程序设计”双语课程资源管理系统奠定基础。第二,所建本体主要为双语教学资源的共享服务,所涉及学科领域是“C++程序设计”课程领域。第三,该课程资源领域本体面向对象是 C++程序设计课程的学习者、本学科教师、其他学习者。第四,选用 OWL 语义描述语言。
2 建立核心本体库
(1) 获取概念
“C++程序设计”双语课程知识丰富。本文以Nell Dale 等编著、高等教育出版社出版的《C++程序设计(第三版 影印版)》教材为基础,参照国内 C++程序设计课程的知识结构,按照教学规律和步骤,将知识进行了三层粒度划分(详见图 2),分别是根节点、顶层核心概念集、第一级子概念集,并归纳出五个顶层概念,分别是程序基础、面向对象、数据结构、程序举例、学习资源,一级子概念 20 个,二级子概念100 多个,基本覆盖整个“C++程序设计”双语课程的全部知识内容,可作为该课程资源本体未来进化的种子。
图 2 C++程序设计双语课程领域本体三层粒度图
按照教学系统设计理论,对这些核心概念进行扩展,建立整个本体概念模型:把“C++程序设计”作为根结点,向下扩展为五个*概念,*概念继续向下扩展,以此建立的层次结构以树型结构呈现。图 3 是使用 Protégé4.0 对*概念“学习资源”的下级概念(包括案例、课件、文档、指导、材料、测试等六个子概念)建成的类层级图。
图 3 “学习资源”的下级概念
(2) 确定类的属性和关系
根据课程需求,将知识间的关系定义为知识点之间、知识点与教学资源之间等的映射关系,定义了同义词
( hasSynonym )、 资源( hasResource )、程序举 例
(hasCaseStudies)、重要程度(SignificanceLevel)、等基本属性(图 4 )。定义了该课程本体的类之间的同位知识
( ParaConcept )、上位知识( SuperConcept )、下位知识
(SubConcept)三种最基本的关系。其他属性和关系可具体定义,如知识点名称、教学目标、知识点大小规模、重要程度、交互类型、知识点之间关系、与章节的关系等,以使本学科的知识点在横向上紧密联系起来。
图 4 创建类的属性
(3) 创建类的实例
属性和关系建立后,接下来添加实例。本文为 Classes 类建立了三个实例,分别是 classLoan、classTime、classString, 如图 5。
图5 创建 Classes 的实例
3 “C++程序设计”双语课程教学资源领域本体的 OWL 实现
本文通过使用 Protégé4.0 进行建模,按照教学具体要求和学科知识组织结构,形成能覆盖整个学科领域的概念结构。由于篇幅限制,这里只给出图 4 的 OWL 描述代码。图 4 基本实现了本体概念、属性及其关系的复杂关系,是整个本体的缩影,可以用来说明所建本体的科学性和可用性。
<?xml version="1.0" ?>
<rdf:RDF
xmlns=http://www.qrnu.edu.cn/bilingual-teaching/C++.owl
#
xml:base="http://www.qrnu.edu.cn/bilingual-teaching/C++.
owl"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl2="http://www.qrnu.edu.cn/bilingual-teaching/C
++.owl#">
<owl:Ontology rdf:about="" />
<owl:Class rdf:about="#Object-Oriented_Programming">
<rdfs:subClassOf rdf:resource="#PROGRAMMING_IN_C++" />
</owl:Class>
<owl:Class rdf:about="#Objects">
<rdfs:subClassOf
rdf:resource="#Object-Oriented_Programming" />
</owl:Class>
<owl:Class rdf:about="#Operator_Overloading">
<rdfs:subClassOf
rdf:resource="#Object-Oriented_Programming" />
</owl:Class>
<owl:Class rdf:about="#PROGRAMMING_IN_C++" />
<owl:Class rdf:about="#Pointers">
<rdfs:subClassOf rdf:resource="#Fundamentals_of_Programming" />
</owl:Class>
<owl:Class rdf:about="#Polymorphism">
<rdfs:subClassOf
rdf:resource="#Object-Oriented_Programming" />
</owl:Class>
<owl:Class rdf:about="#Classes">
<rdfs:subClassOf
rdf:resource="#Object-Oriented_Programming" />
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="#hasResource" />
<owl:someValuesFrom rdf:resource="#Courseware" />
</owl:Restriction>
</rdfs:subClassOf>
<Classes rdf:about="#classLoan">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing" />
</Classes>
<owl:Thing rdf:about="#classString">
<rdf:type rdf:resource="#Classes" />
</owl:Thing>
<owl:Thing rdf:about="#classTime">
<rdf:type rdf:resource="#Classes" />
</owl:Thing>
四 总结
本文开发完成了“C++程序设计”双语课程教学资源领域本体,共包括概念 82 个、上下位关系 102 个、属性 50 个, 包括了该课程领域的几乎全部重要概念之间的关系,描述了知识点之间的语义关系。该本体概念层级多样化,具有良好的完整性,概念间的关系在逻辑上比较严密和一致,且可扩展性较强,支持语义逻辑上的推理,方便以后的进化,为下一步实现资源管理的语义检索功能奠定了基础。
构建教学领域本体最终是为了在实际教学资源管理中予以应用,以实现共享,促进资源的语义管理。教学本体在实际应用中的问题,是进一步的研究工作。