2012-03-27 10 views
7

क्या sqarql-query लिखने के बिना Model से डेटा पूछना संभव है? मॉडल के लिए संसाधनों या संसाधनों के गुण जोड़ना आसानी से किया जा सकता है, लेकिन मैं बाहर नहीं मिला है फिर भी, अगर वहाँ नीचे एक कोड का उपयोग करने से एक Model से डेटा क्वेरी करने के लिए एक अधिक कुशल तरीका है:जेना: मॉडल से डेटा कैसे पूछें?

String sparql = "SELECT ?thing ?str WHERE { " + 
         "?thing a <" + THING + "> . " + 
         "?thing <" + HAS_STRING + "> ?str . " + 
         "FILTER (?str = \"" + s + "\") . }"; 

    Query qry = QueryFactory.create(sparql); 
    QueryExecution qe = QueryExecutionFactory.create(qry, getModel()); 
    ResultSet rs = qe.execSelect(); 

    while(rs.hasNext()) 
    { 
     QuerySolution sol = rs.nextSolution(); 
     RDFNode str = sol.get("str"); 
     RDFNode thing = sol.get("thing"); 

     ... 
    } 

    qe.close(); 

उत्तर

5

आप http://incubator.apache.org/jena/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html

उदाहरण के लिए, model.listStatements() या model.listStatements ((संसाधन) अशक्त, RDF.type, (RDFNode) नल), आदि

: सूची * एक जेना मॉडल पर उपलब्ध तरीकों का उपयोग कर सकते हैं

आप मॉडल.listStatements() का उदाहरण पा सकते हैं: https://github.com/castagna/jena-examples/blob/995d7acf8fcb3f9a8f7264dfd0902cdddfc00279/src/main/java/org/apache/jena/examples/ExampleAPI_01.java

भी देखें अनुभाग जेना वेबसाइट पर जेना ट्यूटोरियल में "एक मॉडल का पता कर रहा": http://incubator.apache.org/jena/tutorials/rdf_api.html#ch-Querying%20a%20Model

एक आखिरी टिप्पणी, दक्षता के मामले में आप ज्यादा अंतर नहीं देखना चाहिए, वास्तव में मैं नहीं लगता है कि वहाँ एक अंतर है मॉडल में प्रत्येक सूची * विधियों के लिए आप एक बहुत ही सरल SPARQL क्वेरी लिख सकते हैं और प्रदर्शन की तुलना कर सकते हैं। यदि आप जो चाहते हैं वह मॉडल की विधि के रूप में उपलब्ध है तो इसका उपयोग करें, लेकिन आपको जल्द ही पता चलेगा कि जब आप और अधिक करना चाहते हैं, तो SPARQL क्वेरी अधिक संक्षिप्त हो सकती है और आपको कम कोड के साथ बिल्कुल वही चीज़ प्राप्त करने की अनुमति मिलती है ।

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