2016-07-06 6 views
5

私は、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原因: 接続がこの問題を解決するためにどのように

をタイムアウトし インポートしたオントロジーをロードできませんでしたか? インポートされたオントロジがオフラインで使用できる場合は、オントロジーの読み込み中にこのオントロジーをインポートする方法は?

+0

構造的推論は完全な推論ではありません。適切な推論が必要な場合は、HermiTやPelletのような推論を使用してください。 – Ignazio

答えて

3

AutoIRIMapperを使用すると、オントロジのローカルコピーを含むローカルフォルダを指すことができます。

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

これを行う前に、オントロジを読み込みます。

+0

owlapi v5ライブラリの場合は、次のように指定します。 manager.getIRIMappers()。add(mapper); – tremendows

関連する問題