且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《语义网基础教程(原书第3版)》—— 2.3 RDF语法

更新时间:2022-10-04 08:47:30

本节书摘来自华章出版社《语义网基础教程(原书第3版)》一 书中的第2章,第2.3节,作者:(希)Grigoris Antoniou(荷)Paul Groth(荷)Frank van Harmelen(荷)Rinke Hoekstra ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 RDF语法

我们已经看到了一种RDF语法,即图形化的语法。但是这种语法既不是机器可解释的,也不是标准化的。本节介绍一种标准的机器可解释的语法,称为Turtle,另外还将简要介绍一些其他语法。

2.3.1 Turtle

Turtle(Terse RDF Triple Language)是一种基于文本的RDF语法。Turtle文本文件使用的后缀名是“.ttl”。我们之前已经见到如何使用Turtle写一个声明。下面是一个例子:
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

URL包含在尖括号中。一个声明的主语、属性和宾语依次出现,由句号结尾。事实上,我们能够仅使用这种方法来编写整个RDF图。
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

  1. 文字
    到目前为止,我们已经定义了将资源链接在一起的声明。正如之前讨论的那样,我们也能在RDF中引入文字,即原子值。在Turtle中,我们简单地将值写在引号中,并附上值的数据类型。数据类型告诉我们是否应该将一个值解释为字符串、日期、整型数,还是其他类型。数据类型也使用URL表达。实践中建议使用XML模式定义的数据类型。当使用这些数据类型时,值必须服从XML模式定义。如果一个文字之后没有指定数据类型,则假设数据类型是字符型。下面是一些常见的数据类型以及它们在Turtle中的形式:

《语义网基础教程(原书第3版)》—— 2.3 RDF语法

假设我们想要向图中添加Baron Way Apartment有3个房间。可以将下面Turtle中的声明添加到图中。
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

上述例子相对而言不容易使用。为使其更加清晰,Turtle提供了一些构造子来使书写变得更加容易。

  1. 缩写
    当我们定义词汇表时,我们经常在相同的URI上定义。在例子中,资源Baron Way Apartment和Baron Way Building都定义在了www.semanticwebprimer.org/ontology/apartments.ttl这个URL下。这个URL定义了这些资源的命名空间(namespace)。Turtle使用了这个惯例,允许URL被缩写。它引入了@prefix语法来定义特定命名空间的替代形式。例如,可以用swp作为www.semanticwebprimer.org/ontology/apartment.ttl的替代形式。这种替代称为限定名(qualified name)。以下使用前缀重写了该例子。

《语义网基础教程(原书第3版)》—— 2.3 RDF语法

注意,使用限定名来指称资源时,资源两侧的尖括号被去掉了。其次,我们能够混用这些限定名与常规URL并匹配它们。
Turtle还允许在我们重复使用某些主语的时候不需要再重复书写。在上面的例子中,swp:BaronWayApartment被用作两个三元组的主语。这可以通过在一个声明的结尾处使用一个分号来使书写更加紧凑。例如:
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

如果主语和谓语都被重复使用,我们可以在声明的结尾处使用一个逗号。例如,如果希望扩展该例子,说明Baron Way Building不仅位于Amsterdam还位于Netherlands,可以在Turtle中这样写:
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

最后,Turtle允许我们简写常见的数据类型。例如,数字可以不使用引号来写。如果数字包含一个小数点(例如14.3),那么它们就被解释为小数。如果它们不包含一个小数点(例如1),那么它们就被解释成整型数。这更加简化了该例子:
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

  1. 命名图
    我们之前讨论了指向一组声明的能力。Trig是Turtle的一个扩展,它允许我们表达这个概念。例如,我们可能想说,关于Baron Way Apartment的声明是由一个叫Frank的人创建的,他通过http://www.cs.vu.nl/~frankh来标识。为了实现它,我们将一组想要的声明用花括号括起来并赋予这组声明一个URL。让我们看下面的例子:

《语义网基础教程(原书第3版)》—— 2.3 RDF语法

在这个方法中,位于花括号中但是之前没有URL的声明不是一个特定图的一部分。它称为默认图。

2.3.2 其他语法

除了Turtle之外,还存在其他一些可用于编写RDF的语法。其中有两个标准的语法:RDF/XML和RDFa。

  1. RDF/XML
    RDF/XML是RDF在XML语言中的编码。它允许RDF被已有XML处理工具使用。起初,RDF/XML是RDF的唯一语法。但是,由于Turtle通常更容易阅读,所以作为一种额外标准被采纳。下面展示了一个RDF/XML。主语在一个rdf:Description元素中通过rdf:about定义(包含在尖括号内)。与主语关联的谓语和宾语也包含在rdf:Description元素中。命名空间可以通过XML命名空间结构(xmlns:)被使用。所有的RDF/XML必须被包含在一个rdf:RDF元素中。

《语义网基础教程(原书第3版)》—— 2.3 RDF语法
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

  1. RDFa
    RDF的一个用例是描述或标注HTML网页的内容。为了使其更加简单,引入RDFa语法来帮助实现这个用例。RDFa在HTML标签的属性(attribute)中嵌入RDF。我们使用Baron Way Apartment的一个广告作为例子。

《语义网基础教程(原书第3版)》—— 2.3 RDF语法
《语义网基础教程(原书第3版)》—— 2.3 RDF语法

这个标注将生成和之前Turtle表示的完全一样的RDF。因为RDF被编码在诸如span、paragraph和link之类的标签中,所以在显示HTML页面时不会被浏览器解析。和RDF/XML类似,命名空间使用xmlns声明来编码。一些情况下,必须使用方括号来告诉解析器我们正在使用前缀。主语通过about属性(attribute)来标识。属性通过rel或property属性(attribute)来标识。当一个声明的宾语是一个资源时使用rel,而当一个声明的宾语是文字时使用property。谓语和主语通过使用HTML层次结构来关联。
上述每种RDF语法适用于不同的场景。然而必须意识到尽管可能会使用不同的语法,但它们的底层数据模型和语义是相同的。迄今为止我们已经讨论了如何通过URL标识来编写事物的声明。但是这些声明的含义是什么?一个计算机应该如何解释这些生成的声明?这些问题将在下一节介绍RDF的模式语言时讨论。