《语义Web编程》一导读

简介: 本书作者曾出版《集体智慧编程》,是从程序员的角度讲解语义Web工作的基础学习资料,可以帮助初学者快速掌握相关的编程基础
2f0928140ba32a718e240bc1d88e42e7714ab6b5


内容简介
   有了这本书,语义Web的承诺(机器能够发现、共享和组合Web上的数据) 不再是一种技术上的可能,而是一种可以实践的现实。《语义Web编程》展示了使用现有和新发展的标准和技术来实现语义Web应用程序的几种方法。你将学习如何将现有数据源整合到能够理解语义的应用程序中以及如何发布带有丰富语义的数据。本书的每一章都会向你展示一种独特的语义技术,并告诉你如何使用该技术解决实际的问题。不管你是要编写一个简单的混搭程序,还是要维护某个高性能企业级的解决方案,《语义Web编程》都提供了一种集成系统和数据的标准、灵活和不会过时的方法。
     本书将帮助你:
     学习语义Web如何引导出现新的和未曾预料到的数据使用方式
     理解语义技术如何使用一种简单、抽象的知识表示模型来提高数据的可移植性 
     熟悉语义标准,比如资源描述框架(RDF)和Web本体语言(OWL)
     使用语义编程技术来增进并简化现有的Web应用程序


作者简介

托比•塞加兰

《集体智慧编程》的作者,生物技术软件公司Incellico的创始人。

科林•埃文斯

擅长将机器学习和语义分析相结合,就职于Metaweb公司。

杰米•泰勒

     拥有经济学博士学位,就职于Freebase公司,他指导计算机如何处理语义


前言


与生物有机体一样,计算机运行在复杂的、相互关联的环境中,系统中的每个部分都会影响其他很多部分。类似于捕食者与被捕食者的关系,应用程序和它们消费的数据往往遵循着共同进化的路径。应用程序中的累积更改最终需要修改其操作的数据结构。与之相反,当向数据源增加内容时,表达附加信息的结构通常会迫使应用程序做相应修改。不幸的是,由于涉及很大的工作量,这种连锁变革往往会阻碍应用程序和数据源的改进。

在其核心上,语义技术通过使用简单的抽象模型来实现知识表示,从而将应用程序与数据分离开来。该模型释放了应用程序和数据之间的相互约束,使两者都能够独立进化。通过设计提高应用程序和数据之间的独立程度改善了数据的可移植性。任何理解相应模型的应用程序都可以处理任何使用该模型的数据源。正是这种数据可移植性构成了机器可读语义Web概念的基础。

当前的Web运行良好,因为人类是非常灵活的数据处理器。无论网页上的信息是作为表格、大纲还是多页面叙述的排列形式,我们都能够提取重要信息并用它来指导进一步的知识发现。然而,这种信息的异构性对于机器来说是无法解读的,而且网上数据的丰富表示形式只会使问题加重。如果Web上可用的丰富信息能够被内容提供者编码为语义数据结构,那么任何应用程序都可以访问和使用我们所依赖的丰富数据。在这个愿景中,不同来源的数据可以无缝地集成起来,从交汇融合中产生新的知识。这就是语义Web的愿景。

现在,应用程序是否可以利用这些丰富的数据做出任何有趣的事情,正是开发人员可以发力的地方!语义技术使开发人员可以专注于应用程序的行为而不是数据处理。当给定新的数据源时,这个系统会做什么?它如何使用改进后的数据模型?当多个数据源彼此丰富时,用户体验如何提高?将知识的利用和对底层数据的操作区分开来,可以让开发人员专注于应用程序中带来价值的因素。

语义Web的愿景承诺美好,这个愿景的真正价值在于,它孕育了使数据更具可移植性和可扩展性的技术。无论你是在编写简单的混搭代码还是在维护高性能企业解决方案,本书都提供了一种标准和灵活的方法,用于集成系统和数据使之更适于未来发展。

使用代码示例

本书旨在帮助你完成工作。通常,你可以在你的程序和文档中随意使用本书中的代码。除非引用大量的源代码,否则无须征得我们的许可。例如,编写程序时使用本书中几个代码块是无须许可的,而销售或发行O'Reilly书籍中的示例CD-ROM需要获得许可。通过引用本书内容及示例代码来答疑解难是无须许可的,将本书中的大量示例代码加入到你的产品文档中是需要许可的。

我们赞赏,但不要求你在引用时注明出处。引用通常包括标题、作者、出版商和ISBN。

如果你发现自己对示例代码的使用有失公允或违反了上述条款,请通过permissions@ oreilly.com与我们联系。

Safari在线电子书

当你在喜爱的技术书籍封面上看到一个Safari在线电子书图标时,表示该书可通过O'Reilly Network Safari Bookshelf在线获取。

Safari提供的解决方案比电子书更好。这是一个虚拟图书馆,你可以轻松搜索数以千计的高科技图书,剪切和粘贴代码示例,下载章节,并在需要最准确、最新的信息时快速找到答案。在http://my.safaribooksonline.com可免费试用。

如何联系我们

请将有关本书的评论和问题,发送给出版商:

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

我们为本书设立了网页,列出勘误表、示例和其他信息。可以通过以下网址访问此页:

http://www.oreilly.com/catalog/9780596153816

要发表评论或提出有关本书的技术问题,请发送电子邮件至:

bookquestions@oreilly.com

有关我们的书籍、会议、资源中心的更多信息,以及O扲eilly Network,请访问我们的网站:

http://www.oreilly.com

作者已经建立了一个网站作为社区资源,用于演示语义技术的实用方法。可以通过以下网址访问此网站:

http://www.semprog.com


专家推荐



技术就在这里,所需的工具已经齐备,本书将向你展示如何使这些技术为你所用。

——吉姆•亨德勒

AI研究者,语义Web的发起者之一


《语义Web编程》是一本适合动手实操的最好的语义Web实践指南,所有学习数据Web的工程师的必读材料。本书将提供你游泳的工具,使你既可以在Web上发布数据,也可以在你自己的应用程序中利用元数据。

——彼得•米卡

研究者,雅虎数据架构师


   目录


前言1

第一部分 语义数据

第1章 为什么需要语义7

跨Web的数据集成8

传统的数据建模方法9

表格数据9

关系数据11

演化和重构模式12

非常复杂的模式14

第一次就做对16

语义关系17

元数据是数据19

构造意想不到的模式19

永久Beta(测试)19

第2章 表达含义21

示例:电影数据23

构建简单的三元组存储24

索引25

添加和删除方法25

查询27

合并图28

添加和查询电影数据30

其他例子31

地点31

名人33

商业35

第3章 使用语义数据38

一种简单的查询语言38

变量绑定38

实现一种查询语言41

前馈推理44

推理新三元组44

地理编码46

链式规则48

关于“人工智能”51

寻找连接51

凯文·培根六度分隔52

共享键与重叠图54

示例:合并商业和地点图54

查询合并图55

基础图形可视化56

Graphviz56

显示三元组集合56

显示查询结果58

语义数据是灵活的59

第二部分 标准与数据源

第4章 刚好够用的RDF63

RDF是什么63

RDF数据模型64

URI是强大的键64

资源65

空节点66

文字值68

RDF序列化格式68

一张朋友的图69

N-Triples70

N371

RDF/XML73

RDFa75

RDFLib介绍80

RDFLib的持久化82

SPARQL84

SELECT查询形式86

OPTIONAL和FILTER约束86

多个图模式88

CONSTRUCT查询形式90

ASK和DESCRIBE查询形式91

RDFLib中的SPARQL查询92

有用的查询修饰符94

第5章 语义数据的来源96

朋友的朋友(FOAF)96

社交网络的图分析100

关联数据104

数据云105

你是你的FOAF文件吗106

使用关联数据109

Freebase115

一个标识数据库116

RDF接口117

Freebase模式118

MQL接口121

使用metaweb.py库122

与人类交互124

第6章 “本体”是什么意思126

本体有什么好处126

对含义的共识127

模型即数据127

数据建模介绍128

类和属性128

对电影建模130

具体化关系133

刚好够用的OWL134

使用Protégé138

创建新的本体138

编辑本体139

再多一点OWL142

函数式和逆函数式属性142

逆属性142

不相交的类142

保持务实144

一些其他的本体144

描述FOAF144

啤酒本体145

这不是漂亮的关系模式147

第7章 发布语义数据149

嵌入语义149

微格式150

RDFa152

雅虎SearchMonkey154

谷歌富片段155

处理历史遗留数据156

因特网视频档案156

表格和电子表格161

传统关系数据164

RDFLib到关联数据167

第三部分 付诸实践

第8章 工具包概述177

Sesame177

使用Sesame Java API178

Sesame中的RDFS推理187

Sesame服务器的Servlet容器190

安装Sesame Web应用程序190

工作台191

添加数据193

SPARQL查询194

REST API195

其他RDF存储197

Jena198

Redland198

Mulgara198

OpenLink Virtuoso198

Franz AllegroGraph198

Oracle199

SIMILE/Exhibit199

一个简单的Exhibit页面200

搜索、过滤和更漂亮的视图202

链接到Sesame205

时间轴205

第9章 从数据自省到对象208

RDFObject例子208

RDFObject框架210

RDFObject是如何工作的218

第10章 完成组装219

职位清单应用程序219

应用程序需求220

职位清单数据220

转换为RDF221

将数据加载到Sesame中223

服务网站223

CherryPy224

Mako页面模板225

一种通用视图226

从Sesame获取数据228

通用的模板228

获得公司数据229

Crunchbase229

雅虎金融232

协调Freebase连接234

专用视图236

为其他人发布数据239

RDFa240

RDF / XML241

扩展数据242

位置243

地理、经济、人口243

复杂查询244

工作数据可视化247

进一步扩展249

第四部分 后记

第11章 巨型全球图253

愿景、炒作和现实253

参与全球图社区256

将数据发布给大众256

许可证257

数据循环258

迎接不断的变化259

目录
相关文章
|
6月前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
130 5
掌握JSP页面编程:动态生成Web内容
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
183 3
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
219 1
|
2月前
|
Java API Apache
从零到英雄的蜕变:如何用Apache Wicket打造你的第一个Web应用——不仅是教程,更是编程之旅的启航
【9月更文挑战第4天】学习Apache Wicket这一开源Java Web应用框架是一段激动人心的旅程。本文将指导你通过Maven搭建环境,并创建首个“Hello, World!”应用。从配置`pom.xml`到实现`HelloWorldApplication`类,再到`web.xml`的设置,一步步教你构建与部署简单网页。适合初学者快速上手,体验其简洁API与强大组件化设计的魅力。
44 1
|
3月前
|
存储 关系型数据库 MySQL
PHP编程基础:构建你的第一个Web应用
【8月更文挑战第31天】 在数字时代的海洋里,每个人都可以成为自己命运的船长。本文将引领初学者启航,用PHP语言搭建起第一个属于自己的网站。我们将从浅入深,逐步探索PHP的世界,最终实现一个简单的个人博客系统。这不仅是一段代码的旅程,更是一次思维和技术的飞跃。
|
3月前
|
开发框架 开发工具 Java
从零到高手:一文教你快速上手Vaadin,打造首个炫酷Web应用,开启编程新世界的大门
【8月更文挑战第31天】Vaadin是一款基于Java的Web应用开发框架,以其丰富的组件库、简洁的API及对现代Web标准的支持而广受开发者欢迎。本文将指导你从零开始快速搭建一个简单的Vaadin应用。首先确保已安装JDK 11及以上版本和IDE(如IntelliJ IDEA或Eclipse)。接着使用Spring Initializr创建新项目,并选中“Spring Web”和“Vaadin”依赖。创建项目后,编写主应用类和主页类,实现基本页面功能。最后配置启动页面并运行应用。通过这些步骤,你将成功搭建一个基础Vaadin应用,开启探索更多特性的旅程。
144 0
|
3月前
|
开发者 Python
神秘编程世界惊现强大调试法宝!FastAPI 究竟藏着怎样的秘密?带你解决 Web 应用问题大揭秘!
【8月更文挑战第31天】在 Web 应用开发中,调试至关重要,有助于迅速定位并解决问题,确保应用稳定运行。不同于传统框架依赖打印日志和手动检查代码的方式,FastAPI 作为现代 Python Web 框架,提供了内置开发服务器和自动重载功能,极大提升了开发效率。结合 Python 调试器,开发者可通过设置断点来逐步执行代码,直观精确地观察变量值与执行流程,快速定位问题。此外,FastAPI 还提供详细错误信息和日志记录,帮助开发者更高效地解决应用问题,提升应用质量。
32 0
|
3月前
|
存储 前端开发 数据库
神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
35 0
|
5月前
|
前端开发 JavaScript 开发工具
Web网页前端教程免费:引领您踏入编程的奇幻世界
Web网页前端教程免费:引领您踏入编程的奇幻世界
51 3
|
5月前
|
开发框架 安全 网络协议
27.Python Web 编程基础
27.Python Web 编程基础
35 3