《集体智慧编程》的作者,生物技术软件公司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