【发布时间】: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