1 Jena搭建SPARQL查询RDF数据
1.1 Jena概要
· SPARQL是W3C的RDF数据工作组设计的一种查询语言和协议,用于RDF数据的查询。经过类似于JDK安装时候的配置,可以在命令行运行SPARQL查询,也可以在安装了Jena API之后,在Java程序用使用SPARQL查询。
1.2 Jena环境搭建
· 可以从http://jena.sourceforge.net免费获得Jena的最新版本,或者直接从本站下载:jena-2.6.4.zip。
· 将下载好的jena解压到摸个目录,如C:\soft\develop\jena
· 添加环境变量,鼠标右键单击【我的电脑】-【属性】-【高级】-【环境变量】
■ 添加JDK系统变量PATH -> 值C:\Program Files (x86)\Java\jdk1.7.0_21\bin
■ 添加Jena系统变量PATH -> 值C:\soft\develop\jena\bat
■ 添加Jena根目录JENAROOT ->C:\soft\develop\jena
· 如何上面没执行错误的话,在命令行执行sparql会返回
No query string or query file
如果执行sparql –h(或者sparql –help)就会返回命令sparql的帮助信息。
1.3 执行一个简单的查询
· SPARQL查询语句的执行格式是:
sparql --data= --query=
file是要查询的数据源,RDF文件或者RDF图文件;
query是查询语句文件,以.rq为文件后缀。
· 数据源,一个RDF文件r1.rdf,文档描述一些简单的人名信息,下面是类似三元组形式的数据表示。
xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
Matt Jones
Jones
Matthew
Becky Smith
Smith
Rebecca
John Smith
Smith
Jones
Sarah Jones
Jones
Sarah
· 查询语句q1.rq
SELECT ?x
WHERE { ?x "John Smith" }
· 使用上面的查询语句查询r1.rdf文件中的数据的命令行语句就是
sparql --data=r1.rdf --query=q1.rq
返回结果是:
---------------------------------
| x |
=================================
| |
---------------------------------
· 在执行上面的查询时,要保证数据文件和查询文件在当前目录下,否则命令中应该包括完整路径,即:
sparql --data=c:\sparql\r1.rdf --query=c:\sparql\q1.rq
2 对查询语句和查询结果的理解
· 查询语句包括查询信息的名称以及名称应该符合的条件。条件子句以三元组形式出现,按照的顺序排列。查询条件也成为一个模式(Pattern)。查询的结果实际就是条件三元组与数据文件(或RDF图)中RDF三元组匹配的结果。
· 语句中的 ? 加一个字母表示该字母是一个变量,比如 ?x,在SELECT后面的变量会显示在查询结果中,作为列名称出现。
· 实际上,做到这一步之后,所有的事情只是修改模式,给模式添加一些条件了,非常简单。
2.1 命名空间的简写替代
· 如果查询所有具有名字的实例以及该实例的名字,那么查询语句如下
SELECT ?x ?fname
WHERE {?x ?fname}
· 注意,“?x ?fname”之间是空格,不是逗号。如果有多个模式三元组,那么三元组之间用点号“.”隔开