컨텐츠 DB에 저장하고있는 개별 문서의 일부로 관리되지 않는 트리플을 저장했습니다. 본질적으로 각 문서는 사람을 나타내며 정의 된 트리플은 사람의 관리자에 대한 문서 URI를 지정합니다. SPARQL을 사용하여 관리자와 그 아래에있는 모든 계층 간의 경로 길이를 확인하려고합니다. 문서의SPARQL 쿼리를 최적화 할 수있는 방법이 있습니까?
트리플 내가 계층 구조에서 그 아래에 다음과 같은 SPARQL 관리자를 반환하는 데 사용할 수있는 쿼리, aperson을 발견
<sem:triple xmlns:sem="http://marklogic.com/semantics">
<sem:subject>http://rdf.abbvienet.com/infrastructure/person/10740024</sem:subject>
<sem:predicate>http://schemas.abbvienet.com/ontologies/infrastructure.owl#manager</sem:predicate>
<sem:object>http://rdf.abbvienet.com/infrastructure/person/10206242</sem:object>
</sem:triple>
처럼, 그리고 노드의 수는 먼 그들이있다 .
select ?manager ?leaf (count(?mid) as ?distance) {
BIND(<http://rdf.abbvienet.com/infrastructure/person/10025613> as ?manager)
?leaf <http://schemas.abbvienet.com/ontologies/infrastructure.owl#manager>* ?mid .
?mid <http://schemas.abbvienet.com/ontologies/infrastructure.owl#manager>+ ?manager .
}
group by ?manager ?leaf
order by ?manager ?leaf
이 15 초 주위에, 심지어 내가보고하고있는 계층 구조 트리가 하나 개 또는 두 가지 수준의 깊은 경우, 작동하지만 매우 느립니다. 이 유형의 관리자 트리플은 63,139입니다.
'? manager'에 대해 단 하나의 바인딩 만 있어도 'ORDER BY? leaf'가 아니어야합니다. – scotthenninger