在owlready中导入本体



我在owl中编写了一些代码,现在我需要导入一个本体来使用它。问题是owlready没有正确地做,没有找到类。比如我输入go。Owl (http://geneontology.org/docs/download-ontology/),然后添加一个类(为了简单)命名为A,代码:

with onto:
class A(GO_0046852):
pass

我得到错误

NameError: name 'GO_0000030' is not defined

这是因为owl已经考虑到类IRI应该是#GO_0000030而不是http://purl.obolibrary.org/obo/GO_0046852甚至http://purl.obolibrary.org/obo#GO_0046852这说不通啊。所以没有类被检测到。我该如何解决这个问题,或者绕道而行?

我现在不能换到另一个API,因为我已经写了很多代码。这是产生错误的代码:

from owlready2 import *
onto = get_ontology("go.owl").load()
with onto:
class A(GO_0000030):
pass
onto.save(file = "test.owl", format = "rdfxml")

原始本体中是否有类'GO_0046852'?

在OWLREADY的例子中,定义是

with onto:
class Drug(Thing):
pass

,在本体中已经定义了一个类,所以classDrug继承类Thing的所有属性. 因此,无论你在括号内写什么类,都应该在本体中声明。这就是你得到错误的原因。

请参考owlready2.0文档中的Namespace章节。

你必须调用一个命名空间,在从存储中加载本体之后。

obo = get_namespace("http://purl.obolibrary.org/obo/")
print(obo.GO_0000001)

因此,当你通过obo。GO_0000001应该给出输出。

最新更新