【问题标题】:UnloadableImportException: Could not load imported ontologyUnloadableImportException:无法加载导入的本体
【发布时间】:2016-07-06 17:49:44
【问题描述】:

我有一个在 Protege 4.3.0 中创建并存储在 OWL 文件中的本体。为了使用OWL API 加载此本体,我使用以下代码示例。

public class MySampleClass {
    private final OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    private final OWLDataFactory df = manager.getOWLDataFactory();

    private final OWLReasonerFactory rf = new StructuralReasonerFactory();

    private final OWLOntology ontology;
    private final OWLOntologyID id;
    private final IRI iri;
    private final PrefixManager pm;

    private final OWLReasoner reasoner;

    /**
     * 
     * @param file
     */
    public MySampleClass(File file) {
        try {
            ontology = manager.loadOntologyFromOntologyDocument(file);
        } catch (OWLOntologyInputSourceException | OWLOntologyCreationException ex) {
            // throw custom exception
        }

        id = ontology.getOntologyID();
        iri = id.getOntologyIRI();

        pm = new DefaultPrefixManager(iri.toString().concat("#"));

        reasoner = rf.createReasoner(ontology);
        reasoner.precomputeInferences(InferenceType.OBJECT_PROPERTY_ASSERTIONS);
    }
}

但是,如果我尝试加载包含一个或多个导入的本体,如果这些导入不可用,则会引发 UnloadableImportException,如下例所示:

org.semanticweb.owlapi.model.UnloadableImportException:无法加载 导入本体:http://www.w3.org/2004/02/skos/core 原因: 连接超时

如何解决这个问题? 如果导入的本体离线可用,在我的本体加载过程中如何导入这个本体?

【问题讨论】:

  • 请注意,结构推理器不是完整的推理器。如果您需要适当的推理,请使用 HermiT 或 Pellet 之类的推理器。

标签: java rdf owl protege owl-api


【解决方案1】:

您可以使用AutoIRIMapper 指向包含本地本体副本的本地文件夹。

AutoIRIMapper mapper=new AutoIRIMapper(folder, true);
manager.addIRIMapper(mapper);

在开始加载本体之前执行此操作。

【讨论】:

  • 对于 owlapi v5 库,使用这个:manager.getIRIMappers().add(mapper);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多