2011-06-20 17 views
8

मैं तिल और वर्तुसो ट्रिपलस्टोरस के साथ प्रयोग कर रहा हूं। क्षण में मैं त्रिभुज के लिए आरडीएफ डेटा जोड़ने के लिए तिल जावा एपीआई का उपयोग करता हूं।ट्रिपलस्टोर में आरडीएफ अपडेट करें

मेरे RDF डाटा Videodata, UserData आदि की तरह अलग अलग बातें फिलहाल मैं Triplestore

करने के लिए एक वीडियो की एक RDF (शीर्षक, विवरण, स्थान आदि) जोड़ सकते हैं लेकिन मैं एक अद्यतन कर सकते हैं कैसे का प्रतिनिधित्व करता है दुकान में आरडीएफ?

उदाहरण के लिए यदि मैं तिल के आरईएसटी इंटरफ़ेस का उपयोग करता हूं और अद्यतन आरडीएफ के साथ एक पुट अनुरोध करता हूं, तो स्टोर में सबकुछ पहले हटा दिया जाता है।

जब मैं अद्यतन डेटा के साथ POST का उपयोग करता हूं (उदाहरण के लिए वीडियो का शीर्षक बदल गया है), दोनों शीर्षक (पुराने और नए) संग्रहीत किए जाते हैं।

आप triplestores के साथ कैसे काम करते हैं? शायद मुझे यहां कुछ याद आती है।


संपादित करें:

मैं अब प्रसंग तिल और रेखांकन में गुणी में हर RDF प्रवेश के लिए इस्तेमाल करते हैं। अद्यतन के लिए इस तरह से मैं पहले संदर्भ को साफ़ कर सकता हूं और इसे फिर से जोड़ सकता हूं। चूंकि मैं ट्रिपलस्टोर दोनों के लिए तिल एपीआई का उपयोग करता हूं (हम अभी भी नहीं जानते कि हम किस का उपयोग करने जा रहे हैं), कोड बिल्कुल वही दिखता है। मदद

+0

नोट गुणी तिल प्रदाता प्रलेखन के लिए RDF डेटा जोड़ने पर उदाहरण प्रदान करता है क्वाड स्टोर: http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtSesame2Provider – hwilliams

+0

@hwilliams। हाँ मैंने इसका इस्तेमाल किया। लेकिन मुझे नहीं पता कि एपीआई के साथ स्टोर में आरडीएफ को कैसे अपडेट किया जाए। – superbly

+0

वर्चुसो के पास एक स्पैरल "संशोधित" ऑपरेशन है, जिसमें एक एम्बेडेड डिलीट और डालने का ऑपरेशन एक SQL अद्यतन ऑपरेशन के बराबर करता है जैसा कि http://docs.openlinksw.com/virtuoso/sparqlextensions.html#rdfsparulexamples13 – hwilliams

उत्तर

4

के लिए

ValueFactory f = rep.getValueFactory(); 
URI uri = f.createURI(urn); 
con.clear(uri); 
con.add(reader,this.baseURI, RDFFormat.RDFXML,uri); 

धन्यवाद मैं तुम्हें SPARQL साथ काम कर रहे मान। यदि आप नहीं करते हैं, तो आपको शायद :-)

कई ट्रिपल स्टोर्स SPARQL Update का समर्थन करते हैं, जो SPARQL स्टोर में आरडीएफ ट्रिपल को संशोधित करने के लिए एक भाषा है। यह एसक्यूएल के INSERT, UPDATE, DELETE और इसी तरह की तरह है। मुझे यकीन नहीं है कि तिल अभी तक इसका समर्थन करता है-SPARQL अद्यतन अभी भी एक बहुत ही नया नमूना है जिसे अभी तक अंतिम रूप दिया गया है।

विशेष रूप से यदि आप एक शानदार तरीके से काम करना चाहते हैं, तो इसके बारे में जागरूक होने के लिए एक और उपयोगी बात Named Graphs है। यह विभिन्न ग्राफों में ट्रिपल प्रबंधित करने की अनुमति देता है, ताकि आप डेटा को अलग रख सकें। उदाहरण के लिए, आप अलग-अलग नामांकित ग्राफ में प्रत्येक वीडियो के बारे में ट्रिपल रख सकते हैं, और उसके बाद केवल उस नामित ग्राफ़ को PUT अनुरोध पर अपडेट कर सकते हैं। आप अभी भी सभी नामांकित ग्राफों में संपूर्ण स्टोर से पूछने के लिए SPARQL का उपयोग कर सकते हैं। फिर से मुझे पूरी तरह से यकीन नहीं है कि तिल की आरईएसटी एपीआई नामित ग्राफ तक पहुंच प्रदान करती है। (मैं बहुत यकीन है कि जावा एपीआई करता हूँ, मुझे लगता है कि वे इसे कुछ अलग हालांकि फोन संदर्भ।?)

+0

पर आपके उत्तर के लिए धन्यवाद । अभी भी पता लगाना कि मेरे लिए सबसे अच्छा तरीका क्या है। SPARQL मुझे बाद में किसी भी तरह का उपयोग करना है। तो मैं इसे आज़माता हूं। – superbly

+0

हां तिल नामों का नाम ग्राफ संदर्भ संदर्भ – RobV

+0

इस उत्तर के लिए धन्यवाद। पता नहीं था कि मैं प्रत्येक rdf प्रविष्टि के लिए संदर्भ या ग्राफ का उपयोग कर सकते हैं। यह बहुत उपयोगी था। – superbly

2

तो यह सोचते हैं आप ऐसा तरह मूल RDF एक शीर्षक की अपनी ठोस उदाहरण ले रही है:

:something :title "Original Title" . 

और तुम कुछ की तरह बनना इसे बदलना चाहते: का उपयोग करते हुए तिल के पोस्ट केवल एक नामित ग्राफ (तिल शब्दावली में संदर्भ) के लिए नई जानकारी जोड़ता

:something :title "Updated Title" . 

, महत्वपूर्ण बात यह कोई मौजूदा जानकारी नहीं हटाता है।

आरडीएफ शर्तों में इन दो ट्रिपल विभिन्न तथ्यों का प्रतिनिधित्व करते हैं।तिल (या उस मामले के लिए कोई अन्य त्रिपक्षीय) यह नहीं जानता कि दूसरा ट्रिपल 1 को प्रतिस्थापित करना चाहिए। पारंपरिक एसक्यूएल/रिलेशनल मॉडल से यह काफी अलग है, जहां आप एक संपत्ति को अपडेट करेंगे, जहां आरडीएफ की उचित धारणा नहीं है क्योंकि आप इस तरह के ट्रिपल को संशोधित नहीं कर सकते हैं। आप या तो नए ट्रिपल जोड़ सकते हैं या मौजूदा ट्रिपल को हटा सकते हैं।

अद्यतन व्यवहार प्राप्त करने के लिए आप चाहते हैं कि आपको पुराने ट्रिपल को हटाना होगा (तिल का आरईएसटी एपीआई इसके लिए HTTP डिलीट का समर्थन करता है) और उसके बाद नया ट्रिपल जोड़ता है जो इसे बदल देता है (तिल के पोस्ट ऑपरेशन का उपयोग करें जैसा कि आप वर्तमान में कर रहे हैं)।

वही आपके द्वारा उपयोग किए जाने वाले किसी भी ट्रिपल स्टोर के लिए होगा। जैसे cyrgi आप एक SPARQL अद्यतन समर्थन स्टोर का उपयोग पता चलता है तो आप जारी कर सकते हैं निम्नलिखित (मानता है कि आपके नाम पर रखा गया रेखांकन का उपयोग करें) अद्यतन समाप्ति बिंदु को:

DELETE DATA 
{ 
    GRAPH <http://example.org/graph> { :something :title "Original Title" . } 
}; 
INSERT DATA 
{ 
    GRAPH <http://example.org/graph> { :something :title "Updated Title" . } 
} 
संबंधित मुद्दे