在 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()
这是我得到的输出:
- Owlready2 * 运行 HermiT...
java -Xmx2000M -cp C:\Users999038\AppData\Local\Programs\Python\Python36-32\lib\site-packages\owlready2\hermit;C:\Users999038\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 秒
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 是不一致的。
基本上我错过了两件重要的事情。
我用 onto.save() 而不是 onto.save("test_t1.owl")。虽然只放 onto.save() 没问题,但是 onto.save("test_t1.owl") 将输出保存在不同的文件中。
我在提到来源时遗漏了 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")
我正在为 python 使用 owlready2 api 加载 Ontology 并使用 检查 ontology 的一致性sync_reasoner() 函数。但它似乎没有检查 ontology 的一致性。虽然有错误,但是什么也没有显示!知道如何使用 owlready2 或任何其他 api.
检查 python 中 ontology 的一致性这是我的小代码:
from owlready2 import *
onto = get_ontology("test.owl")
sync_reasoner()
这是我得到的输出:
- Owlready2 * 运行 HermiT... java -Xmx2000M -cp C:\Users999038\AppData\Local\Programs\Python\Python36-32\lib\site-packages\owlready2\hermit;C:\Users999038\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 秒
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 是不一致的。
基本上我错过了两件重要的事情。
我用 onto.save() 而不是 onto.save("test_t1.owl")。虽然只放 onto.save() 没问题,但是 onto.save("test_t1.owl") 将输出保存在不同的文件中。
我在提到来源时遗漏了 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")