SPARQL 简介

来源:互联网 发布:js杀破狼歌曲下载 编辑:程序博客网 时间:2024/05/21 06:59

关于 SPARQL 的详细内容,请参考 http://www.w3.org/TR/rdf-sparql-query/#syntaxTerms 。

 

SPARQL 是一种RDF 查询语言。其全称为 SPARQL Protocol and RDF Query Language,是一种递归定义。

本文将用几个简单的例子对 SPARQL 进行简要说明。

一个简单的例子

数据如下:

<http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> "SPARQL Tutorial" .  



 

查询语句如下:

SELECT ?titleWHERE{  <http://example.org/book/book1> <http://purl.org/dc/elements/1.1/title> ?title .}    


那么所得到的查询结果为:

title

"SPARQL Tutorial"

第2个例子

数据如下:

@prefix foaf:  <http://xmlns.com/foaf/0.1/> ._:a  foaf:name   "Johnny Lee Outlaw" ._:a  foaf:mbox   <mailto:jlow@example.com> ._:b  foaf:name   "Peter Goodguy" ._:b  foaf:mbox   <mailto:peter@example.org> ._:c  foaf:mbox   <mailto:carol@example.org> .


查询语句如下:

PREFIX foaf:   <http://xmlns.com/foaf/0.1/>SELECT ?name ?mboxWHERE  { ?x foaf:name ?name .    ?x foaf:mbox ?mbox }


查询结果为:

namembox"Johnny Lee Outlaw"<mailto:jlow@example.com>"Peter Goodguy"<mailto:peter@example.org>

第3个例子

数据如下:

@prefix org:    <http://example.com/ns#> ._:a  org:employeeName   "Alice" ._:a  org:employeeId     12345 ._:b  org:employeeName   "Bob" ._:b  org:employeeId     67890 .


查询使用了另一种查询方式 "Construct" ,之前我们使用的都是 "Select" 方式,并返回一个 RDF 图。查询语句如下:

PREFIX foaf:   <http://xmlns.com/foaf/0.1/>PREFIX org:    <http://example.com/ns#>CONSTRUCT { ?x foaf:name ?name }WHERE  { ?x org:employeeName ?name }


所得结果为:

@prefix org: <http://example.com/ns#> .      _:x foaf:name "Alice" ._:y foaf:name "Bob" .


可以序列化为 RDF/XML格式:

<rdf:RDF    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"    xmlns:foaf="http://xmlns.com/foaf/0.1/"    >  <rdf:Description>    <foaf:name>Alice</foaf:name>  </rdf:Description>  <rdf:Description>    <foaf:name>Bob</foaf:name>  </rdf:Description></rdf:RDF>


其他

Order by 的例子 ---- 按emp 降序排列

PREFIX     :    <http://example.org/ns#>PREFIX foaf:    <http://xmlns.com/foaf/0.1/>PREFIX xsd:     <http://www.w3.org/2001/XMLSchema#>SELECT ?nameWHERE { ?x foaf:name ?name ; :empId ?emp }ORDER BY DESC(?emp)


如果是曾旭则 ASC 可以省略

Instinct 的例子 ---- 去除重复

PREFIX foaf:    <http://xmlns.com/foaf/0.1/>SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }


Offset 与 Limit 的例子 ---- 取出 从10(OFFSET)个之后的5(LIMIT)个数据

PREFIX foaf:    <http://xmlns.com/foaf/0.1/>SELECT  ?nameWHERE   { ?x foaf:name ?name }ORDER BY ?nameLIMIT   5OFFSET  10


关于 SPARQL 的更多内容,请参考 http://www.w3.org/TR/rdf-sparql-query/#syntaxTerms 。

原创粉丝点击