RDF模型与关系模型和面向对象模型的比较

时间:2022-10-30 12:35:40

RDF模型与关系模型和面向对象模型的比较

摘要:本文分析了RDF模型、关系模型和面向对象模型各自的特点,并通过一个实例阐述了三者之间的区别,指出了三者之间的转换方式。

关键词:关系模型 面向对象模型 RDF模型

中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2013)04-0135-01

1 引言

随着语义Web的广泛应用,RDF模型由于建模简单、数据格式无关性等特性成为语义Web应用的主要数据范式。但相比于关系模型和面向对象模型,RDF模型在存储于查询,以及与编程语言结合等方面都存在一些不足。本文讨论这三种模型的特点,通过实例分析了各自的优点及不足,并指出了三种模型通过转换,以适用于语义Web应用的开发。

2 RDF模型与关系模型、面向对象模型的对比分析

2.1 关系模型

关系模型最初由E.F.Codd提出,它构成了广泛使用的关系数据库的理论基础。一般认为关系模型由结构、完整性和定义结构上的操作组成[1]。

2.2 面向对象模型

面向对象模型更倾向于被认为是一种编程范式和建模方式,而不是一种数据模型。但如果从数据的角度看,面向对象模型确可以用来表示和存储数据。

2.3 RDF模型

这个关系名为Person,其主体部分的元组是由属性{SNO:SNO,SNAME:NAME,STATUS:INTEGER, CITY:CHAR}和属性名的取值所构成的集合。可以将Person关系简化成属性名和值的二维表格。如(表1)所示。

表1列出了关系中的主体部分被简化成了属性名和属性值的二维表。二维表中的每个数据行由每个元组的属性值转换而成。

在二维表中,数据行可以被单独抽取出来,比如{‘S1’, ‘Jack’, 20,‘London’}。但在关系中,单独抽取出属性值是没有意义的。

对于Person关系所描述的信息,可以用面向对象模型表示。图1显示了Person关系中的属性的面向对象模型。此时Person关系名变成了Person类名,而各个属性则成了Person类的成员属性。

而对于Person关系中的元组,在面向对象模型中则要表示成类的实例。如图2所示,Person关系中的三个描述个体的元组表示成了面向对象模型中的三个对象。

由于个体是不同的,所以需要跟每个对象命名一个对象名以示区别。

面向对象模型会将各个字段封装到类中去。这是与关系模型不一样的地方。

3 三种模型的转换

前述的三种数据模型之间是可以相互转换的。从语义表达能力讲,RDF模型是强于面向对象模型,而面向对象模型又强于关系模型。因此,从RDF模型转换到面向对象模型,或从面向对象模型转换到关系模型会存在语义丢失的情况。

使用RDF模型表示的数据可以转换成面向对象模型中的对象。比如ActiveRDF[3]方法,根据rdf:type生成相应的对象名,而将充当三元组中谓词的property看作是类中的属性(attribute)。像用常见的FOAF词汇所表示的RDF三元组,都可以通过该方法方便地转换成对象。由于RDF模型与面向对象模型在表达方式的差别,并不能保证这种转换是平滑与完全可行的。比如RDF模型的property并不是固定属于哪一个主体的,任何RDF resource都可以使用。但面向对象模型规定attribute是要从属于某一个类的。这其中的转换就会使得RDF的这种表达能力丢失。

4 结语

本文针对语义Web应用中的RDF模型同其他两种模型:关系模型和面向对象模型进行了对比,指出了RDF可以转换为关系模型存储语义Web应用数据,转换为面向对象模型获取面向对象编程语言的支持,从而构建语义Web应用。

参考文献

[1] C.J.Date,熊建国译.深度探索关系数据库.北京:电子工业出版社,2007.

[2] Cristian Perez de Laborda, Stefan Conrad. Bringing Relational Data into the Semantic Web using SPARQL and Relational.OWL.In Data Engineering Workshops, 2006, pp.55.2006.

上一篇:基于图像处理的印刷网点检测的研究 下一篇:运用集群和分区技术实现多机互备