W3C公司

面向对象软件的语义Web入门开发人员

W3C工作组注释2006年3月9日

此版本:
http://www.w3.org/TR/2006/NOTE-sw-oosd-primer-2000309/
最新版本:
http://www.w3.org/TR/sw-oosd-primer网站/
以前的版本:
这是第一个发布的版本
编辑:
Holger Knublauch,曼彻斯特大学<holger@knublauch.com>
丹尼尔卡尔斯鲁厄大学Oberle<oberle@fzi.de>
IBM公司Phil Tetlow<philip.tetlow@uk.ibm.com>
埃文华莱士,国家标准与技术研究所<ewallace@cme.nist.gov>
贡献者:
Jeff Z.Pan,阿伯丁大学(前曼彻斯特大学)<jpan@csd.abdn.ac.uk>
Michael Uschold,波音公司<michael.f.uschold@boeing.com>
另请参见致谢.

摘要

领域模型在整个软件开发周期中发挥着中心作用,从需求分析到设计,再到实现和超越。作为因此,在始终使用模型方面取得了很大进展这个过程。支持UML和代码生成和模型驱动架构允许开发人员使用将技术实现与用户需求同步并验证模型。然而,域模型的可重用性通常是有限的,因为它们根据定义,是特定于领域的,仅考虑在自己的范围内实现解决方案所需的抽象个人问题空间。但网络比这更广泛,提供了能够引用几乎无限集的多维解空间域的。虽然我们的许多软件越来越多地嵌入到Web中,我们的开发过程没有充分利用模型重用的潜力网络上。因此,本文引入了RDF等语义Web语言Schema和OWL,并展示了它们如何与主流结合使用面向对象语言。我们表明语义网可以作为一个平台在其上可以创建、共享和重用域模型。

本文件的状态

本节描述了本文档发布时的状态。其他文件可能取代本文件。当前W3C出版物列表和本技术报告的最新版本可在W3C技术报告索引http://www.w3.org/TR/。

本文档由软件工程任务组(SE)创建W3C的语义Web最佳实践和部署工作组(SWBPD)。这项工作是W3C公司语义Web活动.

本文件是W3C工作组注释和SWBPD工作组目前没有创建进一步修订的计划。欢迎发表意见,并可发送至public-swbp-wg@w3.org; 请包括主题行中的文本“注释”。在收到的所有消息此地址可以在中查看公共档案馆.对以下内容感兴趣的读者该主题区域也可能希望跟踪并为讨论做出贡献在语义Web兴趣组邮件存档中。

本文件由一个在2004年2月5日W3C专利政策。本文件仅供参考,因此没有相关的W3C专利政策许可义务。W3C有一个任何专利披露的公开列表与集团的可交付成果相关;该页还包括披露专利的说明。

作为工作组注释发布并不意味着得到W3C成员的认可。这是一份草案文件,可能随时被其他文件更新、替换或作废。引用这份文件而不是正在进行的工作是不恰当的。

目录

1引言

软件系统通常以领域模型为中心,以表示其目标问题空间的各个方面。域模型可以描述应用程序域和编码中的相关概念和数据结构有助于驱动应用程序行为的知识。例如,假设我们的任务是开发一个在线购物系统。在要求期间对此系统进行分析,我们可能会了解到:

经过一些思考,我们可能会想出一个面向对象的设计,例如下面的UML类图。

UML中的简单领域模型

图1:UML语法中的一个简单域模型。

我们可以将此示意图提交给客户讨论,几天后迭代,我们可能最终得到一个可以在我们的受欢迎的编程语言。我们也可以从用户界面组件开始最终用户(可能是JavaServer Pages)和在线商店经理(可能需要用Java/Swing、C#或Visual实现更复杂的前端例如,基本)。如果我们的系统被证明是成功的,那么可以有更多的组件围绕它构建,例如通过Web访问产品目录服务。在这些情况下,其他组件可能希望共享相同的数据结构和领域知识,以便它们可以互操作。即使我们的系统不太成功,或者系统移植到了不同的平台上,我们可能至少想重用其中的一部分。在这种情况下有权访问基础域模型,以便我们可以提取我们需要。

由于我们预见到了所有这些潜在的发展,我们设计了我们的系统用一个视图控制模型建筑学[BMRSS1996]。这个众所周知的模式建议将域模型与用户界面和控制逻辑。非可视部分与可视部分的分离组件使重用和共享域模型变得更加容易其他应用程序和目标平台。然而,不幸的是面向对象模型的可重用性常常无法实现。在许多情况下,上述领域模型包含具有特定应用程序。特别是一旦模型用编程语言编码,最初设计中的许多知识都丢失了。例如,采购订单是否免税的条件可以通过以下方式编码一些命令式方法中的if语句(例如总价(); UML图中),以及事实上,每个采购订单至少需要除非您愿意通读控件,否则一个产品也不清楚用户界面实现的逻辑。这种情况的另一个典型问题系统就是互操作性。例如,如果其他应用程序想要接口数据或服务,它需要通过与我们的应用程序严格耦合的定义良好的接口(API)。可能使用基于XML的中间格式在此类应用。如果具有类似任务的多个应用程序互操作,大量这样的接口和交换格式将需要。

UML图提供了重用和互操作性的最大潜力在我们的示例场景中。这样的图在更高的抽象级别上建模并可用于出于多种目的派生实现代码。然而,即使两个组件或应用程序以相同的UML图开始,它们可能有不兼容的实现。仍然有很多手工编写的代码将被要求实施。客户数据应采用何种格式存储和共享?UML模型可能模棱两可且被误解。在一个实现时,国家可以存储为字符串值,而其他国家可能需要将它们表示为Country类的实例。无论哪种情况,都不清楚德国和法国等特定国家应在何处以及如何用UML表示。此外,除非项目遵循模型驱动方法,UML图通常只作为中间层进行维护开发生命周期中的工件,用作实现,但在其他人无法访问的地方归档开发人员。UML模型通常是隐藏的,因为它们可能没有随着重新实施,更新时间更长。此软件的结果开发的现实是,许多时间被不必要的重复工作所浪费。域模型需要从头开始构建,然后映射转换为中间格式,以便在应用程序之间共享数据。

在理想情况下,开发人员会发现可共享的域模型来自各种相关存储库的知识库,然后将它们连接起来以及用于用户界面和控制部件-一个逐渐被认可的概念本体驱动体系结构。所有共享重叠域模型的应用程序都将然后有一定程度的互操作性内置。而这个理想的世界主要还是一个愿景,一些有希望的方法开始出现[TPOWUK公司2005].

在主要的软件工程阵营中,万维网没有引起注意Consortium(W3C)在它的语义Web愿景(参见W3C的语义Web活动). 这项技术,包括RDF[RDF(RDF)2004]和OWL[OWL(OWL)2004],最初的设计目标是使网页更容易了解智能代理和web服务。然而有趣的是,事实证明,语义Web语言和工具也可以发挥重要作用在一般的软件开发中。

语义网络社区已经产生了一套互补的语言和用于开发、维护、使用和共享软件领域模型的工具工程,以及其他用途。核心是OWL和RDF语言模式,OWL被优化以在高水平上表示结构知识抽象。OWL中编码的域模型可以上传到Web上并共享在多个应用程序之间。OWL由明确的方言支持形式逻辑调用描述逻辑 [行李处理系统2003]这种正式的基础使开发智能化成为可能推理服务,如自动分类和一致性检查。这些服务可以在构建时使用,因此有助于构建可重用的、经过良好测试的领域模型。推理服务还可以在运行时用于各种目的。例如,这使得可以动态定义类,以便在运行时重新分类实例并执行复杂的逻辑查询。除了基于逻辑、OWL和RDF之外模式在类似于面向对象语言的结构上运行,因此可以有效地与传统软件组件集成。

总之,RDF模式和OWL与面向对象的语言包括:

请注意,其中一些好处,如一致性检查和自动化推理,也可以通过对象约束语言实现(OCL)。OCL是OMG Model-Driven语言系列的一部分架构,并提供与现代语义Web类似的表达能力语言。例如,图1中的约束可以表示为OCL将正式确定免税订单的条件。然而,OCL并没有专为Web设计,但经过优化以表示封闭数据模型。语义Web技术是为开放世界设计的,模型在多个应用程序和组之间共享。我们将展示后来,这种开放性如何在语义Web语言中体现出来。它是值得注意的是,面向对象语言和OWL并非不可能实现桥接。事实上,OMG工作组正在定义本体定义元模型[ODM(原始数据管理)2005]这将允许开发人员同时使用语义Web语言其他格式,如OCL。

本文档现在继续解释面向对象应用程序如何借助语义Web技术设计和实现。第2节概述了应用程序开发生命周期如何从中受益语义Web方法。第3节介绍语义Web语言RDFSchema和OWL,并将它们与面向对象建模语言进行了比较。章节4展示了如何将RDF和OWL模型嵌入到面向对象程序中(这里,使用Java)。附录提供了进一步阅读、工具的参考和库。

2语义应用开发网络技术

什么是语义网?目前大多数“传统”网络内容适合人类使用。HTML等表示语言包含指令为网络浏览器建议如何为我们的视觉呈现多媒体和听觉感知。然而,如果我们想使用计算机程序来为我们搜索基于Web的信息,这样的方法会发现很难理解这些网页,除非它们具有先进的人类语言技能。此外,JSP或ASP支持在单个文件中随机混合模型和视图部件到非常非结构化的内容。

语义Web背后的愿景是使Web内容机器可读软件代理可以更容易地对其进行分析并在Web中共享服务。为此万维网联盟(W3C)是推荐一些可用于形式化Web的基于Web的语言内容。RDF模式和OWL可用于描述类、属性和关系类似于面向对象语言。例如,RDF模式可以用于定义类产品具有属性hasPrice公司它接受类型的值浮动。您可以定义一个类购买具有属性has产品这与倍数产品s.OWL扩展RDF模式通过附加的构造来定义更复杂的类。例如,OWL可用于定义类DutyFreeOrder免费订单作为的子类所有购买的商品都有一个交货地址,目的地是已知的自由贸易协定。W3C还使用其他语言来描述if-then规则和类似SQL的复杂查询,但我们的重点是RDF Schema和OWL在本次讨论中。

任何一种语言的域模型都可以上传并链接到Web就像发布HTML页面一样。RDF或OWL文件联机后,其他Web资源或应用程序可以链接到它。例如,HTML页面显示特定产品可以对元数据进行编码以链接回OWL模型中的相应实体,以便所有理解什么是“产品”可以从HTML页面中理解。或者,的提供者特定的产品可以实例化RDF Schema类以宣布其以明确的交换格式向购物代理提供投资组合。A典型这种语义Web应用程序的场景如图2所示。

从Web开发域模型和服务

图2:使用语义Web技术的应用程序可以利用Web中的域模型和服务。黄色方框代表OWL以类似UML的图形符号表示的文件。请注意,UML符号仅用作示例-其他可视化可能更适合捕获完整的OWL的语义。

虽然也可以通过以下方式实现一定程度的互操作性传统的基于XML的方法,语义Web语言有更丰富的表现力。与面向对象语言类似,RDF Schema和OWL使其成为可以定义子类和概念的泛化。组织领域模型到类的映射建议自然映射到集成模型到其余的软件组件中。此外,由于每个语义网资源具有唯一的URI,可以在现有的模型。这意味着无论何时发布特定域的模型在Web上,其他人就有可能在此基础上进行构建,因此建立一个领域网络,可能是跨领域知识网络。

语义Web语言的可扩展性支持全局上的重用性比例尺。而不是定义产品采购领域的第1000个变体模型,应用程序开发人员可以在Web上找到合适的模型并简单地重用或扩展它。通过重用现有模型具有类似任务的应用程序可以更容易地共享结果和数据。此外,一个独立于应用程序的可重用组件(例如购物篮应用程序或信用卡处理Web服务)可以集成。而语义上全球知识共享的承诺Web在不久的将来可能有点野心勃勃,RDF模式和OWL至少提供构建可重用结构的基础设施感兴趣的社区。讨论这些超出了本文的范围问题的详细信息。

可重用性的承诺部分是由于语义网络语言是基于网络的:RDF模式或OWL文件具有唯一标识符(URI),因此可以从其他任何地方。语义Web模型的另一个主要优势是可重用是指OWL基于形式逻辑。这意味着OWL模型不仅限于定义类及其属性,还可以限制这些类的潜在实例化,以便这些类可以在人类或机器群体中明确地共享。域模型是基于这种定义明确的逻辑,通常被称为本体. 事实上,缩写OWL代表“Web本体语言”。根据[OWL(OWL)2004],OWL可用于显式表示词汇和这些术语之间的关系。此代表术语及其相互关系也是一种本体形式。来自从面向对象的角度来看,本体是包含使其含义明确的逻辑语句。我们稍后会显示名为reasoners的工具可以利用这些逻辑语句执行高级揭示资源之间隐含关系的查询。

本体论和领域模型通常跨越不同的抽象层次,应用程序依赖性和可重用性。引言,语句1和2指定表示客户的数据结构和采购数据。报表3、4和5是关于特定国家的可用于地理或政治应用。报表6是独立于这些特定国家并描述了一般领域满足特定标准的国家之间的关系。这些部分应该是使其可重复使用或从标准化解决方案中重复使用。事实上,本体是通常由人类群体定义(例如电子商务财团或国家地质调查),以便将共享领域词汇相互关联用于信息集成。曾经是一个标准化的国家本体论关系存在,没有必要为每个人重新创造这种关系应用程序。此外,重用Web中的现有本体具有优点是应用程序可以更直接地从更新中受益,例如新国家。

然而,特定客户和我们的网上商店的本地化特定国家/地区是特定于应用程序的,需要定制。这样的定制可以通过添加特定的子类或实例来实现。如果共享本体/领域模型没有针对特定应用程序进行优化目的,因此需要从头开始调整或构建,然后是域可以使用建模工具(如附录中提到的工具)。这些这些工具适用于在以下方面缺乏培训的领域专家编程语言。这些工具为UML提供了类似的编辑器类和关系的可视化编辑器,并允许用户创建这些类的实例。

可以比较这种开发过程中的域建模活动到传统软件工程中的需求分析和设计步骤。领域专家和最终用户与软件设计师携手合作,开发人员和测试人员提出适当的领域抽象。来自Web的本体被组合、扩展和实例化。本体论开发工具提供了实例化类的工具,因此示例实例可以被创建和原型化。然后,得到的域模型是与其他应用程序组件(如用户界面和由程序员控制逻辑。与许多传统的面向对象相比设计方法,其中分析和设计只会导致中间用于代码生成的工件,语义Web方法使用相同的模型适用于从分析、设计、实现到测试甚至在运行时。早期阶段定义的本体决定了实现,同时保留原始设计模型在应用程序执行时可以访问。本体背后的形式逻辑甚至可以利用它来派生测试用例。如果域模型具有显式运行时语义,可以进一步使用推理服务。我们将在我们介绍了RDF和OWL公司。

3 RDF模式和OWL简介

为了实现语义Web愿景,W3C已经生成了一个数字语言规范。RDF及其模式构成了基础用于在Web兼容的环境中表示类、属性和实例的基础结构格式。OWL以更丰富的表现力扩展了RDF模式。现在两种语言都是由工具、解析器和编程API支持。本节将介绍RDF Schema和OWL,并将它们与面向对象语言进行比较。

3.1 RDF和RDF模式

资源描述框架 【RDF 2004】是一种基于Web的语言,可用于描述之间的关联资源正式地。资源可以是任何具有统一资源标识符(URI)。因为它们有URL、HTML页面、图像、,多媒体文件是资源。在RDF中,资源也可以是类,属性或实例。例如,URIhttp://ecommerce.example.org/ecommerce.rdf#产品可以表示RDF文件中的类,您可以使用此URI注释特定产品的网页。

RDF只定义了语义Web内容的基本语法,并有一个允许用户在Web上共享模型的XML序列化。RDF公司架构定义RDF的面向对象模型。RDF模式定义了如何表示类、子类关系、属性、数据类型等。对于例如,以下RDF模式文件声明了一个类产品和一处房产>hasPrice公司:

<rdf:rdf xml:base=“http://ecommerce.example.org/ecommerce.rdf"xmlns=“http://ecommerce.example.org/ecommerce.rdf#"xmlns:rdfs=“http://www.w3.org/2000/01/rdf-schema#"xmlns:rdf=“http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdfs:Class rdf:ID=“产品”/><rdf:Property rdf:ID=“hasPrice”><rdfs:domain rdf:resource=“#Product”/><rdfs:range rdf:resource=“http://www.w3.org/2001/XMLSchema#float"/></rdf:属性></rdf:rdf

介绍RDF、RDF的详细信息远远超出了本说明的范围模式或XML语法。在本文档中,只有几个概念都很重要。URI通常分为命名空间和本地名称名称空间可以用前缀表示法缩写。例如,rdfs:类是的缩写URIhttp://www.w3.org/2000/01/rdf-schema#类如果前缀关系型文件已经是在文件头中声明。如果未给定前缀(例如in“产品”),然后是默认值使用文件的命名空间。为了简化本演示文档中,我们将重点介绍基于本地名称的简短表示法。

命名空间可以与包装在面向对象语言中。因此,可以将上述文件视为定义包http://ecommerce.example.org/ecommerce.rdf#. 命名空间中声明的所有资源都是公共的,因此所有RDF文件都可以直接指代对方。例如,您可以创建另一个RDF文件定义的实例产品类,并分配实例的特定价格。此类实例称为个人在RDF中。与许多面向对象语言相比,个人可以声明为具有多个直接类型。例如,个人http://myshop.example.com/products.rdf#哈里可以声明为的两个实例http://ecommerce.example.org/ecommerce.rdf#产品和,共http://auctioning.example.org/model.rdf#AuctionItem(拍卖项). 这将使在一个资源中使用相同的资源(由其URI表示)成为可能上下文作为产品,在另一个上下文中作为拍卖项目。

资源描述框架模式是一组共享的个人特点。类可以安排在子类层次结构中,非常类似于面向对象系统。与UML一样,RDF模式支持多重继承。然而,RDF和面向对象语言之间的一个主要区别是所有类都可以重叠。由于个人可以有多种类型,这意味着某些实例可以在类之间共享。此外,实例可以在它们的生命周期中改变它们的类型。采购订单可以以纯文本开头的实例采购订单类,然后将其类型更改为DutyFreeOrder免费订单当节目播出时已收集有关客户送货地址的更多信息。

语义Web和面向对象之间的另一个重要区别语言就是语义网开放的世界,其中文件可以添加有关现有资源的新信息。因为网络在任何事物都可以链接到其他事物,不可能排除这个说法可能是真的,也可能在未来成为真的。例如,如果我们定义一个类,我们通常无法提前知道它的所有实例。同样,我们不能排除特定产品也将用作拍卖项目.这个“开放的世界假设”意味着为语义网建模领域可能需要进行转换对于习惯于封闭、有限领域的开发人员来说“经典”面向对象系统或“传统”关系数据库。打开另一方面,它提供了丰富的灵活性和共享经验这是一个无限的重用和互操作机会世界的一部分。特别是,开放世界方法意味着任何基于web的公共本体可以向其他为不同的应用程序案例缩小它们的范围。在封闭系统中例如Java程序,这是不容易实现的,或者是传统的做法。

但现在让我们回到RDF语言。RDF公司属性可以是与面向对象语言中的属性、字段或关联结束相比。然而,在UML或Java中,属性被附加到单个类仅RDF属性是可以独立定义的独立实体来自类并在多个类中使用。例如,您可以定义财产hasPrice公司然后将其附加到价格合理的所有类。这也使它成为可能跨多个文件重用同一属性。例如,如果您创建在线拍卖软件的模型,您可以使用网上购物模型也代表了拍卖物品的价格。共享跨多个模型的相同属性意味着值可以更容易集成,例如将当前拍卖价格与价格进行比较在其他网上商店购买新产品。

为了将属性与类“附加”或“关联”,rdfs:可以使用域语句。rdfs:domain是来自RDF模式的标记使用谓词将属性与类关联的命名空间。在这个例子中上面,hasPrice的域是Product。因此,从面向对象的角度来看这意味着Product类的所有实例都可以有价格值,从而使Price成为Product属性。然而,在RDF和OWL中,这还有其他含义:任何hasPrice的主题是Product类的一个实例。换句话说,域RDF中的语句可用于对实例进行分类。因此,指向ack对于上面的示例,如果某物有价格,则可以将其作为Product的实例,即使它参与了其他声明(或三元组)-稍后将在上下文中详细讨论的关键事项与OWL进行推理。

以这种方式,诸如价格之类的原始值被称为字面量在RDF中,文字具有XML模式数据类型,例如xsd:string字符串xsd:浮点作为他们的类型。它是可以使用rdfs:范围声明。属性可以具有XML模式数据类型作为其范围或类。中包含类的属性它们的范围可以与面向对象语言中的关系进行比较。对于例如,如果属性has客户具有范围客户,然后是财产必须是客户。与域语句类似,范围语句可以也可以用另一种方式解释:如果我们知道资源是相关的通过has客户属性,则我们可以推断该资源实际上是客户,即使它有其他类型。

3.2 OWL

如前几段所示,RDF模式定义了一个简单的域建模语言类似于面向对象语言。您可以定义类以及它们的属性,然后创建这些类的实例。这很有用用于许多目的。然而,在许多应用领域中,RDF的表现力仅模式是不够的。例如,RDF模式不能表示基数限制,使每个产品只能有一个价格。

这个Web本体语言(OWL) [OWL(OWL)2004]扩展了RDF模式并使用与其基本语法相同的RDF语法。OWL增加了表达有关属性,并通过对满足这些条件的实例进行分组来定义类特点。为了更好地理解这一点,重要的是要记住OWL类是公理集。如图3所示,这些集合可以重叠,并且它们可能包含其他集合。

OWL类作为实例集

图3:OWL类可以被视为具有共同特征。

图3中的左圆圈描述了所有具有原产于澳大利亚。右圆圈表示产品的所有实例类。因此,两个大圆的交点代表了同时是产品和“来自澳大利亚”的所有实例,即澳大利亚产品。以产品圈内的小圆圈为例,从德国购买的这些产品的类别是所有产品的子集产品。最后,购买的所有澳大利亚产品由来自德国的人代表的是所有阶级的交叉。

现在,让我们不要忘记RDF/OWL属性独立于特定的类,并且可以在多个地方使用。例如,属性hasOrigin(具有原点)可用于产品、人员、客户、音乐等等。假设澳大利亚定义为的实例国家有人现在可以使用OWL正式定义所有事物的类,其中hasOrigin(具有原点)属性具有值澳大利亚。任何人else已经定义,可以根据这个定义进行分类。

用于表示此类定义的OWL语言元素称为限制。限制描述了以下所有实例的类:满足属性的特定条件。有各种类型的OWL中的限制。在上面的示例中,我们有一个所谓的hasValue(哈斯值)将财产链接到特定个人的限制。其他限制限制属性的基数,例如定义all的类至少有两个值的hasOrigin(具有原点)属性。

这里没有必要讨论限制的细节。钥匙OWL的强大之处在于可以通过组合多个限制来定义类和其他类。为此,OWL提供逻辑操作数来构建其他类的交集(and)、并集(or)和补集(not)。对于例如,您可以定义“来自法国的所有拥有发出至少3份采购订单或至少一份订单,其中仅包括书籍,但订购DVD的客户除外”。

在面向对象系统中,这样的语句通常是隐藏的代码库内部的某个地方。在语义Web本体中,逻辑关系是通过OWL类定义和其他形式化的声明。这不仅使模型的其他人类用户更容易理解特定的预期含义,但也意味着其他工具可以透明地使用定义。OWL模型只是声明事物完全取决于应用程序对这些做些有用的事情声明。

一些语义Web应用程序可以利用其他工具来处理和分析OWL模型。其中一类工具称为推理器。一个推理机将本体中编码(断言)的语句作为输入的服务并从中推导出新的语句。特别是,OWL推理器可以习惯于:

因此,一个合适的示例可以如下所示:假设您已经定义了一个DutyFreeOrder免费订单,其中包括所有采购订单由属于以下所有客户集合的客户发布的生活在自由贸易国家。现在假设有一个新用户登录到onlineshop开始把东西放进他的购物篮。我们将在内部创建的空白实例客户采购订单类。稍后,当用户前往结账处并输入其收货地址时,我们可以请推理者对采购订单。这将给我们特定订单所属的最具体的类(这里是DutyFreeOrder免费订单). 事实上,我们现在拥有免税订单将控制此对象的未来生命周期,因为应用程序逻辑可以利用有关免税的其他领域知识订单。

与面向对象系统相比,对象通常无法更改基于语义Web技术的应用程序可以遵循,动态打字系统。RDF和OWL类本身也是动态的可以在运行时创建和操作它们。例如,可以定义一个正式表示为OWL表达式的临时类,并然后询问推理者关于这个类的实例。这意味着推理器可以与丰富的查询应答系统相比较。这些查询不能仅在本体设计时提出,也在执行时提出。

3.3 OWL/RDF与面向对象的比较语言文字

下表总结了RDF和OWL的介绍语义Web语言和面向对象语言:

面向对象语言
OWL和RDF
域模型由类、属性和实例组成(个人)。类可以按子类层次结构排列继承。属性可以将对象或原语值(文字)作为值。

类和实例
类被视为实例的类型。 类被视为个体的集合。
每个实例都有一个类作为其类型。类无法共享实例。 每个人都可以属于多个类。
实例无法在运行时更改其类型。 类成员身份可能在运行时更改。
类列表在编译时是完全已知的,无法更改之后。 类可以在运行时创建和更改。
编译器在构建时使用。编译时错误指示问题。 推理器可用于分类和一致性检查运行时或构建时。

属性、属性和值
属性在本地定义为类(及其子类,通过继承)。 属性是独立的实体,可以在没有特定类。
实例只能具有附加属性的值。必须正确键入。范围约束用于类型检查。

实例可以对任何属性具有任意值。范围和域约束可以用于类型检查和类型推断。

类通过命令将其大部分含义和行为编码函数和方法。 类用OWL语句明确了它们的含义。可以附加命令代码。
类可以将其成员封装为私有访问。 OWL/RDF文件的所有部分都是公共的,可以链接到来自其他任何地方。
封闭世界:如果没有足够的信息来证明声明如果为true,则假定为false。 开放世界:如果没有足够的信息来证明声明对,那么它可能是对的也可能是错的。

在设计过程中的作用
一些通用API在应用程序之间共享。很少(如果有的话)UML图表是共享的。 RDF和OWL是为Web从头开始设计的。模型可以在线共享。
领域模型是作为软件体系结构的一部分设计的。领域模型旨在表示关于领域的知识,以及用于信息集成。
UML、Java、C#等是许多公司支持的成熟技术商业和开源工具。 语义网是一种新兴技术,具有一些开源工具以及少数商业供应商。

其他功能
实例是匿名的,因此不容易寻址从正在执行的程序外部。 所有命名的RDF和OWL资源都有一个唯一的URI,在这个URI下,它们可以被引用。
UML模型可以在XMI中序列化,这是为了在工具,但并非真正基于Web。Java对象可以序列化为各种基于XML或本地中间格式。 RDF和OWL对象具有基于XML的标准序列化中每个资源的唯一URI文件。

4使用RDF模式和OWL编程

许多现代软件体系结构由面向对象的组件组成,用Java或C#等主流编程语言实现。在fat-client中系统,大多数用户界面和控制代码将使用面向对象的库,如Swing或SWT。在客户端-服务器设置中服务器可以承载与数据库和其他资源。在Web服务中,许多控制逻辑都将被实现使用命令式、面向对象的方法。

为了在这样的基于对象的系统,软件架构师需要了解设计无缝集成这些技术的模式和策略。虽然我们是才开始理解语义Web技术在系统和软件工程,许多有希望的候选解决方案是开始出现,包括编程API和代码生成器。在这个第节,我们将概述当前的技术状况(在写作时本体论驱动的软件开发及其讨论基本概念。

理解本体论驱动架构的关键是要记住在本体语言中:

这些关键差异意味着仅仅映射OWL/RDF是不够的将类架构为OO类,其中属性固定为类等,如果应用程序想利用OWL/RDF的弱类型和灵活性Schema,需要将OWL/RDF Schema类映射到运行时对象,从而使本体中的类成为某些面向对象类的实例(同时比较【G】2003]【KPBP】2004]). 如图4所示,典型的对象模型表示语义Web本体将包含表示资源的类,类、属性和个人。请注意,术语RDFSClass和RDFProperty与rdf模式中定义的类rdfs:Class和rdf:Property相关,而RDF模式中没有定义RDFIndividual这一术语的直接对应项。

各种类型的OWL类和属性的进一步扩展如下易于想象(参见Protege公司OWL图对于完整的OWL对象模型)。

表示RDF模式的简单模型

图4:一个简单的面向对象模型来表示RDF模式本体论。

应用程序将本体加载到这样的对象模型中,然后在运行时操作和查询对象。因为OWL/RDF架构类是对象,可以添加和修改类,例如更改运行时本体的逻辑特征。因为RDF属性是对象(及其值不存储为面向对象属性)可以动态分配和查询任何资源的值。个体是对象,可以动态更改其类型。

此方法由动态开发方法驱动,如主流软件技术动态对象模型图案[RTJ2005]。对于某些面向对象系统,通过表示对象类型作为对象,可以在配置时或运行时更改它们易于更改并使系统适应新的要求。

在语义Web社区中,有几个API实现了这种模式。受欢迎的Java、C和PHP的库列在附录. 除了动态对象模型接口之外,这些库还提供用于本体处理的解析器、推理接口和各种其他服务。为了了解如何使用这些库,下面的示例Java代码snippet(计算给定客户所有购买量总和的方法)已提供:

公共静态float getPurchasesSum(RDF个人客户){OWLModel OWLModel=客户.getOWLModell();浮点和=0;RDFProperty purchasesProperty=owlModel.getRDFProporty(“采购”);RDFProperty productProperty=owlModel.getRDFProporty(“产品”);RDFProperty priceProperty=owlModel.getRDFProporty(“价格”);迭代器购买=customer.listPropertyValues(purchasesProperty);while(purchases.hasNext()){RDF个人购买=(RDF个人)购买.next();RDFIndividual product=(RDFIndifidual)purchase.getPropertyValue(productProperty);浮动价格=(浮动)product.getPropertyValue(priceProperty);sum+=price.floatValue();}收益总额;}

此代码通用且灵活,但同时此方法具有一些缺点。如果类和属性是运行时对象,则强类型系统的优点不能在编译时使用。它变成了因此相当不便访问属性值和代码中充斥着访问属性等的基础设施调用。此外,资源是通过编码为字符串的名称访问的,因此大多数编译器无法协助错误检测。从面向对象的实现角度综上所述,上述方法的更好实现应该是跟随:

公共类客户扩展RDF个人{公共float getPurchasesSum(){浮点和=0;迭代器购买=listPurchases();while(purchases.hasNext()){采购=(Purchase)purchases.next();产品产品=purchase.getProduct();sum+=产品.getPrice();}收益总额;}}

而不是访问泛型类,如RDF个人RDF属性,我们将访问定制的类,如购买产品幸运的是,可以生成并在不牺牲动态对象优点的情况下使用此类类模型。代码生成器可以将RDFSchema或OWL本体作为输入并创建面向对象的接口和实现类作为输出。一些人的名单中提供了适当的代码生成器附录. 在上面的示例中,生成器将创建Java接口客户,定义属性的get和set方法客户在他们的领域(例如。,获取电子邮件设置电子邮件). 这些接口从动态对象模型API(例如作为RDF个人). 这意味着接口同时“正常”RDF个人,而生成的接口用作(可选)其顶部的便利层。

使用通用API或类访问模型

图5:语义Web模型可以使用通用API或特定于域的类。

运行时对象也是通用的、动态的API意味着开发人员可以针对两个不同的API实现,具体取决于完成任务。对于推理、解析、查询和输入验证-可以重用或针对动态对象编写代码模型API。泛型代码具有最大的重用潜力,并表明用于处理RDF和OWL的越来越多免费组件将成为未来可用。这一观察对发展有一些启示本体论驱动系统的方法论。特别是,如果是通用组件为了推理和查询存在,软件设计者应该尽可能多地编码尽可能在RDF/OWL域模型中使用,从而提高抽象级别进入通用服务领域。例如,订单来自有自由贸易协定的国家可以在内部实行免税方法体,例如是免费的()在Java类中采购订单。然而,这将使其无法利用自动分类采购订单的通用推理器。更清洁的解决方案将定义一个子类免税采购订单在OWL本体中,并提供它带有描述逻辑语句,定义了免税订单的区别来自其他订单。可重用的通用服务的可用性是一种激励用显式语义构建领域模型。

尽管本体论驱动的软件开发承诺重重,但它也很重要了解何时使用语义Web技术。最重要的是,本文中提到的许多推理引擎目前都具有可伸缩性和性能问题。任意OWL DL本体的分类可能是一项非常漫长的任务,因此可能会限制分类器的使用在运行时。在本体中使用推理器时,性能就不那么关键了构建时间。

语义网的其他问题通常与限制有关本体可重用性。很难构建真正独立于域的可重用本体。此外,本体通常是困难和昂贵的从而代表了许多软件公司的投资不会只是在网上公开上传和分享。这些问题超越了本文的范围,但必须牢记【BMT公司2005].

附录:从这里到哪里


致谢

本文档是一种产品语义Web最佳实践和部署工作组。编辑们想感谢以下人员审阅者对本文件的有用评论:Grady Booch,Jeremy卡罗尔、伊丽莎·肯德尔和约翰·麦克卢尔。