0

Java で owl api を使用してフクロウ ファイルをインポートする際に問題があります。2 つのフクロウ ファイルを正常にインポートできます。しかし、相互に統合された 3 つ以上の owl ファイルをインポートしようとすると、問題が発生します。例えば

Base.owl -- base ontology
Electronics.owl -- electronics ontology which imports Base.owl
Telephone.owl -- telephone ontology which imports Base.owl and Electronics.owl

Base.owl をインポートして Electronics.owl を実行すると、スムーズに動作します。コードを以下に示します。

File fileBase = new File("filepath/Base.owl");
File fileElectronic = new File("filePath/Electronic.owl");
SimpleIRIMapper iriMapper =  new SimpleIRIMapper(IRI.create("url/Base.owl"),
                IRI.create(fileBase));
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
manager.addIRIMapper(iriMapper);
OWLOntology ont = manager.loadOntologyFromOntologyDocument(fileElectronic);

ただし、Telephone.owl をロードする場合は、追加の iriMapper を作成してマネージャーに追加するだけです。追加のコードは ** で示されます。

File fileBase = new File("filepath/Base.owl");
File fileElectronic = new File("filePath/Electronic.owl");
**File fileTelephone = new File("filePath/Telephone.owl");**
SimpleIRIMapper iriMapper =  new SimpleIRIMapper(IRI.create("url/Base.owl"),
                IRI.create(fileBase));
**SimpleIRIMapper iriMapper2 =  new SimpleIRIMapper(IRI.create("url/Electronic.owl"),
                IRI.create(fileElectronic));**
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
manager.addIRIMapper(iriMapper);
**manager.addIRIMapper(iriMapper2);**
OWLOntology ont = manager.loadOntologyFromOntologyDocument(**fileTelephone**);

上記のコードでは、次のエラーが発生します。

Could not load import:        
Import(url/Electronic.owl>)
Reason: Could not loaded imported ontology:       
<url/Base.owl> Cause: null

誰かが私に手を差し伸べてくれれば、本当にありがたいです...よろしくお願いします...

4

2 に答える 2

2

この質問は古いことは知っていますが、同様の問題(多くのフクロウのインポートをロードする)をグーグルで検索したのはこれが初めてでした。そして、答えを見つけるには多くの時間が必要です。

したがって、owlapi が「インポートされたオントロジーをロードできませんでした」と言う問題を抱えているすべての人のために: owlapi は、「AutoIRIMapper」という名前のユーティリティクラスを提供します(ここで説明されています: http://owlapi.sourceforge.net/2.xx/ utilityclasses.htmlおよびhttp://owlapi.sourceforge.net/javadoc/index.html )。「AutoIRIMapper」のインスタンスを作成したら、次のコードを使用して「OWLOntologyManager」に追加できます。

"manager.addIRIMapper(autoIRIMapper);"

その後、OWLOntologyManager は、インポートされたすべての OWL ファイルを自動的にロードできるようになります。

それが誰かを助けることを願っています。

于 2012-03-07T09:47:17.157 に答える
1

importsステートメントで宣言されたオントロジーをロードするようにマネージャーに要求する場合は、パラメーターとしてOWLImportsDeclarationを受け取るmakeLoadImportRequestメソッドを使用できます。

それがあなたの問題を解決するかどうか見てください。

幸運を!

于 2010-06-17T00:35:32.353 に答える