本书直接而果断地使用语义Web技术来解决现实世界中的实际问题,研究如何更为灵活地访问由便携式计算机、企业、甚至是万维网所提供的信息和服务。各个章节都按照统一的、基于代码的方式来讲述如何解决访问信息和服务所面临的挑战。通过列举代码示例,我们将从实用角度出发探索构成语义Web的多种技术,包括知识表示,如微格式、资源描述框架(RDF)、RDF Schema(RDFS)、Web本体语言(OWL,包括其最新发布的版本OWL 2和语义Web规则语言SWRL)等,以及语义Web程序设计框架(如Jena)和其他一些有用的语义Web工具。我们在探索这些技术的时候,不是仅从这些技术本身出发来考虑问题,还要关注它们在解决实际问题的过程中所体现出来的作用和价值。因此,您的学习应当是基于效果的——即依据每种技术在您解决实际应用中的各种难题时所能发挥的效果。 本书的编写得益于我们多年来设计大规模语义Web解决方案、建立语义Web工具和参与修订语义Web相关标准所积累的经验。我们对这一领域十分熟悉!正是因为具有这样的技术背景,我们不仅能够帮助您理解这门强大的技术,而且还能够帮助您直接将这门技术应用到实际应用中,解决信息领域中的多种挑战。 内容概述 语义Web技术为驾驭多种信息和信息服务提供了一种强大的、实用的方法。语义可以保证“使更多信息变得更有用”,避免了信息泛滥带来的负面影响。这就需要采用新的数据表示方法来改进人们捕捉和共享知识的能力,也需要新的程序设计构造(construct)和工具来确保这些信息能够为您的应用程序所使用。 本书通过实际的数据格式、工作代码和工具来探索语义Web技术。我们从开发人员的视角出发考查语义Web技术,目的就是为了在实际应用中得到满意的效果。我们针对您在创建和管理语义Web应用时的需求给出了解释和说明。全书大量的工作代码示例既增加了技术背景可信度,也有助于读者对说明性文字的理解。一般来说,代码一目了然,更能说明问题。因此,我们强烈推荐您从示例代码入手,并且根据自己的需求进行调整。这样做有助于您尽快理解语义Web,适应从语义Web的角度出发考虑问题,进而使您能够迅速在工作中应用语义Web技术。 编排方式 本书总共有15章,分为4个部分。在附录中,本书还给出了一系列与主要技术相关的参考资料。 第I部分:语义Web程序设计简介,由第1章和第2章组成。这一部分的内容将使您尽快认识语义Web程序设计。第1章“为以数据为中心的语义Web程序设计做好准备”介绍了语义Web的主要概念以及这些概念之间的相互关系。这一章能够使您了解作为一个语义Web开发人员所应知道的各种词汇。同时,第1章还指出了语义Web技术的优点和对程序设计的影响,并且在这一章结尾之处给出了当前使用语义Web时无法避开的问题实例。第2章“Hello Semantic Web World”围绕“Hello Semantic Web World”这一程序详细地对工作代码进行了分析。这个例子可以使您了解从如何建立开发环境到如何使用推理机的一系列操作。这一章的说明性文字比较简单,因为这一章仅仅是对本书其余部分的简介。如果您还是一位语义Web领域的新手,那么这一章对您来说至关重要。而对语义Web比较熟悉的读者可以选择跳过这两章的学习。 第II部分:语义Web程序设计基础,包括从第3章到第7章共5章的内容。语义Web应用的驱动力来自两个领域:知识表示和应用集成。这一部分主要讲述前一个领域——知识的表示和操作。第3章“信息建模”讲述了如何通过RDF构建数据模型。第4章“融入语义”在使用RDFS和OWL 2创建知识模型的过程中引入了本体(ontology)。第5章“现实世界中的知识建模”通过应用程序框架和推理机来练习使用工作本体。第6章“发现信息”对知识模型进行了深入分析,通过搜索、导航和借助SPARQL进行形式化的查询等方式从中抽取有用的信息。第7章“添加规则”通过研究语义规则语言来充实知识表示,包括W3C标准SWRL。 第III部分:建立语义Web应用程序,涵盖从第8章到第11章的内容。这一部分针对的是上面提到的驱动语义Web技术的第二个领域——将知识和作用于知识之上的应用程序整合到一起。这一部分的内容奠定了可靠的语义Web程序设计基础。第8章“应用程序设计框架”借助Jena语义Web框架的大量实例全面探讨了语义Web框架。章末简要讲述了一个语义Web应用程序FriendTracker,这个例子是贯穿后面三章的一条主线,围绕这个例子我们探讨了如何对格式和位置均有所不同的数据和信息进行集成、对准和输出。第9章“整合信息”重点研究了如何将来自多个数据源(如关系数据库、Web服务和其他形式的数据源)的数据整合到一个知识模型中。第10章“对准信息”重点探讨了如何将数据和本体概念进行对准,进而实现异构信息的集成。第11章“信息共享”介绍了如何以多种格式输出信息,如RDFa、微格式和SPARQL端点等。我们在上述的各章中都采用FriendTracker应用程序实例进行说明,希望能够更为直接地向您阐述语义Web程序设计的理念。 第IV部分:扩展语义Web程序设计,这一部分涵盖了从第12章到第15章的几章内容。现在您已经具有了可靠的知识表示和语义Web应用程序开发基础,我们可以在此基础之上扩展到功能更为强大、更具有实用价值的领域,包括语义服务、时空问题、语义Web架构和最优方法,并且几乎对本书所提到的各种工具都进行了扩展应用。第12章“开发和使用语义服务”研究了如何在服务中加入语义,使得这些服务能够融入到语义Web当中。第13章“管理空间和时间”从时空角度对您的知识表示进行了考查。第14章“语义Web模式和最佳实践”依次对各章内容进行了回顾,以本书前面讲述的所有内容为基础,介绍了一系列构建各种语义Web应用程序的架构模式。第15章“进阶”通过洞悉语义Web技术的未来总结了全书。这一章重点对语义Web技术最为关键而且仍在不断演进的四个领域进行了研讨,包括本体管理、高级集成和分发、高级推理以及可视化。它们对目前语义Web领域中仍然不断演进的各种技术进行了较为严谨的阐述。 读者对象 本书从综合、实用的角度为使用语义Web技术开发应用程序提供了支持。语义Web可以对万维网上已有的多种分布式信息和服务、商业企业和您的个人资源都加以利用。因此,无论您仅仅关注信息还是关注整个应用程序,大多数技术性读者都会从本书中受益。 通过本书的学习,开发人员能够从众多的代码示例中获得第一手的程序设计经验,无论是应用程序开发人员还是仅仅关心多种形式的数据(从数据库模式到XML格式)的信息开发人员,学习本书都会有所收获。这本书为您开始设计自己的语义Web应用程序提供了必需的工具、背景知识和丰富的示例。 大型应用程序的架构师通过本书的学习能够对语义Web的作用有更为深入的理解。语义Web对所有使用信息的系统(几乎是所有的系统)都有所裨益,它能够迅速扩展系统的功能,进而可以更好地利用信息和服务。全书的应用程序对系统架构师来说也十分有用,而在信息和数据管理方面的详细阐述也对负责数据格式和数据处理的信息架构师有所裨益。 技术管理人员可以通过本书对语义Web的强大功能、风险和优势有更为深入的理解。语义Web是一门战略型的技术,是一种真正能够提供巨大优势的解决方案。目前信息领域面临很多很棘手但是却很有价值的挑战,这些难题通常涉及海量信息和服务,而语义Web技术为解决这些难题提供了新的思路。在任何解决方案中,是否需要采用语义Web技术都取决于动态信息和服务资源。本书所给出的代码示例揭示了这门技术的可信度,同时也洞悉了语义Web程序设计自身的挑战,即如何更好地进行规划。 所需工具 我们强烈建议您下载和定制本书提供的所有代码示例,以便巩固所学的知识。书中涉及到的所有软件工具都是开源的,可以直接从万维网上下载,我们在书中也提供了必要的说明和相关链接。只要您的操作系统支持Java 1.5虚拟机,那么您的计算机就能和书中提到的所有工具兼容。而且当我们在书中介绍每一种工具的时候,同时也会给出下载、安装和配置该工具的说明。此外,我们在附录F中还对所有工具进行了总结说明。 网站资源 在本书配套网站上还有大量可供参考的资源。在该网站上您可以访问本书参考的所有文献资料、完整的代码示例以及本体等,而且您还有机会参与当前正在进行的一些讨论和活动。该网站上也正在不断更新与语义Web相关的书籍和代码,反映了语义Web的持续扩展和演进。我们欢迎广大读者针对本书和本书相关的示例留下宝贵意见。 我们的网站还提供了博客和wiki等功能,等待您在这里发表您的作品和见解。网站提供的wiki是一种语义wiki,提供了SPARQL端点。您既可以自由地申请博客或注册wiki,也可以自由提问或者参与到当前的讨论中来。我们发现最好的学习方式就是经常提问并多与他人交流—— 到处打听您想知道的答案。 总结 语义Web程序设计是一种令人振奋、功能强大的新方法,能够更好地利用已有的海量信息和服务。伴随这种强大而令人兴奋的功能同时出现的还有一系列新词汇、新工具和构建工作应用程序的新思路。前面提到的各章内容以一种实用的方式铺就了一条有效构建语义Web应用程序的平坦大道,而这些语义Web应用程序整合了丰富的、可访问的动态信息和服务。让我们开始学习吧!