के बिना this question में दिखाया गया है, जैसा कि एक समान शीर्षक है, मैं इसके नाम का एक हिस्सा जानकर एक डीबीपीडिया संसाधन पुनर्प्राप्त करना चाहता हूं। जब मैं SPARQL और इस तरह की बात करता हूं तो मैं एक नौसिखिया हूं, लेकिन इस सवाल में उदाहरण ने मुझे बहुत मदद की, क्योंकि लेखक ने "रोमानिया" की खोज की, और उस व्यक्ति ने जवाब देने के लिए स्पार्कल अनुरोध के साथ उसे झुका दिया। यह अच्छा है, लेकिन यह बात है।SPARQL के साथ अपने स्ट्रिंग नाम से डीबीपीडिया संसाधन पुनर्प्राप्त करना और इसके प्रकार
उदाहरण में, वे पहले से ही "पता था कि" कि रोमानिया एक देश है, इसलिए
?c a dbpedia-owl:Country ;
कहां खंड में
। पूरा SPARQL अनुरोध किया जा रहा है
SELECT ?c
WHERE {
?c a dbpedia-owl:Country ;
foaf:name "Romania"@en .
FILTER NOT EXISTS {?c dbpedia-owl:dissolutionYear ?y}
}
लेकिन, इस सवाल का काफी पूरी तरह से हमारे जरूरत का जवाब नहीं है, इसलिए इसका नाम, "नाम" एक संसाधन का वास्तविक नाम, या का एक हिस्सा होने से किसी भी संसाधन के लिए खोज यह, इसके बावजूद (rdf:) प्रकार। लक्ष्य "कुछ भी" खोजना होगा, सिर्फ नाम या उसका हिस्सा जानना होगा।
मैं आपको यह प्रश्न पूछने से पहले कुछ शोध कर रहा हूं, और मुझे पहले से ही पता है कि "नाम का हिस्सा" समस्या बीआईएफ फ़ंक्शन के साथ हल की जा सकती है (खराब तरीका, क्योंकि यह स्पैर्कल अनुपालन नहीं है), या कंटेनस क्लॉज, लेकिन मुझे इसका कोई उदाहरण नहीं मिला कि इसका उपयोग कैसे किया जाए।
आइए अब मान लें कि डीबीपीडिया संसाधनों के बीच खोज करने के लिए "शब्द" है, यह शब्द कुछ उपयोगकर्ता से इनपुट होगा। और चलिए इसे "INPUT" कहते हैं।
अनुरोध, मैं कल्पना होगा, ऐसा दिखाई देगा:
- कुछ ऐसा है जिसे प्रकार Dbpedia संसाधन का वर्णन करता है:
SELECT ?something WHERE { ?something a (dbpedia Resource). CONTAINS(?something,"INPUT") }
मेरे प्रमुख प्रश्न के बारे में दो प्रमुख पहलुओं है? मुझे नहीं लगता कि यह ऑटोलॉजी या कुछ भी है। घुटने टेककर मैं एक मिलान खोजने के लिए सभी संसाधनों में खोज करना चाहता हूं ...
- एक विशिष्ट नाम जो मैं प्रदान करता हूं, या कुछ स्ट्रिंग। मैंने फ़िल्टर विकल्प पर विचार किया, लेकिन इसका मतलब यह होगा कि सभी संसाधन प्राप्त हो रहे हैं, और उसके बाद उन्हें पुनः नामित करने के बाद उनके नाम से फ़िल्टर करना होगा, जो मुझे लगता है, इतना इष्टतम नहीं होगा।
तो, क्या कोई इसे अपना नाम, या इसका एक हिस्सा प्रदान करके संसाधन प्राप्त करने के लिए "मास्टर क्वेरी" जानता है? (एक उदाहरण "ओबामा" प्रदान करने और न केवल बैरैक के लिए परिणाम प्राप्त करना, बल्कि मिशेल के लिए भी परिणाम प्राप्त करना)।
अग्रिम धन्यवाद।
यह वास्तव में एक शर्म की बात है कि हमें "चाल" (dcterms: विषय) के माध्यम से जाना है, लेकिन हे, मेरे अनुरोध केवल डीबीपीडिया संसाधनों के लिए हैं। तो आपका जवाब बिल्कुल अद्भुत है और मुझे सिरदर्द के लोड बचाया। बहुत बहुत धन्यवाद। बीआईएफ कार्यों के लिए, मुझे पता है कि वे SPARQL अनुपालन नहीं कर रहे हैं, इसलिए मैंने कंटेन की तलाश की, हालांकि मुझे लगता है कि मैं अभी भी उन उदाहरणों की तलाश कर रहा हूं जहां वे इस खंड का उपयोग करते हैं। तो आपके उत्तर के लिए फिर से धन्यवाद, dbpedia और rdf के साथ मेरी यात्रा अभी शुरू हो गई है, लेकिन आपने मुझे केवल शुरुआत की शुरुआत की है। –
इस दृष्टिकोण के साथ कुछ दर्दनाक प्रतिबंध हैं। यह रिक्त स्थान की अनुमति नहीं देता है। तो यदि आप "बराक ओबामा" (या प्रोग्रामेटिक रूप से, किसी भी नाम स्ट्रिंग में आए थे, जो मेरा मामला है) के लिए कैननिकल इकाई प्रतिनिधित्व लाने की कोशिश कर रहे थे, तो आप bif का उपयोग नहीं कर सकते हैं: इसमें शामिल हैं। और फिर मैंने सोचा, शायद यूआरएल स्ट्रिंग एन्कोड करें? 'लेबल लेबल: इसमें" बराक% 20obama "है। कोई पासा नहीं है। घटक भागों को पकड़ने के लिए शायद दो अलग-अलग वक्तव्य? नहीं। :( 'Virtuoso 37000 त्रुटि SP031: SPARQL कंपाइलर: एक से अधिक bif: एक समूह में '$ लेबल' चर के लिए() या समान भविष्यवाणी ' कोई विचार? – sands
@sands आप कर सकते हैं? लेबल bif: '' बराक ओबामा '' (अतिरिक्त उद्धरणों को नोट करें) – MrM