本体(Ontology)通过对于概念(Concept)、术语(Terminology)及其相互关系(Relation, Property)的 规范化(Conceptualization)描述,勾画出某一领域的基本知识体系和描述语言。本文旨在利用protege工具构建特定领域的本体框架并实现对领域知识的描述和初步推理,从而完成对领域知识图谱模式层的构建。
一、protege简介
- protege的用途:
- 类模拟(Class modeling):protégé提供了一个图形化用户界面来模拟类(领域概念)和它们的属性 及关系。
- 实例编辑(Instance editing):从这些类中,protégé自动产生交互式的形式,全用户或领域专家进 入的有效实例成为可能。
- 模型处理(Model processing):protégé有一个插件库,可以定义语义、解答询问以及定义逻辑行为。
- 模型交换(Model exchange):最终的模型(类和实例)能以各种各样的格式被装载和保存,包括 XML、UML和资源描述框架RDF。
-
protege使用Manchester syntax作为推理语言
-
操作界面
Active ontology是显示当前的实体名称,以IRI的形式显示,前面是www.semanticweb.org,后面跟着主机名,再后面是默认的根据时间命名实体,可以修改。
Entities,可以看作是实体的总览,能够看到我们创建实体的一些主要信息,是对实体信息的汇总。
Classes,是对本体模型中,类型部分的编辑,能够定义类之间的层次关系,相互之间的关系。
Object properties,对象属性,可以理解为编辑实体外部的关系,也就是实体和实体之间的关系。
Data properties,数据属性,可以理解为编辑实体内部的属性,用来定义实体本身所具有的属性以及属性值。
Annotation Properties,标注属性,是w3c定义的一些常用的属性,根据URI可以看到这些属性的具体说明。
Individuals by class,根据类型创建的实例,用来编辑实例信息,类似于java程序中的对象,要归于某个类别。
OntoGraf,本体关系图,用来展示我们创建的本体里面各个实体之间的层次关系。
SPARQL Query,SPARQL查询,使用SPARQL语言,对创建的本体进行查询,获取查询结果。
二、protege建模实例
实例一:Game本体建模
step1 :IRI命名
step2:创建类(class)
方式一:右键Add Subclasses逐条添加
方式二:选中“Tools”中Create Class Hierarchy批量添加
类的构建初始化完成后,以“chess”为例,点击右侧“usage”,可以看到一些已定义的公理
step3:创建关系
- 创建对象属性(object property)
- 创建数据属性(data property)
step4:增加属性描述
- Equivalent to:同等数据关联
- SubPropertyOf:从属关联
- Domains:该属性(关系)的主语;施事者
- Ranges:该属性(关系)的宾语;受试者
- DisjointWith:互斥关联;两个属性没有交集,指同一个类不能同时拥有这两个属性
- Super PropertyOf:父关联
- Inverse properties:逆关联
step5(非必须)勾选特性
属性描述所呈现出的逻辑描述一般被认为是公理,而对于特性的选择则可视为是对推理机制的一种验证。
Functional:函数性,标注该特性说明对象属性只能连接一个个体。
Inverse functional:逆函数性,对于一个给定的个体,最多只有一个个体能通过该属性连接那个个体
Transitive:传递性
Symmetric:对称性,两个个体对称不能具有函数性和逆函数性
Asymmetric:不对称性
Reflexive:自反性,自己和自己相关联
Irreflexive:反自反性
step6 :添加自定义规则
规则一:chess可以安装在任何系统上
【逻辑描述】
规则二:创建一个Game的子类为“多人游戏类”,规定凡是Genre为MutiPlayer的,都是“多人游戏类”
step7:可视化
step8:保存
可以保存为XML/RDF格式或turtle格式等。下图展示了另存为turtle格式后的代码文件
step9:使用推理机推理
使用 OWL-DL 描述的本体的一大特点是其可以通过推理机进行处理。推理机的功能主要有两个:
推理类的层级结构(一个类是否为另一个类的子类)
测试一个类的稳定性(是否可能存在实例)
在 protege 中的菜单中选择推理机,执行推理。推理机会给出推理的层级结构,并标红不稳定的类:
实例二:Movie本体建模
step1 创建类
step2:创建属性
对象属性:
数据属性:
step3:添加实例
step4:可视化
step5:文件保存