मैंने एक समान क्वेरी की कोशिश की है और एक पार्सिंग अपवाद भी प्राप्त किया है। मैं rdflib's SPARQL parser कोड से गुजर चुका हूं और यह IN
या NOT IN
को संभालने के लिए एक नियम मौजूद नहीं प्रतीत होता है। मुझे लगता है कि यह कार्यक्षमता लागू नहीं की गई है।
वैसे भी, मुझे यकीन नहीं है कि आप इसे सही तरीके से उपयोग कर रहे हैं। SPARQL 1.1 spec में परिभाषा को देखने के बाद ... यह IN
ऑपरेटर को अभिव्यक्तियों की सूची के विरुद्ध उपयोग करने के लिए परिभाषित करता है। इसलिए, आप कर चाहते हैं:
FILTER (?item NOT IN (?SetB))
और मैं पूरी तरह से यकीन है कि अगर आप दाएँ हाथ की ओर में चर का उपयोग कर सकते हैं नहीं कर रहा हूँ क्योंकि कल्पना उपयोग के संदर्भ में सभी उदाहरणों।
संपादित: RobV संदेश दिखाई, यह
एक क्वेरी
एक संभव समाधान के साथ वैकल्पिक हल RLH में चर का उपयोग करने के लिए, कि काम हो सकता है आप का उपयोग करने के लिए है के लिए संभव है OPTIONAL
और bound
(दोनों में समर्थित rdflib)। कुछ ...
SELECT ?title WHERE {
some logic defining ?item
OPTIONAL {
some logic defining ?SetB
}
FILTER (bound(?SetB) && ?setB != ?item)
}
आपकी क्वेरी के बारे में अधिक जानने के बिना मैं इस मामले के साथ बेहतर सलाह नहीं दे सकता। दो प्रश्नों
सबसे आसान तरीका है के साथ
वैकल्पिक हल हल करने के लिए rdlib के साथ इस फिल्टर और दो प्रश्नों का उपयोग करने के लिए है, पहली क्वेरी ?SetB
के लिए सभी posible मान प्राप्त करता है। दूसरे प्रश्न में चींटी आप गतिशील एक फ़िल्टर बनाएं:
SELECT ?title WHERE {
some logic defining ?item
FILTER (?item != <setb_val1> && ?item != <setb_val2> &&
... && ?item != <setb_val2>)
}
स्रोत
2011-04-25 19:53:12
बढ़िया यही वह है जिसे मैं ढूंढ रहा था। –
आईएन/नोट इन अभिव्यक्ति के आरएचएस में चर का उपयोग करने के लिए कानूनी होना चाहिए, आरएचएस को 1.1 व्याकरण में 'अभिव्यक्ति सूची' कहा जाता है जो 'अभिव्यक्ति' प्रस्तुतियों यानी किसी वैध अभिव्यक्ति की किसी भी सूची की अनुमति देता है और इस प्रकार इसे चर शामिल हैं – RobV
पता करने के लिए अच्छा, धन्यवाद रॉब। कल्पना में उदाहरण थोड़ा भ्रामक हैं। –