0

我正在使用 owlready2 api for python 加载本体并使用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 秒

本体: 在此处输入图像描述

我修改后的代码:

from owlready2 import *

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

我得到的输出 owl 文件:

在此处输入图像描述

4

2 回答 2

1

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

  1. 我放了 on.save() 而不是 on.save( "test_t1.owl" )。虽然可以只放 on.save() 但 on.save( "test_t1.owl" ) 将输出保存在不同的文件中。

  2. 在提到源本体到 = get_ontology("file path") 时,我错过了load()函数。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")

输出文件

于 2018-07-05T01:46:04.873 回答
1

您显示的输出仅仅是 OWLReady 从命令行调用 HermiT 推理器的输出。因此,“输出”的原因是相同的。

你需要的是分类后的推理结果。根据文档,您可以将推论定向到文件,或从您的类中获取结果,如本示例所示。

不明显的是如何判断本体是否不一致。我能找到的最好的方法是你需要搜索推理结果,如果你能找到一个等价于 的类,那么owl:Nothing你的本体是不一致的。

于 2018-07-03T08:56:03.167 回答