芝麻存储库配置

时间:2013-01-22 19:48:20

标签: configuration sesame

我使用sesame 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();

有任何帮助吗?可能有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您不能像这样在运行时更改默认的Sesame存储库的推理策略。使用特定配置创建存储库后,将修复该配置。无法将同一商店配置为推理和非推理。

即使你可以改变它,它也无济于事。我不确定你究竟想要实现什么,但是通过推理将数据添加到商店的速度较慢,因为它必须进行推理。在加载期间禁用推理但在查询期间启用它是没有意义的,因为所有推理工作都是在加载期间完成的,因此在这种情况下不会推断任何内容。

您有多种选择:一种选择是使用完全非推理的存储库,只需进行更智能的查询即可获得所需内容 - 大多数RDFS继承推理都可以使用查询替换。

例如,要获取类A的所有子类:

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

A的所有(继承)实例:

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

依此类推。

另一种选择是调查其中一个Sesame第三方后端,例如OWLIM,它具有更复杂的推理支持和更好的性能。