RDF图数据模型
RDF资源
1、现实世界中每个概念、实体和事件都可以对应一个资源,可以表示具体的事物也可以是抽象的概念,以及属性;
2、每个资源都用IRI(Internationalized Resource Identifier,国际化资源标识符)进行标识;
3、RDF 允许引入不包含任何IRI 标示的资源,被称为空白结点或者匿名资源,用于标示一种存在变量。空白结点不能用IRI 来全局处理,所以为了区分不同的空白结点,RDF 解析器一般会为每个空白结点分配一个系统生成的内部名。
国际化资源标识符IRI
IRI 是一个用来标识资源的字符串,是数据集中资源的一个唯一的身份ID;当原始的IRI长度过长时,为了方便表达可以引入前缀(prefix)命名空间等方式来简化,以下是常见前缀
前缀 | IRI |
---|---|
rdfs: | http://www.w3.org/2000/01/rdf-schema# |
rdf: | http://www.w3.org/1999/02/22-rdf-syntax-ns# |
xsd: | http://www.w3.org/2001/XMLSchema |
sfn: | http://www.w3.org/ns/sparql# |
dbr: | http://dbpedia.org/resource/ |
dbo: | http://dbpedia.org/ontology/ |
dbp: | http://dbpedia.org/property/ |
RDF三元组
每个资源的一个属性及属性值,或者它与其他资源的一条关系,都被表示成<主体, 谓词, 客体>的三元组形式,一个三元组又称为陈述
- 所谓主体,它是一个资源或者是一个空白节点;
- 所谓属性/谓词,是用来描述资源之间的语义关系,或者描述某个资源和属性值之间的关系;
- 所谓客体,它可以是一个资源,也可以是一个字面值,也可以是一个空白节点
RDF数据集
- 给定资源标识符集合ℐ、空白节点 集合ℬ和字面值ℒ,一条三元组t是 属于(ℐ ∪ ℬ)×ℐ×(ℐ ∪ ℬ ∪ ℒ)的一个元素
- 一个RDF 数据集是(ℐ ∪ ℬ)×ℐ×(ℐ ∪ ℬ ∪ ℒ)的一个子集
RDF图
- 三元组的主体和客体就是RDF 图中的一系列节点
- 一个谓词的资源标识符在同一张图里可能充当节点,也可能充当边
RDF空白节点
空白节点(Blank Node) 是指没有统一资源标识符(IRI)同时在知识图谱数据集外部不需要直接访问的节点
空白节点的引入可以更加方便地表达多元关系和结构化的数据值
RDF Schema
RDF Schema(简称RDFS),用来表达实体与类别,以及类别之间、以及属性与属性之间、属性的定义域、值域之间的关系
RDF 预定义了一些核心概念和核心属性,这些概念并不提供某个具体领域专用的类别和属性,但是RDFS 为定义某个领域的本体概念提供了基础
核心类
- rdfs:Class: 所有类的类
- rdfs:Resouce: 所有资源的类
- rdfs:Literal: 所有字面值的类
- rdfs:Property: 所有属性的类
核心属性
- rdf:type: 连接一个资源和它属于的类别
- rdfs:subClassOf: 连接一个类别和它的父类
- rdfs:subPropertyOf: 连接一个属性和它的子属性
- rdfs:domain: 定义一个属性的作用域(它的主语的类别)
- rdfs:range: 定义一个属性的作用域(它的宾语的类别)
SPARQL查询语言
SPARQL语法
SPARQL的六种查询模式
- 选择查询(SELECT 查询),⽤来从RDF 数据中选择出满⾜条件的值来构造⼀张关系表并返回;
- 构造查询(CONSTRUCT 查询),⽤来从RDF 数据中选择出满⾜条件的值并⽤这些值按条件构造⼀个新的RDF 数据;
- 询问查询(ASK 查询),⽤来从RDF 数据中判定出RDF 数据中是否有满⾜条件的值并返回True/False;
- 描述查询(DESCRIBE 查询),⽤来从RDF 数据中选择出⼀个RDF 数据图来描述某些特点的资源;
- 插⼊语句(INSERT 语句),向RDF 数据中插⼊⼀个或者多个三元组;
- 删除语句(DELETE 语句),从RDF 数据中删除⼀个或者多个三元组。
SPARQL图模式
WHERE子句中表示查询语句的正文部分称为图模式
示例:
SPARQL操作符优先级
- 从大到小:(group)、UNION、AND、OPTIONAL、FILTER
- OPTIONAL操作符是左结合的
SPARQL图模式二叉树
SPARQL结果修饰
- 排序(ORDER BY),⽤来对结果进⾏排序;
SELECT ?x ?label WHERE { ?x rdfs:label ?label } ORDER BY ?label
- 映射(PROJECTION),⽤来从结果中取若干变量组成新的结果;
SELECT ?label WHERE { ?x rdfs:label ?label }
- 去重(DISTINCT),⽤来只返回不同的结果;
SELECT DISTINCT ?label WHERE { ?x rdfs:label ?label }
- 偏移(OFFSET),⽤来使结果在指定的数量后开始;
SELECT ?label WHERE { ?x rdfs:label ?label } OFFSET 2
- 限定结果数量(LIMIT),⽤来对结果数量设置了上限
SELECT ?label WHERE { ?x rdfs:label ?label } LIMIT 3
SPARQL1.1的新特性
- 属性路径(Property Path)
所谓属性路径(Property Path),就是找出RDF 数据上两点间满足属性限制条件的路径。这个属性限制条件允许用属性组成的正则表达式来表达
SELECT ?x WHERE { dbr:James_Watt dbo:influenceBy∗ ?x }
- 联邦查询(Federated Query)
所谓联邦查询(Federated Query),就是允许查询调用远程的其它SPARQL查询接口来与当前的结果进行组合
SELECT ?name WHERE {
dbr:James_Watt dbo:influenceBy ?person .
SERVICE <https://dbpedia.org/sparql> {
?person dbo:name ?name . }
}