0

我在使用 Java 中的 owl api 导入 o​​wl 文件时遇到问题。我成功地可以导入 2 个 owl 文件。但是,当我尝试导入 3 个或更多相互集成的 owl 文件时,会出现问题。例如

Base.owl -- base ontology
Electronics.owl -- electronics ontology which imports Base.owl
Telephone.owl -- telephone ontology which imports Base.owl and Electronics.owl

什么时候,我只是导入 Base.owl 并运行 Electronics.owl,它运行顺利。代码如下:

File fileBase = new File("filepath/Base.owl");
File fileElectronic = new File("filePath/Electronic.owl");
SimpleIRIMapper iriMapper =  new SimpleIRIMapper(IRI.create("url/Base.owl"),
                IRI.create(fileBase));
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
manager.addIRIMapper(iriMapper);
OWLOntology ont = manager.loadOntologyFromOntologyDocument(fileElectronic);

但是,当我想加载 Telephone.owl 时,我只需创建一个额外的 iriMapper 并将其添加到管理器中。附加代码显示为 ** :

File fileBase = new File("filepath/Base.owl");
File fileElectronic = new File("filePath/Electronic.owl");
**File fileTelephone = new File("filePath/Telephone.owl");**
SimpleIRIMapper iriMapper =  new SimpleIRIMapper(IRI.create("url/Base.owl"),
                IRI.create(fileBase));
**SimpleIRIMapper iriMapper2 =  new SimpleIRIMapper(IRI.create("url/Electronic.owl"),
                IRI.create(fileElectronic));**
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
manager.addIRIMapper(iriMapper);
**manager.addIRIMapper(iriMapper2);**
OWLOntology ont = manager.loadOntologyFromOntologyDocument(**fileTelephone**);

上面显示的代码给出了这个错误:

Could not load import:        
Import(url/Electronic.owl>)
Reason: Could not loaded imported ontology:       
<url/Base.owl> Cause: null

如果有人帮我一把,我将不胜感激......提前致谢......

4

2 回答 2

2

我知道这个问题很老,但这是我第一次在谷歌搜索类似的问题(加载许多 owl-imports)。我需要很多时间才能找到答案。

因此,对于所有遇到 owlapi 会说的问题的人:“无法加载导入的本体”:owlapi 提供了一个名为“AutoIRIMapper”的实用程序类(在此处描述:http: //owlapi.sourceforge.net/2.xx/实用程序类.htmlhttp://owlapi.sourceforge.net/javadoc/index.html)。创建“AutoIRIMapper”实例后,可以使用以下代码将“AutoIRIMapper”实例添加到“OWLOntologyManager”:

"manager.addIRIMapper(autoIRIMapper);"

之后,OWLOntologyManager 将能够自动加载所有导入的 OWL 文件。

我希望这会对某人有所帮助。

于 2012-03-07T09:47:17.157 回答
1

如果您想向管理器发出请求以加载在导入语句中声明的本体,您可以使用 makeLoadImportRequest 方法,该方法将 OWLImportsDeclaration 作为参数。

看看是否能解决你的问题。

祝你好运!

于 2010-06-17T00:35:32.353 回答