2024年1月5日发(作者:)
基于Silverlight技术的本体编辑器的设计与实现
摘 要
本体的构建离不开工具的支持。随着本体在人工智能、语义互联网、电子商务、信息检索和抽取等领域的广泛应用,本体已经成为现在的一个研究热点,涌现出了许多本体构建工具。选择合适的构建工具对于快速、成功地构建一个本体至关重要。
本体编辑工具的多样化和差异化在很大程度上是由知识表示形式与本体描述语言的多样性决定的。各种不同的本体编辑工具各有优势,也都存在一定的问题,缺乏一种占统治地位的,得到领域专家与本体研究者广泛认可的工具。
当前本体编辑工具的主要问题是不同构建工具适用的本体描述文件无法兼容;大多数工具以文件形式存储本体内容,只有少数支持数据库存储;大多数编辑工具不支持本体的重用,及分布式开发。
本文针对目前本体编辑工具所具有的不足,顺应本体编辑工具的发展趋势介绍了一种基于富客户端的本体编辑器的设计与实现。此系统主要实现了本体的图形化浏览和编辑功能。本文的主要工作如下:
概括介绍了本体论的相关理论以及本体研究的现状,通过对现有本体编辑工具的分析,论述了构建新的本体编辑工具的必要性。
总结分析了目前一些本体编辑工具所采用的本体描述语言,大多数是基于OWL的具有自己特色的本体描述语言。这些描述文件只适用于自身的编辑工具,不同的描述语言无法通用。针对此弊端,概括介绍Web本体描述语言OWL,采用标准本体描述语言来构建本体,具有更为广泛的应用性。
简单介绍了系统开发所需要的技术,包括Silverlight和MVC等。详细介绍系统整体架构的设计以及本体库的构建。
实现了本体的图形化浏览和编辑功能。图形表现更加丰富,图形可以拖动,类图可以展开合起,展开显示类的详细信息,包含属性,各种关系和操作,合起则只显示类的名称信息。实现了多视图地显示,可同时显
I
示图形化的视图和本体源描述文件的视图。本体的编辑功能则包含本体的新建,详细信息的编辑等。
关键词:本体,富客户端,OWL,图形化浏览, Silverlight
II
Design and Implementation of Ontology Editor
Based on Silverlight Technology
Abstract
The ontology building can’t do without the support of tools. The ontology has
been a hot research point as the widespread use in many fields, such as artificial
intelligence (AI), semantic web, electronic commerce, information retrial and
extraction and so on. And a lot of ontology build out tools appear. It’s very important
to choose a suitable tool for quickly and succeed building ontology.
For the most part, the diversification and differentiation of ontology edit tools are
decided by the diversification of knowledge representation and ontology description
languages. All kinds of ontology edit tools have their own strengths and certain
shortages as well. We are lacking in a predominantly tool which is widely approved
by the domain experts and ontology researchers.
The main problems of current ontology edit tools are including those the owl
description languages used by different tools are not compatible, and most of the tools
store the ontology contents using documents, only few supports database storage and
most of the tools don’t support ontology reuse and distributed development.
On account of the shortages of the present ontology edit tools and conforming to
the development tendency of the tools, this paper is introducing the design and
implementation of an ontology editor based on rich client. This system mainly
implements the ontology graphic browsing and edits functions. The main work of this
paper contains:
Summarize the related theories of ontology and the current ontology research
situation. Then the paper discusses the necessity of creating new ontology edit
tool by analyzing the current ontology edit tools.
Summarize and analyze the ontology description languages adopted by the
current ontology edit tools. Most are ontology description languages having
their own feature based the web ontology language (OWL). These are suitable
only to their own ontology edit tools. They aren’t compatible. On account of
III
this shortage, the paper summarizes the web ontology language. It has wide
applicability using standard ontology description language to create ontology.
Simple introduce the necessary technology for developing the system,
including Silverlight and MVC and so on. Then introduce the whole structure
of the system and the ontology database building in detail.
Realize the functions of graphic browsing and editing. The graphic expression
is richer. Users can drag the graphics, unfold and fold the class graphics.
When you unfold the class graphic, it shows the details of the class, including
properties, kinds of relationships and operations. And when you fold the class
graphic, it only shows the class name. We also realize the multi-view
browsing. It can show the graphics view and the ontology description
document view at the same time. The ontology edit function includes creating
and details editing and so on.
Keywords: Ontology, Rich client, OWL, Graphic browse, Silverlight
IV
目 录
1绪论 .............................................
1
1.1研究背景 ..........................................
1
1.2本体编辑工具的发展 ..................................
1
1.3本文研究意义 .......................................
2
1.4本文的组织结构 .....................................
3
2本体理论技术概述 ...................................
4
2.1本体定义 ..........................................
4
2.1.1本体在哲学中的定义 ..................................................
4
2.1.2本体在信息科学中的定义 .............................................
4
2.2本体构成 ..........................................
5
2.3本体分类 ..........................................
6
2.4本体的作用与应用 ....................................
8
2.4.1本体的作用 ...........................................................
8
2.4.2本体的应用 ...........................................................
9
3本体描述语言及本体开发工具 .........................
11
3.1传统的本体描述语言 .................................
11
3.2网络本体描述语言 ...................................
12
3.2.1 XML&XML Schema .....................................................
12
3.2.2 RDF&RDF Schema .....................................................
14
3.2.3 OWL .................................................................
15
3.2.4几种本体描述语言的比较 ............................................
18
3.3本体编辑工具 ......................................
18
3.3.1 Protégé .............................................................
19
3.3.2 Hozo ................................................................
20
4系统总体设计 ......................................
22
4.1系统的设计目标 ....................................
22
4.2系统的总体架构 ....................................
23
4.2.1 Model的设计 ........................................................
23
4.2.2解析器与视图的设计 .................................................
25
4.2.3数据库的设计 ........................................................
26
4.3系统的功能分析与设计 ................................
26
4.4开发平台与核心技术 .................................
28
4.4.1 Microsoft Visual Studio 2008 .....................................
28
4.4.2 Silverlight技术 ...................................................
28
4.4.3 MVC设计模式 ........................................................
30
4.4.4 Web Service ........................................................
31
5系统的实现 .......................................
32
V
5.1系统总体模块的设计与实现 .............................
32
5.1.1服务器端组成 ........................................................
32
5.1.2客户端组成 ..........................................................
33
5.1.3系统各层次间的关系 .................................................
34
5.2系统基础模块的设计与实现 .............................
35
5.2.1本体对象模型的实现 .................................................
35
5.2.2数据库的设计与实现 .................................................
38
5.2.3数据访问层的实现 ...................................................
40
5.3本体浏览模块的实现 ................................
446
5.3.1本体概念导航的实现 .................................................
46
5.3.2本体概念图形化显示的实现 ..........................................
47
5.3.3本体源文件视图的实现 ..............................................
53
5.4本体编辑模块的实现 .................................
54
6总结与展望 .......................................
58
参考文献 ..................................................................
60
致谢 .......................................................................
61
个人简历 ..................................................................
61
在校期间研究成果 .........................................................
61
VI
基于Silverlight技术的本体编辑器的设计与实现
1绪论
1.1研究背景
随着语义互联网的观念慢慢演化,作为其核心的本体,价值也逐步得到了体现。本体是语义互联网基础结构的主要组成部分,本体技术在自然语言处理,数据库,信息检索,知识表示,知识管理,多代理系统等领域中都将起到重要的作用。在很短的时间内,国内外的本体研究都得到了飞速的发展。
目前,本体已经成为计算机科学的一个重要研究课题,越来越多的学者投入到本体的研究中,并取得了诸多研究成果。目前对本体的研究主要集中在本体论工程,本体设计和评估的形式化方法以及本体论的应用。其中本体论工程以及本体设计和评估的形式化方法属于本体论的理论研究的内容。
随着对本体研究的深入,学者们提出了许多种本体描述语言,如RDF和RDF-S、OIL、DAML、OWL、KIF、SHOE、XOL、OCML、OntoLingua、CycL、Loom等。为了方便构建本体,在过去的十多年里也提出了许多本体构建工具,从最早的OntoLingua、OntoSaurus、WebOnto,到Protege、WebODE、OntoEdit、HOZO等。
本体编辑工具的多样化和差异性在本体理论与应用研究的初始阶段大大推进了本体研究工作的进展,但随着本体研究的深入与各种基于本体的专家系统、检索系统以及机器翻译系统的开发成功,本体工具的这种多样化和差异性会在很大程度上阻碍不同领域知识的联通与异构系统的互操作。并且现有的本体编辑工具存在很多不足之处,例如,不支持协同开发,没有本体库,界面简单,用户体验欠缺等。
由此,本体编辑工具的发展趋势应该是可兼容多种基于标准本体描述语言OWL的本体描述文件;界面友好,操作简单,用户体验良好;支持本体的重用和本体的分布式开发;支持本体库的构建。
1.2本体编辑工具的发展
本体编辑是一项比较庞大的系统工程,需要经历一个复杂的反复过程,包括问题说明、领域知识的获取和分析、概念的设计与领域本体的约束、迭代建设及
1
基于Silverlight技术的本体编辑器的设计与实现
测试等一系列环节。本体编辑工具从出现至今,取得了很大的进展。
早期本体编辑工具采取较普及的用于知识库开发的方法,而目前这种方法已渐渐不用了。本体编辑工具中明确支持特殊的知识工程方法的并不常见,但也存在一些例外,如马德里技术大学开发的WebODE[1]。另外,对于通用本体的支持力度也有所增强,如WordNet等。随着Web本体语言的不断发展,Web本体编辑工具层出不穷,当前国外许多大学和研究机构正在研究与开发的Web本体编辑工具很多,例如斯坦福大学正在开发的WebProtege。WebProtege相对斯坦福[2]大学之前开发得Protégé功能类似,只是系统结构不同。到目前为止,本体编辑工具的总数超过了90个,这对于编辑工具来说,是一个相当大的数字。
本体编辑工具的多样化和差异化很大程度上是由知识表示形式与本体描述语言的多样性决定的。各种不同的本体构建工具各有各的优势,也都分别存在一定的不足,缺乏一种能得到本体研究者广泛认可,占主导地位的工具。解决这一问题的一个方法就是统一化和标准化本体编辑工具。我们可以预见这种标准化工具所应具有的一些特点:它应该界面友好,易于使用,具有很好的用户体验;具有一定的开放性,能跨平台应用;可以支持多人协作开发本体;具有统一的输入输出标示语言格式,并且这种标示语言应该是Web标准的。
1.3本文研究意义
本体编辑属于本体工程的一部分,包括本体的建立、修改、重用等工作,由于涉及本体自身的建立方法等相关的知识,本体编辑是一个比较庞大的工程,比如就本体建立而言就比较复杂,它首先需要本体的模型,而领域中本体模型的确立需要领域中相关背景知识的支持,这就需要领域专家的帮助,本体编辑工具不能代替领域专家的角色,但好的工具可以帮助本体快速而有效地建立。针对目前本体编辑工具存在的缺陷,研制开发新的本体编辑工具,是可行的,也是必要的。
本文所介绍的基于Silverlight技术的本体编辑工具有以下优点:
(1) 采用图形化方式编辑本体,方便易操作。
(2) 支持分布式开发,可以多人共同编辑一个本体。
(3) 以Web标准的本体描述语言OWL作为本系统的输入输出的标示语言
(4) 支持本体库的构建。
2
基于Silverlight技术的本体编辑器的设计与实现
1.4本文的组织结构
全文共由5章组成:
第一章 绪论。总结了本体的发展现状以及现存本体编辑工具存在的问题,阐述了课题的研究背景,说明了开发新的本体编辑工具的必要性和紧迫性,并且提出了本课题研究的主要内容和意义。
第二章 本体理论技术概述。对本体理论技术进行了介绍和综述。重点介绍了本体的定义、分类、应用、本体编辑工具。
第三章 本体描述语言概述。介绍了几种常用的本体描述语言,并对他们的描述能力进行了分析和比较。
第四章 系统设计。对基于Silverlight的本体编辑工具进行了功能分析和结构设计,介绍了系统开发平台以及核心技术。
第五章 系统实现。详细介绍了系统的信息管理模块、本体浏览模块以及本体编辑模块的实现过程。
总结与展望。总结本文的研究成果,指出了系统中不足和不完善的部分,并对将来的工作做了展望。
3
基于Silverlight技术的本体编辑器的设计与实现
2本体理论技术概述
2.1本体定义
本体(Ontology)是语义Web层次结构的核心。本体的概念最早出现在哲学的领域。近年来,本体作为一种能够在语义层和知识层上描述信息系统的概念建模工具,广泛应用于知识工程,数字图书馆,信息集成,信息检索等领域。
从知识共享的角度看,本体可以看作是感兴趣领域的概念化的明确说明,是对客观存在的概念和关系的一种描述。它将隐藏在分析者头脑或者实现者程序中的概念模型表达出来,大大减少了对问题域中的概念和逻辑关系可能造成的误解。
2.1.1本体在哲学中的定义
本体的概念起源于哲学领域,又译做存在论,它是西方哲学特有的一种形态[3],最早可推朔到古希腊的柏拉图和亚里士多德,亚里士多德曾经定义本体论为“研究物体的存在的科学”。具体地说是研究物体的分类,也就是说:在什么情况下,一个物体可以被定义为“存在”。
笛卡尔在《第一哲学沉思集》一书正文后附录的“笔者对第二组反驳的答复”最后一部分中对“本体”的定义是:“一件东西,以它为主体直接寄托着、或者以它为依靠存在着某种我们理会到的东西,即我们心里有实在观念的某种特性、性质或属性,就是本体。”
2.1.2本体在信息科学中的定义
1993年,美国斯坦福大学知识系统实验室(KSL)的Gruber给出了第一个在信息科学领域广泛接受的Ontology正式定义[4]:“An Ontology is an explicit
specification of a conceptualization”。Gruber认为:概念化是从特定目的出发对所表达的世界所进行的一种抽象的、简化的观察。每一个知识库、基于知识库的信息系统以及基于知识共享的智能agent都内含一个概念化的世界,或是显式的或是隐式的。本体论是对某一概念化所做的一种显式的解释说明。本体中的对象以及它们之间的关系是通过知识表达语言的词汇来描述的。因此,可以通过定义一
4
基于Silverlight技术的本体编辑器的设计与实现
套知识表达的专门术语来定义一个本体,以人可以理解的术语描述领域世界的实体、对象、关系以及过程等,并通过形式化的公理来限制和规范这些术语的解释和使用。因此严格地说,本体是一个逻辑理论的陈述性描述。后来,Borst在此基础上,给出了Ontology的另外一种定义[5] “Ontology是共享概念模型的形式化规范说明”。Studer等对上述两个定义进行了深入的研究,认为Ontology是共享概念模型的明确的形式化规范说明。这包含4层含义[6]:
a) 概念模型(conceptualization),指通过抽象出客观世界中一些现象(Phenomenon)的相关概念而得到的模型。概念模型所表现的含义独立于具体的环境状态。
b) 明确(explicit),指所使用的概念及使用这些概念的约束都有明确的定义。
c) 形式化(formal),指Ontology是计算机可读的(即能被计算机处理)。
d) 共享(share),指Ontology中体现的是共同认可的知识,反映的是相关领域中公认的概念集,即Ontology针对的是团体而非个体的共识。
Ontology的目标是捕获相关领域的知识,提供对该领域知识的共同理解,确定该领域内共同认可的词汇,并从不同层次的形式化模式上给出这些词汇(术语)和词汇间相互关系的明确定义。
2.2本体构成
本体的具体构成,可以用下面的公式形象的描述[7]:
本体=概念+属性+公理+取值+名义
其中,概念可以分为两种,原始概念和定义概念。例如:“猫是动物”是原始概念,而“偶数是能被2整除的正整数”则是定义概念。属性是对概念的特征或性质的一种描述。公理是定义在概念和属性上的约束和规则。取值是具体的赋值。名义是无实例的概念或者是用在概念定义中的实例。
Perez等人认为可以按分类法来组织本体[8],并总结出了本体的五个基本构成元素:概念,关系,函数,公理和实例。为了更好的理解,下面对这五个构成部分进行分析:
1) 所谓概念,含义非常广泛,可以指任何事物,如描述,功能,行为等。本体中的这些概念通常构成了一个分类层次。
2) 关系,代表了在领域中概念间的相互作用。
5
基于Silverlight技术的本体编辑器的设计与实现
3) 函数则是一种特殊的关系。在本体中可以自定义函数,例如FatherOf关系就是一个函数,其中FatherOf(x,y),表示y是x的父亲,x可以唯一确定他的父亲是y。
4) 公理,代表永真断言,是定义在概念和属性上的约束和规则,例如动物的概念包含了人的概念。
5) 实例则是指属于某概念类的基本元素,即某概念所对应的实体。
以上两种对本体构成的说法没有本质上的区别。属性和关系,取值和实例从根本上说没有意义上的不同,他们都是相同的形式来描述现实世界。世界存在着对象,从对象中可以抽象出概念。概念具有属性,属性可以进行赋值。概念间存在着不同的关系等。
Staab给出了本体学习的层次结构,包括术语,同义词,概念,概念层次,关系,公理和规则层。我们可以借用本体学习的层次结构来表示本体的层次结构。其中,术语可以理解为对象,同义词是指属于间的同义关系,如北京和中国首都。概念可以理解为是同义词的集合,即具有相同属性的对象的集合。概念层次是指概念间的层次关系,可以理解为概念间的包含关系。关系则是指概念间的关系。图2-1为本体学习的层次结构图:
公理和规则关系概念层次概念同义词术语
图2-1 本体学习的层次结构
2.3本体分类
本体通常作为用户感兴趣的领域的领域模型,同时还可以用作进行文档统一注释的知识表示语言体系和标准。本体的应用领域不同,其研究的侧重点也会不同。为了更好的研究和构建本体,可以对本体进行简单的分类。分类的标准也有多种,可以根据研究的层次,描述的详细程度,形似化程度以及是否支持推理功
6
基于Silverlight技术的本体编辑器的设计与实现
能程度等进行分类。
根据研究的层次可以将本体分为以下四类:
1) 上层本体或通用本体,顶级本体,是指具有普遍意义的客观世界的常识的本体,划分了客观世界实体的不同种类。具有普遍意义的观念在这类本体中得到了体现,如时间,空间,事件等,这些观念不依赖于特定的问题或学科领域。这类本体可以跨学科跨领域应用。
2) 领域本体,是特定领域的专业性的本体。所表示的知识是针对特定学科领域的。这类本体提供了关于某个学科领域中的概念以及概念之间的关系,以及该学科领域中的一些重要理论。对特定领域的本体研究现在已涉及多个领域,如医学本体,海洋本体,企业本体等的研究。
3) 任务本体,描述的是特定任务或行为中的概念及概念间的关系。任务本体也称作方法本体,主要研究可以共享的问题求解方法,如医学诊断方法,相同的症状可以得出可能的生病根源。任务本体涉及的主要是动态知识,而非静态知识。任务本体中描述的要素主要有:任务数据,任务目标,执行状态等。具体研究的主题包括:通用任务,任务结构,与任务相关的体系结构,推理结构等。
4) 应用本体,描述的是依赖于某特定领域和任务的概念及概念间的关系。式涉及问题求解的本体,因此也被称为是问题求解本体。一个应用本体于用来描述专业领域的概念相关联,这些概念是解决问题的方法体系的组成部分。它们明确表示出在特定的解决问题的方法体系中,专业领域概念所起的作用。
在这种分类表示中,领域本体和任务本体处于同一层次,均依赖于上层本题应用本体处于最低层,依赖于领域本体和任务本体。下面给出此种本体分类层次图,如图2-2所示:
上层本体领域本体任务本体应用本体
图2-2 本体分类层次
7
基于Silverlight技术的本体编辑器的设计与实现
从对本体的描述详细程度角度,可以将本体分为参考本体和共享本体。所谓详细程度,是一个相对模糊的概念,是指描述或者刻画建模对象的深度。其中,详细程度高的为参考本体,可以用来保存各种本体的元数据;详细程度低的则为共享本体。
根据本体表示的形式化程度,可将本体分为四种类型:
1) 高度非形式化,用自然语言表示,结构非常松散,例如概念列表。
2) 结构非形式化:用限制的结构化自然语言来表示,能有效地提高本体的清晰度,减少模糊性。
3) 半形式化,用半形式化(人工定义的语言)进行表示。目前已有许多研究机构开发制定了这类形式化本体表示语言。
4) 严格形式化,所有术语都有形式化的定义,能在某种程度上证明完全性和合理性。
从支持推理功能程度的角度,还可以将本体区分为轻量级本体,中级本体和重量级本体。轻量级本体不具备逻辑推理功能;中级本体具有简单的逻辑推理功能,可以识别一阶谓词逻辑的表达式;重量级本体具有复杂的逻辑推理功能,可以识别复杂的二阶谓词表达式,并为更加复杂的推理功能实现了预留接口。
2.4本体的作用与应用
本体提供了关于概念及概念间关系的词汇集,通过这些词汇集可以对一个领域进行建模。虽然不同的本体之间存在一些差异,但他们之间存在普遍的一致性。从根本上说,本体的作用是为了构建领域模型,提供某一领域的知识共享和重用。
本体可应用于许多领域,如电子工程,远程教育,电子商务,语义Web等。
2.4.1本体的作用
本体提出的最初目标是实现知识的共享和重用,这也是本体主要作用和研究意义所在。实现领域知识的共享和重用的基础是领域本体[9]。领域本体提供了一组可共享的,公共的领域概念及概念间的关系。本体的作用可以归纳为以下几点:
1) 知识共享,在软件代理间或用户间形成对信息组织结构的相同理解和认识。例如,对若干包含海洋信息的Web站点,如果这些站点共享底层的本体,那么代理服务器就可以提取和集成这些来自不同站点的信息资
8
基于Silverlight技术的本体编辑器的设计与实现
源。代理软件就可以利用这些集成的信息来回答用户的问题或向用户提供相关的信息。
2) 专业领域知识的重用。例如,关于空间的描述,这些描述中包含空间间隔(距离),空间位置(坐标),相关的空间测算等概念。所开发出的详细的通用本体,就可以被其他的专业领域所重用,如军事,航海领域等。构建一个大型的本体,也可以将现有的若干本体进行集成。例如,构建一个海洋本体,便可将已有的海洋生物,海洋气象,海洋化学等已有本体进行集成。还可以重用一个通用的本体框架,如将UNSPSC(Skeleton)[10]进行扩展和填充,就可以用于其他领域中去。
3) 知识的标准化。本体为人们描述目标世界提供了一组通用的词汇,这些通用的词汇是实现知识系统化的基础。通用词汇和知识系统化有利于实现知识的标准化。
除了以上提供的这几种作用外,本体还可以通过断言的形式使专业领域中的学术观点和学术假设等变得更加明确。对于那些使用该领域相关知识的新用户,明确的形式化说明专业领域知识,对他们迅速的了解本领域是很有帮助的。本体还可以将专业领域的知识从其他特定的环境中分离出来。例如,用户不必非是IT专家便可以按照规范说明和执行程序来实现检索和查询等相关功能。本体还可用来分析专业领域的知识体系结构。
2.4.2本体的应用
本体主要应用于以下三个领域:
1) 人或组织间的通信
知识共享是本体的核心概念。本体无二义性的概念和术语的描述,提供了一个统一的框架或是规范模型,使得来自不同背景,具有不同观点和目的的人员或组织之间的理解和交流成为了可能,并且保持了语义上的一致性。
2) 系统间的互操作性
这是本体应用特别重要的一个方面,解决了不同的软件系统间在数据上的交流和协作问题。具体可以细分为三个方面:基于本体共享的信息访问,基于本体的信息检索,基于本体影射的信息访问。
9
基于Silverlight技术的本体编辑器的设计与实现
3) 软件工程
应用于软件系统的设计与实现上,主要表现在可重用性,可靠性以及软件需求规范说明等方面。本体可以通过对系统内部各个功能模块的和它们之间的联系的详细描述达到软件的重用性。本体可以作为需求分析基础上软件设计时的基础,以自动或半自动的方式检查它们之间的一致性,从而提供软件系统的可靠性。同时,在软件开发的规格说明中,本体论通过对需要解决的问题进行描述,可以帮助软件开发人员在需求分析,信息获取中提高明确性,减少分析代价。
总之,本体技术目前已广泛应用于很多领域。在网络应用方面,建立门户网站,语义Web,导航检索,网络信息集成等等。著名的项目包括基于网络代理搜索本体的本体((Onto)2Agent),基于本体的分布式半结构化信息获取(Onto
broker)和可升级知识集成(SKC)。将本体看作一种新型的分类标准,可以应用于数字图书馆的建立,个性化信息服务,知识表达和知识管理等方面。本体还可用于数据挖掘,等等。
10
基于Silverlight技术的本体编辑器的设计与实现
3本体描述语言及本体开发工具
为了清楚方便的描述本体,需要选择一种形式化的语言,并将面向对象的思想应用其中。本体描述语言需要满足以下几项需求:1.为本体的构建提供建模源语;2.提供标引工具,将本体从自然语言的表达式转化为机器可读的逻辑表达式;3.本体可在不同的系统之间导入导出;4.采用机器可读的形式化表示语言描述本体,能够直接被计算机存储,加工,利用,或在不同的系统之间进行互操作。
本体描述语言可以分为传统的本体描述语言和网络环境下的本体描述语言两种。目前本体的描述语言有十几种,传统的本体描述语言主要有KIF,Ontolingua,Loom,OKBC,OCML和CycL等;网络环境下的本体描述语言是基于XML标准开发的语言,主要有SHOE,RDF,RDFS,OWL和OWL+OIL等。
3.1传统的本体描述语言
传统的本体描述语言是在XML标准出现之前,由各个本体研究小组研究开发出来的。上面所列举的几种描述语言中,Ontolingua,OKBC,OCML是基于框架的,CycL是基于框架和一阶谓词的,Loom是基于描述逻辑的。下面将对其做简单的介绍。
KIF
KIF[[11](Knowledge Interchange Format)是由美国斯坦福大学知识系统实验室(KSL)建立的一种基于一阶逻辑的形式语言,用于各种不同计算机程序之间进行知识交换,已经成为建议标准。目前KIF被普遍用在专家系统、数据库和智能代理等领域。
Ontolingua
Ontolingua[12] 是由美国斯坦福大学知识系统实验室(KSL) 开发的一种基于KIF 的本体语言,主要用于本体服务器上浏览、创建、编辑、修改和使用本体,也有一些项目用它作为实现本体的语言。Ontolingua 定义框架本体作为知识表示的基础, 支持 3 种本体定义方式: 一是KIF 表示;二是使用框架本体的词汇库;三是同时使用上述两种表示方式。Ontolingua 包含KIF 分析器、本体分析
11
基于Silverlight技术的本体编辑器的设计与实现
工具和一组Ontolingua 转换器,通过Ontolingua 转换器可以将用Ontolingua 表示的本体转换成Prolog 、IDL 、CLIPS 、Loom 、Epikit 、Algernon 和标准的KIF 等。目前,美国斯坦福大学的本体服务器就是采用On2 tolingua 作为本体表示语言。
CycL
CycL[13] 是Cyc 系统的描述语言, 它是一种体系庞大而非常灵活的知识描述语言,具有很强的表达能力和推理能力。Cyc 是美国的微电子与计算机技术有限公司的研究项目,其目标是开发本体,进行常识推理,Cyc 系统目前已发展成为一个庞大的常识系统,其部分知识本体提供免费使用。CycL 在一阶谓词演算的基础上,扩充了等价推理、缺省推理等功能,而且具备一些二阶谓词演算的能力。在该语言的环境中还配有功能很强的可进行逻辑推理的推理机。此外,
CycL 还具有具体化定义(用已有的声明来定义新的声明) 、映射、模式化、操作符、上下文、分离、否定以及防止产生歧义等功能,可以用它很容易地分析复杂的句子。
3.2网络本体描述语言
网络环境下的本体描述语言是基于XML标准开发的语言。目前语义Web上的本体描述语言主要有XML,RDF,RDF Schema,OWL等。
3.2.1XML&XML Schema
XML(eXtensible Markup Language),即可扩展标记语言,是一种简单的机器可读文档的规范[14]。其特点如下:
a) 可扩展性(Extensible)
可扩展性是XML 的主要特征。XML是一种元标记语言(MetaLanguage),使用标准化的方法来定义其他语言。它为结构文档提供了一个数据格式,并没有深入数据的本身,用户可以定义自己需要的标记。这些标记必须根据某些特定的原理来创建,但是在标记的意义上,具有相当的灵活性。因而,XML的应用范围很广泛,例如电子表格,应用文件格式等。XHTML便是XML对HTML的再定义。
12
基于Silverlight技术的本体编辑器的设计与实现
b) 标记性(Markup)
XML文档中,相应的字符序列描述了文档的内容,这些字符序列描述了文档的逻辑结构和数据布局。XML文档中使用了标签,例如
下面给出一个描述本体基本信息的XML的例子:
XML由三部分组成:DTD(Document Type Definitions,文档类型定义),XSL(eXtensible Stytle Language,可扩展样式语言),XLL(eXtensible Linked
Language,可扩展链接语言)。
XML有其应用上的优势,也存在一些缺陷。优势表现在它的数据是结构化的,数据与表现是分离的,具有应用健壮性和平台无关性。其缺陷则是没有对数据本身作出解释。上面的例子中的标签人为识别简单易懂,但是它并没有指出数据的语义和用途。所以需要在使用前定义它的词汇表,用途和语义才能交换XML表达的内部数据。为了解决以上缺陷,便需要使用XML Schema。
XMLSchema定义了XML文档的结构[15]。 它是一种描述信息结构的模型,为一类文档建立了一个模式,规范文档中文本和标签的组合形式。DTD提供了对允许的嵌套的子元素,一个元素可能的属性以及一个普通的text段的出现位置等简单结构的规定。XML Schenma则是DTD的后继,提供了更为丰富的语法结构的定义。XML Schema本身就是一个XML文档,因而它更加容易被计算机和人理解,减少了复杂度。并且,XML Schema非常适合构建对象化信息,为用户提供了自定义对象的能力。包含提供基本类型的定义;支持命名空间,使得对象有了全局标识;还提供了继承,组成等关系用来描述信息结构。但是,XML Schema
13
基于Silverlight技术的本体编辑器的设计与实现
并没有于指明数据的用途和语义。
3.2.2 RDF&RDF Schema
RDF(Resource Description Framework)[16],即资源描述框架,是国家标准化组织于1997年提出的Web元数据描述语言标准。它以XML语法为基础,提供了描述网络资源以及资源间的关系的模型和语法格式,来支持网络上的知识交换和知识共享。RDF的基础要素是三种类型的对:
c) 资源(Resource),是所有可以用RDF表达式来描述的事物,例如网页,网络应用程序等。资源通常以URI(唯一资源标识)加上一个特定的anchor(锚)ID的形式来表示。
d) 属性(Property),描述资源具有的某些特性,特征以及关系等。每个属性都有特定的含义和取值范围,以及与其它属性间的关系。
e) 声明(Statements),就是某一资源,它所具有的属性,以及具体的属性值组成。声明由三部分组成:主体(subject),谓词(predicate),客体(object)。
下面给出一个RDF实例,描述了一个叫LiMing的人创建了一个海洋本体。
表3-1一个RDF描述实例
OBJECT ATTRIBUTE V ALUE
Ocean Ontology
# Anonymous_resource
# Anonymous_resource
Created_by
name
sex
Anonymous_resource
“LiMing”
“Male”
还可以将上述实例用一个标记图来表示,如下图所示:
Ocean OntologyCreated_bynamsexeLiMingMale
图3-2 RDF标记图
其中椭圆表示资源,箭头表示属性,属性的值则用方框来表示。
RDF格式定义的信息,是机器可以理解的,因此支持对网络资源的自动处
14
基于Silverlight技术的本体编辑器的设计与实现
理和实现网络上的互操作性。但是RDF也存在缺陷,例如它没有变量;只支持字符类型,不支持整型等其他常用数据类型;只有简单属性定义,没有否定,传递和互反等属性;无法表示等价,不相交等关系。RDF是领域无关的,没有定义一个特定领域的语义,因而需要使用其他工具来描述领域相关的语义。
RDF Schema的提出,便能解决上述问题。RDF Schema(资源描述框架模式)是基于RDF定义的一种模式定义语言,提供了一种机制来定义领域相关的属性,以及使用具有这些属性的资源类。RDF Schema支持客观世界到抽象世界的映射,为知识共享打下了基础。
RDF Schema的基本模型由以下几种元素构成:
1) 类层次,包含class定义和subclass-of声明
2) 属性层次,包含property和subproperty-of声明
3) domain和range声明,用于限制上面类和属性的组合
4) type声明,用于声明一个class的实例resource
使用这些模型,我们便能定义一个具体领域的知识。例如上面的创建本体的例子,我们可以定义一个RDF Schema,包含两个资源类,Ontology和Creator;两个属性,name和sex;他们的定义域为Creator,值域则为字符类型的值。我们可以使用这个模型来定义Ocean Ontology是Ontology的一个实例,LiMing是Creator的一个实例。
RDF Schema的优点在于可扩展性和灵活性,但这也导致了了它的缺陷,处理效率比较低。RDF和RDF Schema的用途很广,可以用于数字图书馆,知识表示,结构化文档以及网络安全等等。
3.2.3 OWL
OWL(Web Ontology Language)[17],即网络本体语言,是W3C提出的一种本体描述语言,可以用来描述Web文档和应用中的内在类和关系。
OWL能够明确的描述特定领域内的概念的含义以及这些概念之间的关系,遵循面向对象思想,按照类和属性的形式描述领域知识所包含的结构,也就是说,本体是由类和属性构成的。相对于XML,RDF和RDF Schema,OWL语言具有逻辑描述和推理能力,拥有更多的机制来表达语义。OWL增加了更多的原语来
15
基于Silverlight技术的本体编辑器的设计与实现
描述类和属性,可以表达多种类之间的关系,集合的基数约束,等价关系,更丰富的属性类型,数据类型和枚举类等。
OWL提供了三种表达能力递增的子语言,分别用于不同的实现这和用户团体。这三种子语言分别是OWL Lite,OWL DL和OWL Full。详细描述如下表所示:
表3-2 OWL的三种子语言
子语言
OWL Lite
描述 例子
持基数表达能力最弱,用于提供给那些只需要一个支分类层次和简单约束的用户。例如,虽然支(cardinality),基持基数限制,但是只允许基数为0或1。提数值为0或1。
供支持OWL Lite的工具应该比支持表达能力更强的其他OWL语言更简单,并且从辞典和分类系统转换到OWL Lite更迅速。
OWL DL
支持那些需要最强表达能力的推理系统用当一个类是多个户,且这个推理系统能够保证计算的完全性类的子类时,它和可判定性。它包括了OWL语言的所有成被约束不能是另分,但有一定的限制,如类型的分离(一个外一个类的实类不能同时是一个个体或属性,一个属性不例。
能同时是一个个体或类)。OWL DL对应于描述逻辑,旨在支持已有的描述逻辑商业处理和具有良好计算性质的推理系统。
OWL Full
支持那些需要尽管没有可计算性保证,但有一个类可以被同最强的表达能力和完全自由的RDF语法的时看为许多个体用户。OWL full允许一个本体增加预定义的一个集合以及的(RDF、OWL)词汇的含义。这样,不本身作为一个个太可能有推理软件能支持对OWL FULL的体。
所有成分的完全推理。
在表达能力和推理能力上,每个子语言都是前面的语言的扩展。这些子语言间存在如下关系:
16
基于Silverlight技术的本体编辑器的设计与实现
1) 每个合法的OWL Lite本体都是一个合法的OWL DL本体;
2) 每个合法的OWL DL本体都是一个合法的OWL Full本体;
3) 每个有效的OWL Lite结论都是一个有效的OWL DL结论;
4) 每个有效的OWL DL结论都是一个有效的OWL Full结论。
下面给出一个描述酒的简单信息的OWL本体:
类的描述:
属性的描述:
rdf:resource="/2001/XMLSchema#positiveInteger" /> 个体的描述: 1998 互不相等关系的描述: 17 基于Silverlight技术的本体编辑器的设计与实现 3.2.4几种本体描述语言的比较 上面介绍的几种网络本体描述语言,其特点总结如下: 1) XML,对文档没有任何语义约束,是结构化文档的表层语法。 2) XML Schema,用来确定XML文档的结构,使用层次化的方式组织元素,但是不能确定元素的具体含义以及元素间在语义上的联系。因此,利用XML Schema描述的数据缺乏语义信息。 3) RDF,是一种元数据模型,能够说明数据的语义。是一种描述对象或资源和它们之间关系的数据模型,并且提供了简单的语义,能够用XML语法来表示。 4) RDF Schema,扩展了XML的符号和语法,是一种描述RDF资源的属性和类的词汇表,提供了关于这些属性和类的层次结构的语义。但是RDFS 仍是一种相对简单的语言,表达能力不强,无法非常细致的描述资源。 5) OWL,建立在RDF和RDFS的基础上,增加了更多的建模原语来描述类,属性以及它们之间的关系,并且提供了更加丰富的类型定义和属性描述。OWL采用了面向对象的方式,通过类和属性来描述资源,并且通过公理来描述类和属性的特性及关系。OWL拥有更多的机制表达语义,描述逻辑和演算能力,超越了XML,RDF和RDF Schema。 3.3本体编辑工具 目前存在的本体编辑工具有60多种,功能各不相同,有些用于本体的合并,例如ONIONS;有些用于本体的评价,例如OntoClean[18];还有些主要用作本体服务器,浏览器和转换器,例如Ontosaun[19]。 根据这些工具所支持的本体描述语言,可以分为两类:一类基于某种特定的语言,例如Ontolingua,OntoSaurns,Webonto等;另一类独立于特定的语言, 18 基于Silverlight技术的本体编辑器的设计与实现 可以导入/导出多种基于Web的本体描述语言格式,例如Protégé系列、Hozo,WebODE、ontoEdt、OiIEd等。 下面以Protégé和Hozo[20]为例做一下简单介绍。 3.3.1 Protégé Protégé 2000[2]是由斯坦福大学开发的一个开放源码的本体编辑工具。采用Java语言编写,其界面风格与普通的Windows应用程序风格一致。本体结构以树形图来表示,用户可以点击相应的项目来增加或编辑类,属性和实例等。Protégé 2000支持多重继承,并对新数据进行一致性检查,并且具有很强的扩展性。主要特点如下: 1) 用户可以重新定义系统使用的表示原语。 2) 可以定制文件输出的格式。 3) 提供可扩展的API接口,可以定制用户接口。 4) 有可以与其他应用结合的可扩展的体系结构。 5) 支持数据库存储。 下面给出Protégé 的操作界面: 图3-2 Protégé 系统界面 Protégé 开放源代码,支持本体的简单构建,但是它基本上没有提供合作开发方面的支持,在实际应用中有很大的限制。目前斯坦福大学已经开发出了 19 基于Silverlight技术的本体编辑器的设计与实现 Protégé 的网络版,在功能上,没有什么大的变化,只是系统的结构不同。 3.3.2 Hozo Hozo[21,22,23]是由日本大阪大学沟口实验室开发的本体编辑平台,目前已成为日本最流行的本体编辑工具之一,其理论框架也被本体研究者广泛接受。 Peirce的三分法将问题领域内的概念分为三部分:第一范畴(Firstness),第二范畴(Secondness)以及第三范畴(Thirdness)。第一范畴是指存在概念,即不依靠其他概念而存在的概念;第二范畴是指必须依靠其他概念的解释定义方可存在的概念;第三范畴则是指将第一范畴和第二范畴联系起来的关系概念。Hozo在这三类范畴的基础上将问题领域内的概念分类进行了调整,分为四部分:基本概念,角色概念,角色持有者以及关系概念。引入角色概念是Hozo理论框架的一个突出之处。 使用Hozo,用户可以定义和修改本体和模型。用户通过选择,实例化及连接实例化概念来建立本体。对概念及概念间关系的处理主要有三个方面:概念定义,对概念的相关术语进行定义或赋值,如label,super,axiom,def,part-concept和attribute等;is-a关系,通过is-a关系将领域本体中的类概念连接成树;part-of关系,根据part-concept中的part-of关系层次化概念,并以树或图的形式显示。 图3-3 Hozo系统界面 Hozo也存在一些缺陷,例如概念的图形化显示很简单,图形化内容不够丰富;概念以及属性间的关系单一;其所使用的本体描述语言无法由其他的本体编辑工具使用;不支持本体库的构建等。 20 基于Silverlight技术的本体编辑器的设计与实现 21 基于Silverlight技术的本体编辑器的设计与实现 4系统总体设计 4.1系统的设计目标 一个好的本体编辑工具可以使本体的构建更加简单易行。随着本体在知识工程,人工智能,语义互联网,信息检索,电子商务,数据库设计等领域的广泛应用,大量本体编辑工具也随之产生。但是,严格来说,并不是所有的编辑工具都适合用来构建本体,它们各有优点,也各自存在缺陷。选择一个合适的工具可以使本体的构建事半功倍。 通过对常用本体编辑工具的分析,可以发现,本体编辑工具的多样化和差异性在很大程度上是有知识表示形式和本体描述语言的多样性决定的。在本体理论与应用研究的初期,本体编辑工具的多样化和差异性在很大程度上推进了本体研究的进展。但是,随着本体研究的深入和各种本体应用的开发,这种多样化和差异性又在很大程度上阻碍了不同领域知识的联通和异构系统的互操作性。解决这个问题,就需要本体编辑工具的统一化和标准化。 本体编辑工具的统一化和标准化是以知识表示形式和本体描述语言的统一性为前提的。因而,首先需要选择一种标准的,表达能力强大的本体描述语言,通过前一章对本体描述语言的介绍和比较,无疑OWL网络本体语言是一个很好的选择。根据本体构建的需要,这种标准化工具应该具备的特点如下: 1) 界面友好,易于使用。 2) 具有一定的开放性,能够跨平台应用。 3) 本体开发是一个庞大的工程,应该支持多人协作 4) 提供统一的概念体系和常识库。 5) 具有统一的输入输出标示语言格式,如OWL,支持多语种。 本系统的开发目标便以这些特点作为目标,希望实现以下功能: 1. 采用图形化方式浏览和编辑本体,方便易操作。 2. 支持分布式开发,可以多人共同编辑一个本体。 3. 以Web标准的本体描述语言OWL作为输入输出输出的标示语言 4. 支持本体库的构建。 22 基于Silverlight技术的本体编辑器的设计与实现 4.2系统的总体架构 作为在线编辑的本体编辑器,系统采用了B/S结构模式。整体架构的设计如下图所示: 图4-1系统架构 系统的前台包括四部分:Model(模型),即本体的对象模型,包含了本体中的所有概念,属性,关系和个体等元素,这个模型是对OWL本体描述语言的一种直译;Parser(解析器),将OWL反串行化为本体对象以及将本体对象串行化为OWL语言;Viewer&Editor(视图和编辑器):即本体模型所对应的视图和编辑器所对应的视图;Controller(控制器):控制视图的显示,以及与后台的交互。 控制器通过Web Service与后台数据库进行交互,对数据进行存取,修改,删除等操作。 4.2.1 Model的设计 系统采用了OWL本体描述语言作为系统的输入输出标示语言,我们无法直接对OWL文件进行操作,需要将其转化为相对应的对象模型。OWL是一种面 23 基于Silverlight技术的本体编辑器的设计与实现 向对象的描述语言,描述了一个对象本体中所包含的概念,属性,关系以及个体,集合操作等信息。那么我们的设计思路便是将OWL文件直译为一种对象模型,因为其本身便是一种面向对象的语言,因而无需再去抽象。对象模型直接跟OWL语言描述信息一一对应,也能使本体学习者更容易理解。 OWL语言的结构如下图所示: 图4-2 OWL文档结构 OWL语言的组成元素众多,上图只是给出了一个比较简单的结构。主要组成有以下几部分: 1) OWL Class,即类或者概念。其中类可以分为具名类(OWL Named Class)和匿名类(OWL Anonymous Class)两种。匿名类又可以分为具有限制条件的类(OWL Restriction)和逻辑类(OWL Logic Class)。根据限制条件的不同又可进行细分。逻辑类则主要是一些类之间的集合操作,和不相等关系等。 2) OWL Property,即本体中的属性,包含对象属性(OWL Object Property)和数据类型属性(OWL Datatype Property)。其中对象属性又有多种分类,例如传递属性,对称属性,逆属性等。 3) OWL Individual,即本体中的个体,类所对应的实例。对应同一个类的 个体,存在一种集合,集合中的个体互不相等,即OWL Alldifferent。 除此之外,OWL语言中还包含了本体的一些其他信息。例如,本体的命名 24 基于Silverlight技术的本体编辑器的设计与实现 空间,本体的名称,版本等。 系统的模型设计原则就是根据OWL语言的结构,所包含的元素,将其映射为面向对象的模型。 4.2.2解析器与视图的设计 设计好了本体面向对象的模型,我们需要一个解析器将我们用OWL描述的本体文件转化为对象模型。Jena的APR是Protégé 所使用的解析器,它的功能是解析RDF/XML数据文件。因为本系统面向的是OWL语言描述的本体文件,并且我们定义了自己的本体对象模型,因而不能直接使用已有的本体解析器,需要根据实际情况设计适合本系统模型的解析器。 OWL解析器作为本系统的一个子系统来开发,并且设立了解析器接口,系统通过解析器的接口来调用解析器的服务。解析器有两个功能:一是将OWL文件转化为面性对象的模型;另一个功能,因为本体内容是以文本的格式存储,所以需要将编辑好的本体对象转化为OWL的字符串。 视图的设计包含本体视图,以及本体编辑界面的视图。本体的视图主要就是概念的视图。以图形化的形式来直观的显示本体所包含的概念和属性等。通过对Hozo及Protégé 的使用,可以发现它也是用图形来显示概念及概念间的简单关系。但是它们的图形很简单,图形显示的信息量也很少。下面给出Hozo概念图形显示的一个图例: 图4-3 Hozo的概念图形化显示 本系统在设计本体概念视图时,希望图形化信息尽量丰富,设计的思路来源于Visual Studio 2008对于类图的显示。希望尽可能将概念的所有相关信息,包含属性,与其他概念的关系等也显示在概念图中。下面给出Visual Studio 2008类图的一个图例: 25 基于Silverlight技术的本体编辑器的设计与实现 图4-4 VS类图 此类图可以展开,合起,还可以任意的拖动位置。 4.2.3数据库的设计 分析本系统所设计的信息,并不复杂,主要有两类:一类是本体信息,一类是用户信息。 本体信息模型是进行本体浏览和编辑的基础。它包含本体的名称,本体的内容,本体的创建者,创建时间以及本体的版本等信息。系统从本体库中读取本体内容并进行解析,从而完成本体的浏览。 使用系统的用户有很多,不同用户创建的本体需要保留创建者的信息。因而需要对使用系统地用户进行管理。用户可以注册本系统,注册成功后便可以登录系统进行本体的浏览和编辑。用户的信息主要由用户的ID,用户的密码等信息组成。 通过对本体信息和用户信息的分析,对系统数据库进行设计,包含四个表:用户,本体,本体内容以及本体版本计数器。 4.3系统的功能分析与设计 本系统是一个集本体浏览和本体编辑于一体的综合平台,提供了本体浏览和本体编辑两大功能。因此本系统具有本体浏览和本体编辑两个功能模块。其功能架构图如下所示: 26 基于Silverlight技术的本体编辑器的设计与实现 图4-5系统功能结构图 本体在线浏览是本系统的重要功能之一。OWL文件非常庞大,且语法复杂,直接阅读很有困难。通过此功能,用户可以直观的查看已建立的本体,且概念信息详细。另外,采用了Silverlight技术,使得界面非常友好,用户体验良好,可操作性也很强。该功能模块主要包含以下功能: 本体的树形导航显示 以概念树的形式显示本体中所包含的概念,以及概念之间的继承关系。用户可以一目了然本体中所包含的所有概念,也可以快速的查找某一个概念了解它的详细信息。 本体概念的图形化显示 采用类似Microsoft Visual Studio 2008中类图的显示方式来显示本体中的详细概念。概念图形包含概念的属性,集合操作以及关系等相关信息。图形可以展开以显示详细信息,也可以合起只显示概念的名称,概念图形还可以随意的拖动。由于OWL所描述的关系有很多种,不仅仅包含继承关系,因而不适合使用关系线来表示两个概念间的关系,而是选择将关系信息也包含在概念视图中。 本体的源文件显示 系统设计可同时显示多个视图,因而可以同时查看本体的图形化视图和本体的源文件视图。 本体的编辑功能是本体构建的另一个重要功能。本系统目标在于对本体概念的编辑,包含概念的名称,概念属性以及概念与其它概念间的关系等信息的编辑。编辑面板由Silvelight技术来实现,采用其一些控件及其绘图技术,编辑面板的 27 基于Silverlight技术的本体编辑器的设计与实现 风格类似于Microsoft Visual Studio 2008的Properties控件。 4.4开发平台与核心技术 4.4.1 Microsoft Visual Studio 2008 Microsoft Visual Studio 2008[24]是对Visual Studio 2005一次及时、全面的升级。VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了 AJAX 1.0,包含 AJAX项目模板,它还可以高效开发Office应用和Mobile应用。 Visual Studio 2008主要具有以下新特性: 1) 支持多定向,允许构建针对.NET框架各个版本的应用。 2) Web设计器和CSS支持。 3) AJAX和JavaScript支持。 4) 语言改进和LINQ支持。 4.4.2 Silverlight技术 Microsoft Silverlight[25]是一个跨浏览器、跨客户平台的技术,能够设计、开发和发布有多媒体体验与富交互(RIA,Rich Interface Application)的网络交互程序。对Silverlight而言,RIA代表着一种能够呈现丰富内容,同时具备高度互动性的应用程序,尤其是在Web环境下所执行的应用程序。Silverlight网页与服务器和用户之间的关系如图所示: 后端服务器 Silverlight网页 用户 图4-6Silverlight网页与服务器和用户之间的关系 28 基于Silverlight技术的本体编辑器的设计与实现 能同时具备丰富的内容和高度互动性的用户体验是Silverlight最重要的概念,微软推出Silverlight的目的在于填补与 AJAX等Web相关技术所无法达到的展现层效果。 Silverlight是一种跨浏览器,跨平台的技术,可以在所有流行的浏览器中运行,包括Microsoft Internet Explorer,Mozilla Firefox和Opera等。无论在哪运行,都能提供一致的用户体验。 Silverlight将多种技术结合到了一个开发平台,可以在其中选择符合需求的合适的工具和编程语言。Silverlight提供了如下特性: 1) WPF和XAML。 2) 扩展了JavaScript。 3) 跨浏览器,跨平台的支持。 4) 可以访问.NET Framework编程模型和相关工具。 5) 支持LINQ。Silverlight包含了集成查询语言(LINQ)。 Silverlight应用程序主要由两部分组成,一是由XAML文件组成的可视化接口;另一个是外部JavaScript文件或者是XAML文件的后台文件,作为逻辑程序控制视图的显示,与用户进行互动。Silverligt的内容由一种扩展名为.xaml的XML文件进行定义,开发人员通过设计XAML文件,建立各种Silverlight应用程序的可视化接口内容。XAML由数量不等的对象组成,而Silverlight对象模型提供了创建XAML所需的对象,通过XAML的整合,Silverlight控件则在执行期间,展示对象所呈现的可视化效果。Silverlight采用WebService技术进行数据访问。Silverlight应用程序不能独立运行,需要嵌入到HTML网页中。这些元素之间的关系如下图所示: 图4-7 Silverlight元素的组织和关联 29 基于Silverlight技术的本体编辑器的设计与实现 4.4.3 MVC设计模式 在本系统的设计中,涉及到了本体模型,本体视图,以及控制视图显示的控制器,这是一种标准的MVC设计模式。 MVC(Model-View-Controller)[26]架构最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。所谓MVC,就是把一个应用的输入,处理,输出流程按照Model,View和Cntroller的方式进行分离,这样的一个应用被分为三层—模型层,视图层和控制层。MVC的架构图如下所示: 捕捉模型状态变化MODEL改变模型状态传送状态变化VIEW 3VIEW 2VIEW 1控制视图显示图4-8 MVC架构图 CONTROLLER 视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性,一个应用可能有很多不同的视图。 模型(Model)就是业务流程或状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。 控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化--传播机制。 30 基于Silverlight技术的本体编辑器的设计与实现 4.4.4 Web Service Silverlight采用Web Service与服务器进行数据的交互。Web Service[27]也叫做XML Web Service,是一种可以接收从Internet或者Internet上的其他系统中传递过来的请求,轻量级的独立通讯技术。是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。 XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。 SOAP:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。 WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。 UDDI:(Universal Description,Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目,是一种根据描述文档来引导系统查找相应服务的机制。 31 基于Silverlight技术的本体编辑器的设计与实现 5系统的实现 5.1系统总体模块的设计与实现 根据系统的总体架构分析设计,系统可以分为模型层,视图层,控制层,数据访问层和数据层。其中本体对象模型是整个系统的基础;视图也可分为本体概念视图和本体编辑界面视图。控制层捕捉视图状态变化,依此改变模型状态并控制视图的显示。控制层通过数据访问层对服务器数据进行访问。在系统程序设计上,其层次结构与系统的总体架构相对应。程序分为两部分,客户端程序和服务器端程序。下面详细介绍一下服务器端及客户端各个层的组成及其作用。 5.1.1服务器端组成 服务器端主要有Business层和DataAccess层。采用Linq技术对数据库进行访问,需要创建对应数据库中各个表的实体类。Business层即包含对应数据库中各个表的类,表中的字段为类的属性,类的方法是对表的相应操作。 表5-1服务器端Business层的组成及作用 组成元 作用 素 Ontologies 包含了对应数据库中Ontology,OntologyContent的类 Users 包含了对应数据库中User的类,以及用户登录的状态及登录结果的信息 Entity 是各个表对应实体类的父类,包含了一些公共的属性如ID,以及保存,删除等公共操作 DataAccess层是数据访问层,采用Linq技术,定义了对数据库中表的访问方法。 表5-2服务器端DataAccess层的组成及作用 组成元素 Database 作用 创建数据库联接 EntityDataAccess 包含了数据访问的各种操作,如添加,修改,删除等 32 基于Silverlight技术的本体编辑器的设计与实现 MappingSource 这是一个Xml文件,定义了数据库表与其实体类相映射的信息 另外,服务器端还包含了WebSite层。因为Silverlight程序无法独立运行,需要将其嵌入到HTML或ASP网页中。通过Web Service对数据进行访问,Web Service定义于WebSite层。采用Http协议对数据进行访问,系统还设计了访问各个表返回信息的Xml文件的格式。 5.1.2客户端组成 客户端程序为Silverlight程序,包含以下几层: (1)Application层,即MVC模式中的控制层。主要用来设计整个系统界面的布局,控制视图的显示,并与服务器进行数据交互。 表5-3客户端Application层的组成及作用 组成元素 MainPage MainPanel 作用 即编辑器的主页面,包含了各类视图面板 主面板,用于显示本体概念视图,树形导航图,本体元文件视图和编辑面板 ToolBar 工具面板,包含新建,保存,显示状态选择等 (2)Model层,即OWL语言对应的本体对象模型,是整个系统的基础要素。这一层将作为基础模块在下一节中做出详细解释。 (3)View层,即视图层,与以上两层构成了MVC模式。视图中定义了视图变化的事件,控制器定制此事件,改变视图对应模型的状态,触发此事件,从而控制视图的显示。 表5-4客户端View层的组成及作用 组成元素 OntologyTreeView 作用 设计本体树形视图,可以使用户快速清晰的查看本体的基本组成信息。 OwlDocumentView 设计本体源描述文件视图,用户可以同时查看本体源文件和图形化视图,有助于快速的理解和学习 OntologyView 设计本体的图形化视图,包含概念,关系以及操作的属 33 基于Silverlight技术的本体编辑器的设计与实现 性的视图。它们均继承自BaseShape。 OntologyEditorView 设计本体的编辑面板视图。 ToolBarView 设计编辑器中工具栏的视图,包含各类工具按钮,选项等 (4)Parser层,即系统的解析层。这一层独立开发,将其引入本系统中,通过解析接口来调用它的服务。解析器的功能有两种,一种将OWL文件解析为本体对象模型,一种将本体对象模型解析为OWL语言格式的文本。 (5)Business层,客户端的业务层,它与服务器端的业务层完全一致。因为在客户端的程序均为Silverligh项目,Silverlight项目中只能引用Silverlight项目,因此需要在客户端设立一个Silverlight项目类型的业务层,以供其他项目的引用。 (6)DataProxy层,即数据代理层。实现了对各个数据库表数据的访问,采用Web Service,利用Http协议,获得数据访问的XML格式的结果,并将相应的数据转换为我们需要的格式。 表5-5客户端DataProxy层的组成及作用 组成元素 HttpDataProxy 作用 是其他各类数据访问代理的父类。定义了Http协议访问数据的流程,包括HttpRequest,HttpResponse等 OntologyDataProxy UserDataProxy 对本体进行访问的数据代理 对用户信息进行操作的数据代理 XmlQueryResultReader 对访问结果进行处理,将其转化为相应实体表对象,以供下一步的处理。 5.1.3系统各层次间的关系 客户端Application层,Model层以及View层是MVC的三层架构。Application层控制并捕捉View层的变化,将View层的变化传递给Model层;Model层捕捉变化并作出相应的改变;View层捕捉Model层的变化并刷新显示。Applicatin层发起数据访问,通过数据代理层进行数据访问。数据代理层将访问结果转化成对应的实体表对象,通过解析器将本体的内容转化为Model,从而进行显示和编辑。服务器端接受来自客户端数据的访问,将访问结果以Xml字符串的格式给 34 基于Silverlight技术的本体编辑器的设计与实现 出响应。 下面给出各层次间的关系图: 客户端Application服务器端ViewModelBusinessParserBusinessHttpDataProxyDataAccess 图5-1系统各层次关系图 系统的整体实现效果如下图所示: 图5-2 系统界面 5.2系统基础模块的设计与实现 系统的基础模块包含本体对象模型,数据库及数据访问。视图模块和控制模块是针对不同功能,其设计不同,将在系统的本体浏览和本体编辑模块中给予详细解释。 5.2.1本体对象模型的实现 我们选择了OWL作为本系统使用的本体描述语言,因为其本身就是一种面 35 基于Silverlight技术的本体编辑器的设计与实现 向对象的语言,因而我们选择以直译的方式进行本体建模。在上一章我们已经分析了OWL语言的组成,包含概念类,属性,集合操作以及概念类之间和属性之间的关系,以及一些其他信息,例如版本信息,引用信息等。系统所设计的本体对象模型的组成元素包括:概念类,属性,关系,个体,本体集合操作,本体的头部信息,互不相等的个体集合以及OWL中定义的数据类型,命名空间。 OWL中的概念类有多种,分为三大类:具名类,外部类和匿名类,其中匿名类又可以分为多种。下面给出本体对象模型中概念类的设计类图: 图5-3本体模型概念类的类图 其中具名类(OwlNamedClass)是具有名字的类,外部类(OwlOuterClass)是从外部本体中引入的类。匿名类(OwlAnonymousClass)是没有具体的名称,而是由某些属性限制条件限定的概念。限制条件分为三类:一种是HasValue限制,只要一个个体至少有一个属性值等于HasValue资源,这个个体就是这个类的成员;一种是不确定个数的属性值限制,分为AllValuesFrom和SomeValuesFrom。AllvaluesFrom限定对于每一个由指定属性实例的类实例,该属性的值必须是限定条件制定的类的成员。SomeVluesFrom限定此类的实例的属性至少有一个类的实例是指限定条件中类的个体。第三种限制是基数限制,限定类的一个关系中元素的数目。可以限定元素的个数最少有几个,恰好有几个和最 36 基于Silverlight技术的本体编辑器的设计与实现 多有几个。 OWL属性可以分为两类,本OWL文件中定义的内部属性和引用的外部本体中定义的属性。内部属性和外部属性又可以分为两类,数据类型属性和对象属性。数据类型属性是类中属性的数据类型信息,包含数据的类型,数据的定义域与值域。对象属性是两个类的实例之间的关系。下面给出属性类设计的类图: 图5-4本体模型属性类 OWL中关系分为属性间的关系,概念类之间的关系和个体之间的关系三类。属性和概念类关系都包含相等关系和子类关系。其中概念类的子类关系根据父类的不同又可以进行分类。个体间的关系则包含相等关系和不相等关系。下面给出本体模型中的属性设计类图: 图5-5本体模型属性类类图 37 基于Silverlight技术的本体编辑器的设计与实现 OWL中还包含一些集合操作。包括:IntersectionOf(交运算),UionOf(并运算),ComplementOf(补运算)和one of(枚举操作)。 图5-6本体模型中集合操作类类图 本体中的个体类包含本OWL文件中定义的内部个体和引用的外部本体中的个体两类。另外,本体模型中还对命名空间,本题头部信息,本体引用信息等进行了抽象定义。 5.2.2数据库的设计与实现 本系统采用数据库来存储本体,同时还涉及到使用本系统的用户的信息。上一章已经对本系统中涉及的信息进行了分析,本体信息包含了本体基本信息,本体内容,本体的版本信息和本体创建者的信息即用户信息。 数据库表之间的关系如下图所示: 图5-7数据库设计 38 基于Silverlight技术的本体编辑器的设计与实现 下面给出各个表的详细信息: 表5-6用户信息 字段 LoginID Name Password 字段含义 登录ID 用户名 密码 字段类型 说明 nvarchar(255) 用户在系统中的唯一标识 nvarchar(255) 用户的名称 nvarchar(255) 用户登录密码 用户第一使用系统,需要进行注册。注册信息为登陆ID,用户名称和登陆密码。其中登陆ID是用户的唯一标识,不同的用户登陆ID是唯一的。 表5-7本体基本信息 字段 Name CreatorID CreateTime 字段含义 本体名称 创建者ID 创建时间 字段类型 说明 nvarchar(255) 用户在系统中的唯一标识 int datatime 对应用户表,用户的唯一标识 记录本体创建时间 本体的基本信息包含了本体名称,创建者和创建时间。其中创建者对应用户表,创建时间是保存创建本体时的时间,由()方法取得。因为对某一创建者创建的本体,其他用户可以进行修改,形成许多版本的本体内容。所以需要创建描述不同版本本体内容信息的表。 表5-8本体内容信息 字段 OntologyID ModifierID ModifierTime Content Version 字段含义 本体ID 修改者ID 修改时间 本体内容 本体的版本 字段类型 说明 对应本体表,本体的唯一标识 对应用户表,用户的唯一标识 记录本体编辑的时间 本体的Owl源文件 本体的版本号 int int datatime text int 本体的内容包含了它所对应的本体,修改者,修改时间以及本体的内容和本体的版本号。其中本体的内容存储的是描述本体的Owl格式的文件,由于Owl文件一般都很大,所以采用了text数据类型来存储。每编辑一个本体的本体内容,其版本号加1,需要设计一个本体版本计数器来记录某一本体当前的版本数。 39 基于Silverlight技术的本体编辑器的设计与实现 表5-9版本计数器 字段 OntologyID Count 字段含义 本体ID 计数 字段类型 说明 对应本体表,本体的唯一标识 本体所有的版本数 int int 本体的版本计数器包含两个字段,所对应的本体和本体当前的版本数。每编辑一个本体的内容,要先将对应本体的版本计数器加1,然后将此版本计数器的Count作为本体内容的Version存储。当删除一个本体的某一版本的内容时,版本计数器不做任何改变,因而在删除一个版本的本体内容后再新建一个版本的本体内容,便不会出现重复版本号的情况。 数据库的建立并不是直接创建的,而是通过Xml来描述数据库实体表的信息,编写程序将实体的Xml描述文件转换为数据库建库脚本,在Sql Server中运行此建库脚本从而生成数据库。这样建库的一个优点就是易于管理,如果要添加或修改数据库,只需修改实体Xml即可。下面给出描述本体内容的Xml片断: 程序清单5-1 /> require="false"/> …………. 5.2.3数据访问层的实现 Silvelight采用Web Service技术对数据库进行访问,本系统数据访问层是利用Linq to Sql结合Web Service和Http协议实现对数据库的访问。 Linq to sql(或者叫DLINQ)是LINQ(.NET语言集成查询)的一部分,全 40 基于Silverlight技术的本体编辑器的设计与实现 称是基于关系数据的.NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。LINQ to SQL 使用实体类(Entity Classes)来进行与关系数据库的映射,其实例对象被称为“实体”(Entities)。实体类映射到数据库中的表,其属性通常映射为表的列,其每一个实体表示表中的一行。实体类没有强迫要继承自某个特定表的类,也就是说可以继承自任何你希望的对象。使用LINQ to SQL创建的实体类均被标记为局部类(partial classes)——意味着你可以为其扩展属性、方法和事件等。 可以根据已经定义好的数据库来生成其实体类。本系统采用了实验室开发的一个Linq to Sql工具,解析已经设计好的实体Xml文件来生成实体局部类的代码。下面给出OntologyContent实体局部类的代码: public partial class OntologyContent { #region ID和时间戳 private int _ID = NEW_ENTITY_ID; private byte[] _TimeStamp = new byte[] { }; #endregion #region 成员 private int _OntologyID; private EntityRef private string _Content; private int? _ModifierID; private EntityRef private string _ModifierName; private DateTime _ModifyTime; private int _Version; private string _Description; #endregion …………… } 数据库的实体类,有一些共同的属性和操作,例如实体类的ID,判断一个实体是否是新建实体,保存实体以及删除实体和根据实体ID 来取得实体等。因而需要创建一个实体类的基类Entity,其他具体的实体类均继承于此类。 建好了数据库的实体模型,需要取得数据库对实体模型的映射才能实现对数据库的操作。DataContext类型(数据上下文)是命名空间下的重要类型,用于把查询句法翻译成SQL语句,以及把数据从数据库返回给调用 41 基于Silverlight技术的本体编辑器的设计与实现 方和把实体的修改写入数据库,它是实体和数据库之间的桥梁。 首先,我们要连接并获得数据库。在WebSite的配置文件中,设置数据库的连接字符串。代码片断如下所示: connectionString="Server=127.0.0.1;Database=Ods;uid=sa;pwd=pwd;Integrated Security=false;" providerName="ent"/> 连接好数据库,我们通过数据库与实体类的映射文件来取得数据库的对应实体模型的数据集。我们定义了一个DataBase类,继承自DataContext类。通过DataBase类我们可以得到数据库对应的实体类结构的数据集,并且DataContext类中定义了一个GetTable(TEntity)的泛型方法,可以取得某一个表的对象数据集合。下面给出数据库映射文件的片断: UpdateCheck="Never" AutoSync="OnInsert" /> DbType="NVarChar(255)" UpdateCheck="Never" /> DbType="NVarChar(255)" UpdateCheck="Never" /> DbType="NVarChar(255)" UpdateCheck="Never" /> Storage="_TimeStamp" DbType="rowversion" IsDbGenerated="true" IsVersion="true" UpdateCheck="Never" AutoSync="Always" /> Storage="_Ontology" ThisKey="ID" OtherKey="CreatorID" DeleteRule="NO ACTION" /> Member="OntologyContent" Storage="_OntologyContent" ThisKey="ID" OtherKey="ModifierID" DeleteRule="NO ACTION" /> 通过数据库连接字符串取得数据库的访问,并通过MappingSource来得到数 42 基于Silverlight技术的本体编辑器的设计与实现 库据对应的实体类结构的数据集。难点在于MappingSource的获得,下面给出getMappingSource()方法实现的核心代码: private const string MAPPING_SOURCE_RESOURCE_NAME = ""; private static MappingSource getMappingSource() { if (_MappingSource == null) { lock (_Locker) { if (_MappingSource == null) { Stream mappingSourceStream = embly(typeof(Database)).GetManifestResourceStream(MAPPING_SOURCE_RESOURCE_NAME); if (mappingSourceStream == null) throw new dDataException("映射文件不存在!"); _MappingSource = ream(mappingSourceStream); } } } return _MappingSource; } 取得了数据库对应的实体数据集,便可以创建各实体表对应的Web Service,根据数据访问的需要,在每个Web Service中定义Web方法,实现数据的查询,修改,删除等操作。在Web Service中我们采用了Http协议来发起数据访问的请求,并获得数据访问结果的响应。响应结果是以Xml格式给出,可以自己定义响应中需要的信息。例如,我们要查询数据库中所有的本体,每个本体要给出名称,创建时间和创建者的信息,我们可以在本体的Web Service中定义以下的Web方法来实现: [WebMethod] public void GetOntologyQueryReusult() { mlHead(); Database .Ontologies .Query(ologyQueryInformation()) .Show(Response); } 43
发布评论