Archive for the ‘RDFS’ Category

《实用语义网》学习笔记(第6章)

星期一, 三月 15th, 2010
《实用语义网》封面

作者: (美) 亨德勒 / (美) 阿利芒ISBN: 9787115193841 页数: 330定 价: 59出版社: 人民邮电出版社装 帧: 平装出版年: 2009-2-1

第六章 RDF模式(Schema)

本章开始是我真正感兴趣的所在了:本 体建模和本体编码。渐入佳境。

(一)

  1. 数据表达(也是一种知识表达)可以基于多种模型,每 种模型可以有多种方法来表达,每种方法也可能有多种编码模式(Schema,如XML模式,数据库模式等)。模式告诉我们所有数据需要传递和表达的信息 (包括结构和语义)。就RDF来说,也有多种等效的方法,但虽然等效,处理方式可能大相径庭,不同的处理方法可能带来不同的“计算”能力(对于语义Web 来说,也是一种推理能力),以及对应于不同的数学运算方式。
  2. 例如RDF三元组表达,其本质上是图像(节点-连线图),但RDFS更适合 于用集合来表达。点线图的计算和集合的运算是非常不同的,这两种方法可以看成是模型表达的不同。相对说来,集合运算在数学上是非常成熟的。
  3. RDFS 可以看成是领域模型表达成RDF的形式化语言,就是说领域模型中的各类实体关系,都用RDF三元组来表达,写成RDF模式的序列化形式。当然数据实例,也 都是RDF三元组。这一方面降低了RDFS的应用难度(RDF标准在设计时吸取了XMLS的经验),同时却常常使初学者感到迷惑。好在这个迷惑的过程不会 很长。
  4. 所谓推理,在这里实际上只是比“检索”前进了一步,即不仅能检索出已经明确表达的知识,而且能够根据规则,判断出没有“显式”表 达出来的知识。应 用到RDF模式,就是不仅能对Asserted Triples进行查询,也能够对Inferenced Triples进行查询。这本来就是RDFS设计的初衷,当然没有问题。当然,如果RDFS本身的表达有问题,有矛盾,通过工具应该是能够检验出来 的,XML模式也可以进行Validation的检查,RDFS当然也行。
  5. 传统的描述数据的“模式”都不是存在于模式中,或者以模式的 编码方式存 在。例如关系数据库的“模式”,通常是附注文本,或单独的文件,面向对象的对象模型的“模式”也不是以对象的方式进行描述,早期XML文本描述的DTD定 义,也不是合法的XML文件。目前很多数据格式的定义模式一般都采用与数据格式相同的方式,例如通用Lisp的元对象以及Java对象模型的API自定义 表达都是采用自身相同的语言定义模式,XML Stylesheet,以及XML模式,也采用XML方式进行定义。
  6. RDFS引入更多的 “资源”来定义资源和资源之间的关系,定义的这些资源其实只是一个“约定”,本来任何人都可以这样定义,只是W3C作为一个约定,写入了“标准”中去了而 已。
    例如rdf:type只能定义实例的类型,例如《红楼梦》是一本小说:
    [1] ex:红楼梦 rdf:type ex:小说
    其中ex表示定义“红楼梦”和“小说”的命名域。
    如果要定义“小说”(类名)是一种“文学作品”(类名), 就没有相应的rdf资源元素,W3C扩展了一个rdfs:subClassOf,以及rdfs:superClassOf,可以这样定义:
    [2] ex:小说 rdfs:subClassOf ex:文学作品
    或者:
    [3] ex:文学作品 rdfs:superClassOf ex:小说
  7. 当然,要使计算机理解 rdfs:subClassOf和rdfs:superClassOf之间的关系,还需要进一步用到本体定义语言OWL扩展的一个元 素:owl:inverseOf。实际上OWL也是一套对RDF进行扩展的词表,丰富了RDF的语义表达能力。
    继续上面的例子。由[1]和 [2],就可以推出:
    [4] ex:红楼梦 rdf:type ex:文学作品
    其中 rdf:type,rdfs:subClassOf两个资源之间的语义关系是RDF标准中定义(预设)好的(包括与rdf:superClassOf,以 及这两个资源元素与owl:inverseOf之间的关系),因此机器才能自动做出上述推论。
    这样的推理,类似于编程语言中IF/THEN表达的 语句。
    这其实才是RDF推理。

(二)

除了rdfs:subClassOf之外,RDFS还扩展了许多元素,rdfs:subPropertyOf是其中最重要的一个。
类有子类,也有 属性。属性有子属性。
[5]
ex:著 rdfs:subPropretyOf ex:创作
由:
[6] ex:曹雪芹 ex:著 ex:红楼梦
可以得到:
[7] ex:曹雪芹 ex:创作 ex:红楼梦

建模举例:
某图书馆的工作 人员中有职业的图书馆员,外聘的信息技术人员、外包公司的技术人员以及自由职业者,如果要建立他们与图书馆之间的各类用工关系,该如何做?
首先析 出需要描述的关系:合同关系contractsTo,自由职业freeLancesTo,外包公司indirectlyContractsTo,直接聘用 isEmplyedBy,以及笼统的用工关系worksFor。
所有职员与公司之间的这些关系,其实都是“属性”关系,应该用 rdfs.subPrepertyOf建立起联系。
上述五种属性之间的关系,用工关系包括合同用工和直接聘用,合同用工又包括自由职业者合同和外 包公司合同(用词在这里不一定符合中国法律,但语义就是这个意思)。可以作如下表达:
[8]
ex:isEmplyedBy rdfs:subPropertyOf ex:worksFor
ex:contractsTo rdfs:subPropertyOf ex:worksFor
ex:freeLancesTo rdfs:subPropertyOf ex:contractsTo
ex:indirectlyContractsTo rdfs:subPropertyOf ex:contractsTo

这样,如果:
Keven isEmplyedBy TheLibrary
机器可以得到以下推理:
Keven worksFor TheLibrary

如果:
Marcia freeLancesTo TheLibrary
Raizen indirectlyContractsTo TheLibrary
机 器就可以自动做出下面的推理:
Marcia contractsTo TheLibrary
Raizen contractsTo TheLibrary

属性之间的这种关系定义,在面向对象的编程中是没有对应规定的,这一点需要注意。

(三)

RDFS另外有两个重要扩展:rdfs:domain 和rdfs:range,它们也跟“属性(Property)”元素有关:rdfs:domain关乎属性的主语的取值,rdfs:range关乎属性的 宾语(对象)的取值,都是一种约束(限定),或者说提供了对三元组当属性词(谓语)确定之后,用来描述主语和宾语的限定的扩展元素。

举例说明如下:

[9]
如果属性P的值域(domain)为D,x的P属性是y,那么x的类 型一定是D。可以写为:
IF
P rdfs:domain D
and
x P y
THEN
x rdf:type D

[10]
如果属性P的范围(range)为R,x的P属性是y,那么y的类型一定是R。可以写为:
IF
P rdfs:range R
and
x P y
THEN
y rdf:type R

有 了这两个元素,就能够对于取值范围进行约束,从而可以采用规范词表之类的方法进行取值的规范控制。但是RDFS不能描述某一个实例不属于某个类(这在 OWL中得到了扩展),当定义了P的domain和range之后,如果有“x’ P y’”,不论x’或y’取何值,系统都必然地把它们归入预定的domain和range,加入预设的domain和range(例如规范词表或分类法)中 没有x’或y’的实例,就会发生矛盾,需要另外解决。

进一步,结合rdfs:subClassOf,可以有一些更有意思的推理:
如 果某个属性P有值域D,而值域D是D’的子类,则D’也是P的值域。表示如下:
[11]
IF
P rdfs:domain D
and
D rdfs:subClassOf D’
THEN
P rdfs:domain D’
具体举例:网页(D)是网络资源(D’)的子 类,具有URL的HTML页面(P)是网页(属于值域D),那么也一定是网络资源(属于值域D’)。
这里与面向对象的分析和设计似乎相反,类的属 性不是被子类继承,反而被超类获得。这是Web的特性决定的:属性自身就是资源,不专属于特定的类。

属性交集的例子:
[12]
如 果:
属性P ⊆ R ⋂ S
x P y (x的P属性值为y)
则:
x R y (x的R属性值为y);
x S y (x的S属性值为y)。

(四)

例子:
甲图书馆用 Lib1:borrows表示外借图书,乙图书馆用Lib2:checkedOut来表示,一个Web应用要将他们的外借数据合并,可以采用以下方法等同 这两个属性:
Lib1:borrows rdfs:subPropertyOf Lib2:checkedOut
Lib2:checkedOut rdfs:subPropertyOf Lib1:borrows
然后,让这两个属性共同作为一个属性的子属性:
Lib1:borrows rdfs:subPropertyOf ex:hasPossession
Lib2:checkedOut rdfs:subPropertyOf ex:hasPossession
这样,使用ex:hasPossession就可以获取所有两个图书馆 外借图书的数据了。

这种方法可以用来整合多个不同的元数据方案。例如,用DC元数据元素作为“核心集”时,MARC等不同元数据方案中的 诸如ex:author,ex:editor之类的元素,都可以 subPreportyOf dc:creator,就可以支持DC标准作为统一查询的元数据标准了。

不用作推理的RDFS元素还有如下一 些:rdfs:label(给定一个显示 名),rdfs:seeAlso(交叉参考),rdfs:isDefinedBy(定义主体),rdfs:comment(注释)等等。

总结一下:

RDFS是用来描述RDF的模式语言,主要提供了定义类(class)、类与类之间的关系(subClass)、属性 (property)、属性之间关系(subProperty)的方法,并规定了简单的、基于集合理论的类继承规则,以及属性继承规则。可以看出RDFS 对RDF的上述扩展,也是完全基于RDF的(全都是三元组),这也保证了RDFS可以像RDF一样,具有同样的开放性,任何人都可以用来定义任何RDF模 式。

虽然RDFS引入了值域和范围,用来限定资源类的属性取值,增加了RDFS的复杂性,但RDFS仍然是非常简单的,没有多少内容。也因 为此,它的适用面和能力是非常强大的。当然如果要表达更为丰富的语义和推理关系,还需要从规则表达(如OWL和SKOS)和词表(如SKOS、FOAF、 DC等等)两方面进行扩展。任何元数据方案以及本体模式,都是组成语义网标准规范体系中的成员,都是对语义网的贡献。

Tags: OWL, RDFS, 实用语义网, 笔记, 语义Web, 语义技术

Related posts

《实用语义网》学习笔记(1-5章)

星期一, 三月 15th, 2010

下面是看书时随手记下的内容,为了加强印象,特别是看原版书,不记一些东西很快就扔到爪哇国去了。笔记不一定正确,贴在这里供大家批判。

《实用语义网》封面

作者: (美) 亨德勒 / (美) 阿利芒ISBN: 9787115193841 页数: 330定 价: 59出版社: 人民邮电出版社装 帧: 平装出版年: 2009-2-1


第 一章 什么是语义万维网

  1. 这的确是一个很难向普通人解释的问题,我们来看看两位大师是怎么做的。
  2. 首先他们介绍了 本书的主题:关于语义万维网 和本体建模。语义万维网顾名思义,肯定是关于万维网的,而且要表达语义。语义按照一般的解释,就是自然语言所表达的含义。本体建模为什么有必要谈呢,主要 是因为W3C固然搞了一大套东西,但不同的工匠做出的活儿肯定是不同的,本书是要教导你做出漂亮的活,而不是粗糙的、仅仅符合W3C那些定义的活。
  3. 然 后解释了Web的伟大意义,即任何人可以在上面就任何话题说任何话,即AAA口号(Anybody can say Anything about Any topic)。这正是Web的魅力和价值所在。万维网的价值与它参与者的数量和资源数 量成正比,万维网的魅力就在于它是一个不断增长的有机体。那么语义Web又能做什么东东呢?作者举了两个Web应用例子(涉及到四个网站),一个是会议旅 馆信息不同步,一个是冥王星被驱逐出太阳系九大行星行列之后,一些网站的信息同步问题。作者在后文中还会用到这两个例子。
  4. 通过这两个例 子,说明目前的Web是有很大缺陷的,同时说明,语义Web就是要解决这些个问题。作者称之为“聪明的Web和傻Web”的问题。
  5. 接 着作者探讨了如何使Web变得聪明,在现有的Web架构中,你不可能提供一个集中式的管理方法,或者架构,使其“聪明”起来,任何这种企图在开放的、分布 式环境下都是不可能的,不仅是经济上不可能,操作上也不可能。所以作者对“聪明”的Web有一个定义,就是需要把数据在适当的时候,以适当的方式呈现出 来。语义Web的架构只要实现这个,就够了。
  6. 然后作者又对“聪明的程度”作了探讨,聪明并不意味着绝对正确,不可能存在绝对真理,语义 网“容错”是一个关键问题,如何容错,如何继续允许AAA,同时建立自己的过滤和“权威”审定机制,也是这个架构设计中的重要方面。目前主要采用唯一的 URI命名来共存,以及采用RDFS标注来说明概念间的关系。

第二章 语义建模

  1. 首先介绍了模型的概念:对事物的抽象,隐藏细节、反映概貌,以及模型的作用:沟通、解释预测以及协调不同意见。
  2. 模 型描述用自然语言在人和人之间交流,比通过计算机交流,要容易得多。人类的交流通常隐含了很多前提条件(语境),例如知识、文化、科技、宗教背景。当然, 也会因此而造成理解程度的差异。
  3. 整个一章基本上是围绕模型的三个功 能:communication,explanation/prediction,mediating来写,最后着重说明了如何表达异见、以及表达能力有 高有低等问题。

第三章 RDF-语义Web的基础

  1. 首先提出,语义Web所涉及的语义,不同于符号语义学很复杂的东西,而仅仅是为所涉及的“资 源”给出了一个链 接,作为资源名(即URI)。实际上给出了语义Web一个基本假设:链接即语义。有了这样一个URI,任何指代的东西就有了根据,通过这样一个基本的三元 组的建立,使得认知三角形得以成立(实际上是这样一个认知模型),从而提供了逻辑的结构基础(砖块):三元组构成的判断式,从而所有的推理运算可以在此基 础上展开(例如一元谓词逻辑的所有计算,最简单的等同计算,以及通过RDF建立关系链接能够表达的所有关系计算——超类,子类,以及通过OWL描述逻辑能 够进行的更复杂的计算,如“非”等等)。
  2. 本章通过一个莎士比亚戏剧作品的年 表,展示了如何从关系数据库的表单结构表达的隐含语义,转化为分布式Web网络环境上可被获得的三元组链接。这也印证了人们对语义Web的一个通常的说 法:语义Web就是分布式环境下的关系数据库。介绍了表达三元组的技术细节(如说明了采用qname的URI由怎样的两部分组成)。本章的最后提了本书的 第一项“挑战”(Challenge,类似于作业或操练,不过紧跟着就提供了答案和讨论,非常有启发):把一个关系表转化为RDF表达。这是很有特色的一 种写法。最后还讨论了高阶(逻辑)关系和三元组(RDF)的其它表达(序列化)形式:N-Triples, Notation 3(N3), RDF/XML, 空节点(Blank Nodes)

第四章 语义Web应用架构

  1. 首先解释了在这样一本以“建模”为题的著作里,为什么要介绍“架构”(Architecture), 因为这本书同时也 是for working ontologist,要具有实用性。为了解释如何使用,必须要介绍语义Web的高层架构、组成、内容(输入inputs)及来自何处、以及如何用到 RDF的优点、与其他架构的不同之处,等等。
  2. 支持语义网应用的软件主要有以下几类:
    • RDF解析器 (Parser)/序列化工具(Serializer);
    • RDF 库(Store,又称三元组库:Triple Store);
    • RDF 查询引擎(Query Engine);
    • 各种专门应用(Application),如后面介绍的转换器、刮擦器等等。
  3. 目 前实现所有语义Web应用的底层技术还是以关系型数据库为基础的Web三层应用模式,只是其中增加了语义处理的内容,如查询部分需传递SPARQL语句, 处理和存储部分都需要支持RDF三元组数据,等等。
  4. 本 章后面其实没讲什么“架构”,都讲各类语义应用/软件了,例如:转换器converter/刮擦器scraper(指从HTML网页或传统应用中获取语义 信息——通常是RDF数据——的工具,当然可以通过各类微格式或其他准标准文档格式进行“刮擦”,通常需要编写GRDDL来实现);RDF库的互操作解决 方案;查询和提问标准及其与SQL的比较;基于RDF的门户等,最后对于跨库的数据合成(特别是动态合成,类似于Mashup)。
第五章 RDF与推理
  1. 上来就引述第一章讲到“傻瓜数据”时所举的例子:“傻瓜 数据如何基于更多的互联关系而使Web上的应用更聪明”(how a more connected Web infrastructure can result in behavior that lets smart applications perform to their potential)。其实当时也没怎么看懂,姑且继续往下看去。
  2. 基 于RDF的数据整合最大的好处,是保证分布式环境中数据的一致性(consistency)。数据的整合视图可以通过整合数据和整合提问两种方式得到,整 合提问通常需要架构的支持,并且需要适当的提问构建工具/环境以方便构建整合视图。
  3. 前文中“衣物和衬衫”的例子可以用规范词表的形式来 解决,如规定衣物是衬衫的上位概念,这样在查询衣物时,它的所有下位概念都会出来。这也是一种推理。
  4. 著名的语义Web堆栈图已经充分说 明了提供推理支持的语义网架构,这个架构是基于RDF,以及以RDF为基础的描述模式的。
  5. 推理引擎能够判断并未描述出来 的逻辑,不同的引擎判断的能力不同,RDFS和OWL的引擎就有所不同。
  6. 对于RDF库来说,有两种方式支持推理:Asserted triples和Inferenced triples,其区别类似于实时索引和物理索引的区别,极端的情况是,要么把所有能够推理出的三元组全部都罗列出来,放入库中,要么能不放都不放,所有 的三元组查询都通过规则实时导出。前者利用空间节省时间和计算能力,后者利用计算能力而节省了空间却牺牲了时间。对这两种做法进行动态更新时会碰到不同的 问题,在实际应用中,很难说那种更好,一般都采取折中的做法。
Tags: OWL, RDFS, 实用语义网, 笔记, 语义Web, 语义技术

Related posts