2

我正在使用 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
4

1 回答 1

2

您的 IRI 是相对的,而不是绝对的 - 它需要以file:找到文件开头。加载时将针对基本 IRI 解析相对 IRI,在您的情况下,这会创建您可以在错误中看到的 URL。尝试使 IRI 成为绝对的,或者通过在导入中使用实际的本体 IRI 并使用IRIMapper指向文件来使用间接。

例如,如果您的本体的 IRI 为http://example.com/myontology,请使用

OWLImportsDeclaration importDeclaraton = ontology.getFactory().getOWLImportsDeclaration(IRI.create("http://example.com/myontology"));

创建导入声明,并在加载本体时添加一个IRIMapperOWLOntologyManager解决它:

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 页面上找到

于 2013-10-24T18:20:58.533 回答