2011-03-08 28 views
6

डेटाबेस में नोटेशन 3 फ़ाइल द्वारा प्रतिनिधित्व किए गए ट्रिपल को आप कैसे पार्स और लोड करते हैं? मैं Jena और Sesame से कुछ हद तक परिचित हूं, लेकिन ये आरडीएफ या कछुए को संसाधित करने के लिए तैयार थे, पूर्ण नोटेशन 3 नहीं।डेटाबेस में नोटेशन 3 लोड हो रहा है

मुझे एन 3 से निपटने के लिए अपेक्षाकृत कुछ मजबूत उपकरण मिल गए हैं। मैंने जो कुछ पाया है, वे here सूचीबद्ध हैं, और केवल कच्चे पायथन स्क्रिप्ट्स शामिल हैं जो केवल मूल कमांड लाइन क्रियाएं कर सकती हैं और ऐसा लगता है कि कोई मानक पैकेजिंग, वितरण या रखरखाव नहीं है। डिफ़ॉल्ट पायथन लाइब्रेरी notation3.py प्रतीत होता है लेकिन मुझे इसके लिए एक होमपेज नहीं मिला, और इंटरनेट के चारों ओर बिखरे हुए विभिन्न संस्करणों को मिला।

उदाहरण के लिए, कहते हैं कि मैं निम्नलिखित N3 एक वनस्पति वर्गीकरण का प्रतिनिधित्व किया है:

{ 
    [] 
     :genus "Abies" ; 
     :species "alba" ; 
     :name [:value "Silver Fir" ; :usage "common" ; :language "English" ] ; 
     :name [:value "European Silver Fir" ; :usage "common" ; :language "English" ] ; 
     :name [:value "abeto blanco" ; :usage "common" ; :language "Spanish" ] ; 
     :name [:value "abeto plateado" ; :usage "common" ; :language "Spanish" ] ; 
     :name [:value "Edeltanne" ; :usage "common" ; :language "German" ] ; 
     :name [:value "Silbertanne" ; :usage "common" ; :language "German" ] ; 
     :name [:value "Weißtanne" ; :usage "common" ; :language "German" ] ; 
     :stem!:type :erect ; 
     :stem!:height [ :value!:start 30.0 ; :value!:end 50.0 ; :value!:units "m" ] ; 
     :bark!:color :grey ; 
     :bark!:ridges :irregular ; 
     :foliage!:seasonality :evergreen ; 
     :foliage!:type :needle ; 
     :foliage!:arrangement :alternate ; 
     :foliage!:length [ :value!:start 1.0 ; :value!:end 3.0 ; :value!:units "cm" ] ; 
     :foliage!:width [ :value!:start 0.2 ; :value!:end 0.3 ; :value!:units "cm" ] ; 
     :foliage!:color :green ; 
     :foliage!:spiney :FALSE ; 
     :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :brown ] ; 
     :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :yellow ] ; 
     :flower [ :gender :female ; :inflorescence :catkin ; :sense :straight ; :color :pink ] ; 
     :fruit [ :kind :cone ; :color :brown ; ] ; 
} 
:is-a :botanical-classification ; 
:source [ 
    :uri <http://originating/site> ; 
    :name "John Doe" ; 
    :data-collection-date "2005-01-01" ; 
] ; 
:transcribed-by "Al Nonymous" ; 
:transcription-date "2010-09-01" . 

मैं तो मैं मनमाने ढंग से क्वेरी चला सकते हैं एक डेटाबेस में यह (और संभवत: इसी तरह के रिकॉर्ड के हजारों) लोड करने में सक्षम होना चाहता हूँ जैसे, "वर्ष 2010 में आम स्पेनिश नाम वाले रिकॉर्ड किसने लिखे थे?" या "जीनस एक्स से जुड़े औसत फूल रंग क्या हैं?"

क्या वर्तमान में यह वर्तमान अर्थात् वेब उपकरण और एन 3 के साथ व्यावहारिक है?

उत्तर

3

मूल समस्या यह है कि एन 3 हमेशा एक प्रयोगात्मक नोटेशन का था - पूरी भाषा को व्यापक रूप से लागू नहीं किया गया था। The diagram in this document काफी जानकारीपूर्ण है: आपका नमूना ग्राफ अक्षर का उपयोग करता है, और ये व्यापक रूप से कार्यान्वित एन 3 सबसेट के बाहर झूठ बोलते हैं। अब नामित ग्राफ का व्यापक रूप से उपयोग किया जाता है, जेना समेत अधिकांश आरडीएफ सिस्टम में समान जानकारी व्यक्त करना संभव होगा, लेकिन सीधे आपकी इनपुट फ़ाइल को पार्स नहीं करना।

यदि यह मैं था, तो शायद मैं एक भाषा का उपयोग कर एक फ्रंट एंड ट्रांसफॉर्मेशन चरण लिखने की ओर देख रहा हूं, जो रूबी जैसे तारों और टेम्पलेट्स पर अच्छा है। फिर आप अपनी इनपुट फ़ाइलों को उस रूप में अनुवाद कर सकते हैं जो मानक आरडीएफ प्रोसेसर संभाल सकता है। उदाहरण के लिए, ग्राफ़ शाब्दिक जो "अल बेनामी" द्वारा दिए गए बयान को दर्शाता है उसे वर्गीकरण के लिए अल-एक्शन की क्रिया को दर्शाते हुए बीएनओडी में परिवर्तित किया जा सकता है। वैकल्पिक रूप से, आप प्रत्येक ग्राफ को अपने शाब्दिक से निकाल सकते हैं और इसे संश्लेषित ग्राफ नाम के साथ फ़ाइल में सहेज सकते हैं, इस प्रकार आपके पास वर्तमान में नेस्टेड-ग्राफ़ संरचना को संरक्षित किया जा सकता है। इसी तरह, property!path नोटेशन को थोड़ा अधिक वर्बोज़ होने के खर्च पर मानक आरडीएफ में आसानी से लिखा जा सकता है।

वैकल्पिक रूप से, अपने डेटा प्रदाता से आपको आउटपुट देने के लिए कहें जो एक अधिक आसानी से संसाधित रूप में है!