赞
踩
Protégé软件是斯坦福大学医学院生物信息研究中心基于Java语言开发的本体编辑和知识获取软件,或者说是本体开发工具,也是基于知识的编辑器,属于开放源代码软件。这个软件主要用于语义网中本体的构建,是语义网中本体构建的核心开发工具,
在构建本体的过程中,可能需要从处理好的文本处大批量的导入本体,类、关系、属性都可以这么做,比如类可以直接通过add subclasses复制进去,然后用换行隔开即可。但是一般本体中内容最多的实例(Individuals)居然没有从文本批量导入的按钮,add individuals点一下只能新增一个实例。数量多了很不方便,故想办法用代码将实例直接添加到本体源文件中去。
我们先新建一个实例test,不加其他任何关系和属性。
保存本体,在保存的路径找到源文件,右键编辑或用记事本打开。
搜索刚刚创建的test,找到其位置。
可以看到有个individuals有个类似“类文件头”的格式,增加的实例要放在这个类文件头下面,不然不符合格式会报错。
下面就可以看到test实例的源码了,由于创建时没有添加任何属性,因此这里只需要编辑“test”这个实例名即可,想要导入其他属性可以同理按格式修改。
首先将要导入的数据放在input.txt的方式保存,不同的实例用换行区分。
代码如下(示例):
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}。
生成数据会存在output.txt中,复制并粘贴到本体的源文件中即可,注意要放在前面说的实例的类格式头下面的区域。
打开protege,reload一下就可以了
效果如下:
这时已成功导入。接下来就可以在protege中自由编辑了。
代码原理很简单,适合在已设计好实例,需要用protege编辑或展示时快速导入。
如果需要导入实例的类或者关系,同理新建一个修改模板即可,代码根据输入稍作修改即可。
正规的修改方法应该用OWL API实现,不过就随便加加懒得用API了。不知道为什么protege不搞这个功能,可能在别的功能实现我没找到?有知道的可以告诉我。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。