Tag Archives: 资源描述框架

笔记 OPENHPI语义网技术 Week 2

公开课请见:https://openhpi.de/

2-1 如何标识事物:URI

  • 一个URI标识了一个资源
  • 一份表达(representation)表达了这个资源
表现(Presentation)和表达(Representation)的区别:
  • 表达包括数据和元数据
  • 表现是这些数据和元数据的具体呈现
  • 表达定义了如何表现

URI概念拆解:

  1. 统一 Uniform:不同类型资源的标识符都是依循一个统一的模式构建出来的
  2. 资源 Resource:资源可以是一切被URI标识的东西
  3. 标识符 Identifier:用来将一个资源与其他资源区分开来
URI的定义:
A Uniform Resource Identifier (URI) defines a simple and extensible schema for worldwide unique identification of abstract or physical resources (RFC 3986).
URI定义了一个简单且可扩展的模式,支持对抽象或实际资源进行全球唯一地标识
一些标识符:
  • 网络:URL、PRN、pURL
  • 出版物:ISBN、ISSN
  • 数字对象:DOI
资源的判别:
判别一个事物是不是信息(资源)的一项重要性质是:这个事物的所有本质特征是否能够通过一个讯息传达出来。
The distinguishing characteristic of [information] resources is that all of their essential characteristics and can be conveyed in a message. —— W3C: Architecture of the World Wide Web, Volume One
资源可以被元数据描述,即使这个资源本身无法在网络上传输,其表达(数据加元数据)却是能够被传递的,而且这个表达能够充分地描述这个资源。
URI包括了:
  1. 地址 (Locator):Uniform Resource Locator (URL, RFC 1738)
    URL可能会改变
  2. 名称 (Name) : Uniform Resource Name (URN, RFC 2141)
    URN 不大会改变
URI的结构: schema"://"[userinfo"@"]host[:port][path]["?"query]["#"fragment]
  • schema: e.g. http, ftp, mailto,...
  • userinfo: e.g. username:password
  • host: e.g. Domain-Name, IPv4/IPv6 Address
  • port: e.g. :80 for standard http port
  • path: e.g. path in file system of WWW server
  • query: e.g. parameters to be passed over to applications
  • fragment: e.g. determines a specific fragment of a document
很重要的一点:
  • 通过URI解引或者内容协商机制将一个资源的URI和该资源的描述文档区分开来。
如果资源的URI不存在那么可以,自己定义URI,但是注意:1避免overlap,2保证描述信息存在

L2-2 如何表现事实(RDF)

对计算机而言,网络是一个平面的、无聊的世界,缺乏意义。这是一个遗憾,事实上,网络上的文档描述了真实的对象和想象的概念,并且赋予了它们之间以特定的关系。例如,一个文档可以描述一个人。一所房屋的授权文档描述了这所房屋,也描述了这所房屋与房屋的主人之间的所有关系。向网络增加语义,这涉及两件事:允许文档包含机器可读形式的信息,以及允许创建包含关系值的链接。只有当我们的网络拥有这额外的一层语义层时, 我们才能使用计算机的威力来帮助我们利用信息,极大地超越我们自己去阅读时的程度。”
Tim Berners-Lee: W3 future directions, Plenary at 1st WWW Conference, 1994, Geneva (Switzerland)
知识表示,一个简单的陈述,在XML中可以有许多种方式来编码:
自然语言:Harald Sack has the phone number ++49 (331) 5509-927
XML:
  1. <phonenr> <owner>Harald Sack</owner> <number>++49 (331) 5509-927</number> </phonenr>
  2. <person name=“Harald Sack“> <phonenr>49 (331) 5509-927</phonenr> </person>
  3. <person name=“Harald Sack“ phone=“49 (331) 5509-927“ />
人们在理解自然语言的这个陈述时,将其分解成主语谓语和宾语
可以用有向图来表达知识
对象——属性——对象
主语——谓语——宾语
两个节点中分别是主语和宾语所标识的对象,而两个节点之间的弧是带有属性的链接,属性代表的是谓语动词。
三层结构:
  1. 第一层:objects 对象 XML XML Schema
  2. 第二层:knowledge about objects对象的知识 RDF RDF Schema  OWL Rule
  3. 第三层:entire world 全局 OWL Rule RDF RDF Schema
第一层只有XML(S)
第二层和第三层是由RDF(S)以及OWL和Rule共同构成的。
RDF资源描述框架拆解
  • 资源 Resource 可以是任何事物,必须被唯一地标识,并且能被解引
  • 描述 Description 资源的描述,通过图的方式表达资源的属性以及资源和其他资源之间的关系
  • 框架 Framework 包括了网络协议(URI、HTTP、XML)、正式的模型(语义模型)、定义了资源之间的关系
采用RDF表达知识,其结果将是一系列的陈述
所有RDF陈述都遵循相同的简单模式:主谓宾
Statements (RDF-Triple三元组):
Resource(URI) + Property(URI) + Object(URI) / Value (Literal)
literal可以是类型值,需要引用特定的命名空间
  • 空节点Blank Nodes:包含了特定的谓语和宾语但是没有提供URI的主语节点
  • 空白节点Empty Nodes:没有从该节点发出的弧的节点
几种序列化方式示例:
N3:

Turtle:是N3的扩展

Turtle支持简写:

RDF XML 序列化

L2-3 如何表现事实(RDF)2

RDF中对象可以是文字值也可以是另一个资源

各种简写的示例,可以见W3C的标准文档来进一步学习

L2-4 如何表现事实 (RDF)3 空白节点和列表

空白节点(Blandk Nodes, Bnodes)可以用来表现多个关系,也可以用来代表那些不需要名称的节点(关节型 auxiliary nodes)
RDF/XML中用rdf:parseType="Resource"来表示空白节点,而Turtle中直接省略
空白节点可以有ID号,方便引用和重用
列表:
  • 容器Container 可以扩展
  • 集合Collections 不可扩展
RDF容器包括:
  • rdf:Bag 不区分元素之间的顺序
  • rdf:Seq 区分元素之间的顺序
  • rdf:Alt   只有一个元素是与应用有关的
集合的示例:

L2-5 如何表现知识(RDF)具体化和RDF数据集成

RDF不允许陈述之间的嵌套,如果要表现:福尔摩斯认为园丁杀死了管家这样的简单知识,

则需要两个陈述:

  1. exv:Gardener exv:hasKilled exv:Butler .
  2. exv:SherlockHolmes exv:supposes ???? .

???部分必须包含第一个陈述,然而却不能采用嵌套

RDF中具体化(Reification)的方法是采用rdf:Statement

因此上例可编码为:

RDF数据集成

将两个不同的数据集集成起来,只需要合并两个数据集中的相同资源即可。

数据集成

 L2-6 如何建模类型和关系? RDFS

需要用RDF Schema来定义数据

RDFS 是RDF词汇描述语言

RDFS为建立RDF陈述创建了一个数据模型

RDFS允许:

  1. 定义类(Class)
  2. 定义属性(Properties)和限制(restrictions)
  3. 定义层次(hierarchies):即子类和超类,子属性和超属性

类:

  • rdfs:Class
  • rdf:Property
  • rdfs:Literal
  • rdfs:Resource
  • rdfs:Datatype
  • rdf:XMLLiteral
  • rdfs:Container
  • rdfs:ContainerMembershipProperty

属性:

  • rdfs:subClassOf
  • rdfs:subPropertyOf
  • rdfs:domain
  • rdfs:range
  • rdfs:seeAlso
  • rdfs:isDefinedBy
  • rdfs:comment
  • rdfs:label

知识的层次

  • RDFS层为T-Box Terminological Knowledge 术语型知识
  • RDF层为 A-Box Assertional Knowledge 推断型知识
RDFS为定义一个简单的本体(即知识表现)定义了一个数据模型
通过RDFS本体,RDF陈述可以被表达

L2-7 RDF(S)中有多少语义?

可以根据超、子属性关系发现新的事实
可以根据类的层次发现实体所属的超类、领域、范围

RDF的序列化格式

1 RDF序列化

RDF并不是一个数据格式,RDF是一个数据模型——是以主语、谓语、宾语的形式描述资源的数据模型。

为了在网络上发布一个RDF图,首先需要采用一个RDF语法对数据进行序列化。也就是,选择那些组成了一个RDF图的三元组,使用一个特定的语法将这些三元组编写进一个文件。

  • 对于一个静态的数据集,这可以是预先进行的
  • 如果数据集是比较动态的,那么可以使按需进行的

W3C制定了两种RDF序列化格式(RDF/XMl和RDFa)的标准,另外,还有一些为满足特定需求的非标准的序列化格式。

2 RDF/XML

RDF/XML即用XML语法来实现RDF图的编码。

RDF/XML的规范文档为 http://www.w3.org/TR/rdf-syntax-grammar/

  • RDF/XML的MIME type是 application/rdf+xml
  • RDF/XML文件的存储格式是.rdf

下面是一个RDF/XML示例:

3 RDFa

RDFa是通过在HTML文档中植入RDF三元组的一种序列化格式。

RDFa的有关W3C文档请见:http://www.w3.org/standards/techs/rdfa#w3c_all

采用这种方法时,RDF数据不是植入到HTML文档的注释中去,而是交织在HTML的文档对象模型(DOM)中。这意味着,页面内现有的内容可以通过修改HTML代码的途径来用RDFa进行标记,从而在网络上揭示结构化的数据。

如果数据的发布者对于基础结构只有相对较少的控制权限,但却能够修改HTML模板,这种情况下RDFa是比较受欢迎的。即使无法采用303 重定向和内容协商机制,也可以采用RDFa,并且植入了RDFa数据后将遵循hash URI的模式。

在现实世界对象以及描述这个现实世界对象之间的区分,是通RDFa的about=属性来实现的。

下面是一个RDFa示例:

4 Turtle

Turtle是一个对RDF数据序列化的纯文本格式。

由于Turtle支持命名空间前缀和各种其他简记符号,Turtle是人工阅读和编写RDF三元组时采用的典型地方式。

详细信息见W3C的Team Submission文档:http://www.w3.org/TeamSubmission/turtle/

下面是一个示例:

5 N-Triples

N-Triples是Turtle的一个子集,减去了例如命名空间前缀和简记字符等功能。

因为所有的URI都必须在每一个三元组里完全规定,结果导致N-Triples是一个带有很多冗余的序列化格式。

但是,这种冗余也同样是N-Triple相对于其他序列化格式的一个优势,因为N-Triple文档可以逐行地被解析,是在加载那些大到不适合放入主存的数据文件时理想方式。这种冗余同样使得N-Triples非常容易被压缩,从而减少交换文件时的网络流量。

因此N-Triples是交换巨大的关联数据转存(dump)时(做备份或镜像)的标准。

下面是一个示例

6 RDF/JSON

采用JSON(JavaScript Object Notation)对RDF数据进行序列化,被最广泛采用的规范是Talis规范。

随着越来越多数量的编程语言(包括例如JavaScript和PHP等主要的网络编程语言)开始对JSON提供原生的支持,这种RDF/JSON格式将对开发者而言十分便利。

以JSON格式发布的RDF数据,网络开发者可以不用安装额外的用于解析和操纵RDF数据的软件函数库就能够访问这些RDF数据。

另外,还有N3这个格式,详细信息可以见:http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/

参考文献:

D. Beckett. RDF/XML Syntax Specification (Revised) - W3C Recommendation. http://www.w3.org/TR/rdf-syntax-grammar/, 2004.

Frank Manola and Eric Miller. RDF Primer. W3C, http://www.w3c.org/TR/rdf-primer/, February 2004.

Ben Adida and Mark Birbeck. Rdfa primer - bridging the human and data webs - w3c recommendation. http://www.w3.org/TR/xhtml-rdfa-primer/, 2008.

David Beckett and Tim Berners-Lee. Turtle - terse rdf triple language. http://www.w3.org/TeamSubmission/turtle/, 2008.