1

OntModel として読み取られる OWL ファイルを格納するために JENA TDB を使用しています。同じコードは次のとおりです。

public static void initializeModel(){
        dataset=TDBFactory.createDataset("Path/to/TDBDir");
        Model b = dataset.getDefaultModel();
        ontModel= ModelToOntModel(b);
        FileManager.get().readModel( ontModel, "Path/to/sourceOWL.owl");
        jListener= new JenaListener(ontModel,"MODEL");
        ontModel.register(jListener);
    }

これにより、アプリケーションが実行されていないときにフクロウ ファイルが外部で変更された場合 (特に、フクロウ ファイルから何かを削除した場合)、アプリケーションを再実行すると、データ セットが一貫性のない状態に見えるという問題に直面しています。フクロウ ファイルから削除されたエンティティは、ontModel (これらの古いエントリが TDB に保持されるため) まだ保持されているため、この場合は望ましくありません。

この種の問題を克服する方法はありますか?データセットが私の OWL ファイルと一致するようにするには? それとも、上記の方法は TDB を作成する正しい方法ではありませんか?

4

1 に答える 1

1

TDB には独自のデータのコピーがあります。ファイルが変更されたことを伝える必要があります。実際、すべてのreadModel操作は何らかのソース構文を使用し、メモリ内またはデータベース内に格納される RDF トリプルを作成 (コピー) しています。

ファイルが小さい場合は、データベースを空にしてリロードします。

ファイルが大きい場合、何らかの方法で変更を取得できる場合は、その変更をデータベース バージョンに適用します。

于 2013-11-20T09:43:27.773 に答える