UnloadableImportException:无法加载导入的 ontology
UnloadableImportException: Could not load imported ontology
我有一个 ontology 在 Protege 4.3.0 中创建并存储在 OWL 文件中。为了使用 OWL API 加载此 ontology,我使用以下代码示例。
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);
}
}
但是,如果我尝试加载包含一个或多个导入的 ontology,如果这些导入不可用,则会抛出 UnloadableImportException,如下例所示:
org.semanticweb.owlapi.model.UnloadableImportException: Could not load
imported ontology: http://www.w3.org/2004/02/skos/core Cause:
connection timed out
如何解决这个问题?
如果导入的ontology离线可用,如何在加载我的ontology时导入这个ontology?
您可以使用 AutoIRIMapper
指向包含本体本地副本的本地文件夹。
AutoIRIMapper mapper=new AutoIRIMapper(folder, true);
manager.addIRIMapper(mapper);
在开始加载本体之前执行此操作。
我有一个 ontology 在 Protege 4.3.0 中创建并存储在 OWL 文件中。为了使用 OWL API 加载此 ontology,我使用以下代码示例。
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);
}
}
但是,如果我尝试加载包含一个或多个导入的 ontology,如果这些导入不可用,则会抛出 UnloadableImportException,如下例所示:
org.semanticweb.owlapi.model.UnloadableImportException: Could not load imported ontology: http://www.w3.org/2004/02/skos/core Cause: connection timed out
如何解决这个问题? 如果导入的ontology离线可用,如何在加载我的ontology时导入这个ontology?
您可以使用 AutoIRIMapper
指向包含本体本地副本的本地文件夹。
AutoIRIMapper mapper=new AutoIRIMapper(folder, true);
manager.addIRIMapper(mapper);
在开始加载本体之前执行此操作。