知识图谱学习与实践(4)——Protégé使用入门
1 Protégé简介
Protégé是一个本体建模工具软件,由斯坦福大学基于java语言开发的,属于开放源代码软件。软件主要用于语义网中本体的构建和基于本体的知识应用,是本体构建的核心开发工具,最新版本为5.5.0(截至2019年7月)。
Protégé支持中文,能够实现实体关系的中文展示。如下图。

具体来说,Protégé具有以下功能。
类建模。Protégé提供了一个图形化用户界面来建模类(包括概念)和它们的属性以及关系。
实例编辑。根据创建的类型,Protégé会自动产生交互的形式,可以根据类之间的关系获得相应实例的约束,并对实例进行编辑。
模型处理。Protégé有一些插件库,可以定义语义、解答询问以及定义逻辑行为。
模型交换。最终的模型(类、实例、关系、属性等)能以各种各样的格式被保存和加载,包括XML、UML、RDF、OWL等。
2 Protégé的安装
软件到官网https://protege.stanford.edu/products.php直接下载,我们使用的是5.5.0版本,下载后是名为Protege-5.5.0-win.zip的压缩文件,解压缩后,得到以下文件。

直接运行Protege.exe即可。
Protégé是由java开发的,运行时需要java运行时环境,运行时可能需要配置一下java的运行时环境,按照提示进行配置就可以了。
3 软件主要工作tab
打开软件后,可以看到工作区域是由很多tab组成。

Active ontology是显示当前的实体名称,以URI的形式显示,前面是www.semanticweb.org后面跟着主机名(我的主机名称为dell),再后面是默认的根据时间命名实体。
Entities,可以看作是实体的总览,能够看到我们创建实体的一些主要信息,是对实体信息的汇总。
Classes,是对本体模型中,类型部分的编辑,能够定义类之间的层次关系,相互之间的关系。
Object properties,物体关系,可以理解为编辑实体外部的关系,也就是实体和实体之间的关系。
Data properties,数据属性,可以理解为编辑实体内部的属性,用来定义实体本身所具有的属性以及属性值。
Annotation Properties,标注属性,是w3c定义的一些常用的属性,根据URI可以看到这些属性的具体说明。
Individuals by class,根据类型创建的实例,用来编辑实例信息,类似于java程序中的对象,要归于某个类别。
OntoGraf,本体关系图,用来展示我们创建的本体里面各个实体之间的层次关系。
SPARQL Query,SPARQL查询,使用SPARQL语言,对创建的本体进行查询,获取查询结果。
4 创建一个本体实例
4.1 创建本体
软件打开后,就像大多数软件一样,利用file-new来创建一个本体,Protégé会自己根据默认规则为本体起一个名称,比如我创建的本体名称为:http://www.semanticweb.org/dell/ontologies/2019/6/untitled-ontology-35,然后我们就可以编辑这个本体了。
4.2 建立模型层的数据
本体分为模型层和数据层,模型层主要定义类和类之间的关系。Thing是所有类型的根节点,也就是基类,所有的类型都是从Thing派生出来的,我们建立如图的类型层次结构。

在Classes这个tab页面下,可以看到红色方框标出来的是Add subclass,一个是工具栏直接增加子类,一个是通过右键选择增加子类,比如我们将鼠标点击owl:Thing之后,然后增加子类人物、势力、工具。然后再点击人物,再增加子类文官、武将和皇族,同样操作,增加工具的子类,武器和马匹。
还可以定义类之间的一些约束关系,比如人物和工具是互斥的,选择人物后,在右下方,Disjoint with关系选择工具。表示了人物和工具的互斥关系,这时候,我们点击工具,就会发现,Disjoint with已经自动添加了人物这个类。
4.3 创建实体关系
创建实体之间的关系,在Object Properties这个tab页面。

编辑方法和添加类型的tab页面类似,最顶层的实体关系为owl:topObjectProperty,选择后,点击工具栏的按钮或者右键选择add sub-properties,添加使用、属于和骑三个关系。对于“使用”这个关系,Domains选择人物,Ranges选择武器,代表三元组中主语是人物,谓语是使用,宾语是武器,组成的三元组就是人使用武器。“属于”这个关系,Domains和Ranges分别为人物和势力,“骑”这个关系的Domains和Ranges分别为人物和马匹。
4.4 创建实体属性
创建实体的属性,在Data properties这个tab页面。

三国里面的人物,人名都有一个字,比如一般都说,关羽关云长。关羽就是他的名字,云长是他的字。名字用于自称,字都是别人喊得,表示尊重。
添加属性“字”后,Domains我们选择人物,Ranges选自如图,在Built in datatypes中选择xsd:string,表示“字”的属性值类型是个字符串。
4.5 创建实例
创建本体的实例,在Individuals by class这个tab页面。

在Individuals里面,创建关羽、刘备、诸葛亮、蜀、赤兔马、青龙偃月刀等实例。然后分别编辑这些实例。此处以关羽为例说明对实例的编辑。
首先是确定实例的类型,关羽的类型,选择武将。然后增加实体的关系,骑赤兔马,属于蜀,使用青龙偃月刀等三个关系。最后增加数据属性,字为云长。
这样就确定了关羽这个实例的类型、关系和属性,从而编辑完成关羽这个实例。同样方法,编辑其它实例的类型、关系和属性,如果某项内容空缺,可以不编辑。
4.6 本体关系展示
对于本体的关系信息展示,在OntoGrap这个tab页面。

双击左侧的owl:Thing,在右侧区域会显示本体信息,将展示的信息中,有加号的都双击展开,就会看到整个本体的关系图。红色方框中,是以不同的方式展示关系图,依次是按字母网格展示,径向展示,弹簧展示,垂直树状展示,水平树状展示,垂直方向展示,水平方向展示等。如果将鼠标放到某个信息节点,就会显示该信息节点的详细信息。本例中显示的是“关羽”这个信息点的详细信息。
5 结语
介绍了Protégé的基础知识,并通过一个具体的本体创建过程,将软件的使用做了说明。Protégé作为一个强大的本体编辑工具,还有很多功能,比如推理能力,希望通过介绍,大家能够对Protégé进行简单的操作,并通过不断地实践和练习,能够更深入的理解和使用Protégé。
知识图谱学习与实践(4)——Protégé使用入门的更多相关文章
- 知识图谱学习与实践(4)——通过例句介绍Sparql的使用
通过例句介绍Sparql的使用 1 简介 SPARQL的定义,是一个递归的定义,为SPARQL Protocal and RDF Query Language,是W3C制定的RDF知识图谱标准查询语言 ...
- 知识图谱学习与实践(6)——从结构化数据进行知识抽取(D2RQ介绍)
1 概述 D2RQ,含义是把关系型数据库当作虚拟的RDF图数据库进行访问.D2RQ平台是一个将关系型数据库当作虚拟的.只读的RDF图数据库进行访问的系统.提供了基于RDF访问关系数据库的内容,而无需复 ...
- 知识图谱推理与实践 (2) -- 基于jena实现规则推理
本章,介绍 基于jena的规则引擎实现推理,并通过两个例子介绍如何coding实现. 规则引擎概述 jena包含了一个通用的规则推理机,可以在RDFS和OWL推理机使用,也可以单独使用. 推理机支持在 ...
- 知识图谱推理与实践(3) -- jena自定义builtin
在第2篇里,介绍了jena的The general purpose rule engine(通用规则引擎)及其使用,本篇继续探究,如何自定义builtin. builtin介绍 先回顾builtin为 ...
- Atitit learn by need 需要的时候学与预先学习知识图谱路线图
Atitit learn by need 需要的时候学与预先学习知识图谱路线图 1. 体系化是什么 架构 知识图谱路线图思维导图的重要性11.1. 体系就是架构21.2. 只见树木不见森林21.3. ...
- 如何系统学习知识图谱-15年+IT老兵的经验分享
一.前言 就IT而言,胖子哥算是老兵,可以去猝死的年纪,按照IT江湖猿龄的规矩,也算是到了耳顺之年:而就人工智能而言,胖子哥还是新人,很老的新人,深度学习.语音识别.人脸识别,知识图谱,逐个的学习了一 ...
- 知识图谱与机器学习 | KG入门 -- Part1-b 图深度学习
介绍 我们正在定义一种新的机器学习方法,专注于一种新的范式 -- Data Fabric. 在上一篇文章中,我们对机器学习给出了新的定义: 机器学习是一种自动发现Data Fabric中隐藏的&quo ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用
4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...
- 学习笔记之知识图谱 (Knowledge Graph)
Knowledge Graph - Wikipedia https://en.wikipedia.org/wiki/Knowledge_Graph The Knowledge Graph is a k ...
随机推荐
- 用composer安装php代码(以安装phpmailer为例)
1.安装composer.exe软件 2.下载composer.phar 3.创建composer.json文件 { "require": { "php": & ...
- 手动实现一个 IOC/DI 容器
第一章为源码解析. 第二章为实现一个简单的 IOC 容器. 第三章进阶 Spring 插件开发. 手动实现一个 IOC/DI 容器 上一篇文章里我们已经对 Spring 的源码有了一个大概的认识,对于 ...
- c/c++基础内容回顾
1.1基本数据类型 1.1.1 变量的定义 变量类型 变量名 变量类型 变量名=初值: 注意:不能以C语言标识符作为变量名,变量名的第一个字符必须是字母或者下划线,其它位置字符必须是字母.数字.下划线 ...
- nginx反向代理中神奇的斜线
nginx反向代理中神奇的斜线 在进行nginx反向代理配置的时候,location和proxy_pass中的斜线会造成各种困扰,有时候多一个或少一个斜线,就会造成完全不同的结果,所以特地将locat ...
- GIT \ SVN 版本管理 git + gitHub
场景1 想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件"另存为--"一个新的Word文件,再接着改,改到一定程度,再"另存为--"一个新 ...
- MySQL之基础操作
一.安装 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数 ...
- Jmh测试JDK,CGLIB,JAVASSIST动态代理方式的性能
前言 JDK,CGLIB,JAVASSIST是常用的动态代理方式. JDK动态代理仅能对具有接口的类进行代理. CGLIB动态代理方式的目标类可以没有接口. Javassist是一个开源的分析.编辑和 ...
- TCP中的粘包问题,以及用TCP和UDP实现多次聊天
TCP协议 在连接内多和客户端说几句 #server端 import socket sk = socket.socket() sk.bind(('127.0.0.1',9001)) sk.listen ...
- C++11/14笔记
目录 语言层面 模板表达式中的空格 nullptr和std::nullptr_t 自动推导类型----auto 一致性初始化----Uniform Initialization 初始化列表(initi ...
- flink dataset api使用及原理
随着大数据技术在各行各业的广泛应用,要求能对海量数据进行实时处理的需求越来越多,同时数据处理的业务逻辑也越来越复杂,传统的批处理方式和早期的流式处理框架也越来越难以在延迟性.吞吐量.容错能力以及使用便 ...