我有一个在Protege 4.3.0中创建并存储在OWL文件中的本体。为了使用OWL API加载这个本体,我使用下面的代码示例。UnloadableImportException:无法加载导入的本体
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等推理器。 – Ignazio