OWL本体语言和Protege本体编辑器


演讲稿原作者:Wala Abdulaziz
译者:Wu Di (pimgeek)
转载、编辑:Tan Liwei
原文发布日期:2013年6月5号
原文链接:https://prezi.com/ggozsbzy2xn-/owl-protege/

什么是本体(Ontology)?

  在计算机科学和信息科学中,本体的作用是表达知识.在本体中,知识可以被正式地表达为一系列的领域相关概念,以及这些概念之间的相互关系.

  本体可以被用来为一个知识领域建立模型,并且支持对这个模型中的实体进行推理.

我们为什么需要本体?


 
本体的重要作用?

  • 利用本体,可以在不同的人或应用程序之间共享一组有结构的信息,并达成理解上的共识.(补充:消除歧义、去重
  • 允许我们重复使用领域知识:当我们已经拥有了关于某个知识领域的本体时,我们可以把同一个本体应用于不同的应用程序中,这就可以避免重新发明轮子.
  • 可以把知识领域内的(内行人不言自明的)前提假设明确地表达出来.
  • 把领域知识与操作性知识区分开.
  • 利用概念之间的已适当建立的关系分析领域知识.

本体工程的流程

  • 确定知识领域.
  • 列举出这个领域里会用到的术语.
  • 定义一些可以表达领域内概念的类(class).
  • 定义每个类的属性,以便将他们链接起来.
  • 定义约束条件, 以便限制类和属性.
  • 从类出发创建一些实例

Web 本体语言(OWL)

  • 一种用来定义Web本体的语言.
  • 一个OWL的本体可以包含关于类,属性及其实例的描述.
  • 当给定了一个这样的本体时,OWL的形式化语义允许我们由本体自动推导出一些符合逻辑的结论.

什么是Protégé?



 
  • Protege 是一个图形界面的本体开发工具,它支持丰富的知识模型
  • Protege 是开源的,并且可以免费获取

OWL 本体的组成单元

(1) 个体
  • 个体代表知识领域中我们感兴趣的那些具体对象.
  • 个体有时候也被称作实例.
  • 个体也可以被称作"属于某个类的实例".

(2) 属性

属性是个体之间的二元关系. 换句话说, 属性把一对个体链接起来.

(3) 类
  • OWL的类可以被理解为包含若干个体的集合
  • 类需要被形式化地描述出来,这些描述精确界定了究竟个体能否成为某个类的成员的"准入标准"
  • 不同的类可以被组织为体现父类子类关系的树形大纲结构

披萨饼范例本体



 


当前活动的本体


 




 
  • 披萨饼本体中有很多类
  • 子类: 在OWL 中表示隐含关系
  • 不相交的类: 把一组类区分开来(如果A类与B类不相交,那么属于A类的个体不可能同时属于B类)
  • 我们让以下四个类不相交
    IceCream
    Pizaa
    PizzaBase
    PizzaTopping
OWL的属性

 
对象属性:
  对象属性是一对个体之间的关系,它从某一个体出发,链接到另一个体.

数据属性:

  数据属性是个体与某个数据取值之间的关系.

标注属性:
  标注属性被用来为类,个体,对象属性/数据属性等添加信息(元信息,或者所谓的关于数据的数据). 译者注: 标注属性本身也可添加标注属性.

对象属性

对象属性
  • hasCountryOfOrigin (拥有发源地国家)
  • hasIngredient: (拥有组成要素)
      haseBase (拥有面饼)
      hasTopping (拥有覆盖食材)
  • hasSpiciness (拥有辛辣口味)
  • isIngerdientOf:
      isBaseOf
      isToppingOf


对象属性的特性

函数型特性

函数型特性(Functional Properties):

  如果一个对象属性是函数型的, 那么借助这个属性,某个体a只能连接到唯一的个体b

函数型特性也被称作单值特性
  例如:
hasBase property.
(一个披萨只能拥有一个面饼)

反向函数型特性(Inverse Functional Properties):

  如果一个对象属性具有反向函数型特性,那么这意味着它的反向属性具有函数型特性.
例如:
(1) isIngredientOf (多对一)
(2) hasIngredient (一对多)

传递型特性(Transitive Properties):
  如果一个对象属性P是传递型的,那么如果个体a通过属性P关联到b,且b又通过属性P关联到c,那么我们就可以推得:a一定可以通过属性P直接关联到c.

对称型特性(Symmetric Properties):
  如果属性P是对称的, 并且个体a 通过属性P与个体b 发生关联,那么我们可以推得b 也一定通过属性P与a 发生关联.

非对称型特性(Asymmetric properties):

  如果属性P是非对称的, 并且个体a 通过属性P与个体b 发生关联,那么我们可以推得b 不可能通过属性P与a 发生关联.
 

对象属性的定义域和值域

  对象属性把来自定义域的个体链接到来自值域的个体.(但这种规定并不被用来限制个体).当一对个体 a 和 b 可以被这个对象属性关联时,即使它们并没有被明确地分配给任何类,我们也能推出 a 一定属于定义域所对应的类,而 b 则一定属于值域所对应的类.

推理机(Reasoner)

  推理机是Protege 的重要功能之一. 我们不仅可以用推理机判定一个类的定义是否一致,还能利用充分必要条件发现一些隐含的信息.


 
一致性检查
  检查一个(译者注:按规则形成的)类是否不可能包含任何个体.

自动分类
  给定一个包含了很多类的树形结构,分类器能够把其中的一些类自动归集到对应的分支上去.(译者注:分类器是推理机的一部分,不仅可以对类做自动归集,还可以对个体做自动归集.)

分类器
  当推理得出的类呈现红色时,这表示这些类是不一致的.(如下图:


  在本体理论中,不一致表示这样的类不可能拥有任何个体.
  CheeseyVegetableTopping 类是不一致的, 那是因为我们给它设定了两个没有交集的父类, CeeeseTopping 和 VegetableTopping.

说明:

  如果我们取消CheeseToppping 与 VegetableTopping之间的互不相交关系,然后再次开动分类器,那么CheeseyVegetableTopping这个类就不再是不一致的了.


OWL可视化(OWLViz)

  • OWLViz 插件可以被用来在我们已定义好的类结构中四处游走和查看
  • 检查类的一致性,并且用树的形状展示逻辑意义.
  • 在包含很多类,而且部分类的父类也很多的大型本体库中,这个插件很有用.

OWLViz 提供了:

  • 以声明方式形成的类的层级关系
  • 以推理方式形成的类的层级关系

以声明方式形成的类:



 

以推理方式形成的类




不一致的类


 
(上图中)存在不一致性的类,在图中以红色高亮显示.

为披萨饼本体增加一些其它类(比如饮料类)

有困惑吗?

参考资料

(1) Ontology (information science): http://en.wikipedia.org/wiki/Ontology_(information_science)

(2) Natalya F. Noy, Deborah L. McGuinness, Ontology Development 101: A Guide to Creating Your First Ontology, Stanford, Available from:
http://www.ksl.stanford.edu/people/dlm/papers/ontology-tutorial-noy-mcguinness.pdf

(3) What is protégé?: http://protege.stanford.edu/overview/index.html

(4) W3C,(2004)OWL Web Ontology Language Guide: http://www.w3.org/TR/owl-guide/

(5) Protégé Glossary:
http://protegewiki.stanford.edu/wiki/Pr4_UG_mi_Glossary#FaCT.2B.2B

(6) Matthew Horridge, (2011) A Practical Guide To Building OWL Ontologies
Using Protege 4 and CO-ODE Tools [online] Manchester, Available from:
http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/resources/ProtegeOWLTutorialP4_v1_1.pdf

OWL本体语言和Protege本体编辑器的更多相关文章

  1. CHENGDU1-Python编程语言和PEP8规范

    CHENGDU1-Python编程语言和PEP8规范 PEP8规范6条? 答:PEP8规范说白了就是一种规范,可以遵守,也可以不遵守,遵守PEP8可以让代码的可读性更高. 代码编排:---缩进,4个空 ...

  2. C语言和C++中动态申请内存

      在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h>  ...

  3. C语言和C++篇

    C语言和C++篇 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的.想想我们至今的代码,到底生成和使用了多少String!标题上所罗列的语言,可以看成 ...

  4. c语言和java的区别

    今晚读了一下c程序设计语言,这是一本经典书籍,发现C语言和java有很多是相同的,毕竟java是由c语言进化来的. 我大概从我自己的思考来谈谈不同点 1.c语言是面向过程,主要单位是函数,变量和函数的 ...

  5. 从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇

    转自: http://www.cnblogs.com/wenjiang/p/3266305.html 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的 ...

  6. 大数据工具比较:R 语言和 Spark 谁更胜一筹?

    本文有两重目的,一是在性能方面快速对比下R语言和Spark,二是想向大家介绍下Spark的机器学习库 背景介绍 由于R语言本身是单线程的,所以可能从性能方面对比Spark和R并不是很明智的做法.即使这 ...

  7. Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

    Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较 1.首先写一个Go语言的简单WEB程序,就返回一个HelloWord! package main import ( f " ...

  8. c语言和java以及安卓和苹果

    苹果手机是本地,没有中间环节,速度快,基于Linux系统 安卓是通过虚拟机,影响速度 就像c语言和java c适用于架构小的地方,因为直接编译运行 而java用于架构比较大的地方,启动慢,启动之后效率 ...

  9. C语言和sh脚本的杂交代码

    在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示.在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了. #if 0 echo "He ...

随机推荐

  1. git解决本地建立git仓库 连接远程git仓库出现拒绝合并问题

    (git解决本地建立git仓库 连接远程git仓库出现拒绝合并问题) 第一步在本地创建仓库 在本地创建一个文件夹,cd 进入创建的文件夹之后 git init 创建仓库 ,ls -a 能够看到 .gi ...

  2. WPF 设置帧率

    开始仔细学习WPF了 说是动画不流畅,可以通过设置帧率解决,查了很多,都说设置Timeline.DesiredFrameRateProperty, 但都没说加到哪里,在代码很多地方加上了,统统无效.最 ...

  3. day62 作业

    熟练使用无名有名分组 urls.py url(r'^edit/(\d+)/',views.edit_user,name='edit'), views.py def edit_user(request, ...

  4. C/C++中的 if(指针变量) 和 if(!指针变量)

    目录 if(指针变量) 代码演示 if(指针变量) 解读代码 if(!指针变量) 解读代码 总结 替代方案.推荐写法!!!!! if(指针变量) 当把一个指针作为条件表达式时,所要判断的条件实际上就是 ...

  5. P4554 小明的游戏 (洛谷) 双端队列BFS

    最近没有更新博客,全是因为英语,英语太难了QWQ 洛谷春令营的作业我也不会(我是弱鸡),随机跳了2个题,难度不高,还是讲讲吧,学学新算法也好(可以拿来水博客) 第一题就是这个小明的游戏 小明最近喜欢玩 ...

  6. 【Docker】Redis 安装使用教程

    1.安装 1.1 拉取镜像 docker pull redis redis:4.0 1.2 创建redis容器名"redistest1",并开启持久化 docker run -d ...

  7. Java对象创建模式

    创建Java对象时,对于可为空的属性,创建对象的时候有3种模式:重叠构造器模式.JavaBeans模式.Builder模式(推荐).Stream模式(推荐).                     ...

  8. 大厂0距离:网易 Linux 运维工程师面试真题,内含答案

    作为 Linux 运维工程师,进入大公司是开启职业新起点的关键,今天马哥 linux 运维及云计算智囊团的小伙伴特别分享了其在网易面试 Linux 运维及云计算工程师的题目和经历,希望对广大 Linu ...

  9. Oracle忘记用户名和密码以及管理员用户新增修改删除用户

    Oracle忘记密码: 1.以管理员身份登录,打开dos窗口,输入 sqlplus / as sysdba 回车 2.查看当前用户和状态 select username, account_status ...

  10. github 新功能 profile README.md

    引 自从github被微软收购后,每天都会有一些新花样,ui变化,界面变化,更多的功能,相信这个它会越来越好,程序员越来越喜欢.今天浏览大佬的github 无意中发现了 github profile ...