6

Jenaの推論機能を使用したいのですが、InfModelを使用しているときにパフォーマンスの問題が発生します。

これが私のオントロジーの簡略化された概要です:

プロパティ:

hasX            (Ranges(intersection): X, inverse properties: isXOf)
|-- hasSpecialX (Ranges(intersection): X, inverse properties: isSpecialXOf)

isXOf           (Domains(intersection): X, inverse properties: hasX)
|--isSpecialXOf (Domains(intersection): X, inverse properties: hasSpecialX)

さらに、クラス'Object'があります。

Object hasSpecialX some X

明示的に保存されるのは次のデータです。

SomeObject a Object 
SomeX a X
SomeObject hasSpecialX SomeX  

次のクエリを使用して、インスタンスがどのクラスに属しているかを確認したいと思います。行われた仮定によれば、「SomeObject」のみが返されます。

SELECT ?x WHERE { ?x :hasX :SomeX . } 

ds.getDefaultModel()ただし、データが明示的に保存されていないため、クエリは機能しません。infModel一方、使用している場合、クエリは終了しません。せいぜい25分待ってから中止しました。(トリプルストアのサイズは約180 MBです)

これは私のコードです:

OntModel ont = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF, null); 
ont.read("file:..." , "RDF/XML"); 

Reasoner reasoner = ReasonerRegistry.getOWLMicroReasoner(); 
reasoner = reasoner.bindSchema(ont); 

Dataset dataset = TDBFactory.createDataset(...); 
Model model = dataset.getDefaultModel(); 

InfModel infModel = ModelFactory.createInfModel(reasoner, model);

QueryExecution qe = null;
ResultSet rs;

try {
    String qry = "SELECT ?x WHERE { ?x :hasX :SomeX . }"; 
    qe = QueryExecutionFactory.create(qry, infModel); 
    rs = qe.execSelect(); 

    while(rs.hasNext()) {
        QuerySolution sol = rs.nextSolution(); 
        System.out.println(sol.get("x"));
    }
} finally {
    qe.close();
    infModel.close();
    model.close(); 
    dataset.close();
}

上記のコードに何か問題がありますか、それともそれが機能しない理由は他に何がありますか?

それ以外に、「推測された公理をオントロジーとしてエクスポートする」(Protegeが提供)を実行すると、パフォーマンスを向上できるかどうかを知りたいですか?

編集: 私はその間にペレットを使用しようとしましたが、他の質問で説明したように、推測されたモデルを取得できません:理由としてペレットを使用するOutOfMemoryError。では、他に何ができますか?

4

1 に答える 1

3

パフォーマンスに関しては、Jena 推論メカニズムをオフにして SPARQL を実行するのではなく、データをアサートする前に推論を実行することをお勧めします。大きなデータセットに適した Jena コンポーネントである TDB を既に使用しています。

推測されたデータを直接使用しても期待されるパフォーマンスが得られない場合は、よりスケーラブルなトリプル ストア ( 4storeまたはVirtuoso ) に移行することをお勧めします。

于 2012-04-16T22:51:32.423 に答える