在Python中从字符串中加载本体



我们有一个Pyspark pair RDD,它将.owl文件的路径存储为key,文件内容存储为value。

我希望使用Owlready2进行推理。要从OWL文件中加载本体,需要使用get_ontology()函数。然而,给定的函数需要一个IRI(一种URL)到文件,而我在Python中将文件内容作为str

我有办法解决这个问题吗?

我已经试过了:

  • 已用get_ontology(file_contents).load()->这显然不起作用,因为函数需要一个文件路径。
  • Usedget_ontology(file_contents)—>没有错误,但是本体没有被加载,所以推理不会发生。

回答我自己的问题

Owlready2中的load()函数还有几个在文档中没有提到的参数。包的函数定义可以在这里看到。

从这里引用,def load(self, only_local = False, fileobj = None, reload = False, reload_if_newer = False, **args)是函数签名。

我们可以看到也可以传递fileobj,默认是None。此外,fileobj = open(f, "rb")行告诉我们需要以二进制模式读取该文件。

考虑到所有这些因素,下面的代码适合我们的情况:
from io import BytesIO # to create a file-like object
my_str = RDDList[1][1] # the pair RDD cell with the string data
my_str_as_bytes = str.encode(my_str) # convert to binary
fobj = BytesIO(my_str_as_bytes) 
abox = get_ontology("some-random-path").load(fileobj=fobj) # the path is insignificant, notice the 'fileobj = fobj'. 

最新更新