语义网路线图

https://www.w3.org/DesignIssues/Semantic.html

Tim Berners-Lee

日期: 1998 年 9 月

最后修改: $Date: 1998/10/14 20:17:13 $

状态: 尝试给出语义 WWW 架构的高级计划。

编辑状态: 草案。欢迎提出意见。

向上至: 设计问题

摘要

这是一份面向未来的路线图,一份仅通过思想实验进行测试的架构计划。

本文是应要求编写的未来 Web 设计路线图的一部分,视角高度为 20,000 英尺。它从一个需要比概述所能提供的更详细阐述的领域的架构概述中分离出来。

必然地,从 20,000 英尺的高度来看,大的东西似乎只得到了很少的提及。因此,它是架构,是指事物有望如何组合在一起。因此,我们应该认识到,虽然它可能正在缓慢变化,但这仍然是一个活的文件。

本文档是一个计划,旨在实现 Web 数据的一组连接应用程序,以形成一致的逻辑数据网络(语义网)。

引言

Web 被设计成一个信息空间,目标是它不仅对人与人之间的交流有用,而且机器也能够参与和帮助。实现这一目标的主要障碍之一是,Web 上的大多数信息都是为人类消费而设计的,即使它是从一个数据库中派生出来的,而该数据库对其列具有明确定义的含义(至少在某些术语中),但数据的结构对于浏览 Web 的机器人来说并不明显。撇开训练机器像人一样行为的人工智能问题不谈,语义网方法开发了以机器可处理的形式表达信息的语言。

本文档提供了一个路线图——逐步引入技术的顺序,将我们一步步地从今天的 Web 带到一个机器推理无处不在且极其强大的 Web。

它遵循关于 Web 架构的说明,该说明定义了迄今为止已完成的工作的现有设计决策和原则。

机器可理解的信息:语义网

语义网是一个数据网络,在某些方面就像一个全局数据库。创建这样一个基础设施的基本原理在别处给出 [Web 未来谈话等],这里我只概述我所看到的架构。

基本断言模型

在研究语义断言的通用 Web 的可能公式时,极简主义设计原则要求它基于一个具有高度通用性的通用模型。只有当通用模型是通用的时,任何预期的应用程序才能映射到该模型上。通用模型是资源描述框架。

参见 RDF 模型和语法规范

作为通用模型,它非常简单。由于简单,如果没有在模型本身之上分层许多东西,你就无法对模型本身做太多事情。基本模型只包含断言的概念和引用的概念——对断言进行断言。引入这是因为 (a) 反正以后会需要它,(b) 大多数最初的 RDF 应用程序都是用于关于数据的“元数据”,其中关于断言的断言是基本的,甚至在逻辑之前。(因为对于 RDF 的目标应用程序,断言是某些资源描述的一部分,该资源通常是一个隐式参数,断言被称为资源的属性)。

就数学而言,此时的语言没有否定或蕴涵,因此非常有限。给定一组事实,很容易说出对于任何给定问题是否存在证明,因为事实和问题都没有足够的能力使问题变得棘手。

这个级别的应用程序非常多。大多数元数据表示应用程序都可以由这个级别的 RDF 处理。例子包括卡片索引信息(都柏林核心)、隐私信息 (P3P)、样式表与文档的关联、知识产权标签和 PICS 标签。我们在这里谈论的是数据的表示,它通常很简单:不是用于表达查询或推理规则的语言。

这个级别的 RDF 文档没有强大的功能,有时人们不太明白为什么要费心将应用程序映射到 RDF 中。答案是,我们期望这些数据虽然在应用程序中有限且简单,但稍后会与来自其他应用程序的数据组合成一个 Web。运行在整个 Web 上的应用程序必须能够使用一个通用框架来组合来自所有这些应用程序的信息。例如,访问控制逻辑可以使用隐私、组成员资格和数据类型信息的组合来实际允许或拒绝访问。查询稍后可能允许强大的逻辑表达式,引用来自各个领域的数据,在这些领域中,数据表示语言的表达能力不是很强。本文档的目的之一是展示实现这一目标的计划。

模式层

RDF 的基本模型允许我们在黑板上做很多事情,但没有给我们很多工具。它为我们提供了一个断言和引用的模型,我们可以将任何新格式的数据映射到该模型上。

接下来我们需要一个模式层来声明新属性的存在。我们需要同时多说一点。我们希望能够约束它的使用方式。通常我们希望约束它可以应用到的对象的类型。这些元断言使得对文档进行初步检查成为可能。就像在 SGML 中,“DTD”允许人们检查元素是否已在适当的位置使用一样,在 RDF 中,模式将允许我们检查例如驾驶执照是否使用了人名而不是汽车型号作为其“名称”。

我不清楚到底需要引入哪些原语,以及在这个级别上是否可以定义很多有用的语言而不定义下一个级别。目前在这一领域有一个 RDF 模式工作组。模式语言通常对允许的组合进行简单的断言。如果使用 SGML DTD 作为模型,则模式可以使用功能非常有限的语言。用模式语言表达的约束很容易扩展成更强大的逻辑层表达式(下一层),但为了限制功能,人们选择在这一点上不这样做。例如:人们可以在模式中说属性 foo 是唯一的。扩展开来,也就是说,对于任何 x,如果 y 是 x 的 foo,z 是 x 的 foo,那么 y 等于 z。这使用了在这个级别上不可用的逻辑表达式,但这没关系,只要模式语言目前只由专门的模式引擎处理,而不是由通用的推理引擎处理。

当我们用一种语言做这种事情时——我认为这将非常普遍——我们必须小心,确保该语言在逻辑上仍然是定义良好的。稍后,我们可能想要进行推理,而这些推理只能通过理解模式语言的逻辑术语并将其与其他逻辑信息相结合来进行。

转换语言

命名空间工作对可演化性的要求是,人们必须在某种程度上了解通用 RDF,才能遵循将一个 RDF 模式中的文档转换为另一个模式中的文档的规则(人们大概天生就知道如何处理)。

根据最小功率原则,这种语言实际上可以被制成具有蕴涵(推理规则)而没有否定。(这似乎是一个很好的观点,因为实际上人们可以很容易地编写一个规则来定义从语句 A 推断另一个语句 B,而 B 实际上恰好是假的,即使该语言没有办法实际说明“假”。然而,形式上该语言仍然没有编写悖论所需的功能,这让一些人感到欣慰。但是在下面,随着语言变得更具表达力,我们不依赖于固有的做出矛盾陈述的能力,而是依赖于应用程序专门限制特定文档的表达能力。模式提供了一个方便的地方来描述这些限制。)

这一层应用的一个简单例子是,当两个独立构建然后放到 Web 上的数据库通过语义链接链接起来,允许将一个数据库上的查询转换为另一个数据库上的查询时。在这里,有人注意到朋友表中的“where”和地点表中的“zip”的意思相同。其他人记录了地点表中的“zip”与员工表中的“zip”的意思相同,依此类推,如箭头所示。有了这些信息,就可以将搜索任何名为 Fred 且邮政编码为 02139 的员工的范围从员工扩大到包括朋友。所有需要的只是一些 RDF“等价”属性。

逻辑层

那么,下一层是逻辑层。我们需要将逻辑写入文档的方法,以允许诸如以下内容:例如,从一种类型的文档推导出另一种类型的文档的规则;根据一组自洽规则检查文档;以及通过将未知术语转换为已知术语来解决查询。鉴于我们已经在语言中有了引用,下一层是谓词逻辑(非、与等),再下一层是量化(对于所有 x,y(x))。

这个级别的 RDF 应用程序基本上只受想象力的限制。这一层应用的一个简单例子是,当两个独立构建然后放到 Web 上的数据库通过语义链接链接起来,允许将一个数据库上的查询转换为另一个数据库上的查询时。许多似乎需要新语言的东西突然变成了简单地写下正确的 RDF 的问题。一旦你拥有了具有谓词演算和引用的强大功能的语言,那么在为特定应用程序定义新语言时,需要做两件事:

  1. 必须确定接收方必须具有的推理引擎的(有限)能力,并定义预期会被理解的完整 RDF 的子集;
  2. 人们可能希望定义一些缩写函数,以便在受限语言的文档集中有效地传输表达式。

另请参阅,如果不确定:

语义网不是什么——回答一些常见问题解答

下面的地铁地图显示了语义网中的一个关键循环。左侧的 Web 部分显示了如何使用 HTTP 将 URI 转换为具有某种 MIME 类型的位串形式的文档表示。然后将其解析为 XML,然后再解析为 RDF,以生成 RDF 图或逻辑级别的逻辑公式。右侧的语义部分显示了 RDF 图如何包含对 URI 的引用。正是来自密钥的信任与文档中包含的语句的含义相结合,可能会导致语义 Web 引擎取消引用另一个 URI。

证明验证——一种证明语言

RDF 模型没有说明任何关于推理引擎形式的内容,这显然是一个悬而未决的问题,因为没有最终完美的算法来回答问题——或者,基本上,找到证明。然而,在语义网发展的这个阶段,我们不解决这个问题。大多数应用程序证明的构建是根据一些相当受限的规则完成的,而另一方要做的就是验证一般证明。这是微不足道的。

例如,当某人被授予访问网站的权限时,可以向他们提供一个文档,向 Web 服务器解释他们为什么应该拥有访问权限。证明将是一个断言和推理规则的链 [好吧,DAG],并带有指向所有支持材料的指针。

涉及隐私和大多数电子商务的交易也是如此。通过网络发送的文档将用完整的语言编写。但是,它们将受到约束,以便如果查询,结果将是可计算的,并且在大多数情况下它们将是证明。HTTP“GET”将包含客户端有权获得响应的证明。响应将是响应确实是所请求内容的证明。

进化规则语言

逻辑级别的 RDF 已经具有表达推理规则的能力。例如,你应该能够说出这样的话:“如果 x 的组织的邮政编码是 y,那么 x 的工作邮政编码是 y”。如上所述,仅仅在 Web 上散布这样的言论最终会非常有趣,但在短期内不会产生可重复的结果,除非我们限制文档的表达能力来解决特定的应用程序问题。

我们需要 RDF 引擎能够执行的两个基本功能是

  1. 版本 n 实现能够读取足够的 RDF 模式以能够推断如何读取版本 n+1 文档;
  2. A 类应用程序与具有相同或相似功能的 B 类应用程序完全独立地开发,能够读取和处理足够的模式信息以能够处理来自 B 类应用程序的数据。

(参见可演化性文章)

RDF 逻辑级别足以用作制定推理规则的语言。请注意,它没有解决任何特定推理引擎的启发式方法,语义网使推理引擎成为一个更加开放和富有成果的开放领域。换句话说,RDF 将允许你编写规则,但在这个阶段不会告诉任何人以何种顺序应用它们。

例如,如果国会图书馆模式谈论“作者”,而英国图书馆谈论“创建者”,那么一小段 RDF 将能够说,对于任何人 x 和任何资源 y,如果 x 是 y 的(LoC)作者,那么 x 是 y 的(BL)创建者。这是一种解决可演化性问题的规则。处理器在哪里可以找到它?在程序找到版本 2 文档并想要找到将其转换为版本 1 文档的规则的情况下,版本 2 模式自然会包含或指向规则。在对两个独立发明的模式之间的关系进行回顾性记录的情况下,当然可以将指向规则的指针添加到任一模式中,但如果这在(社会上)不切实际,那么我们就有了另一个注释问题的例子。这可以通过第三方索引来解决,可以搜索这些索引以查找两个模式之间的连接。在实践中,搜索引擎当然可以非常有效地提供此功能——你只需向搜索引擎询问对一个模式的所有引用,并检查结果中是否有像这两个模式一样的规则。

查询语言

一种是查询语言。查询可以被认为是对要返回的结果的断言。从根本上说,逻辑级别的 RDF 足以在任何情况下表示这一点。但是,在实践中,查询引擎有特定的算法和索引可用,因此可以回答特定类型的查询。

当然,在实践中可能会开发一种词汇表,它可以通过以下两种方式之一提供帮助:

  1. 它允许用更少的数学页面简洁地表达常见的强大查询类型,或者
  2. 它允许表达某些受约束的查询,这些查询很有趣,因为它们具有一定的可计算性。

SQL 是一种同时做到这两点的语言。

显然,重要的是查询语言必须根据 RDF 逻辑进行定义。例如,要查询服务器以获取资源的作者,人们会要求断言形式为“x 是 p1 的作者”,对于某些 x。要请求所有作者的最终列表,人们会要求一组作者,使得任何作者都在该集合中,并且该集合中的每个人都是作者。等等。

在实践中,Web 上搜索引擎算法的多样性以及 Web 前逻辑系统中的证明查找算法的多样性表明,在语义 Web 中将存在多种形式的代理,能够提供对不同形式查询的答案。

一个有用的步骤是为例如在 Web 的指定子集(例如网站)中搜索到有限深度级别的搜索指定特定的查询引擎。当然,不同的场合可能会有几种选择。

另一个元步骤是查询引擎描述语言的规范——基本上是以一般方式指定引擎可以返回的查询类型的规范。这将为代理跨许多中间引擎链接搜索和推理打开大门。

数字签名

公钥密码学是一项彻底改变了可能性的非凡技术。虽然人们可以将数字签名块作为装饰添加到现有文档中,但迄今为止,尝试将信任逻辑作为推理系统蛋糕上的糖衣的尝试仅限于通用性有限的系统。为了使推理能够考虑信任,通用逻辑模型需要扩展以包含已签名断言的密钥。

像所有逻辑一样,这个基础乍一看可能没有吸引力,直到人们看到了可以在它之上构建什么。这个基础是将密钥作为一等对象引入(其中 URI 可以是公钥的字面值),以及引入关于可归因于密钥的断言的一般推理。

在实现中,这意味着推理引擎必须与签名验证系统绑定。文档的解析不仅会解析成断言树,还会解析成关于谁签署了哪些断言的断言树。对于推理规则,证明验证将检查逻辑,但对于已签署文档的断言,将检查签名。

结果将是一个能够表达和推理各种基于公钥的安全和信任系统之间的关系的系统。

当 RDF 发展到存在证明语言的级别时,数字签名就会变得有趣。但是,它在大多数情况下可以与 RDF 并行开发。

在 W3C 中,数字签名工作的输入来自许多方向,包括 DSig1.0 签名的“pics”标签的经验,以及各种数字签名文档的提交。

术语索引

给定一个全球性的语义断言网络,当前(1998 年)应用于 HTML 页面的搜索引擎技术可能会直接转化为 RDF 对象的索引,而不是单词的索引。这本身将允许更有效地搜索 Web,就好像它是一个巨大的数据库,而不是一本巨大的书。

版本 A 到版本 B 的翻译要求现在已经满足,因此当存在两个数据库时,例如作为(可能是虚拟的)RDF 文件的大数组,那么即使初始模式可能不同,对其等价性的回顾性文档将允许搜索引擎通过搜索两个数据库来满足查询。

未来的引擎

虽然索引 HTML 页面的搜索引擎可以找到许多搜索答案并覆盖 Web 的很大一部分,但它们也会返回许多不合适的答案。此类搜索没有“正确性”的概念。相比之下,逻辑引擎通常能够将其输出限制为可证明是正确答案的输出,但它们无法在大量相互交织的数据中翻找以构建有效答案。要追踪的可能性的组合爆炸一直非常棘手。

然而,搜索引擎取得成功的规模可能会迫使我们重新审视我们在这里的假设。如果未来的引擎将推理引擎与搜索引擎相结合,它可能会兼得两者的优点,并且实际上能够在一定数量的具有非常实际影响的情况下构建证明。它将能够访问包含给定术语的所有出现的非常完整列表的索引,然后使用逻辑来剔除除可用于解决给定问题的所有出现之外的所有出现。

因此,虽然没有什么能让组合爆炸消失,但许多现实生活中的问题可以使用在野外网络上进行的几个(例如两个)推理步骤来解决,其余的推理在给定证明或存在约束和易于理解的可计算算法的领域中。我还期望有一个强大的商业动机来开发能够有效解决特定类型问题的引擎和算法。这可能涉及创建中间结果的缓存,这与今天的搜索引擎的索引非常相似。

虽然仍然没有一台机器可以保证回答任意问题,但回答构成我们日常生活尤其是商业的真正问题的能力可能会非常显着。

本系列文章:

  • 语义网不是什么——回答一些不相信的人的常见问题解答。
  • 可演化性:技术演化语言的属性
  • 从 50,000 英尺看 Web 架构

参考文献

  • CYC 表示语言
  • 知识交换格式 (KIF)
  • @@

致谢

该计划基于与 W3C 团队和各种 W3C 成员公司的讨论。还要感谢 MIT/LCS 的 David Karger 和 Daniel Jackson。

向上至:设计问题

版权声明

Copyright (c) 2024 GaoWei Chang
本文件依据 MIT 许可证 发布,您可以自由使用和修改,但必须保留本版权声明。