SPARQL中常见的关键字含义(PREFIX,FILTER,OPTIONAL等)

SPARQL 是一种查询语言,作用于RDF型的数据库,与 SQL 比较相似。RDF的英语全称为Resource Description Framework,中文名称为资源描述框架。RDF是一种描述数据文件储存的数据模型,该数据模型通常描述由三个部分组成的事实,被称为三元组(triples)。三元组由主语(subject)、谓语(predicate)和宾语(object)组成。

之前我对SPARQL也是零零星星了解一点,今天特地将其常见的关键字和使用方法进行了整理,以后再有记得不太清的地方,直接点开这篇文章就好啦!!

放一下官网链接,有需要的伙伴自取哦~

官网教程Apache Jena - SPARQL Tutorial - Data Formats

1. 关键字介绍

(1) PREFIX

有一种速记机制用于使用前缀编写长 URI。所以,长URI可以看做是由前缀机制 - URI 这两个部分组成的。

如上图所示:

前缀其实就是给<http://www.w3.org/2001/vcard-rdf/3.0#> 换个别名vcard,避免每次命名时都要写这个长长的字符。

(2) FILTER 

filter 关键字主要是用来过滤掉不符合条件的数据。filter的使用主要有两种情况:

 ①  字符串匹配

FILTER regex(?x, "pattern" [, "flags"])

例:查询包含“r”或“R”的给定名称:

 flags 参数是可选的。标志“i”表示不区分大小写的模式匹配已完成。

查询结果:

②  测试值

这一步主要是对变量的值进行筛选。

例:查找 24 岁以上人员的姓名 :


 
(3) OPTIONAL

optional可以将部分条件设置为可选的,其主要是用来扩展在查询解决方案中找到的信息。查询时,非可选的条件必须满足。

例: 获取一个人的姓名以及他们的年龄(如果该信息可用)。

查询结果:

(4) DISTINCT

SELECT 结果表单可以采用 DISTINCT 修饰符,该修饰符可确保返回的两个解不相同,相当于给答案进行去重。

(5) ORDER BY

SPARQL 解决方案按表达式(包括自定义函数)进行排序,默认是升序。其中,DESC 表示降序。

(6)  LIMIT

 限制一条查询能返回的答案的数量。  LIMIT 1  : 只返回一个符合约束条件的答案。

DINSTINCT,ORDER BY 和 LIMIT 关键字的使用如下所示:

PREFIX ns: <http://rdf.freebase.com/ns/>

SELECT DISTINCT ?x

WHERE {

FILTER (?x != ns:m.0n2bh)

FILTER (!isLiteral(?x) OR lang(?x) = '' OR langMatches(lang(?x), 'en'))

ns:m.0n2bh ns:tv.tv_program.regular_cast ?y .

?y ns:tv.regular_tv_appearance.seasons ?x .

?y ns:tv.regular_tv_appearance.actor ns:m.01gc7h .

?x ns:tv.tv_series_season.to ?sk0 .

}

ORDER BY DESC(xsd:datetime(?sk0))

LIMIT 1

注:

!isLiteral(?x) : 变量x不是文本

lang(?x):x的语言是空字符串

langMatches(lang(?x), 'en'):x的语言是英文(en)

(7) UNION

UNION表示“或”关系,要求条件1,2当中至少满足其中一个条件。

(8) OFFSET

OFFSET可以使结果在指定的数字后开始。例,OFFSET 5 表示 掠过前四条,从第五条开始。

PREFIX ns: <http://rdf.freebase.com/ns/>

SELECT DISTINCT ?x

WHERE {

FILTER (?x != ns:m.02__x)

FILTER (!isLiteral(?x) OR lang(?x) = '' OR langMatches(lang(?x), 'en'))

ns:m.02__x ns:sports.sports_team.championships ?x .

?x ns:time.event.start_date ?sk0 .

}

ORDER BY xsd:datetime(?sk0)

LIMIT 1

OFFSET 5 

2. 生成结果集的四种方式

SELECT:返回结果表。

CONSTRUCT:基于查询中的模板返回 RDF 图。

DESCRIBE:根据查询处理器配置为返回的内容返回 RDF 图。

ASK :询问布尔查询。

注:SELECT 窗体直接返回解决方案表作为结果集,而 DESCRIBE 和 CONSTRUCT 使用匹配结果来构建 RDF 图。

3.  Tips

查询中每个三元组都以 “.” 结尾(最后一个之后的点可以省略)。 

通常我们可以用SPARQL在web端访问知识图谱,查询符合约束条件的三元组。其次,我们在学习知识图谱问答(KBQA)时,数据集中的每个问题一般都有对应的一个字段“Sparql”。此外,有些数据集,比如GrailQA,还会根据需要将SPARQL 转化为S-expression,所以看懂SPARQL 是很有必要的。最后,希望我们都能掌握SPARQL !! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值