2012-01-17 10 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 
    } 
} 
1

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

सीमा खंड समाधान लौटे की संख्या पर एक ऊपरी बाध्य डालता है। यदि OFFSET लागू होने के बाद वास्तविक समाधानों की संख्या, सीमा से अधिक है, तो समाधान की सीमा संख्या वापस लौटा दी जाएगी।

आप केवल अपनी क्वेरी के समाधानों की संख्या सीमित कर सकते हैं, न कि इसके विशिष्ट सबसेट। आप LIMIT क्लॉज के साथ एक सबक्वायरी का उपयोग कर सकते हैं हालांकि: http://www.w3.org/TR/sparql-features/#Subqueries

संबंधित मुद्दे