SPARQL入门(一)SPARQL简介与简单使用
知识图谱(Knowledge Graph)是当前互联网最炙手可热的技术之一,它的典型应用场景就是搜索引擎,比如Google搜索,百度搜索。我们在百度搜索中输入问题“中国银行的总部在哪”,搜索的结果如下:
这便是知识图谱的典型应用,能够直接输出问题的答案。借助知识图谱,能够让搜索引擎更加高效,搜索结果更加精准,给用户带来更好的搜索体验和乐趣。
关于知识图谱的知识点和工具数不胜数,我们在学习时常常会感到无从下手,一片茫然。本文将尝试着介绍知识图谱的几个知识点——RDF、URI、URL和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)组成,看上去很像一个简单的句子。比如:
subject | predicate | object |
---|---|---|
richard | homeTel | (229)276-5135 |
cindy | cindym@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.rqPREFIX 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
输出结果如下:(ex002.ttl文件见之前的描述)
--------------------------------
| craig_email |
================================
| "c.ellis@usairwaysgroup.com" |
| "craigellis@yahoo.com" |
--------------------------------
还可以查询三元组中的其他部分,这里不再讲述,后续会专门讲SPARQL查询语句的。
总结
在知识图谱的工具箱中,有很多图数据库,它们提供了很好的查询语句功能和可视化效果,比如Neo4j, Cayley,这次,我们可以学习下RDF和SPARQL,毕竟,SPARQL的查询能力和推理能力也是很强的哦~
期待下次关于SPARQL的分享~
注意:不妨了解下笔者的微信公众号: Python爬虫与算法(微信号为:easy_web_scrape), 欢迎大家关注~
参考文献
SPARQL百度百科:https://baike.baidu.com/item/SparQL/10956405?fr=aladdin
RDF百度百科:https://baike.baidu.com/item/rdf/5956080
URI百度百科:https://baike.baidu.com/item/URI/16481812
URL百度百科:https://baike.baidu.com/item/url
SPARQL维基百科:https://en.wikipedia.org/wiki/SPARQL
Apache Jena下载页面:http://jena.apache.org/download/index.cgi
书籍: Learning SPARQL,Bob DuCharme,Publisher: O’Reilly Media, Inc.
Learning SPARQL学习网址:http://www.learningsparql.com/
SPARQL入门(一)SPARQL简介与简单使用相关推荐
- Windows通用克隆系统入门基础知识简介
Windows通用克隆系统入门基础知识简介 这里的Windows是指微软的Windows 2000/XP/2003(后文中未经说明的,凡是Windows均指这三种系统):所谓的通用克隆,俗名万能克隆, ...
- SPARQL:Jena搭建SPARQL查询RDF数据
1 Jena搭建SPARQL查询RDF数据 1.1 Jena概要 · SPARQL是W3C的RDF数据工作组设计的一种查询语言和协议,用于RDF数据的查询.经过类似于JDK安装时候的配置,可以在命令行 ...
- Matlab编程入门指南:简介、安装、学习路线和几十个编程案例分析。
一.Matlab编程入门指南:简介.安装.学习路线和几十个编程案例分析. 1.Matlab编程语言是一种广泛应用于科学计算.工程计算.数据分析.统计分析.信号处理等领域的高级数值计算和数据可视化软件. ...
- sparql rdf_使用SPARQL查询RDF数据
sparql rdf 在" 大规模数据集成 :使用RDF创建数据网 "中,您了解了资源描述框架:万维网联盟(W3C)标准,定义了基于图形的模型,该模型允许从几乎无限的来源中获得完全 ...
- Elasticsearch7从入门到精通(简介、部署、原理、开发、ELK)
Elasticsearch7从入门到精通(简介.部署.原理.开发.ELK) 第1章.Elasticsearch简介 1-1.Elasticsearch介绍 Elasticsearch官方网站:http ...
- 教你快速入门ElasticSearch,超详细简单~
教你快速入门ElasticSearch,超详细简单~ 一. 初探ElasticSearch 1.1 什么是ElasticSearch? ElasticSearch,简称为ES,它是一个开源的高扩展的分 ...
- WF4.0入门系列1——创建一个简单的工作流
WF4.0入门系列1--创建一个简单的工作流 打开VS2010,选择文件-新建-项目,选择Workflow项 工作流台应用程序,在名称处输入chapter01,选择合适的位置,这里默认,单击确定. V ...
- Spring AOP 简介以及简单用法
Spring AOP 简介以及简单用法 如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题. 那么AOP是什么呢? 一. AOP 所谓Aop就是 Aspect-Oriented ...
- C语言中怎么用循环统计买法,C语言入门谭浩强版简单选择法冒泡法用数组和for循环进行学生成绩简单统计处理...
C语言入门谭浩强版 简单选择法排序 冒泡法排序 用数组和for循环进行学生成绩简单统计处理 例如:求个人平均分 学科平均分 单科最高分等 简单选择法 #include #define N 10 voi ...
- 重要性采样(Importance Sampling)简介和简单样例实现
重要性采样(Importance Sampling)简介和简单样例实现 在渲染领域,重要性采样这个术语是很常见的,但它究竟是什么呢?我们首先考虑这样的一种情况: 如果场景里有一点P,我们想计算P点的最 ...
最新文章
- java静态代理与动态代理
- 本、硕、博的最大区别是什么?
- Linux vim使用心得--一些高级话题
- Redis:22---客户端API:client、monitor)
- MediaCodec的使用和若干问题处理
- delphi 中 的 Split 函数
- 使用WPF动态资源在Gtk3 C#中进行本地化
- SQLite Tutorial 4 : How to export SQLite file into CSV or Excel file
- ES6学习笔记六(新增数据结构)
- xshell左侧导航栏_Axure教程:(初级)导航中的页面切换
- excel服务器模板修改,勤哲Excel服务器设计查询模板
- 【树莓派C语言开发】实验13:雨滴传感器模块(关联PCF8591)
- 跳频电台的设计与测试挑战
- Oracle 绑定变量窥视
- YouTube儿童版的四种选择(其中不包含令人毛骨悚然的假视频)
- efm32芯片电压_小壁虎PK小蝴蝶(EFM32 vs STM32L)
- Unity游戏运行闪退问题定位与解决(标签:Oops、crashed、System out of memory、UnityEngine.AssetBundle:LoadAsset_Internal)
- 涌泉蜜桔,怎么找到正宗的呢?
- 华为设备Telnet远程登录配置
- 一站式地图服务平台“地图易”——平台架构解析