本文主要展现下如何使用apache jena对RDF文档进行SPARQL查询html
资源描述框架(Resource Description Framework),一种用于描述Web资源的标记语言。使用XML语法和RDF Schema(RDFS)来将元数据描述成为数据模型。apache
SPARQL(SPARQL Protocol and RDF Query Language),是为RDF开发的一种查询语言和数据获取协议,它是为W3C所开发的RDF数据模型所定义,可是能够用于任何能够用RDF来表示的信息资源。框架
Jena是一个Java工具箱用于开发基于RDF与OWL语义(semantic)Web应用程序。它提供了一个RDF API;ARP,一个RDF解析器;SPARQL,W3C RDF查询语言;一个OWL API;和基于规则的RDFS与OWL接口。ARQ是Jena中的SPARQL查询引擎。maven
<dependency> <groupId>org.apache.jena</groupId> <artifactId>jena-core</artifactId> <version>3.7.0</version> </dependency> <dependency> <groupId>org.apache.jena</groupId> <artifactId>jena-arq</artifactId> <version>3.7.0</version> </dependency>
<?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http://www.example.com/cd#"> <rdf:Description rdf:about="http://www.example.com/cd/EmpireBurlesque"> <cd:artist>Bob Dylan</cd:artist> <cd:country>USA</cd:country> <cd:company>Columbia</cd:company> <cd:price>10.90</cd:price> <cd:year>1985</cd:year> </rdf:Description> <rdf:Description rdf:about="http://www.example.com/cd/Hideyourheart"> <cd:artist>Bonnie Tyler</cd:artist> <cd:country>UK</cd:country> <cd:company>CBS Records</cd:company> <cd:price>9.90</cd:price> <cd:year>1988</cd:year> </rdf:Description> </rdf:RDF>
@Test public void testJenaQuery(){ Model model = ModelFactory.createDefaultModel(); model.read(this.getClass().getClassLoader().getResourceAsStream("demo.rdf"), null); String queryString = "PREFIX cd: <http://www.example.com/cd#> \n " + "SELECT ?name where { ?item cd:artist ?name }"; Query query = QueryFactory.create(queryString); QueryExecution qe = QueryExecutionFactory.create(query, model); ResultSet results = qe.execSelect(); ResultSetFormatter.out(System.out, results, query); }
输出ide
------------------ | name | ================== | "Bonnie Tyler" | | "Bob Dylan" | ------------------
SPARQL是针对RDF的查询语言,相似SQL,可是又不尽相同,略有点学习成本,有待深刻研究下。工具