美文网首页
RDF 通识说明

RDF 通识说明

作者: 走在成长的道路上 | 来源:发表于2022-01-08 16:56 被阅读0次

RDF 定义

  • R 代表 Resource,即资源,任何可以被唯一标识的对象,都可以称为资源。例如,网页、地点、人、事件、餐馆等;
  • D 代表 Description,也就是说对资源的描述,包括资源属性的描述和资源间关系的描述;
  • F 则是指 Framework,即 RDF 为资源描述提供了描述的语言和模型。

RDF 知识库

RDF 字典(Schema)定义数据建模的元数据项,包含 classproperty 两种类型。

class 表示对象实例,类似面向对象编程中的 classproperty 分为 属性(attribute) 和 关系(relationship) 两类。

RDF 字典的定义自身也是一个 RDF graph, 即 RDF 是自描述的数据模型,是一种 schema-free 的数据模型。

sparql 查询语句类型

下面查询命令使用 d2r-server 启动之后,以某个表结构即可进行测试

语句类型 描述
SELECT 从 RDF 中选择出满足条件的资源或者属性;
CONSTRUCT 根据条件获取满足条件的 Triple 并以此生成一个新的 RDF 数据集;
DESCRIBE 获取用户输入的资源的所有属性描述;
ASK SELECT 的优化版本,它只检查是否存在满足条件的资源或者属性,但不需要全部找出。

SELECT 查询语句

如下以电影库为例进行举例说明

1. 基础语法

# 基础查询语句格式如下所示:
#
# PREFIX  <前缀定义>
# SELECT  [结果字段, ....]
# WHERE   { 条件语句 }  
# ORDER BY [排序字段] DESC/ASC 
# LIMIT 数量
#
SELECT * 
# 填充查询条件
WHERE {    
      ?s ?p ?o
}
# 输出前十条记录
LIMIT 10

2. 多条件查询

# 定义前缀
PREFIX : <http://www.kgdemo.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

# 输出 ?n 属性值
SELECT ?n 
# 填充查询条件
WHERE {    
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s :hasActedIn ?o.
      ?o :movieTitle ?n.
      ?o :movieRating ?r.
}
# 输出前十条记录
LIMIT 10

3. 字段过滤

# 定义前缀
PREFIX : <http://www.kgdemo.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

# 输出 ?n 属性值
SELECT ?n 
# 填充查询条件
WHERE {    
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s :hasActedIn ?o.
      ?o :movieTitle ?n.
      ?o :movieRating ?r.
      # 过滤出评级大于等于 7 的电影
      FILTER (?r >= 7)
}
# 输出前十条记录
LIMIT 10

WHERE 语句中仅 FILTER 后面语句中能使用函数, 常见函数列表查看下面参考链接内容

4. 聚合

# 定义前缀
PREFIX : <http://www.kgdemo.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

# 输出 ?n 并重命名为 ?NAME, 聚合函数为 count 并重命名为 ?NELEMENTS 属性值
SELECT (?n AS ?NAME) (COUNT(?o) as ?NELEMENTS) 
# 填充查询条件
WHERE {    
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s :hasActedIn ?o.
      ?o :movieTitle ?n.
      ?o :movieRating ?r.
      # 过滤出评级大于等于 7 的电影
      FILTER (?r >= 7)
}
GROUP BY ?n
# 输出前十条记录
LIMIT 10

5. 排序

sparql 语句中的正/倒序与 sql 中的是有区别的,如下所示:

# 定义前缀
PREFIX : <http://www.kgdemo.com#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

# 输出 ?n 并重命名为 ?NAME, 聚合函数为 count 并重命名为 ?NELEMENTS 属性值
SELECT (?n AS ?NAME) (COUNT(?o) as ?NELEMENTS) 
# 填充查询条件
WHERE {    
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s :hasActedIn ?o.
      ?o :movieTitle ?n.
      ?o :movieRating ?r.
      # 过滤出评级大于等于 7 的电影
      FILTER (?r >= 7)
}
GROUP BY ?n
# 按评级进行倒序排序,排序方式以函数的方式存在
ORDER BY DESC(count(distinct ?r)) ASC(?n)
# 上句  order by 语句也可以写成  ORDER BY DESC(?NELEMENTS) ASC(?n)
# 输出前十条记录
LIMIT 10

参考

ASK 语句

询问是否真实的语句,存在即返回为 true

# 语句中直接输入 WHERE 条件语句即可
ASK {
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s :hasActedIn ?o.
      ?o :movieTitle ?n.
      ?o :movieRating ?r.
}

CONSTRUCT 查询语句

按条件查询并输出查询结果的所有结构

# 注意这里需要使用 {} 来括起来哦
CONSTRUCT { ?s ?p ?o }
WHERE {
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s ?p ?o
}

参考

DESCRIBE 查询语句

按条件查询并输出查询结果并输出其相应的所有属性描述

DESCRIBE ?s 
WHERE {
      # 查询条件,以 `.` 来表示单个查询条件,单subject 多个条件时可以用 `;` 进行链接
      # 如下表示查询 rdf:type = :Person and :personName = '巩俐' 的人
      ?s rdf:type :Person ; :personName '巩俐'.
      # 再将人与电影进行关联,获取到电影名称和电影的评级
      ?s ?p ?o
}

相关文章

  • RDF 通识说明

    RDF 定义 R 代表 Resource,即资源,任何可以被唯一标识的对象,都可以称为资源。例如,网页、地点、人、...

  • Cypher 通识说明

    Cypher 介绍 Cypher 类似 SQL 语言,也保留了些 SQL 关键词比如 WHERE、ORDER BY...

  • 一个通识书单40+

    通识书单 说明 依照通识教育的目的,针对普通读者尤其是成年人。 不包括文学作品 分享 基于 BitTorrent ...

  • SPARQL

    SPARQL Protocol And RDF Query Language RDF:Resource Descr...

  • 知识图谱-浅谈RDF、OWL、SPARQL

    RDF-语义网体系的基础技术 RDF(Resource Description Framework)即资源描述框架...

  • 通识

  • 通识

    最近迷上了养花,密集两周都在学习养花的知识。 今天学到两个知识特别有趣,也颇有感悟。和大家分享一下。 一 刚买回来...

  • 通识

    现代社会的发展瞬息万变、难以预测,如果一个人只钻研某一个特定的学科领域的话,很有可能会难以发挥价值,迅速被时代淘汰...

  • 通识

    能打通学科的藩篱,披沙拣金,不再是“我注六经”,而是“六经注我”,不是我去臣服于别人的观点,而是让书里的观点为我所...

  • rdf

    完完整整惺惺相惜

网友评论

      本文标题:RDF 通识说明

      本文链接:https://www.haomeiwen.com/subject/lcnecrtx.html