owl-api - 使用OWL API导入本体

标签 owl-api

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

相关文章:

java - 从 OWL Ontology 获取部分类(class)

java - org.obolibrary.oboformat.parser.OBOFormatParser警告警告: LINE: 901 Expected white space at pos: 6 LINE: </rdf:RDF>

java - 数据属性的 OWL 类表达式

java - OWLAPI : Want to get inferred axioms from ontology using HermiT reasoner

java - 如何在 OWL 和 OWL-API 中表示 n 元数据类型属性

java - OWL API,在 &lt;!-- --> 之间添加 URI 和名称,而不将 URI 添加到其他部分

rdf - 在 OWL 中的同一属性中定义多个域/范围

java - 将字符串转换为复杂的 OWL 公理

java - 如何读取rdf :description inside annotation using OWL API

java - OWLAPI 和声明公理要求