且构网

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

《语义网基础教程(原书第3版)》—— 2.2 RDF:数据模型

更新时间:2022-10-04 12:24:23

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

2.2 RDF:数据模型

RDF中的基本概念包括资源、属性、声明和图。

2.2.1 资源

我们可以认为一个资源是一个对象,我们希望谈论的一个“事物”。资源可以是作者、公寓、网球选手、地点、人、旅馆、查询,等等。每个资源都有一个URI。一个URI可以是一个URL((Uniform Resource Locator,统一资源定位符),或网址)或者另一种唯一的标识符。URI机制不仅被定义为万维网上的位置,还可以是电话号码、ISBN号和地理位置。URI提供了一种机制来无歧义地标识我们想要谈论的一个“事物”。因此,如果想指称一个游泳池(pool),我们可以为其分配一个URI,使它不会和撞球(billiard,pool的另一个词义)或者一群程序员(the pool of programmers)混淆。这称为一词多义问题。
使用URI不必能访问(access)到一个资源。但是使用可以解引用的(dereferenceable)URL作为资源标识符被认为是一种好的做法。它使得用户既可以获取资源本身(比如一张图片),也可以获取资源的进一步描述(比如一个人)。这种做法将贯穿本书。使用URI是RDF背后的一个关键设计方案。它允许全球唯一的命名方案的存在。使用这种机制能够大幅缓解迄今为止困扰分布式数据表示的一词多义问题。

2.2.2 属性

属性是一类特殊的资源,它们描述了资源之间的关系。例如,“friend of”、“written by”和“located in”。和其他资源一样,属性也由URI标识。我们也可以解引用属性的URL来找到它们的描述。

2.2.3 声明

声明断言了资源的属性。一个声明是一个实体–属性(attribute)–取值的三元组,由一个资源、一个属性和一个属性值组成。属性值要么是一个资源,要么是一个文字(literal)。文字是原子值,例如,数字、字符串或日期。我们经常使用主语一词来指称三元组里的实体,而使用宾语来指称其取值。
例如,对于声明“Baron Way Building is located in Amsterdam”,我们可以这么写:
《语义网基础教程(原书第3版)》—— 2.2 RDF:数据模型

注意,我们在这个声明中如何使用URL来标识我们指称的事物。

2.2.4 图

我们也可以使用图形化的方式来书写相同的声明。注意,为了增加可读性,我们在图中不使用URI。
如图2-1所示,带标签的节点通过带标签的边连接。边是有向的,从声明的主语到声明的宾语,声明的属性被标记在边上。节点上的标签是主语和宾语的标识符。一个声明的宾语可以是另一个声明的主语。例如,我们可以说“Amsterdam is a city”。我们可以在图2-2中看见这个图形化结果。
《语义网基础教程(原书第3版)》—— 2.2 RDF:数据模型

这种图形化表示强调了RDF是一个以图为中心的数据模型这一概念。事实上,RDF和人工智能领域中的语义网络(semantic net)类似。我们能够继续扩展有关Baron Way Building信息的图。图2-3展示了RDF图的一个扩展版本。
《语义网基础教程(原书第3版)》—— 2.2 RDF:数据模型

重要的是,这个图可以以一种分布式的方式,由多个不同参与人使用相同的URL来创建。这使得我们可以创建一个允许知识被重用的数据万维网(Web of Data)。例如,如果我们在万维网上发现描述Amsterdam的RDF,我们可以仅通过使用该URL来重用这些信息。事实上,有一组称为链接数据原则(Linked Data principle)的***实践,鼓励我们重用和使信息可用来帮助创建一个全局的图。
1)使用URI作为事物的名称。
2)使用HTTP URI,以便人们可以查询到这些名称。
3)当某人查询一个URI时,使用标准(RDF)来提供有用的信息。
4)包含到其他URI的链接,以便可以发现更多事物。
虽然RDF数据模型不要求我们必须遵循这些原则,但是通过这样做可以使我们从他人贡献的知识中获益。注意,在该例子中,我们已经重用了DBpedia.org提供的信息。你可以沿着这些URL来发现更多关于所指称的概念的信息。

2.2.5 指向声明和图

有时能够指向特定的声明或图的某些部分是很有用的,例如当赋予一个声明一个信念度时,或者标识一个声明从哪里来时。例如,我们可能想要描述一个关于Baron Way Building的位置的声明是由一个叫Frank的人创建的。RDF提供了两种实现机制。
一种称为具体化(reification)。具体化背后的关键思想是引入一个额外的对象,例如LocationStatement,并将它和原来声明中的三个部分通过属性subject、predicate和object关联。在之前的例子中,LocationStatement的主语是BaronWayBuilding,谓语是location,而宾语是Amsterdam。随后我们可以将这个声明作为另一个三元组的主语来定义创建者。图2-4描述了生成的结果图。同样出于展示的原因,完整的URI没有在图2-4中给出。
《语义网基础教程(原书第3版)》—— 2.2 RDF:数据模型

这种相对笨重的方式是必要的,因为RDF中只存在三元组,因此我们不能直接为三元组添加一个标识符(否则就变成了四元组)。正是由于具体化的昂贵代价,在较新版本的RDF标准中引入了命名图的概念。这时,一个显式的标识符(同样是URL)被赋予一个声明或声明集合。然后这个标识符就可以在普通的三元组中引用。这是一种更加直接地定义声明和图的机制。简言之,一个命名图允许圈出一个RDF声明的集合并为这些声明提供一个标识符。2.3.1节第一部分内容提供了一个使用命名图来表示上述具体化声明的例子。

2.2.6 处理更丰富的谓语

我们可以将一个三元组(x, P, y)想成一个逻辑公式P(x, y),其中二元谓词P关联对象x到对象y。事实上RDF只提供了二元谓词(属性)。但是在一些情况下,我们可能需要谓语包含超过两个参数。幸运的是,这样的谓语可以通过一组二元谓词来模拟。我们通过一个包含3个参数的谓语broker来展现这个技术。broker(X, Y, Z)的直观含义是
X是房屋出售人Y和购买人Z之间的中介。
现在介绍一个新的额外的资源home-sale以及二元谓词broker、seller和purchaser。接下来,可以将broker(X, Y, Z )表达为如下形式:
《语义网基础教程(原书第3版)》—— 2.2 RDF:数据模型

虽然拥有3个参数的谓语书写更简洁,使用二元谓词确实简化了整个数据模型。