使用OWL API导入本体

时间:2013-07-12 13:52:19

标签: owl-api

我正在使用OWL API,我有一个本体。我试图以我们保护的方式导入另一个本体,即在本地选择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

1 个答案:

答案 0 :(得分: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"));

创建导入声明,并在加载本体时为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页面上找到