使用Python中的Hermit推理程序进行本体检查的一致性

时间:2018-07-03 06:06:19

标签: python ontology reasoner owlready

我正在为python使用owlready2 api来加载一个本体,并使用 sync_reasoner()函数检查该本体的一致性。但是似乎没有在检查本体的一致性。尽管有错误,但什么也没有显示!知道如何使用owlready2或任何其他API在python中检查本体的一致性。

这是我的小代码:

from owlready2 import *
onto = get_ontology("test.owl")
sync_reasoner()

这是我得到的输出:

  • Owlready2 *正在运行HermiT ... java -Xmx2000M -cp C:\ Users \ 44999038 \ AppData \ Local \ Programs \ Python \ Python36-32 \ lib \ site-packages \ owlready2 \ hermit; C:\ Users \ 44999038 \ AppData \ Local \ Programs \ Python \ Python36 -32 \ lib \ site-packages \ owlready2 \ hermit \ HermiT.jar org.semanticweb.HermiT.cli.CommandLine -c -O -D -I file:/// C:/ Users / 44999038 / AppData / Local / Temp / tmptmcc_a79
  • Owlready2 * HermiT花了0.48622655868530273秒

本体: enter image description here

我修改的代码:

from owlready2 import *

onto = get_ontology("test.owl")
with onto:sync_reasoner()
onto.save()

我得到的输出猫头鹰文件:

enter image description here

2 个答案:

答案 0 :(得分:1)

您显示的输出仅是从命令行调用HermiT推理程序的OWLReady的输出。因此,“输出”为何相同的原因无关紧要。

您需要的是分类后的推断结果。根据{{​​3}},您可以将推断直接指向文件,或从类中获取结果,如documentation所示。

不明显的是如何确定本体是否不一致。我能找到的最好的情况是,您需要搜索推理结果,如果可以找到与owl:Nothing等效的类,则您的本体是不一致的。

答案 1 :(得分:1)

基本上我错过了两个重要的事情。

  1. 我已经放上了.save()而不是放在了.save(“ test_t1.owl” )上。虽然可以只放到.save()上,但放到.save(“ test_t1.owl” )上可以将输出保存到其他文件中。

  2. 在提及源本体时,我缺少了 load()函数 到= get_ontology(“文件路径”)。 load() 该文件路径可以是URL,例如“ https://protege.stanford.edu/ontologies/pizza/pizza.owl”或本地目录路径“ C:\ User \ Desktop \ test.owl”

我的工作代码如下:

from owlready2 import *
import owlready2

#owlready2.JAVE_EXE="C:\\Program Files\\Java\\jdk1.8.0_144\\bin\\java.exe"
onto_path.append("C:\\User\\Desktop")
onto = get_ontology("test.owl").load()
#inferred_onto = get_ontology("http://test.org/my_inferrences.owl";)
with onto: sync_reasoner()
onto.save("test_t1.owl")

Output file