2011-08-26 23 views
5

मैं मुख्य रूप से ऐसा करने के लिए रूबी का उपयोग कर रहा हूं लेकिन अब तक हमले की मेरी योजना है निम्नानुसार:आरडीएफए, माइक्रोोडाटा, इत्यादि का विश्लेषण करने और स्टोर को एक समान स्कीमा/शब्दावली (उदाहरण के लिए schema.org) का उपयोग करके वापस प्रदर्शित करने का सबसे अच्छा तरीका क्या है

किसी भी यूआरआई दिए गए डेटा को पार्स करने के लिए रत्न rdf, rdf-rdfa, या तो rdf-microdata या mida का उपयोग करें। मुझे लगता है कि, schema.org की तरह एक समान स्कीमा के लिए नक्शे उदाहरण के लिए इस YAML फ़ाइल जो schema.org करने के लिए डेटा-शब्दावली और OpenGraph के बीच रूपांतरण का वर्णन करने का प्रयास लेने के लिए सबसे अच्छा होगा:

# Schema X to schema.org conversion 
#data-vocabulary 
DV: 
    name:name 
    street-address:streetAddress 
    region:addressRegion 
    locality:addressLocality 
    photo:image 
    country-name:addressCountry 
    postal-code:postalCode 
    tel:telephone 
    latitude:latitude 
     longitude:longitude 
    type:type 
#opengraph 
OG: 
    title:name 
    type:type 
    image:image 
    site_name:site_name 
    description:description 
    latitude:latitude 
    longitude:longitude 
    street-address:streetAddress 
    locality:addressLocality 
    region:addressRegion 
    postal-code:postalCode 
    country-name:addressCountry 
    phone_number:telephone 
    email:email 

मैं कर सकते हैं फिर एक प्रारूप में मिली जानकारी संग्रहीत करें और schema.org वाक्यविन्यास के साथ उन्हें पुनः प्रदर्शित करें।

दूसरा भाग प्रकार निर्धारित कर रहा है। मैं schema.org के बाद अपनी टेबल का मॉडल करूंगा और मैं 'थिंग' (Thing) के प्रकार को जानना चाहता हूं, एक रिकॉर्ड होगा। तो अगर मैं एक ओपेंग्राफ प्रकार 'बार' का विश्लेषण करता हूं, तो मैं इसे 'बारऑरपब' (BarOrPub) स्टोर करता हूं।

क्या ऐसा करने का कोई बेहतर तरीका है? कुछ स्वचालित है? एक समाधान पहले से ही बाहर है? किसी भी इनपुट की सराहना की।

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

RDF::RDFa::Reader.open(url) do |reader| 
     reader.each_statement do |statement| 
      tag = statement.predicate.to_s.split('/')[-1].split('#')[-1] 
      Rails.logger.debug "rdf tag: #{tag}" 
      Rails.logger.debug "rdf predicate: #{statement.predicate}" 
      if all_tags.keys.include? tag 
      Rails.logger.debug "Found mapping for #{statement.predicate} and #{all_tags[tag]}" 
      results[all_tags[tag]] = statement.object.to_s.strip 
      end 
     end 
     end 

उत्तर

4

:

तो मैं ढूँढने रहा है कि यह बहुत अच्छी तरह से पार्स करता है (जहां all_tags टैग मैं कुंजी और schema.org बराबर मूल्य के रूप में के रूप में में दिलचस्पी रखता हूँ भी शामिल है) मूल प्रश्न के लिए, आप सही रास्ते पर हैं। वास्तव में, हम structured-data.org linter में समान चीजें करते हैं। गिटहब रेपो को जांचना आपके लिए उपयोगी हो सकता है। मूल विचार पहचान को प्रारूपित करना और उपयुक्त पाठक (आरडीएफए, माइक्रोोडाटा या जो कुछ भी) चुनना है। एक बार पढ़े जाने के बाद, आपके पास एक ग्राफ होगा। आप ग्राफ में प्रत्येक कथन के माध्यम से भागना चाहते हैं और अपनी तालिका के आधार पर मैप किए गए भविष्यवाणियों और प्रकारों के साथ एक नया आउटपुट ग्राफ़ बनाना चाहते हैं। तो, उदाहरण के लिए, यदि आप डीवी कहते हैं: स्रोत ग्राफ़ में एक अनुमान के रूप में नाम, आप आउटपुट ग्राफ में स्कीमा आउटपुट आउटपुट कर सकते हैं।

प्रकार निर्धारित करने के लिए उपयुक्त आउटपुट प्रकार के साथ आने के लिए मैपिंग टेबल की भी आवश्यकता होगी। ध्यान दें कि ओजीपी वास्तव में rdf का उपयोग नहीं करता है: टाइप, तो आपको ogp के साथ एक कथन ढूंढना होगा: एक rdf टाइप करें और आउटपुट करें: मैप किए गए क्लास के साथ टाइप करें।

पूरी चीज तक पहुंचने का एक और तरीका उल्लू के साथ शब्दावली बनाना होगा: समकक्ष प्रॉपर्टी/समकक्ष क्लास सम्मिलन और मूल ग्राफ में उपयुक्त ट्रिपल जोड़ने के लिए ओडब्लूएल प्रलोभन निष्पादित करना होगा। रुबी का टूलसेट इस बिंदु पर (अभी तक) काफी नहीं है।

+1

सत्यापन के लिए धन्यवाद! वैकल्पिक दृष्टिकोण स्वच्छ और सबसे विश्वसनीय की तरह लगता है। – imorsi

4

Schema.org मैपिंग के संबंध में, हम http://www.w3.org/wiki/WebSchemas पर प्रासंगिक लिंक एकत्रित कर रहे हैं। यदि आप किसी भी नए उत्पाद का उत्पादन करते हैं, तो कृपया उन्हें जोड़ें।

यह भी देखें:

कुछ बिंदु आप 'पर मैपिंग में निस्संदेह दौड़ेंगे जो सरल से परे जाते हैं "यह वही है" या "इसका तात्पर्य है" ट्रिपल पैटर्न।आपको SPARQL क्वेरी का उपयोग करके आगे बढ़ने में सक्षम होना चाहिए, खासकर यदि आपके पास SPARQL इंजन का समर्थन v1.1 है। और अंततः, मैपिंग कार्यों को कभी-कभी कस्टम कोड की आवश्यकता होती है।

+0

वे महान संसाधन हैं, धन्यवाद! – imorsi