2012-03-27 3 views
7

sqarql-queries를 쓰지 않고 Model에서 데이터를 쿼리 할 수 ​​있습니까? 아래의 하나의 코드를 사용하여보다 Model에서 데이터를 조회 할 수있는보다 효율적인 방법이 있는지, 아직 모델에 자원이나 자원에 대한 속성을 추가하면 쉽게 수행 할 수 있습니다,하지만 난 발견되지 않은 :Jena : 모델에서 데이터를 쿼리하는 방법?

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 ((리소스) NULL, RDF.type (RDFNode) NULL),

: 목록 * A를 예나 모델에 가능한 방법을 사용하여

여기에 model.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 쿼리는보다 간결해질 수 있으며 적은 코드로 정확히 원하는 것을 얻을 수 있습니다. .

관련 문제