在 Python 中使用 Hermit 推理器对 Ontology 进行一致性检查

Consistency checking using Hermit reasoner in Python for an Ontology

我正在为 python 使用 owlready2 api 加载 Ontology 并使用 检查 ontology 的一致性sync_reasoner() 函数。但它似乎没有检查 ontology 的一致性。虽然有错误,但是什么也没有显示!知道如何使用 owlready2 或任何其他 api.

检查 python 中 ontology 的一致性

这是我的小代码:

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

这是我得到的输出:

Ontology:

我修改的代码:

from owlready2 import *

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

输出owl文件我有:

您显示的输出仅仅是 OWLReady 从命令行调用 HermiT 推理器的输出。因此, "output" 无论如何都是相同的原因。

你需要的是class化后的推理结果。根据 documentation you can direct the inferences to a file, or get the results from your classes as shown in this example.

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

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

  1. 我用 onto.save() 而不是 onto.save("test_t1.owl")。虽然只放 onto.save() 没问题,但是 onto.save("test_t1.owl") 将输出保存在不同的文件中。

  2. 我在提到来源时遗漏了 load() 函数 ontology onto = get_ontology("file path").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")