2013-01-22 5 views
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(); 

어떤 도움을? 아마도 더 나은 방법일까요?

답변

1

런타임시 기본 참깨 저장소의 추론 전략을 변경할 수 없습니다. 특정 구성을 사용하여 저장소를 만들면 해당 구성이 수정됩니다. 동일한 저장소를 추론 및 비 추론 둘 다로 구성 할 수 없습니다.

변경할 수 있다고해도 도움이되지 않습니다. 정확히 무엇을 달성하려고하는지 확신 할 수 없지만 추론을 사용하여 저장소에 데이터를 추가하는 것은 추론을해야하기 때문에 느립니다. 로드하는 동안 추론을 비활성화하지만 쿼리 중에이를 사용하지 않도록 설정하는 것은 무의미합니다.로드 중에 모든 추론 작업이 수행되므로이 ​​시나리오에서는 아무 것도 유추되지 않습니다.

선택할 수있는 옵션이 있습니다. 하나의 옵션은 완전히 추론 할 수없는 저장소를 사용하는 것입니다. 더 똑똑한 쿼리만으로 필요한 것을 얻을 수 있습니다. 대부분의 RDFS 상속 추론은 쿼리를 사용하여 대체 할 수 있습니다.

예를 들어, 클래스 A의 모든 서브 클래스를 얻을 수 있습니다 :

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

모든 (상속) A의 경우 :

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

그리고 정도에 등등.

또 다른 옵션은 훨씬 정교한 추론 지원과 더 나은 성능을 제공하는 OWLIM과 같은 Sesame 타사 백엔드 중 하나를 조사하는 것입니다.

+0

고맙습니다. – sakias