转:SPARQL入门(一)SPARQL简介与简单使用

SPARQL入门(一)SPARQL简介与简单使用

什么是SPARQL?

SPARQL

  SPARQL的英文全称为SPARQL Protocol and RDF Query Language,是为RDF开发的一种查询语言和数据获取协议,它是为W3C所开发的RDF数据模型所定义,但是可以用于任何可以用RDF来表示的信息资源。它于2008年1月15日正式成为一项W3C推荐标准,于2013年3月发布SPARQL1.1。
  既然SPARQL是为是为RDF开发的一种查询语言,那么什么是RDF呢?

什么是RDF?

  首先,RDF不是一种数据格式。
  RDF的英语全称为Resource Description Framework,中文名称为资源描述框架。RDF是一种描述数据文件储存的数据模型,该数据模型通常描述由三个部分组成的事实,被称为三元组(triples)。三元组由主语(subject)、谓语(predicate)和宾语(object)组成,看上去很像一个简单的句子。比如:

subjectpredicateobject
richardhomeTel(229)276-5135
cindyemailcindym@gmail.com

  以下为Turtle RDF格式的RDF文件,文件名为ex002.ttl,

# filename: ex002.ttl

@prefix ab: <http://learningsparql.com/ns/addressbook#> .

ab:richard ab:homeTel "(229) 276-5135" . 
ab:richard ab:email   "richard49@hotmail.com" . 

ab:cindy ab:homeTel "(245) 646-5488" . 
ab:cindy ab:email   "cindym@gmail.com" . 

ab:craig ab:homeTel "(194) 966-1505" . 
ab:craig ab:email   "craigellis@yahoo.com" . 
ab:craig ab:email   "c.ellis@usairwaysgroup.com" .

#表示注释,@prefix行为前缀行,即为<http://learningsparql.com/ns/addressbook#>取一个前缀ab:,也就是别名,避免每次命名时都要写这个长长的字符,句子最后的.可写可不写,写上后便于阅读。另外,<http://learningsparql.com/ns/addressbook#>是URI,这个后面会介绍。
   之后的每一行,都是一个三元组,分别是主语、谓语和宾语,带有前缀ab:。

URI和URL

  URI和URL是两个相近的概念,但URL只是URI的一种。
  URL就是我们常说的网址,英文全称为Uniform Resource Locators,是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
  URI的英语全称为Uniform Resource Identifier,是统一资源标识符。在RDF三元组中,主语、谓语必须属于某个特定的命名空间,避免相似的名字发生混淆,因此需要使用URI。

如何使用ARQ?

  好了,在了解了上述的基本概念之后,我们需要实践一把,在这里,我们使用ARQ。
  ARQ是SPARQL处理器。它是Apache Jena框架的一部分,是一个基于java的免费软件,其下载地址为:http://jena.apache.org/download/index.cgi。以Linux系统为例,我们下载文件apache-jena-3.11.0.zip,并将解压后的zip文件中的bin目录添加到环境变量中。添加方式如下:

  • vim /etc/profile
  • 在文件末尾添加命令:
export JENA_HOME=你的apache-jena-3.11.0路径
export PATH=$JENA_HOME/bin:$PATH
  • source /etc/porfile
  • 运行命令echo $JENA_HOME,如果能输出你的JENA路径,则表明添加该环境变量成功。

  接着我们写好SPARQL查询语句(关于查询语句,会在后面的文章中介绍),文件名为ex003.rq,内容如下:

# filename: ex003.rq

PREFIX ab: <http://learningsparql.com/ns/addressbook#> 

SELECT ?craig_email
WHERE
{ ab:craig ab:email ?craig_email . }

简单对该查询语句做个说明:PREFIX ab: http://learningsparql.com/ns/addressbook# 表示使用哪个URI,并取别名。后续的查询语句类似于SQL,是对三元组做查询,?craig_email为变量,查询三元组中的宾语,用通俗的话来理解,就是查询craig的电子邮箱是什么?
  运行命令:

arq --data ex002.ttl --query ex003.rq

 

注意:在使用arq命令之前,一定要先用source /etc/porfile命令激活环境,否则会提示找不到arq

 

输出结果如下:(ex002.ttl文件见之前的描述)

--------------------------------
| craig_email                  |
================================
| "c.ellis@usairwaysgroup.com" |
| "craigellis@yahoo.com"       |
--------------------------------

还可以查询三元组中的其他部分,这里不再讲述,后续会专门讲SPARQL查询语句的。

总结

  在知识图谱的工具箱中,有很多图数据库,它们提供了很好的查询语句功能和可视化效果,比如Neo4j, Cayley,这次,我们可以学习下RDF和SPARQL,毕竟,SPARQL的查询能力和推理能力也是很强的哦~
 

 



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值