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

本体编辑、知识推理与检索本体编辑、知识推理与检索一切要从一个倒霉项目开始说起,项目要求根据一个构建好的本体文件,通过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啦写完啦!
以上。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • idea代码颜色搭配方案_idea设置注释颜色

    idea代码颜色搭配方案_idea设置注释颜色Github开发的Atom编辑器相信大家都已经用过了。经过这两年的迭代开发,内存占用,启动慢,卡顿很多大坑都已经填上。目前他已经是我写shell/bat/js的主力,当前除了插件安装比较麻烦(需要梯子,或者github+npminstall)我最满意的一点就是Atom的配色方案。他的OneDark配色方案是我见过的最赞的方案之一。深沉的背景/天蓝色的函数/浅灰色的注释/粉色关键字/红色的变量/

  • win2008安装mysql8.0「建议收藏」

    win2008安装mysql8.0「建议收藏」mysql升级到8.0还是有一些变动,先说一下变动的地方有有些:不能直接修改root的权限了,需要新建用户然后再设置用户的权限;更改了密码的加密方式,mysql8之前是使用的mysql_native_password规则,mysql8是使用的caching_sha2_password规则安装mysql8时win2008需要安装MicrosoftVisualC++2015补丁需要自…

  • C++学习之路——函数重载和运算符重载

    C++学习之路——函数重载和运算符重载一、函数重载C++允许在同一作用域中的某个函数和运算符指定多个定义,分 别称为函数重载和运算符重载重载声明是指一个与之前已经在该作用域内声明过的函数或方法 具有相同名称的声明,但是它们的参数列表和实现不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++中的函数重…

  • css图片居中的几种方法_html上下居中代码

    css图片居中的几种方法_html上下居中代码在进行网页布局的时候,有时候图片的位置可能会影响整个页面的美观程度,所以对于图片的放置位置就得变化,那么,接下来的这篇文章将给大家来介绍关于图片在网页中如何使用css实现居中的方法,对于有需要的朋友来说可以做个参考。css图片居中分css图片水平居中和垂直居中两种情况,那么下面我们就来分别看一看这些图片居中的实现方法。一、首先,我们来看看css图片水平居中的方法1、利用margin:0auto实现图片水平居中<divstyle=”text-align:center;width:50

    2022年10月28日
  • 多路复用_java多路复用

    多路复用_java多路复用1、说明socket编程的demo中使用的都是最基本的,但是一般不会真正用在项目中的代码。而实际项目中,需要面临复杂多变的需求环境,比如有多个socket连接,或者服务需要监听的时候,可能有很多so

  • Pycharm 恢复到默认设置

    Pycharm 恢复到默认设置有时候我们想将软件的主题配色、插件等配置初始化,可是会发现卸载并重新安装Pycharm后,软件会默认使用卸载前的个性化设置。解决方案如下:点击Pycharm的“文件”菜单,里面有一个“管理IDE设置”的选项,然后点击“恢复默认设置”。……

发表回复

您的电子邮箱地址不会被公开。

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