在Python中使用Hermit reasoner对本体进行一致性检查
我正在使用用于python的OWLReady2API加载一个本体,并使用sync_reasoner()函数检查该本体的一致性。但它似乎没有检查本体的一致性。虽然有一个错误,但它没有显示任何内容!知道如何使用owlready2或任何其他api检查python中本体的一致性吗 以下是我的小代码:在Python中使用Hermit reasoner对本体进行一致性检查,python,ontology,reasoner,owlready,Python,Ontology,Reasoner,Owlready,我正在使用用于python的OWLReady2API加载一个本体,并使用sync_reasoner()函数检查该本体的一致性。但它似乎没有检查本体的一致性。虽然有一个错误,但它没有显示任何内容!知道如何使用owlready2或任何其他api检查python中本体的一致性吗 以下是我的小代码: from owlready2 import * onto = get_ontology("test.owl") sync_reasoner() 这是我得到的结果: 猫头鹰2*运行隐士。。。 java-X
from owlready2 import *
onto = get_ontology("test.owl")
sync_reasoner()
这是我得到的结果:
- 猫头鹰2*运行隐士。。。 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-Ifile:///C:/Users/44999038/AppData/Local/Temp/tmptmcc_a79
- 猫头鹰2*隐士花了0.48622655868530273秒
from owlready2 import *
onto = get_ontology("test.owl")
with onto:sync_reasoner()
onto.save()
我得到的输出owl文件:
您显示的输出仅仅是OWLReady从命令行调用HermiT reasoner的输出。因此,为什么“输出”是相同的 您需要的是分类后的推理结果。根据,您可以将推断直接指向文件,或从类中获取结果,如中所示
不明显的是,如何确定本体是否不一致。我能找到的最好结果是,您需要搜索推理结果,如果您能找到一个等价于
owl:Nothing
的类,那么您的本体是不一致的 您显示的输出仅仅是OWLReady从命令行调用HermiT reasoner的输出。因此,为什么“输出”是相同的
您需要的是分类后的推理结果。根据,您可以将推断直接指向文件,或从类中获取结果,如中所示
不明显的是,如何确定本体是否不一致。我能找到的最好结果是,您需要搜索推理结果,如果您能找到一个等价于
owl:Nothing
的类,那么您的本体是不一致的 基本上我错过了两件重要的事情
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")
基本上,我错过了两件重要的事情
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")
当然,owlready2必须公开OWLReasoner::isConsistent()方法。如果本体是一致的,那么该方法返回true。这也是我的想法,但不,事实并非如此!它实际上只是一个围绕命令行HermiT接口子集的Python包装器!当然,owlready2必须公开OWLReasoner::isConsistent()方法。如果本体是一致的,那么该方法返回true。这也是我的想法,但不,事实并非如此!它实际上只是一个围绕命令行HermiT接口子集的Python包装器!非常感谢。我按照你的指示做了,但没能得到想要的结果。它给了我一个空的owl文件。我的python代码:
from owlready2 import*to=get_ontology(“test.owl”)with-to:sync_reasoner()on.save()
,我得到了一个如下的owl文件:
无论如何,非常感谢您的帮助。因为OWLReady从命令行调用HermiT,您可以直接从命令行使用HermiT,并以这种方式对其进行调试,检查输出并确定如何从OWLReady解析输出。我确实尝试过阅读OWLReady代码,但我对Python的了解有限。坦白说,如果这是我的选择,我宁愿使用Java OWL API,我认为它有一个更优雅的API。谢谢。我按照你的指示做了,但没能得到想要的结果。它给了我一个空的owl文件。我的python代码:from owlready2 import*to=get_ontology(“test.owl”)with-to:sync_reasoner()on.save()
,我得到了一个如下的owl文件:
无论如何,非常感谢您的帮助。因为OWLReady从命令行调用HermiT,您可以直接从命令行使用HermiT,并以这种方式对其进行调试,检查输出并确定如何从OWLReady解析输出。我确实尝试过阅读OWLReady代码,但我对Python的了解有限。坦白说,如果这是我的选择,我宁愿使用javaowlapi,我认为它有一个更优雅的API。