2

私はセサミ http リポジトリを使用していますが、スキーマが大きいため、推論をサポートするリポジトリが遅すぎます (特にトリプルを追加する場合)。その結果、単純なメモリ リポジトリを使用し (ワークベンチで設定)、必要なページの次の行で推論をサポートするように実行時に構成します。

ForwardChainingRDFSInferencerConfig inferMemStoreConfig = new ForwardChainingRDFSInferencerConfig(new MemoryStoreConfig(true));
SailRepositoryConfig repositoryTypeSpec = new SailRepositoryConfig(inferMemStoreConfig);
RepositoryConfig repConfig = new RepositoryConfig(repositoryID, repositoryTypeSpec);
RemoteRepositoryManager manager = new RemoteRepositoryManager(sesameServer);
manager.initialize();
Repository myRepository = manager.getRepository(repositoryID);

manager.addRepositoryConfig(repConfig);

トリプルを追加するページで、それを無効にするにはどうすればよいでしょうか?

これは私が試したことです:

MemoryStoreConfig memStoreConfig = new MemoryStoreConfig(true);
SailRepositoryConfig repositoryTypeSpec = new SailRepositoryConfig(memStoreConfig);
RepositoryConfig repConfig = new RepositoryConfig(repositoryID, repositoryTypeSpec);
RemoteRepositoryManager manager = new RemoteRepositoryManager(sesameServer);
manager.initialize();

Repository myRepository = manager.getRepository(repositoryID);

manager.addRepositoryConfig(repConfig);

myRepository.initialize();

何か助けはありますか?多分より良いアプローチ?

4

1 に答える 1

1

このように、実行時にデフォルトの Sesame リポジトリの推論戦略を変更することはできません。特定の構成を使用してリポジトリを作成すると、その構成は修正されます。同じストアを推論と非推論の両方に構成することはできません。

また、変更できたとしても、役に立ちません。正確に何を達成しようとしているのかはわかりませんが、推論を行う必要があるため、推論を使用してストアにデータを追加するのは遅くなります。読み込み中に推論を無効にしてクエリ中に有効にしても意味がありません。すべての推論作業は読み込み中に行われるため、このシナリオでは何も推論されません。

いくつかの選択肢があります。1 つのオプションは、完全に非推論のリポジトリで作業し、よりスマートなクエリを実行して必要なものを取得することです。ほとんどの RDFS 継承推論は、クエリを使用して置き換えることができます。

たとえば、クラスのすべてのサブクラスを取得するにはA:

SELECT ?x
WHERE { ?x rdfs:subClassOf+ ex:A }

のすべての (継承された) インスタンスA:

SELECT ?i
WHERE { ?i a [ rdfs:subClassOf* ex:A ] }

などなど。

もう 1 つのオプションは、はるかに洗練された推論サポートと優れたパフォーマンスを備えた OWLIM などの Sesame サード パーティ バックエンドの 1 つを調べることです。

于 2013-01-23T03:01:48.883 に答える