【本体】protege本体批量导入实例(Individuals)


前言

Protégé软件是斯坦福大学医学院生物信息研究中心基于Java语言开发的本体编辑和知识获取软件,或者说是本体开发工具,也是基于知识的编辑器,属于开放源代码软件。这个软件主要用于语义网中本体的构建,是语义网中本体构建的核心开发工具,

在构建本体的过程中,可能需要从处理好的文本处大批量的导入本体,类、关系、属性都可以这么做,比如类可以直接通过add subclasses复制进去,然后用换行隔开即可。但是一般本体中内容最多的实例(Individuals)居然没有从文本批量导入的按钮,add individuals点一下只能新增一个实例。数量多了很不方便,故想办法用代码将实例直接添加到本体源文件中去。

一、本体源文件实例结构

我们先新建一个实例test,不加其他任何关系和属性。
在这里插入图片描述
保存本体,在保存的路径找到源文件,右键编辑或用记事本打开。
搜索刚刚创建的test,找到其位置。
在这里插入图片描述
可以看到有个individuals有个类似“类文件头”的格式,增加的实例要放在这个类文件头下面,不然不符合格式会报错。
在这里插入图片描述
下面就可以看到test实例的源码了,由于创建时没有添加任何属性,因此这里只需要编辑“test”这个实例名即可,想要导入其他属性可以同理按格式修改。

二、代码生成

1.准备输入数据

首先将要导入的数据放在input.txt的方式保存,不同的实例用换行区分。
在这里插入图片描述

2.生成

代码如下(示例):

with open('input.txt', 'r',encoding='utf-8') as file:
    lines = file.readlines()
    for line in lines:
        line = line.strip()
        text_to_append = f'    <!-- http://www.semanticweb.org/wow/ontologies/2023/2/untitled-ontology-2#{line} --><owl:NamedIndividual rdf:about="http://www.semanticweb.org/wow/ontologies/2023/2/untitled-ontology-2#{line}"/>\n'
        with open('output.txt', 'a') as file:
            file.write(text_to_append)

注意:这里text_to_append需要将格式改为自己的本体url,建议直接复制自己源文件中test的格式,然后将两处test替换为{line}。

3.导入

生成数据会存在output.txt中,复制并粘贴到本体的源文件中即可,注意要放在前面说的实例的类格式头下面的区域。
在这里插入图片描述
打开protege,reload一下就可以了
在这里插入图片描述
效果如下:
在这里插入图片描述
这时已成功导入。接下来就可以在protege中自由编辑了。


总结

代码原理很简单,适合在已设计好实例,需要用protege编辑或展示时快速导入。
如果需要导入实例的类或者关系,同理新建一个修改模板即可,代码根据输入稍作修改即可。
正规的修改方法应该用OWL API实现,不过就随便加加懒得用API了。不知道为什么protege不搞这个功能,可能在别的功能实现我没找到?有知道的可以告诉我。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值