2012-06-17 37 views
7

ANSI SQL में, आप की तरह कुछ लिख सकते हैं:SPARQL में स्ट्रिंग का मिलान?

Select * From DBTable Where DBTable.Description LIKE "MEET" 

या

Select * From DBTable Where DBTable.Description LIKE "%MEET%" 

मैं के साथ ऊपर की SPARQL बराबर लिख रहा है मदद करना चाहते हैं क्या करें।

उत्तर

9

रेगेक्स फ़िल्टर का उपयोग करें। आप यहाँ हैं कि यह दिखता है एक संक्षिप्त ट्यूटोरियल here

पा सकते हैं:

PREFIX ns: <http://example.com/namespace> 

SELECT ?x 
WHERE 
{ ?x ns:SomePredicate ?y . 
    FILTER regex(?y, "YOUR_REGEX", "i") } 

YOUR_REGEXXQuery regular expression language

i की अभिव्यक्ति होना चाहिए एक वैकल्पिक flag है। इसका मतलब है कि मैच मामला असंवेदनशील है।

+1

की आवश्यकता होगी सामान्य खोज के लिए और अधिक कुशल हो में Lucene शैली प्रश्नों को एकीकृत करने की अनुमति देता है एक पूर्ण पाठ खोज विस्तार प्रदान करते हैं जेना अपाचे में चली गई है, कृपया, यहां नई वेबसाइट से लिंक करें: http://jena.apache.org/tutorials/sparql_filters.html – castagna

+0

@castagna धन्यवाद। मैंने यह भी नहीं देखा कि यह Sourceforge था। – toniedzwiedz

4

यदि आपके पास मिलान करने के लिए एक निश्चित स्ट्रिंग है तो आप सीधे अपने ग्राफ पैटर्न में इसका उपयोग कर सकते हैं उदा।

PREFIX ns: <http://example.com/namespace> 

SELECT ?x 
WHERE 
{ ?x ns:SomePredicate "YourString" } 

नोट यह हमेशा क्योंकि पैटर्न मिलान RDF अवधि समानता जो "YourString" का मतलब एक ही अवधि नहीं माना जाता है के रूप में कहते हैं कि "YourString"@en तो एक मुद्दा का उपयोग करता है, तो हो सकता है कि REGEX दृष्टिकोण टॉम पता चलता है

पर आधारित है काम नहीं करता है

इसके अलावा कुछ SPARQL इंजन जो आप अपने SPARQL प्रश्नों जो बेहतर आपके उपयोग के मामले फिट हो सकता है और लगभग निश्चित रूप से जो अन्यथा एक REGEX