Mashup的例子
ChicagoCrime.org 的 Web 站点上有非常直观的例子,它将芝加哥警局在线数据库中的犯罪记录与 Google Maps 上的地图复合在一起。用户可以与 mashup 站点进行交互,例如告诉它在图形界面上显示一个包含图钉的地图,图钉展示南加州最近所有入室抢劫案件的详细信息。这种概念和呈现方式非常简单,犯罪和地图数据复合之后提供的可视化的功能非常强大。
地图 mashup
mashup 蓬勃发展的一种主要动力就是 Google 公开了自己的 Google Maps API。这仿佛打开了一道大门,让 Web 开发人员(包括爱好者、修补程序开发人员和其他一些人)可以在地图中包含所有类型的数据(从原子弹灾难到波士顿的 CowParade 奶牛都可以)。为了不落于人后,Microsoft(Virtual Earth)、Yahoo(Yahoo Maps)和 AOL(MapQuest)也很快相继公开了自己的 API。
视频和图像 mashup
图像主机和社交网络站点(例如Flickr使用自己的API来共享图像)的兴起导致出现了很多有趣的mashup。由于内容提供者拥有与其保存的图像相关的元数据(例如谁拍的照片,照片的内容是什么,在何时何地拍摄的等等),mashup的设计者可以将这些照片和其他与元数据相关的信息放到一起。例如,mashup可以对歌曲或诗词进行分析,从而将相关照片拼接在一起,或者基于相同的照片元数据(标题、时间戳或其他元数据)显示社交网络图。另外一个例子可能以一个Web站点(例如CNN之类的新闻站点)作为输入,并在新闻中通过照片匹配而将照片中的内容以文字的形式呈现出来。
搜索和购物 mashup
在 Web API 出现之前,有相当多的购物工具,例如 BizRate、PriceGrabber、MySimon 和 Google 的 Froogle,都使用了B2B技术或屏幕抓取的方式来累计相关的价格数据。为了促进mashup和其他有趣的Web应用程序的发展,诸如eBay和Amazon之类的消费网站已经为通过编程访问自己的内容而发布了自己的 API。
新闻 mashup
新闻源(例如纽约时报、BBC 或路透社)已从 2002 年起使用 RSS 和 Atom 之类的联合技术来发布各个主题的新闻提要。以联合技术为基础的 mashup 可以聚集一名用户的提要,并将其通过 Web 呈现出来,创建个性化的报纸,从而满足读者独特的兴趣。Diggdot.us 正是这样的一个例子,它合并了 Digg.com、Slashdot.org 和 Del.icio.us 上与技术有关的内容。
建造Mashup的技术:
SOAP 是 Web 服务范式中的一种基本技术。最初它是 Simple Object Access Protocol 的缩写,现在代表 Services-Oriented Access Protocol(或直接缩写为 SOAP),这是因为它的重点已经从基于对象的系统转向消息交换的交互操作。SOAP 规范中有两个关键组件。第一个组件是使用 XML 消息格式进行平台无关的编码,第二个组件消息结构,包括消息头和消息体。消息头用来交换非特定于应用负载(消息体)的相关信息,例如认证信息。SOAP 消息体封装了应用程序特有的负载。Web 服务的 SOAP API 是由 WSDL 文档来描述的,它们本身都描述了一个服务对外提供哪些操作,它可以接受的消息格式(使用 XML Schema),以及如何对其进行寻址。SOAP 消息通常都是通过 HTTP 协议传送的,不过也可以通过其他方式传送(例如 JMS 或 e-mail)。
REST 是 Representational State Transfer 的缩写,这是一种只使用 HTTP 和 XML 进行基于 Web 通信的技术。它的简单性和缺少严格配置文件的特性使它与 SOAP 很好地隔离开来,并且吸引了大家广泛的兴趣。与我们在现代变成语言中可以找到的典型基于动词的接口不同(它们构成了各种方法,例如 getEmployee()、addEmployee()、listEmployees() 等)不同,REST 从根本上来说只支持几个操作(即 POST、GET、PUT、DELETE),这些操作适用于所有的消息。REST 强调信息本身,称为资源。例如,一个员工的资源记录是由 URI 标识的,这可以通过一个 GET 方法获得,并使用一个 PUT 操作进行更新,等等。使用这种方法,REST 就与文档文本风格的 SOAP 服务非常类似。
屏幕抓取
正如前面介绍的一样,缺乏内容提供者提供的 API 通常会强制要求 mashup 开发人员采取屏幕抓取的方式来提取自己希望集成的信息。抓取(Scraping)是使用软件工具处理并分析最初为人们阅读而编写的内容,从而从中提取出可以通过编程进行使用和操作的信息的语义数据结构表示。有些 mashup 使用屏幕抓取技术来获取数据,特别是从公用领域提取数据。例如,房地产地图 mashup 就可以在制图供应商提供的地图上显示售价和租价,这些数据可能是从当地的记录办公室抓取来的 “comp” 数据。另外一个抓取数据的 mashup 项目是 XMLTV,这是一组汇聚了各地电视节目清单的工具集。
屏幕抓取通常被认为是一个不雅的解决方案,这是有一定的原因的。它有两个主要的固有缺点。第一个缺点在于,与使用接口的 API 不同,抓取在内容提供者和内容消费者之间没有明确的联系。抓取者必须围绕一个源内容模型设计自己的工具,并且希望提供者一直采用这种模型来呈现内容。 Web 站点倾向于周期性地更新外观,以保持新颖和时髦,对于抓取者来说,这是一项非常头痛的维护任务,因为工具很可能会失效。
第二个问题是缺少成熟的可重用屏幕抓取工具包软件,通俗地说就称为 scrAPI。此类 API 和工具包的消亡很大程度上是由于每种抓取工具都有极为特定于应用程序的需求。这为开发人员带来了过多的开发工作,他们必须对内容进行反向工程处理、开发数据模型、分析并从提供者站点上汇集原始数据。
语义 Web 和 RDF
屏幕抓取不好的一面直接源自于一个事实:为阅读而创建的内容并不太适合机器自动处理。这促进了语义 Web 的诞生,它是现有 Web 的增强版本,在为人们设计的内容中增加了足够多的可供机器阅读的信息。在语义 Web 环境中,信息这个术语与数据有所差异;数据只有在传达了自己的含义(即数据可被理解)之后才会变成信息。语义 Web 的目标是创建 Web 基础设施,使用元数据对数据进行增强,从而使数据变得有意义,最终使数据变得适合进行自动化、集成、推理和重用。
被称为资源描述框架(RDF)的 W3C 系列规范就是服务于这个目的的技术,它用来建立描述数据的语义结构。XML 本身并不足以实现这种功能;它太过随意,我们可以使用很多方法进行编码来对相同的数据进行描述。RDF-Schema 补充了 RDF 的能力,提供了以机器可读的方式编码概念的功能。一旦可通过一种数据模型描述数据对象,RDF 就提供了通过主语-谓语-对象三元组(主语 S 与对象 O 具有关系 R)在数据对象之间构建关系的能力。数据模型与关系图之间的区别让我们可以进行存在式的构建,这是可以进行搜索和形式化推理的知识的层次化结构。例如,我们可以定义这样一个模型:“肉食动物” 是 “动物” 的一个子类,条件是它 “吃” 其他 “动物”;并创建两个实例:一个实例是印度豹和北极熊,并提供它们的生存环境;另外一个是瞪羚和企鹅,并提供它们的生存环境。假设我们将这些单独的模型实例集成在一起,就可以推论说印度豹可能会以瞪羚为食,但却不会吃企鹅。
RDF 数据在很多领域中都迅速得到了应用,包括社交网络应用程序(例如 FOAF —— Friend of a Friend)和联合(例如 RSS,接下来就会介绍)。另外,RDF 软件技术和组件都正在成熟到一定规模,尤其是在 RDF 查询语言(例如 RDQL 和 SPARQL)、编程框架和推理引擎(例如 Jena 和 Redland)领域。
RSS 和 ATOM
RSS 是一系列基于 XML 的联合格式。在这种情况中,联合(syndication)是指一个发布内容的 Web 站点可以创建 RSS 文档并在 RSS 发布系统中注册自己的文档。支持 RSS 的客户机可以查看新内容,并通过适当的方式连接到这些内容上。RSS 已经被用来联合广泛的内容,从新闻到头条、CVS 或 WIKI 页面的修改日志、项目更新甚至诸如无线电节目之类的视听数据。版本 1.0 基于 RDF,但最新的 2.0 版本不以 RDF 为基础。
Atom 是一种更新但非常类似的联合协议。它是 Internet Engineering Task Force(IETF)提出的一项草案标准,人们希望通过 Atom 提供比 RSS 更好的元数据维护;提供更好、更为全面的文档,并结合构建通用数据表示的概念。
这些联合技术对于集成基于事件或更新驱动内容的 mashup 来说都非常有用,例如新闻和 weblog 聚集程序。
通过Google Maps Mashup能完成的25件事,Google Maps所产生的创意无限,在生活中的价值也日渐展现,一起来看!
1. 计算你旅行的行程或者折扣 http://www.gmap-pedometer.com
2. 查看世界各地的时间 http://www.qlock.com/time/gmaps?map=1
3. 分享地球各地资讯 [中文] http://www.eemap.org [英文] http://www.wikimapia.org
4. 测量地区面积 http://www.acme.com/planimeter
5. 使用任何地图定制自己的Google maps http://www.maplib.net
6. 在地图上贴上自己的项目 http://www.panoramio.com
7. 查看地球下面的情景(比如中国的地球下面是美国) http://www.zefrank.com/sandwich/tool.html
8. 在美国找人 http://www.personmaps.com
9. 检查各地天气 http://www.weatherbonk.com
10. 寻找附近星巴克 http://www.findbyclick.com/coffee_s.html
11. 发现Ebay房地产交易情况 http://www.2realestateauctions.com
12. 寻找美国或者英国机场的停车场 http://www.aboutairportparking.com http://buy-by-map.com/airporthotels
13. 创建活动线路 http://www.walkjogrun.net
14. 观看旅行录像 http://virtualtourism.blogspot.com/
15. 在美国寻找快餐店 http://www.hardtoremember.org/fastfood/food.php
16. 翻译美国邮政编码 http://maps.huge.info/zip.htm
17. 通过邮编查看本地新闻 http://mibazaar.com/localnews/index.html
18. 了解和避免疫情 http://www.healthmap.org
19. 了解交通状况 http://supergreg.hopto.org/google-yahoo/
20. 做出自己谷歌mashup地图 http://www.eemap.org http://www.communitywalk.com
21. 避免交警探头 http://www.photoenforced.com/us.html
22. 寻找廉价加油站 http://www.mapgasprices.com
23. 检查日落或者日出时间 http://www.earthtools.org
24. 货币兑换 http://www.gchart.com/currency.php
25. 换个地方生活 http://www.housingmaps.com
浙公网安备 33010602011771号