2012-03-27 13 views
7

¿Es posible consultar datos desde Model sin escribir sqarql-queries? Adición de propiedades a los recursos o recursos a los modelos se puede hacer fácilmente, pero no he encontrado todavía, si hay una manera más eficiente para consultar datos de un Model que el uso de código de la de abajo:Jena: ¿cómo consultar los datos del modelo?

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

Respuesta

5

Usted puede utilizar los métodos lista * disponibles en un modelo Jena: http://incubator.apache.org/jena/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html

Por ejemplo, model.listStatements() o model.listStatements ((Recurso) null, RDF.type, (RDFNode) NULL), etc.

Puede encontrar un ejemplo de model.listStatements() aquí: https://github.com/castagna/jena-examples/blob/995d7acf8fcb3f9a8f7264dfd0902cdddfc00279/src/main/java/org/apache/jena/examples/ExampleAPI_01.java

Véase también la sección "Consultar un modelo" en el tutorial Jena en el sitio web de Jena: http://incubator.apache.org/jena/tutorials/rdf_api.html#ch-Querying%20a%20Model

Un último comentario, en términos de eficiencia no debería ver mucha diferencia, de hecho yo no creo que haya es una diferencia Para cada lista * métodos en el modelo puede escribir una consulta SPARQL muy simple y comparar los rendimientos usted mismo. Si lo que desea está disponible como método de un Modelo, úselo, pero pronto descubrirá que, cuando quiera hacer más, las consultas SPARQL pueden ser más concisas y le permiten obtener exactamente lo que necesita con menos código. .

Cuestiones relacionadas