2012-01-17 49 views
8

比方說,我有一個SPARQL這樣的查詢,查找有一個焦距資源共享屬性的資源,也越來越對焦點資源其他一些語句:如何限制SPARQL查詢中特定變量的結果數量?

CONSTRUCT { 
    ?focal pred:icate ?shared . 
    ?other pred:icate ?shared . 
} 
WHERE { 
    ?focal pred:icate ?shared ; 
     more:info ?etc ; 
     a "foobar" . 
    ?other pred:icate ?shared . 
} 
LIMIT 500 

如果有超過500個其他資源,LIMIT可能會排除more:info聲明和對象。那麼,有沒有辦法說「我只想要最多500個?other」,還是我必須將此查詢分解爲多個部分?

回答

9

您可以使用子查詢極限,即類似如下:

CONSTRUCT { 
    ?focal pred:icate ?shared . 
    ?other pred:icate ?shared . 
} 
WHERE { 
    ?focal pred:icate ?shared ; 
      more:info ?etc ; 
      a "foobar" . 
    { 
     SELECT ?shared { 
     ?other pred:icate ?shared . 
     } 
     LIMIT 500 
    } 
}