资源描述框架RDF及Turtle

文章目录

1.1 简介

RDF(Resource Description Framework)语义网的标准数据模型,是一个用于描述 Web 上的资源的框架。RDF本身用XML文件的形式表示。

RDF规定了主-谓-宾这种描述形式(in the form of subject-predicate-object triples)来表示资源之间的关系,RDF语句的集合代表了一个标记的、有方向的图。

RDF被用来作为语义网中其他知识表示和本体语言的基础。

资源描述框架RDF及Turtle

; 1.2 格式

  • RDF/XML:最古老的语法,几乎被所有的工具所支持,但在任何方面都不人性化
  • RDF/N3 family:紧凑的、人性化的、非XML的语法:N3、NTriples、Turtle
  • Other XML and non-XML syntaxes:TriX, JSON-LD, etc

1.3 RDF的要求

  • 识别对象和词汇术语的手段(URIs);
  • 区分不同词汇的方法(namespaces and qualified names);
  • RDF语法使用命名空间将URIs缩写为限定名称(QNames)
  • 一个 QName 由一个命名空间前缀、一个冒号和一个本地名称组成
    例如:rdf:type, dc:creator, foaf:Person
  • 命名空间前缀对应于URI前缀 例如:给定URI http://www.w3.org/1999/02/22-rdf-syntax-ns# 的命名空间前缀为rdf,则QName rdf:type 的QName将扩展为 http://www.w3.org/1999/02/22-rdf-syntax-ns#type 。
  • 一种序列化三要素的方法(a data format)。

  • Turtle

Turtle(Terse RDF Triple Language)由于其简单易读,易于编写的特点,成为常见的序列化RDF数据模型的标准。

  • 资源URIs写在尖括号里:http://example.org
  • 字面量写在双引号中:”like this”
  • 三元组以句号结尾:.

  • 空白字符(whitespace)不重要

2.1 语法

2.1.1 简单三元组

字面量作为宾语:

  "Scientific American" .

对于较长的字面量,可以使用三双引号。

  """This is a multi-line
literal""" .

2.1.2 Turtle中的命名空间

使用@prefix定义,使用时不需要加尖括号。

@prefix dc:  .
 dc:creator  .

2.1.3 Base URI

@base 引入了一个基础URI,所有URI片段的标识符都是相对于这个URI扩展的(类似于RDF/XML中xml:base的使用)。

@base  .
@prefix foaf:  .
 foaf:name "John Smith" .

相当于

  "John Smith" .

2.1.4 谓语列表

对于一个主语被多个谓语所引用的情况,它们拥有重复的主语。使用分号 ; 隔开。

@prefix dc: < http://purl.org/dc/elements/1.1/> .
 dc:title "Example Inc. Homepage" ;
                     dc:creator  .

2.1.5 宾语列表

与谓语一样,宾语经常与相同的主语和谓语重复。使用逗号 , 隔开。

@prefix dc: < http://purl.org/dc/elements/1.1/> .
 dc:creator  ,
                                 .

2.1.6 空白节点(bNodes)

有时我们有一些资源,我们不希望用URI来识别它们。这些是空白节点或匿名资源。

资源描述框架RDF及Turtle
@prefix dc: < http://purl.org/dc/elements/1.1/> .
@prefix foaf:  .
 dc:creator [ foaf:name "John Smith" ] .

但是[]语法不足以明确地表示所有包含空白节点的图。例如下面的例子中难以说明这两个空白节点是相同的。

@prefix dc: < http://purl.org/dc/elements/1.1/> .
@prefix foaf:  .
 dc:creator [ foaf:name "John Smith" ] .
 dc:creator [ foaf:name "John Smith" ] .

空白节点导致的歧义可以通过使用node IDs来解决。Node IDs是RDF图的一个特定序列化的本地标识符。

  • Node IDs看起来像带有_(下划线)命名空间前缀的qNames。
  • 例如:. :a123、:foo、 _:bar
  • Node IDs不能从定义图的范围之外被引用

当一个RDF文件被解析和序列化时,Node IDs不能保证保持不变:标识符字符串可能会改变,但图的结构将保持不变。使用Node IDs,上述例子可以改变为:

@prefix dc: < http://purl.org/dc/elements/1.1/> .
@prefix foaf:  .
 dc:creator _:foo .
 dc:creator _:foo .
_:foo foaf:name "John Smith" .

2.1.7 数据类型

许多应用程序需要能够区分不同类型的字面符号,例如:整数、日期与小数。RDF使用XML Schema数据类型。

@prefix dc: < http://purl.org/dc/elements/1.1/> .
@prefix xsd:  .
 dc:date "2020-01-27"^^xsd:date .

RDF支持字面量的语言注释。使用由ISO369-1双字母代码识别的语言:en、zh、fr、de、es。

@prefix dc: < http://purl.org/dc/elements/1.1/> .
 dc:title "Foreword"@en .
 dc:title "Avant-propos"@fr .

2.1.8 Class membership

一个对象在一个类中的成员资格是用rdf:type属性表示的。Turtle让我们用’a’来缩写rdf:type。

@prefix ex:  .
 a ex:Website .

2.1.9 空URI

空URI使用<>表示。关于null URIref的断言是关于RDF图本身的。

@prefix dc: < http://purl.org/dc/elements/1.1/> .
@prefix xsd:  .
<> dc:date "2020-01-26"^^xsd:date ;
   dc:creator  .

2.1.10 集合

集合(rdf:List)是RDF中表达有序组的一种方式。

  • 递归定义:一个集合由集合中的第一个项目和另一个集合组成,后者是剩余的项目。
  • 代表一个空集合的资源 :rdf:nil
  • 类似于Lisp中的cons/car/cdr列表 rdf:first等同于car:一个集合中的第一个项目 rdf:rest相当于cdr:集合的其余部分
  • 不变的:如果不改变集合的形式,就不能改变。

集合在普通RDF中相对不常见,但在OWL的RDF序列化中被广泛使用。

资源描述框架RDF及Turtle

集合的Turtle语法使用圆括号()。

@prefix dc:  .
 dc:creator (

                                   ) .

值得注意的是,这两张图说的是根本不同的事情。在上面这张图中,http://example.org/ 只有一个creator,也就是一个容器。但在下面这张图中http://example.org/有三个creator。因此这张图中的三个宾语也没有特定的顺序。

@prefix dc:  .
 dc:creator  ,
                                 ,
                                 .

Original: https://blog.csdn.net/doublewhite233/article/details/124162390
Author: doublewhitee
Title: 资源描述框架RDF及Turtle

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/555625/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球