2012-01-17 29 views
8

Hãy nói rằng tôi có một truy vấn SPARQL như thế này, tìm kiếm các nguồn tài nguyên mà có một số tài sản với một nguồn lực đầu mối chia sẻ, và cũng nhận được một số báo cáo khác về tài nguyên tiêu cự:Làm cách nào để hạn chế số lượng kết quả cho một biến cụ thể trong truy vấn 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 

Nếu có hơn 500 khác tài nguyên, LIMIT đó có thể loại trừ tuyên bố và đối tượng more:info. Vì vậy, có cách nào để nói "Tôi chỉ muốn tối đa 500 của ?other", hay tôi phải chia truy vấn này thành nhiều phần?

Trả lời

9

Bạn có thể sử dụng LIMIT trong truy vấn con, ví dụ: một cái gì đó như sau:

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 
    } 
} 
1

http://www.w3.org/TR/2012/WD-sparql11-query-20120105/#modResultLimit

Các LIMIT khoản đặt dấu trên ràng buộc về số giải pháp trả lại. Nếu số lượng giải pháp thực tế, sau khi OFFSET được áp dụng, lớn hơn giới hạn, thì tối đa số lượng giới hạn giải pháp sẽ được trả lại.

Bạn chỉ có thể giới hạn số lượng giải pháp cho truy vấn của mình, chứ không chỉ một tập hợp con cụ thể của truy vấn đó. Bạn có thể sử dụng truy vấn con với mệnh đề LIMIT mặc dù: http://www.w3.org/TR/sparql-features/#Subqueries.

Các vấn đề liên quan