本体编辑、知识推理与检索

本体编辑、知识推理与检索本体编辑、知识推理与检索一切要从一个倒霉项目开始说起,项目要求根据一个构建好的本体文件,通过JAVA调用相应API实现对本体文件的编辑、推理以及检索。由于之前对本体、知识图谱这些完全不熟悉,被强行推入坑之后就开始了漫长且毫无希望的技(疯)术(狂)调(百)研(度)之路。。。。调研之前:这是啥呀?调研之后:这tm都是些啥啊!!呼~~好在最后算是做出来了,故在此记录一下过程及部分主要代码。1…

大家好,又见面了,我是你们的朋友全栈君。

本体编辑、知识推理与检索

一切要从一个倒霉项目开始说起,项目要求根据一个构建好的本体文件,通过JAVA调用相应API实现对本体文件的编辑、推理以及检索。由于之前对本体、知识图谱这些完全不熟悉,被强行推入坑之后就开始了漫长且毫无希望的技(疯)术(狂)调(百)研(度)之路。。。。

调研之前:这是啥呀?
调研之后:这***都是些啥啊!!
呼~~ 好在最后算是做出来了,故在此记录一下过程及部分主要代码。

1.环境相关

我的:
Java:
在这里插入图片描述
Eclipse:
在这里插入图片描述
Protege: Protege-5.2.0

2.项目整体逻辑

如图:
在这里插入图片描述

3.用本体编辑工具protege构建基础本体文件

Protege是一个本体编辑工具,可以将知识的三元组以及各种逻辑通过可视化界面编辑成本体文件,protege还带有一些推理机插件(见下图),pellet、Hermit等,可以利用这些插件对本体文件进行推理。也可以通过SWRL自定义一些规则加入本体,还可以进行查询。可见Protege能一条龙解决本体的编辑、推理、查询等问题,但本项目要求用Java调API实现功能。编辑、推理和检索都是在构建好的基础本体文件上进行的,该本体文件就是用protege构建的。
在这里插入图片描述

Protege构建本体时,主要用到的有‘Classes(类)’;‘Individuals(实例)’;‘Object properties(对象属性)’;‘Data properties(数据属性)’这四个概念。

(1) 在定义本体的各个类时,可以为其添加各种描述,比如它的等价类(Equivalent To),它是谁的子类(SubClass Of),它与哪一类互斥(Disjoint Union Of),它下面有哪些Individuals(Instances)等等。

在这里插入图片描述

(2) Individuals(实例)是类下面的具体个体,比如下图Country类下面的individual有Ametica等。在定义individual时,可以为其添加描述及属性声明,属性声明中包括对象属性数据属性等。
在这里插入图片描述

(3) Object properties(对象属性)和Data properties(数据属性),我理解为“谓语”,用于连接主语(class/individual)和宾语(class/individual/value)。Object properties(对象属性)所连接的宾语是class或individual,Data properties(数据属性)所连接的宾语是具体的value。举例见下图:chenjianer这个人是类Expert下面的一个individual,ta是一名专家,右侧带有蓝色标志的部分是其对象属性声明,mother_language_is、people_is 这些就是对象属性,后面连接的宾语english、Chinese 啥的仍然是个individual。右侧带有绿色标志的部分是其数据属性声明,birthday、ID_card 这些就是数据属性,后面连接的宾语”2008-03-23”、”4216633322656”等是具体的值。
在这里插入图片描述
对象属性和数据属性也可定义其自身的Description,其中包括Domains、Ranges,关于属性的定义域和值域,我的理解是,在使用该属性时所连接的主语的范围即为定义域,宾语的范围就是值域。

4. 初始化本体文件

通过protege构建好的本体文件保存为一个owl文件,接下来要对其进行编辑推理检索,这些工作通过调用OWLAPI和Jena API实现。首先读入owl文件。

在这里插入图片描述

5.编辑本体文件

将知识或数据写入本体,例子如下。这段代码实现了在本体文件中新建了一个‘天线宝宝’的类,在这个类下面新建了一个名为‘天线宝宝1号’的实例,同时新建数据属性‘name’,并为天线宝宝1号这个实例添加数据属性声明name=Alice。

在这里插入图片描述

6.pellet推理机推理

在这里插入图片描述

7.推理结果检索

检索这里用的方法是使用jena执行sparql进行查询。下面这个例子是在上一步得到的推理结果中检索是天线宝宝1号叫啥名,并把查询结果在控制台显示出来。

在这里插入图片描述

8.其他

另外,在整个工程中引用了别的库,在引用外部jar的时候把该引的都引了,主要用到的有owl api、pellet、Jena这几个。可能还会报一些jar包冲突或者某个包找不到的错误,那就按照错误提示,冲突就移除相应的包,找不到就去找(废话),我的意思是如果提示某个包没有就去找到它下下来然后再载入。反正在载入外部jar这一趴,我真的是花了好多时间碰壁碰到自闭(哭泣)。

9.参考

经过疯狂百度之后发现这方面的资料真的不是很多,下面两个网址是我主要参考的资料。在此十分感谢链接(1)的博主Kujou,看他的博客受到很大启发并且十分感谢他耐心答疑解惑(抱拳了兄弟)。
(1)https://blog.csdn.net/BUPTOctopus/article/details/81562114
(2)http://dior.ics.muni.cz/~makub/owl/
另外特别感谢当初与我共同入坑在项目完成过程中同我并肩作战并在后期凭借自身努力顺利出坑且一路小跑绝尘而去的 我的优秀的小伙伴 螺!(假装@螺 哈哈哈)

10.

没有10啦写完啦!
以上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145884.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js获取时间进行比较

    js获取时间进行比较现象 js 中获取时候进行比较方法 js 获取时间 昨天的时间 varday1 newDate day1 setTime day1 getTime 24 60 60 1000 vars1 day1 getFullYear day1 getMonth 1 day1 getDate 今天的时间 varday2 new

    2025年9月22日
    2
  • LDC1101 LDC1314 LDC1614 1612 线圈感应测试(PCB+源码)

    LDC1101 LDC1314 LDC1614 1612 线圈感应测试(PCB+源码)LDC1101LDC1314LDC16141612线圈感应测试(PCB+源码)www.cirmall.com/circuit/11579

    2022年6月7日
    30
  • linux安装pycharm全部过程「建议收藏」

    linux安装pycharm全部过程「建议收藏」一,安装文件传到虚拟机里在安装包目录下打开管理员小黑窗(安装包我会放在分享里,可以免费下载)scppycharm-community-2018.2.4.tarayh@192.168.66.130注:scp传输文件//pycharm-community-2018.2.4.tar文件名ayh为虚拟机名字//192.168.66.13…

    2022年10月19日
    4
  • 屏幕尺寸、分辨率、像素密度及其三者之间的关系[通俗易懂]

    屏幕尺寸、分辨率、像素密度及其三者之间的关系[通俗易懂]屏幕尺寸屏幕对角线的长度单位英寸,1英寸等于2.54厘米分辨率横纵向方向像素的大小纵向像素*横向像素,如1920px*1080px单位像素(px)像素密度指每英寸屏幕所拥有的像素的数量单位dpi三者关系像素密度=Sqrt(横向像素*横向像素+纵向像素*纵向像素)/屏幕尺寸注意:像素大小并不是固定的,不同的设备像素的大小可能不相同

    2022年5月30日
    59
  • SVN服务器搭建和使用(一)[通俗易懂]

    SVN服务器搭建和使用(一)[通俗易懂]一、什么是SVNSVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。二、SVN的下载安装下载地址:http

    2022年7月3日
    24
  • 电脑DVD光驱变成CD光驱的解决方法

    电脑DVD光驱变成CD光驱的解决方法相信很多朋友都遇到过这个问题:电脑的DVD光驱盘符突然变成CD光驱,然而DVD数据光盘可以正常读取的问题。设备管理器里显示的也是DVD,但我的电脑里就是显示CD驱动器。虽然能正常使用,但看着总是不爽吧。我也遇到过几次,到网上查了查都说了一堆废话,没一个能解决问题的,于是自己研究了下,其实很简单啦。以前优化系统的时候总是会优化一下服务,把不用的都关了,让它不自动启动,其实就是这个服务的问题。    

    2022年5月2日
    740

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号