Owlrady2从文件而不是url加载导入的onotologies

2024-05-13 19:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试加载一个导入其他一些本体的本体。这些其他本体位于我的机器上,而不是web上。如果我尝试我的_ontology.load(),它会尝试从它们的URI加载这些其他本体。但这失败了。 我如何告诉owlready2这些本体在哪里

The traceback looks like this:

    Traceback (most recent call last):
  File "~Software/PyOntologyChecker/app.py", line 12, in <module>
    covid_onto = get_ontology_from_file(COVID_ONTOLOGY)
  File "~Software/PyOntologyChecker/app.py", line 8, in get_ontology_from_file
    return get_ontology("file://" + file_path).load()
  File "~.local/lib/python3.8/site-packages/owlready2/namespace.py", line 813, in load
    imported_ontologies = [self.world.get_ontology(self._unabbreviate(abbrev_iri)).load() for abbrev_iri in self.world._get_obj_triples_sp_o(self.storid, owl_imports)]
  File "~.local/lib/python3.8/site-packages/owlready2/namespace.py", line 813, in <listcomp>
    imported_ontologies = [self.world.get_ontology(self._unabbreviate(abbrev_iri)).load() for abbrev_iri in self.world._get_obj_triples_sp_o(self.storid, owl_imports)]
  File "~.local/lib/python3.8/site-packages/owlready2/namespace.py", line 773, in load
    except:  raise OwlReadyOntologyParsingError("Cannot download '%s'!" % f)
owlready2.base.OwlReadyOntologyParsingError: Cannot download 'http://ontofox.hegroup.org/CHEBI_module11.owl'!

Tags: inpyselfworldgetlocalline本体
1条回答
网友
1楼 · 发布于 2024-05-13 19:40:49

假设您有CHEBI_module11.owl依赖项的本地副本(例如SOME_DIR/HEBI_module11.owl),将其位置添加到onto_path(如docs中所述):

onto_path.append("SOME_DIR")

在执行my_ontology.load()之前。这告诉Owlready2在SOME_DIR中查找文件。路径可以是相对的,也可以是绝对的(比如c:/data/ontologies

默认情况下,当前Python的工作目录是未扫描的,但可以通过onto_path.append(".")进行设置

如果所需的本体由URI描述,而不是以通常的文件名结尾,如"http://rdf.webofcode.org/woc/",则本地文件名(woc在本例中)不应具有扩展名

相关问题 更多 >