我正在使用 OWL API,并且我有一个本体。我正在尝试按照我们在 protege 中所做的方式导入另一个本体,即在本地选择 OWL 文件,然后导入它。这可以通过 OWL API 实现
我正在使用进口声明,
OWLImportsDeclaration importDeclaraton = ontology.getFactory().getOWLImportsDeclaration(IRI.create("/home/noor/Dropbox/TaggingCaseStudy/Programs/TextBasedMA/files/ontologies/OBMA2/photo1.owl"));
但是我收到错误,它没有在本地获取文件,
Caused by: java.io.FileNotFoundException: http://semanticweb.org/home/noor/Dropbox/TaggingCaseStudy/Programs/TextBasedMA/files/ontologies/OBMA2/photo1.owl
最佳答案
您的 IRI 是相对的,而不是绝对的 - 它需要以 file:
开头才能找到文件。相对 IRI 将在加载时根据基本 IRI 进行解析,在您的情况下,这会创建您可以在错误中看到的 URL。
尝试使 IRI 绝对,或者通过在导入中使用实际本体 IRI 并使用 IRIMapper
指向文件来使用间接。
例如,如果您的本体的 IRI 为 http://example.com/myontology
,请使用
OWLImportsDeclaration importDeclaraton = ontology.getFactory().getOWLImportsDeclaration(IRI.create("http://example.com/myontology"));
创建导入声明,并将 IRIMapper
添加到您的 OWLOntologyManager
以便在加载本体时解析它:
manager.addIRIMapper(new SimpleIRIMapper(IRI.create("http://example.com/myontology"),
IRI.create("file:///actual/path/to/file.owl"));
编辑:使用 OWLAPI 4,这看起来像:
manager.getIRIMappers().add(new SimpleIRIMapper(IRI.create("http://example.com/myontology"),
IRI.create("file:///actual/path/to/file.owl"));
这方面的 Javadoc 可以在 GitHub 页面上找到
关于owl-api - 使用OWL API导入本体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17616541/