随着大数据概念的飞速发展,海量的数据处理已经成为研究的热点。图数据库技术应运而生,当今较为火热的图数据库软件Neo4j、gStore、AllegroGrap、GraphDB等。Neo4j、gStore这二者分别代表两种不同的类型,Neo4j是以Cypher为查询语言的图数据库代表,底层基于JAVA设计,社区版遵循GPL许可协议,企业版遵循AGPL许可。gStore是以spqrql为查询语言的图数据库,包括含有UNION、OPTIONAL、FILTER和聚集函数的查询,目前有单机版和云端版。
这篇博文的主要目的是介绍一下SPARQL查询语言的基本知识,帮助初学的大家更快上手使用查询。
SPARQL简介
SPARQL的英文全称为SPARQL Protocol and RDF Query Language,是为RDF开发的一种查询语言和数据获取协议,它是为W3C所开发的RDF数据模型所定义,但是可以用于任何可以用RDF来表示的信息资源。最新的版本是2013年3月发布的SPARQL1.1,能够用于查询RDF数据,目前使用该查询语言的软件包括Apache Jena和gStore等。
SPARQL所遵循的语法是Turtle语法,所查询的结果可以输出的格式包含XML、JSON、CSV、TSV四种格式。
SPARQL查询
查询语句的组成,我总结为四个部分
- 命名空间
- 查询部分
- 内容部分
- 限制部分
首先,我们来看一个出自官方文档的简单例子,查询爱丽丝的朋友是否有与史努比同名的。
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE {
<http://example.org/alice#me> foaf:knows [ foaf:name ?name ] .
SERVICE <http://dbpedia.org/sparql> { <http://dbpedia.org/resource/Sn