1、智能代理和语义 Web 开发智能 WebDaniel J Lewis, 技术传播者/计算机科学家, OpenLink Software简介: 语义 Web 于 2001 年由 Berners-Lee、Hendler 和 Lassila 最初提出,并给出了美好的预期,比如使用代理可以预约门诊、轻松查找最佳的驾驶路线。拟想的系统构建于已广为科学家和代理开发人员所推崇的形式本体之上。虽然他们提出了一些重要观点并给出了技术间的有趣连接,但是他们都忽略了这样一个事实,即如今的 Web 已经转变成了一个文档的 Web。因此,在形式本体和非形式的文档之间需要一个中间途径,即所谓的 Linked Data。结
2、合了代理技术的 Linked Data 非常适于处理语义 Web 数据。本文将简单介绍互连的语义 Web、代理技术和二者综合使用的例子。标记本文!发布日期: 2009 年 3 月 26 日 级别: 中级 其他语言版本: 英文 访问情况 926 次浏览 建议: 0 (添加评论) 平均分 (共 2 个评分 )语义 Web 简介语义 Web 是制作、查询和处理知识的一组工具和框架。语义 Web 背后的关键技术是资源描述框架(RDF),它既可被视为图形(N-三元组图表)知识表示模型,也可被视为面向对象的知识表示模型。要让这个模型成为机器可读的模型,有若干种格式可用(比如 RDF/XML、RDF/N3
3、和 RDF/Turtle)。Semantic Web Activity 页面以及原来的 Semantic Web Education and Outreach 页面上有面向语义 Web 开发新手的大量信息。要获得这些页面的链接,请参见 参考资料 小节。让语义 Web 如此有意义和有用的关键设计特征之一就是跨 Web 数据集间互连数据的确立。Tim Berners-Lee 在其 2006 年发表的一篇名为 “Design Issues: Linked Data” 文章中着重谈到了这点。Linked Data 通过充分利用超文本传输协议(HTTP)确保了所有语义 Web 数据在 Web 上都是可访
4、问的。如今有很多示例 Linked Data 集可用,正如您在 Richard Cyganiak 的 Linking Open Data datasets cloud 一文中看到的(参见 参考资料),这完全得益于 Linking Open Data 社区的努力。回页首智能代理简介综合考虑 Jennings (1999) 以及 Russell 和 Norvig (2003) 的描述,不难理解一个代理就是由架构和程序封装而成的一种计算机系统。 此计算机系统应该: 位于某种环境内 能感知其环境 能在该环境内自主的行动 具备某种设计目标 一个代理系统由 4 个基本部分组成: 性能指标 环境 致动器(A
5、ctuator) 传感器 代理的 4 种基本类型一般地,常在文本中讨论的反应代理有 4 种: 简单反射代理,根据其当前的感知采取行动 基于模型的反射代理,根据其当前的感知和部分历史采取行动 基于目标的代理,使用其当前的感知以及需要(目标)采取行动 基于实用的代理,试图最大化其状态以获得更高的效率 不过,现在有些关于人工智能的时髦书籍将对代理的范围扩充到了其他类型,而这些类型的代理从严格意义上并不是上述所定义的反应代理,其中包括: 界面代理 移动代理 信息代理 学习代理 机器人代理 scheduler 代理每个代理都具有某些特定的行为。scheduler 代理可被视为是一种基于模型的反应代理,它
6、在执行这些行为时会考虑时间。scheduler 行为有很多种。比较简单的一个例子是唤醒行为,此行为会在经过特定超时期限后运行。又比如 ticker 行为,它在每段设定的时期执行一次。searcher 代理searcher 代理是一种具有特定功能的信息代理,用来寻找一个集合内的一个或多个条目。它可作为基于目标或基于用途的代理实现。Web spider 就是一种 searcher 代理,它可搜索可供用户搜索的预索引的页面。根据特定的目标自 builder 代理衍生出的 Searcher 代理还部署在 PubMed 系统内,该系统是美国 National Library of Medicine 提供
7、的一种服务,它包括 1800 多万条对联机医学文献分析和检索系统(MEDLINE)以及其他生命科学刊物中生物医学文章的引用,有些文章可追溯到 20 世纪 50 年代。基于文本的 searcher 代理通常都内置有某种类型的自然语言处理,在某些情况下,还具有隐性语义索引。代理通信如果没有共享知识和经验的通信机制,那么智能的程度将非常有限。这同样适用于代理技术的情况,因为代理技术也是人工智能的一种。Foundation for Intelligent Physical Agents (FIPA) 精心构建了可在多代理系统内使用的标准和建议。这确保了所有代理均具有某些格式的通用语。FIPA 是 In
8、stitute of Electrical and Electronics Engineers (IEEE) 标准组织。Object Management Group (OMG) 具有一些对 FIPA 标准的补充,即 Mobile Agent Facility。还值得一提的是代理需要共享某种特定的词汇表。这通常通过使用 OWL Web 本体语言构建一种本体来实现。面向 Java 编程语言的代理库面向 Java 编程语言的、基于 FIPA 的代理库很多,比如 Telecom Italia 的 Java Agent Development Framework (JADE) 和 IBM 的 Agen
9、t Building and Learning Environment (ABLE)。 回页首语义 Web 上的智能代理以商业为导向的 Web 和学术派的 Web 存在着清晰的差别。商家几千年来就一直在纸媒介上做广告宣传。所以,在 Web 创建之始,他们立即就将其视为宣传推广其产品和服务的又一渠道。Web 随即成为了由人头脑内的设计和创意构造的文档 Web。学术派则另有想法。计算机科学,作为一种学术研究领域,已经进行了长达数十年的人工智能研究,特别是知识工程研究。学术研究的产物有两个:代理技术和语义 Web,前者是作为一种商业性技术提出的,而后者则是一种科学技术。语义 Web 也具有明显的商业
10、益处,但是必须要基于 Tim Berners-Lee 在 2006 年提出的 Linked Data Design Note 中所定义的额外规定。通过将公共商业数据作为 Linked Data 公开,商家不仅可以使其产品或服务更易被找到,而且还能让数据容易被机器阅读,而这恰好是多代理系统所需的。将数据作为 Linked Data 公开成为了一种受追捧的市场营销技巧。语义实现从本体向互连的转移不会阻止 Berners-Lee 等人的辉煌愿景。不过,其进展的方式可能与他们在 2001 年所预期的并不完全符合。得益于 Linked Data,代理现在将能实现跨全球这样一个巨大的图形从一点跟随至另一点
11、。这种转变致使语义 Web 在 2006 年重新受到 Shadbolt 等的关注,也在 2008 年被 Cyganiak 重新启用。回页首Semantic Web 上的代理实例使用代理和语义 Web 能做的事情很多。比如,可以实现: Web 索引代理,将文档转变成正式的基于语义 Web 的知识 个人代理,使用正式的语义 Web 知识库来预定假期甚至进行门诊预约 多代理系统,能在自己的社区执行操作以构建和维护额外的 Linked Data 集 对于本文,我使用 JADE 框架和 DBpedia Linked Data Set 创建了一个简单示例。它是一个单代理系统,一经激活即可传递两个纯文本参数
12、(一个对象名称及它的一个属性名称),然后搜索 DBpedia 数据集查找结果(属性值)。代理系统一般使用多种技术构建。对于本例而言,我使用了一种最简单的要求、分析、设计和开发流程。要求要求声明给出了对此代理系统预期功能的简要描述。在本例中,系统应该能够接受名词和该名词的一个属性键,搜索 Web 上可用的 Linked Open Data 并提供该属性的值。 清单 1 例举了此系统的可能输出。清单 1:所要求系统的示例输出Noun input: Bob MarleyAttribute key Date of BirthAgent is fetching. Attribute value: 194
13、5-02-06分析对于本例,我使用角色模型的分析方法,角色模型是 Gaia Agent Design Methodology(参见 参考资料)内提到的一种模型。它描述了特定代理的功能、为何有此功能以及它所具备的责任和权限:角色模式:SimpleNounAttributeSearcher 描述:查找互连语义 Web 获得某对象的属性值 权限:从任一开放语义 Web 数据源读取和搜索数据 责任: 活跃度(Liveness): SimpleNounAttributeSearcher = ( GetURIs. BuildQuery. ExecuteQuery. InformUserOfValue Sa
14、fety:true 设计我使用的是如 图 1 所示的目标流程图来显示一个目标到下一个目标之间的流程,从而实现从对象名和属性名寻找属性值的整体目标。图 1. 目标流程图来自用户的输入是一个简单的纯文本,而语义 Web 系统通常使用 Uniform Resource Identifier (URI),因此 GetURIs 动作会基于纯文本表示获得一个 URI(这得益于 RDF 模式内的标签关系)。BuildQuery 动作接受这些 URI 并基于之前动作中找到的那些 URI 生成一个简单的查询。ExecuteQuery 之后执行此查询并决定结果是否有用。如果有用,InformUserOfAnswe
15、r 会将结果显示给用户。如果没用,这个简单代理以不同的 URI 再次开始。图 1 中所描述的子目标将被转化为 Java 内的简单公共方法,然而整体的目标是转化为 JADE 行为。我还使用了如 图 2 所示的一种面向对象的类图来将目标流程图转变成易于在面向对象语言(比如 Java)内进行开发的形式。这指的是 Agent 和 OneShotBehaviour,它们是 JADE 库的一部分。图 2. 面向对象的类图程序中最主要的类是 SemWebSearcherAgent,它的类型是 JADE 库中的 Agent。一个代理通常都会具有一个行为。在本例中,我选择的是 OneShotBehaviour(
16、也是 JADE 库的一部分)并加以扩展以进行 SearchingBehaviour。SearchingBehaviour 将会执行大部分的搜索工作。所需代码附加在本文的 下载 小节。请注意 SearchingBehaviour 的 queryengine 属性。它是基于 SPARQL 端点的 URL,我将在这个端点进行搜索。本例使用的 DBpedia 端点位于:http:/dbpedia.org/sparql它有如下的 HTTP 参数:format=text/rdf+n3&query=其中,query 是用来发送此 SPARQL 查询的参数。在 SearchingBehaviour 内 Jav
17、a 方法的使用与目标流程表内的类似。开发流程代理一般位于特定的环境内,为此 JADE 提供了一个这样的环境。JADE 还提供了图形用户接口(GUI),用以初始化、控制和终止代理。本节给出了初始化代理的各个步骤。首先,用 GUI 打开终端并启动此 JADE 服务,如 图 3 所示。图 3. 从命令行启动 JADE 图形用户界面应该类似 图 4。图 4. JADE GUI展开此 AgentPlatforms 树,应该会看到一个容器,然后启动代理,如 图 5 所示。图 5. 启动容器内的代理对于本例而言,我启动的是我自己设计和实现的 example.agents.SemWebSearcherAgen
18、t。我需要传递搜索内容的参数,如 图 6 所示。图 6. 启动主容器内的 SemWebSearcherAgent 这里我想要查找的对象是 Marley(即 “Bob Marley” 中的 Marley)和属性 birth(即 “Date of Birth” 中的 birth)。此代理加载、搜索,然后打印出从全球的互连语义 Web 返回的结果,如 图 7 所示。图 7. SemWebSearcherAgent 正在完成其功能 回页首结束语Linked Data 格式的语义 Web 是在 Web 上呈现知识的理想方式,原因是面向对象的模型很容易理解。代理技术则是为自主过程建立模型的理想方式,原因是它能够成为以真实社会为基础的人造社会。本文展示的这个简单项目可以进一步在如下几个方面加以扩展,包括: 对用户代理进行更贴近实际的建模 增加更多人工智能 广泛使用形式本体 超越 DBpedia 扩展 Linked Data 集 将其变成多代理系统 将随意一个文本问题转变成 SPARQL 查询 正如您所见,商家和学术界所面临的机会都是无止境