2.4 航线图介绍
在本书中,笔者提供了一张,从大数据的角度看,它非常的小,但是是真实世界中的图,这个图以 GraphML 的格式存储,这种 GraphML 是一种标准的描述图的 XML 格式,这种格式可以在不同的应用中传递图数据。这张航线图是笔者依照真实的航线网络建模的,它相当的精确。
您可以从 Github 仓库样例数据文件中下载到这份名为 air-routes.graphml 的文件。URL: https://github.com/krlawrence/graph/tree/master/sample-data
当然在真实世界中,航空公司会随时增加或者删除航线,所以请您不要始用本图来规划您未来的休闲度假或者商务出行。但是把它作为学习的工具,笔者相信您会发现它的价值并轻松的使用它。如果您对该文件感兴趣,您也可以把它加载到文本编辑工具中,并研究它的布局结构。在从事图数据工作的时候,您就会对于流行的图序列化格式非常熟悉。常见的两种格式是 GraphML 和 GraphSON。GraphSON 是一种 JSON 格式,它由阿帕奇 TinkerPop 定义,并主要用在 TinkerPop 中。 GraphML 也能被 TinkerPop 识别,其它的一些工具如 Gephi, 一种流行的开源图数据可视化工具也能识别 GraphML。大量的图分析工具也会使用 CSV 格式的文件。
我们会在第二节和第四节简要了了解加载和保存图数据。 笔者会在本书最后的“常见的图序列化格式”一节中一起看一下在存储于文本格式的图数据文件上工作的多种方式,包括导入图数据和导出图数据。
航线图包括了多种顶点类型,这些顶点类型是通过标签来指示的。最常见的是机场和国家。也有七个周的顶点,和唯一的版本顶点,这个是用于测试您所使用的图的版本信息的。
机场之间的路径建模成了边。这些边包括了路线标签和两个相邻机场之间的距离,这个距离我们把它做为一个属性称之为“dist”。国家和机场之间的关系建模的时候用到了带有“contains”标签的边。
每个机场顶点都有多个与之关联的属性,这些属性给出来了这个机场的详细的信息,包括了国际航空运输协会 IATA 代码和国际民用航空组织 ICAO 代码、描述信息、它所在的城市和地理位置。特别要说的是,每个机场顶点都有唯一的 ID,机场的标签和如下的属性。括号中的内容说明了该属性的数据类型。
航线图加载到了小精灵控制台后,我们就可以看到机场顶点的属性了。下面这个例子是 Austin 机场顶点的样子。稍后笔者会解释构成小精灵查询的步骤。在此之前,我们一起花点时间了解一下如何加载数据,并做进行一些控制台的偏好设置。
即使机场顶点的标签是“airport”,笔者仍然确保有一个称为“type”的属性,它所包含的内容是字符串“airport”.这样做是为了方便在其它的图数据库系统索引时用到,该内容会在本书后续展开来解释。
您可能已经注意到,每个属性的值都是以列表的形式呈现的,甚至一些列表中只包含一个元素。之所以这样做,会在本书后别详细解释。简单来说就是因为 TinkerPop 允许我们把一个列表做为顶点的属性。在“把多个值赋值给一个属性”这一节里,我们会分析这一能力为您带来的好处。航线图所具有的特性的详细信息您可以通过阅读航线图文件开头的注释部分,或者阅读 README.txt 详细件。
这个航线图中包括了 3619 个顶点和 50148 条边,其中 3374 个顶点是机场,43400 条边是机场之间的路径。从大数据领域来看,这真的是一张迷你小图;但是这张图对我们来说已经足够大了,我们用它来体会小精灵查询语言的乐趣,这图已足够大,足够用了。
最后,是从航线图中得到的一些统计结果和事实。如果您想看到更多的统计信息,可以查看 README.txt 文件。
下面是按机场的全部路线排序得到的排名前 15 的机场的信息。在图论或者图数据库领域我们通常称之为顶点的度数,或者顶点的度。
学习过本书后,您会发现使用小精灵查询语言,您可以生成这些统计结果中的大多数。
名称为 graph-stats.groovy 的样例脚本,您可以从 Github 仓库的样例代码文件夹中找到。这个脚本说明了如何去生成图的统计数据。脚本的地址如下:
https://github.com/krlawrence/graph/tree/master/sample-code
2.4.1 航线图数据的更新版本
为了保持一致性,本书中所呈现的例子都是用同一个版本的航线图的数据生成的。这些数据生成的时间是 2017 年的 10 月。在笔者看来重要的是:例子要保持一致,这就意味着本书中的一些例子比如最长的航空路径,这些数据已经过时了。
您可以从 GitHub 中下载最新版本的航线数据集。
https://github.com/krlawrence/graph/blob/master/sample-data/air-routes-latest.graphml
如果您想要得到最新的数据结果,最新的航线数据集是可以从 Github 中取得的。这些文件在样例数据文件夹中。文件的名称是“air-routes-latest.graphml”和最新的数据一起的还有一个 README 的文件,文件的名称是“README-air-routes-latest.txt”,这个文件和最新的航线图文件是在同一个文件夹中的。
版权声明: 本文为 InfoQ 作者【Geek_古藤模根】的原创文章。
原文链接:【http://xie.infoq.cn/article/ded31aabebed132dfb2f730ec】。文章转载请联系作者。
评论