2012-03-27 31 views
7

Có thể truy vấn dữ liệu từ Model mà không cần viết các truy vấn sqarql không? Thêm tính đến nguồn lực hay nguồn lực để mô hình có thể được thực hiện một cách dễ dàng, nhưng tôi đã không phát hiện ra chưa, nếu có một cách hiệu quả hơn để truy vấn dữ liệu từ một Model vì sử dụng mã dưới đây:Jena: cách truy vấn dữ liệu từ mô hình?

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(); 

Trả lời

5

Bạn có thể sử dụng các phương pháp danh sách * có sẵn trên một mô hình Jena: http://incubator.apache.org/jena/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html

Ví dụ, model.listStatements() hoặc model.listStatements ((Resource) null, RDF.type, (RDFNode) null) vv

Bạn có thể tìm thấy ví dụ về model.listStatements() tại đây: https://github.com/castagna/jena-examples/blob/995d7acf8fcb3f9a8f7264dfd0902cdddfc00279/src/main/java/org/apache/jena/examples/ExampleAPI_01.java

Xem thêm phần "Truy vấn một mô hình" trong hướng dẫn Jena trên website Jena: http://incubator.apache.org/jena/tutorials/rdf_api.html#ch-Querying%20a%20Model

Một chú thích cuối cùng, về mặt hiệu quả bạn không nên nhìn thấy nhiều sự khác biệt, thực sự tôi không nghĩ rằng có là một sự khác biệt. Đối với mỗi danh sách * các phương thức trong Mô hình, bạn có thể viết một truy vấn SPARQL rất đơn giản và so sánh hiệu suất của chính bạn. Nếu những gì bạn muốn có sẵn như là một phương thức của một Model sau đó sử dụng nó, nhưng bạn sẽ sớm thấy rằng khi bạn muốn làm nhiều hơn, các truy vấn SPARQL có thể súc tích hơn và cho phép bạn lấy lại chính xác những gì bạn cần với ít mã hơn .

Các vấn đề liên quan