2012-03-27 13 views
7

Ist es möglich, Daten von einem abzufragen, ohne sqarql-Abfragen zu schreiben? Hinzufügen von Eigenschaften zu Ressourcen oder Ressourcen-Modelle können leicht gemacht werden, aber ich habe noch nicht herausgefunden, ob es eine effizientere Art und Weise ist, Daten von einem Model als die Verwendung von Code derjenige unten abfragen:Jena: Wie man Daten vom Modell abfragt?

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

Antwort

5

Sie die Liste * Methoden, die auf einem Jena Modell kann verwendet werden: http://incubator.apache.org/jena/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html

zum Beispiel model.listStatements() oder model.listStatements ((Resource) null, RDF.type, (RDFNode) null) usw.

Ein Beispiel für model.listStatements() finden Sie hier: https://github.com/castagna/jena-examples/blob/995d7acf8fcb3f9a8f7264dfd0902cdddfc00279/src/main/java/org/apache/jena/examples/ExampleAPI_01.java

Siehe auch den Abschnitt über die Jena in Jena Tutorial „ein Modell Abfrage“ Website: http://incubator.apache.org/jena/tutorials/rdf_api.html#ch-Querying%20a%20Model

Ein letzter Kommentar in Bezug auf die Effizienz, die Sie nicht viel Unterschied sehen sollte, in der Tat glaube ich nicht, da ist ein Unterschied. Für jede List * -Methode in Model können Sie eine sehr einfache SPARQL-Abfrage schreiben und Performances selbst vergleichen. Wenn das, was Sie wollen, als eine Methode eines Modells verfügbar ist, dann verwenden Sie es, aber Sie werden bald feststellen, dass SPARQL-Abfragen, wenn Sie mehr tun möchten, prägnanter sein können und Ihnen genau das zurückgeben, was Sie mit weniger Code benötigen .

Verwandte Themen