Java 语义网编程系列五: Jena+sparql实现语义数据查询
Sparql 是语义网的查询语言,是w3c推荐的一个标准,一下演示了之前设计的本体文件的查询,实现了"benz"车拥有者的姓名的查询。
/** * 语义数据查询 * @param spaqrlString * @param queryModel * @param var */ public void queryBySpaqrl( String spaqrlString , Model queryModel , String var ) { Query query = QueryFactory.create(spaqrlString); QueryExecution queryExecution = QueryExecutionFactory.create(query,queryModel); ResultSet resultSet = queryExecution.execSelect(); while(resultSet.hasNext()) { QuerySolution querySolution = resultSet.nextSolution(); RDFNode rdfNode = querySolution.get(var); System.out.println(var +" is " + rdfNode.toString()); } }
Sparql 语句
@Test public void testJenaSparql() { JenaModelSpaqrl jenaModelSpaqrl = new JenaModelSpaqrl(); jenaModel= new JenaModel(); StringBuffer querystringBuffer = new StringBuffer(); querystringBuffer.append("PREFIX s1" + ": <" + defaultNameSpace + ">"); querystringBuffer.append( "select ?name" + " where { " + "?car s1:hasBrand \"Benz\"."+ "?car s1:hasOwner ?person."+ "?person s1:hasName ?name}" ); jenaModelSpaqrl.queryBySpaqrl(querystringBuffer.toString(), jenaModel.createOntologyModel(OntModelSpec.OWL_DL_MEM, pathFile) ,"?name"); }
最终结果
以上内容有任何错误或不准确的地方请大家指正,不喜勿喷!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。