logo资料库

本体Protege4.doc

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
OWL-Lite
OWL-DL
OWL-Full
如何选择你需要的子语言
OWL本体的重要组成部分
Individuals
Properties
Classes
Class Axiom
Class Expression
打开披萨饼的例子
Disjoint Classes
Protege4.0 使用说明 OWL-Lite 它是 OWL 中句法最简单的一种子语言。 对于简单的继承或者约束,它就显得非常适用。 一般用于合并同类字典和简单继承。 lite 是清淡的意思 OWL-DL OWL-DL 较之 OWL-Lite,它的表达能力加强了。是基于描述逻辑的(Description Logics),所以以 DL 后缀。 正是因为有了描述逻辑,使自动推理成为了可能。 凡是遵循 OWL-DL 规范的本体都有可能自动计算类的继承性和检测本体之间的矛盾。因此一般用于要推理本 体之间的某种关系或者验证本体是否存在矛盾性,比 OWL-Lite 更进了一步。 这个教程就是基于 OWL-DL 的。 OWL-Full OWL-Full 是最具有表达能力的子语言了。 它适用于高表达性的场合,如果要把一个事物完整的、精确的、力求无二义性地表达出来,它就非常适用。 但正因为它把约束定义太死,所以已经不适合做推理了,一旦推理,会出现大量的矛盾,也不适合进行合并 工作,因为它很难与别的本体兼容。 如何选择你需要的子语言 以下 2 个建议你可以参考下 选择 Lite 还是 DL,在于你觉得用 Lite 来创建本体,是否已经够用。 选择 DL 还是 Full,在于你觉得是自动推理更重要,还是精确表达更重要。DL 使建模更灵活,Full 使建模更完 整更精确、表达力更强。 注意:Protégé 4 在编辑 DL 和 Full 的时候并没有什么明显区别,尺度把握在你自己心目中。 OWL 本体的重要组成部分 在早期的 Protégé版本中,你们会发现这样的术语,Protégé frames Instances, Slots and Classes,3 个重要的部分是: Instances、Slots、Classes,其实就对应 OWL 本体中的如下三个部分,它们是:
Individuals 个体。代表一个领域里面的对象。可以理解成一个类的实例(instances of classes)。 比如在工人这么一个类中,小李、老王、阿三等人就是一个一个的 Individual。 Properties Properties 翻译为属性的意思。但是它的真正含义不和面向对象编程语言中的属性一样,它的真正含义是 2 个个体之间 的双重联系,或者可以认为是 2 个 Individuals 之间的桥梁。 比如,hasChild 连接了老李和他的孩子狗剩这 2 个个体。 另外,Properties 还有 3 个比较重要的特性,functional,transitive,symmetric,会在第四章详细介绍。 Classes 在 OWL 中 Classes 被翻译成个体的集合。当然它是一系列概念的语义表达,和编程语言中的类非常相似,有继承体系, 如果是 OWL-DL 版本还能推理出一些继承关系,后面会提到。 Class Axiom 在 OWL 中,类的公理是非常重要和关键的一部分,它在验证一致性和推理中发挥着巨大的作用。 Class Expression 类的表达非常为之丰富,有并交补类还是匿名类等等,后面章节将会重点讲述。 打开披萨饼的例子 打开 Protégé,经过黑屏白字一番加载后,出现了 3 个选项的对话框。 我们选择打开一个网上已有的实例——open OWL ontology from URI 系统会给出我们它内建的一些书签,我们选择 pizza.owl 那个本体。
 选择之后要保证你的网路是 OK 的,耐心等待一段时间后,Protégé的界面就出来了
 如果你发现你的 Protégé版本和我说的不一样,点第二章,里面有下载。 我们看软件界面图,最重要的几个版面就是,Classes,Object Properties, Data Properties, Individuals。 你们可以大致点进去看看。一进去的版面叫 Active Ontology,是这个本体的统计信息。 这里例子让你熟悉下 Protégé的界面,下面我们开始自己构建本体。 在创建本体的时候,用的最多的当然是第一种方法————Named Class。这种 Class 也被称为 Plain Class,意思就是 没有任何语义的类,仅仅是一个标示。好了,我们开始!
打开 Protégé,这次我们要选第一个选项了,就是自己去创建本体。 接着要你输入 URI,就是世界上唯一的地址,作为我这个本体的标示。这里我们填 http://www.crabone.com/ontologies/organization.owl,注意这种规范的写法是很重要的。这是 RDF 的知 识点了,我就不啰嗦了,有兴趣朋友看这里 RDF 入门教程 之后就选择这个本体,我们本体存放的位置。 点击 Finish 之后,我们实际上已经创建了一个空的本体了。而且 Protégé已经为你创建了 RDF/XML,你可以 去看看你保存着的 OWL 文件,表示形式为:  ]> 1. 2. 3. 4. 进来之后,我们选择 Classes 那个面板,开始建立出下面这样的一棵树。  这棵树是由一些“兴趣爱好”这样的类组成的,一个社团有什么样的兴趣爱好,就将会是什么样的社团,当 然一个社团也可以有多个兴趣爱好。至于上图的操作我想就没必要讲了,重点要讲述的是大家在建模的时 候要分清什么是分类,什么是继承。
继承:只要学过面向对象编程的朋友都熟悉这个概念,在 RDF 和 OWL 里父类与子类的关系,远远没有 OOP 里面那么玄乎,我们来看 W3C 上的语法描述: if T(?c1, rdfs:subClassOf, ?c2) T(?x, rdf:type, ?c1) then T(?x, rdf:type, ?c2) 意思就是如果 C1 是 C2 的子类,并且有一个实体或者类是属于 C1 的,那么它也属于 C2。记住!推理机就 只明白这点,仅此这么简单! 分类:这里指的分类其实就是上面的继承,一模一样!但是我们在建模的时候并没有把这些分类的类当作本 体中的关键元素,而是属于辅助类。辅助什么?辅助我们建模,并不是辅助推理机,有了这些辅助类可以 使我们的类机构图更加清晰,我这里举个例子,见下图: 我们可以看到这里多了几个类,我们来看哪些是分类关系,哪些是继承关系。这里的 Thing 下面有一个分 类叫 Interest,Interest 下面有 3 个被继承的子类,其中的 NamedInterest 就是典型的辅助类,也可以称为 分类类,因为 NonMusic 和 MusicAndFootball 是一类兴趣爱好,我们暂且称为复合型的爱好,还有 4 个就 叫做纯种爱好,或者原始爱好。而 NamedInterest 的作用就是为了建模的时候有个清晰的建模思维,让建 模更具有逻辑性和条理性,但是 NamedInterest 这种类将不会对推理起到任何作用,它仅仅是借用了 SubClassOf 公理(后面章节将会详述)来作为辅助的。 Disjoint Classes
DisjointClasses、SubClassOf、EquivalentClasses 是类的三大公理,见下图: SubClassOf 已经在上一节讲过了,EquivalentClasses 和推理密切相关,在下面的章节将会讲述, DisjointClasses 则是为了让推理能够顺利进行的一个必要条件,没有它的显式声明,有些推理将无法运行。 可以说,在 OWL 里面 DisjointClasses 无处不在,这也是和我们的思维非常不一样的。因为我们在 UML 中 的类,OOP 中的类,都不需要申明它们之间的关系,类与类之间要么是父子关系,要么没有任何关系,一 个对象只能是一个类的实例,比如 JAVA 中 String tempStr = new String(); 这里的 tempStr 就是类 String 的实例,不存在类似于 String int temp = new String() or int(乱写的); 这样的形式,既是 String 又是 int 的类型。然而,在 OWL 中,一个实例可以既是这个类的实例,又是其他 类的实例,比如下图:
上面有 2 个集合,这里的集合就好比类,集合里面的小块块就是这个类的实例。从这个图里,我们可以读 出那几个类呢? A、B、A∩B、A∪B...还有很多比如:非 A、A 和 B 的交集的补集等等,我这里公式不打了,这些都是一 个个的类 那么在上面这些类中的小块块,就是属于这个类的个体,也叫实例,我们发现,有些小方块可以属于很多 类,比如中间的那些,既是属于 A 的,又是属于 B 的,也可以属于(A∪B),也可以属于……总之可能会 属于很多类。 在这里,我们可以进行一个小小的总结了: OWL 中的类,和 OOP 中的类并不一样,只有继承上来说,是类似的,但我们更应该把这些类当作集合 来考虑! 看到这里,我想大家就应该明白 DisjointClasses 的意思了,是的!为了声明 2 个类没有交集!!只要 2 个 类没有了交集,那么就不存在一个个体同时属于这 2 个类的情况了,这样推理机可以更加准确无误地表达 出我们的意思了。 那么什么样的类需要去申明 DisjointClasses 呢?答案:同一层次的类!这里涉及到一个模式,叫做 Upper Level Ontology 这个设计模式给了我们建模一个指导规范:将本体里面的类先按照层次划分,然后将一个层次的类相互 DisjointClasses。我们还是以我们的社团本体来举例:
分享到:
收藏