2012-06-27 28 views
8

मैं sparql क्वेरी से परिणाम प्राप्त करना चाहता हूं और परिणामों में कोई नामस्थान नहीं है। पूर्व:स्पेक्ट्रल क्वेरी परिणाम बिना नामस्थान

Raxit type Name 

मैं इस SPARQL क्वेरी से सीधे परिणाम प्राप्त करना चाहते हैं:

"http://www.xyz.com#Raxit" "http://www.w3.org/1999/02/22-rdf-syntax-ns#type" "http://www.xyz.com#Name" 

तो मैं केवल निम्नलिखित प्राप्त करना चाहते हैं: वहाँ ट्रिपल प्रारूप में परिणाम की तरह है। मैं virtuoso का उपयोग कर रहा हूँ।

क्या यह स्पार्कल से प्राप्त करना संभव है?

कृपया इसके बारे में अपने विचार साझा करें।

अग्रिम में धन्यवाद।

उत्तर

7

यदि आपका डेटा नियमित रूप से है, और आप जानते हैं कि सब-स्ट्रिंग आप चाहते हैं हमेशा एक # चरित्र के बाद होता है, तो आप strafter समारोह SPARQL 1.1 से उपयोग कर सकते हैं। मुझे नहीं पता कि यह Virtuoso के कार्यान्वयन में उपलब्ध है या नहीं।

हालांकि यह सामान्य रूप से एक बहुत ही जोखिम भरा रणनीति है। # चरित्र के बाद सभी यूआरआई को स्थानीय नाम भाग के साथ प्रारूपित नहीं किया गया है। असल में, सामान्य रूप से, एक यूआरआई में कानूनी या उपयोगी स्थानीय नाम नहीं हो सकता है। तो आपको खुद से पूछना चाहिए: आपको ऐसा क्यों लगता है कि आपको इसकी आवश्यकता है? आम तौर पर, एक अर्थपूर्ण वेब एप्लिकेशन पूरे यूआरआई को एक अविभाज्य पहचानकर्ता के रूप में उपयोग करता है। यदि आपकी आवश्यकता वास्तव में यूआई में प्रदर्शित करने के लिए मानव-अनुकूल कुछ के लिए है, तो अपनी क्वेरी rdfs:label या skos:label गुणों को भी देखें। सबसे खराब मामला, मॉडल से उपसर्गों या prefix.cc

+0

पर यूआरआई को क्यू-नेम फॉर्म (यानी prefix:name) को संक्षिप्त करने का प्रयास करें, हां, मुझे इसकी आवश्यकता है। मैं उपयोगकर्ता को डेटा दिखाना चाहता हूं और मैं जावा में स्प्लिट या इंडेक्सफ फ़ंक्शन का उपयोग नहीं करना चाहता हूं। Thats क्यों मैं सीधे sparql क्वेरी से प्राप्त करना चाहता हूँ। – Raxit

+1

मुझे यह अविश्वसनीय लगता है कि इतने कम औजारों के लिए इसका विकल्प है। मुझे लगता है कि आरडीएफ के साथ काम करने वाले लोग टेक्स्ट प्रारूप के साथ शायद ही कभी काम करते हैं? अपाचे जेना का 'आर्क' आउटपुट पूर्ण यूआरआई के बजाए डिफॉल्ट प्रीफिक्स्ड है – olejorgenb

1

इसे प्राप्त करने का सबसे आसान तरीका यह है कि आप अपनी क्वेरी को अपनाने से परेशान न हों, लेकिन केवल परिणाम को पोस्ट-प्रोसेस करने के लिए। Virtuoso के साथ संवाद करने के लिए आप किस क्लाइंट लाइब्रेरी का उपयोग करते हैं, इसके आधार पर आपको आमतौर पर परिणाम का विश्लेषण करने के लिए एपीआई समर्थन मिल जाएगा, मूल्य वापस प्राप्त करें, और प्रत्येक मान के लिए केवल स्थानीय नाम प्राप्त करें (मेरा सुझाव है कि आप URI.getLocalName() विधि या कुछ इसी तरह की खोज करें)।