enz*_*m83 6 java rdf owl protege owl-api
我在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);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试加载包含一个或多个导入的本体,如果这些导入不可用,则抛出UnloadableImportException,如下例所示:
org.semanticweb.owlapi.model.UnloadableImportException:无法加载导入的本体:http://www.w3.org/2004/02/skos/core原因:连接超时
如何解决这个问题呢?如果导入的本体可以脱机使用,如何在加载本体时导入此本体?
您可以使用AutoIRIMapper指向包含本地本地副本的本地文件夹.
AutoIRIMapper mapper=new AutoIRIMapper(folder, true);
manager.addIRIMapper(mapper);
Run Code Online (Sandbox Code Playgroud)
在开始加载本体之前执行此操作.