2012-01-19 17 views
5

मैं इस तरह बयान स्टोर करने के लिए उपयोग कर रहा हूँ AllegroGraph लागू करने के लिए कैसे के लिए:नियमों को परिभाषित AllegroGraph ट्रिपल और उन्हें

<newsid1 hasAnnotation Gamma> 
<newsid1 hasAnnotation Beta> 

मैं इस कथन है कि कहते हैं पर एक नियम निर्धारित करना चाहते हैं: यदि विषयnewsid1 hasAnnotationया तोGammaयाBeta, तो triplestore कि कहते हैं में एक नया बयान जोड़ने है कि इस विषयhasAnnotation Theta, बयान यानी

<newsid1 hasAnnotation Theta> 

मेरे सवालों का अनुसरण कर रहे हैं:

  1. मैं कैसे Allegro के लिए इस तरह के नियम बना सकते हैं?
  2. मैं इन नियमों को बयानों पर कैसे लागू कर सकता हूं?

उत्तर

4

1) आप इन नियमों को परिभाषित करने के लिए Prolog functors का उपयोग परिभाषित कर सकते हैं। आपके मामले में आप परिभाषित करेंगे।

;; Functors to add triples. 
(<-- (a-- ?s ?p ?o) 
;; Fails unless all parts ground. 
(lispp (not (get-triple :s ?s :p ?p :o ?o))) 
(lisp (add-triple ?s ?p ?o))) 

;; Functors to seek news that should have theta annotation 
(<-- (shouldHaveAnnotationTheta ?news) 
(q- ?news !namespace:hasAnnotation !"Gamma")) 

(<- (shouldHaveAnnotationTheta ?news) 
(q- ?news !namespace:hasAnnotation !"Beta")) 

2) इन समाचार बयान

(select (?news) 
(shouldHaveAnnotationTheta ?news) 
(a-- ?news !namespace:hasAnnotation !"Theta") 
(fail)) 

आप इस कोड को समझने के लिए निम्नलिखित दस्तावेज पढ़ सकते हैं जोड़ने के लिए उसके बाद निम्न prolog क्वेरी (उदाहरण के लिए AGview का प्रयोग करके) चलाएँ:

+0

हैलो, एमेरिक! आपके सहायक उत्तर के लिए धन्यवाद। मैं आपको पूछना चाहता हूं कि क्या एलेग्रोग्राफ पर इस तरह के नियमों को निष्पादित करने के लिए प्रोग्रामेटिक तरीका (जावा भाषा या स्क्रिप्ट भाषा का उपयोग करके कह रहा है)? मेरे पास एक पाइपलाइन है कि एजी में खराब बयान और प्रक्रिया समाप्त होने के बाद, नियम लागू किए जाने चाहिए। फिर से धन्यवाद। विनम्र, फ्लोरिन – florins

+0

अच्छी तरह से आप स्क्रिप्ट या initfile का उपयोग कर सभी functors सर्वर-पक्ष स्टोर कर सकते हैं। इसके बाद आप एलेग्रोग्राफ HTTP API का उपयोग करके नए कथन जोड़ने के लिए कुछ प्रश्न चला सकते हैं। – Aymeric

+0

मैंने इसी तरह की समस्या पर ठोकर खाई है। बात यह है कि, मैं केवल एक तिहाई जोड़ना चाहता हूं अगर यह पहले से मौजूद नहीं है। मैंने जो पढ़ा है, उससे आपके जोड़ने वाले मज़ेदार (ए--) को यह करना चाहिए। मैंने इसे कॉपी किया है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। ट्रिपल जोड़ा जाता है, इससे कोई फर्क नहीं पड़ता कि यह पहले से मौजूद है या नहीं। ये क्यों हो रहा है? मैंने सवाल पोस्ट किया है [यहां] (http://stackoverflow.com/questions/9095983/allegrograph-check-existing-triple) – Dragos

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^