我正在使用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
答案 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页面上找到