Ped*_*dro 7 java ontology sparql jena
是否可以在Model不编写sqarql-queries 的情况下查询数据?向模型添加资源或资源的属性可以很容易地完成,但是我还没有发现,如果有一种更有效的方法来查询数据,而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();
Run Code Online (Sandbox Code Playgroud)
您可以使用Jena模型上提供的列表*方法:http: //incubator.apache.org/jena/documentation/javadoc/jena/com/hp/hpl/jena/rdf/model/Model.html
例如,model.listStatements()或model.listStatements((Resource)null,RDF.type,(RDFNode)null)等.
你可以在这里找到一个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
最后一点评论,就效率而言,你不应该看到太大差异,实际上我认为没有区别.对于Model中的每个list*方法,您可以编写一个非常简单的SPARQL查询并自己比较性能.如果你想要的是一个模型的方法然后使用它,但你很快就会发现,当你想要做更多的事情时,SPARQL查询可以更简洁,并允许你用更少的代码准确回到你需要的.
| 归档时间: |
|
| 查看次数: |
7610 次 |
| 最近记录: |