我有非託管三元組作爲存儲在我的內容數據庫中的單個文檔的一部分存儲。基本上每個文檔都代表一個人,而定義的三元組指定該人員的經理的文檔URI。我正在嘗試使用SPARQL來確定經理與層次結構中所有下層人員之間的路徑長度。有什麼方法可以優化SPARQL查詢嗎?
文檔中的三元看起來像
<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>
我發現在層次以下SPARQL查詢,可用於返回一個經理,aperson低於他們,節點數量遙遠他們是。
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
這工作,但速度很慢,即使在層次樹,我看到的是一個或兩個級別深度的情況下,各地15S。我在數據庫中有63,139這種類型的管理三元組。
不應該是'ORDER BY?leaf',因爲您只有'?manager'的一個綁定。 – scotthenninger