对子图的缓存以及将缓存的子图集成到图查询结果中的制作方法

文档序号:18516604发布日期:2019-08-24 09:30阅读:113来源:国知局
对子图的缓存以及将缓存的子图集成到图查询结果中的制作方法

在图数据库中,将实体表示为节点,并且将这些实体之间的关系表示为图数据库所维护的关系图的视图中的边。用户可以经由图查询周期性地查询关系图,以了解实体之间的关系。例如,用户可以发出图查询以查找社交网络内的朋友或联系人、给定用户与之交互过的文档、访问过给定文档的用户、满足各种搜索准则的实体等等。图查询产生被查询图数据库中满足查询条件的子图。此外,并不少见的是,图查询在节点处开始,然后遵循针对一组新节点的一些关系集合,然后再沿着一组新关系扩展到另一组节点。扩展层级的数量是开放的,并且随着查询的复杂性和图数据库的大小的增加,每个查询必须跨越整个子图的代价可能变得非常大。



技术实现要素:

提供本概括部分以便用简化的形式介绍将在以下的详细描述中进一步描述的概念选择。本概括部分并不是旨在标识本发明的关键特征或本质特征,也不是用于限制本发明的保护范围。

本发明提供了用于通过缓存子图和实现缓存子图的利用,在遍历存储在关系图中的数据时减少延迟和/或提高计算效率的系统、方法、以及体现指令的计算机可读设备。具体而言,在用户执行图查询之后,以可重用形式对获得的图查询的子图进行缓存。后续的图查询能够基于图查询来识别缓存的子图。此外,后续的图查询可用于将缓存的子图集成为后续图查询的结果的一部分,后续图查询的结果可以包括由缓存的子图组成的后续图查询的一部分或整个结果,从而允许系统将图查询执行直接跳到所缓存的子图的边缘(fringe)。

因此,缓存子图并且将缓存的子图集成到图查询结果中,提供了查询关系图的计算效率和性能的改进,减少了遍历关系图所需的查询执行代价,从而提高了托管关系图和运行查询的计算设备的功能。

示例实现成计算机进程、计算系统或诸如设备、计算机程序产品或计算机可读介质之类的制品。根据一个方面,该计算机程序产品是计算机系统可读的、并且对包括有用于执行计算机进程的指令的计算机程序进行编码的计算机存储介质。

在下面的附图和描述中阐述了一个或多个方面的细节。通过阅读以下详细描述并查看相关的附图,其它特征和优点将变得显而易见。应当理解,以下的详细描述仅仅是解释性的,而不是对权利要求的限制。

附图说明

包含在本公开内容中并构成本公开内容的一部分的附图示出了各个方面。在附图中:

图1示出了可以实现本公开内容的示例性环境;

图2是示出用于实现缓存子图的示例方法中所涉及的通常阶段的流程图;

图3是示出用于将缓存的子图集成到图查询结果中的示例方法中所涉及的通常阶段的流程图;

图4是示出用于将缓存的子图集成到图查询结果中的示例方法中所涉及的通常阶段的流程图;

图5是示出计算设备的示例性物理部件的框图;

图6a和图6b是一种移动计算设备的框图;以及

图7是一种分布式计算系统的框图。

具体实施方式

下面的详细描述参照附图。在可以时,在附图和下面的描述中使用相同的附图标记来指代相同或者类似的元素。虽然描述了一些示例,但针对其的修改、调整和其它实现方式也是可能的。例如,可以对附图中所示出的组成部分进行替代、增加或者修改,可以通过对所公开的方法进行替代、重新排序或者增加阶段来修改本发明所描述的方法。因此,以下的详细描述并非是对本发明进行限制,相反,本发明的适当保护范围由所附权利要求书进行界定。示例可以采用硬件实施方式、或整个软件实施方式、或者组合软件和硬件方面的实施方式。因此,下面的详细描述不应采用限制性的意义。

本发明提供了用于通过缓存子图和实现缓存子图的利用,在遍历存储在关系图中的数据时减少延迟和/或提高计算效率的系统、方法、以及体现指令的计算机可读设备。具体而言,在用户执行图查询之后,以可重用形式对获得的图查询的子图进行缓存。后续的图查询能够基于图查询来识别缓存的子图。此外,后续的图查询可用于将缓存的子图集成为后续图查询的结果的一部分,后续图查询的结果可以包括由缓存的子图组成的后续图查询的一部分或整个结果,从而允许系统将图查询直接执行到所缓存的子图的边缘(fringe)。

因此,缓存子图并且将缓存的子图集成到图查询结果中,提供了查询关系图的计算效率和性能的改进,减少了遍历关系图所需的查询执行代价,从而提高了托管关系图和运行查询的计算设备的功能。

图1示出了可以实现本公开内容的示例性环境100。用户设备110与图服务器120进行通信,图服务器120在图数据库130中维护关系图。关系图将一些实体维持为节点,将这些节点之间的关系维持为连接相关节点的边,图数据库130可用于存储一个或多个关系图以及其子图以便用户设备110进行查询。此外,对来自先前图查询的子图进行缓存以供后续获取。响应于接收图查询,基于查询信息识别相关的缓存子图,并且将相关的缓存子图集成到图查询的结果中。然后,将请求的结果发送回用户设备110。

用户设备110和图服务器120是包括但不限于以下的多个计算系统的示例:桌面型计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板设备或平板型计算机、笔记本计算机和膝上型计算机)、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、微型计算机、打印机和大型计算机。关于图5、6a和6b以及图7更详细地讨论这些计算系统的硬件。用户设备110由用户操作,用户可以是人或者自动系统(例如,“机器人”)。在各个方面,用户设备110和图服务器120可以由用户访问、或彼此本地访问和/或通过网络访问,该网络可以包括互联网、局域网(lan)、用于某个实体(例如,公司、大学、政府机构)的专有分布式网络、无线自组织网络、虚拟专用网络(vpn)或者其它直接数据链路(例如,蓝牙连接、直接有线链路)。

图服务器120托管关系图的图数据库130,其中节点描述实体和这些实体的一组伴随属性(例如,名称、标题、年龄、地址等)。可以认为每个属性是一个键/值对:属性的名称以及其值。在其它例子中,将实体表示为包括文档、会议、通信等的节点、以及表示这些实体之间的关系的边(例如,人员节点和文档节点之间的边,其表示该人员对该文档的著作、修改或视图)。

图服务器120执行由各个用户提交的图查询。图服务器120还可操作以访问驻留在图数据库130中的图形结构描述,在各个方面,图数据库130可以包括:关系数据库、nosql数据库或任何其它数据库。在各个方面,关系图的子图或视图存储在图数据库130中,以用于针对相同度量的后续图查询。在一些方面,当图服务器120响应于图查询产生子图时,图服务器120检查在图数据库130中是否存在将满足该图查询的缓存子图,并且将通过从图数据库130中对其进行获取来生成该子图形,否则图服务器120将通过执行图查询来产生子图,并且缓存获得的子图以供以后获取。

图2是示出用于实现缓存子图的示例方法200中所涉及的通常阶段的流程图。方法200开始于操作210,其中图服务器120接收对托管的关系图的视图的请求。在各个方面,该请求是关系图的查询。例如,用户设备110的用户可以向托管关系图的图服务器120发送请求,其中关系图描述包括以下的组织结构:对应于“用户”、“建筑物”和“项目”的节点、用户之间的关系(例如,“其管理者”)、用户和建筑物之间的关系(例如,“工作场所”)、以及用户和项目之间的关系(例如,“工作于”)。这些节点具有诸如名称、标题、地址等等之类的属性。在一个例子中,查询请求关系图中被列为管理者(节点的查询)的人的信息。

转到操作220,该查询用于访问关系图的视图。在各个方面,可以响应于查询来创建关系图的视图。为了说明查询,考虑代码1中所示的例子。在代码1中,可以对查询进行如图所示地格式化,该查询是对组织中人员的名称的请求的一部分,其中“alice”是“其管理者”。在不同的方面,可以根据访问关系图以及其子图的不同查询语言,对查询进行格式化,本领域普通技术人员将熟悉相关的查询语言,这些查询语言包括但不限于:cypher、fql(facebook查询语言)和sql(结构化查询语言)。代码1中显示的查询请求关系图中的实体,这些实体具有与“alice”和“其管理者”的参数匹配的属性,并且返回将这些实体的名称作为被查询的关系图的列表或视图(例如,子图)的结果。

代码1:match(a:user{name:“alice”})-[r:manager_of]->(u:user)

returnu.name

在操作230处,对子图进行缓存。根据一个方面,将子图缓存到图服务器120以供稍后的查询进行访问。关于该例子,当执行该查询时,对所获得的子图(即,对应于alice和她的指示的节点以及它们之间的边)进行缓存以供将来使用。除非结果已经无效,否则下次相同的查询到达图服务器120时,可以直接使用该子图。

在操作240处,向提交在操作210中接收的请求的用户设备110发送查询的结果。在各个方面,可以将结果发送成关系图的视图、子图或者另一种格式的数据。关于代码1,查询的结果标识对应于“alice”的user(用户)节点、以及用于标识alice指导的人的manger_of边。然后,方法200可以结束。

在图2的另一个例子中,其示出了用于实现缓存子图的示例方法200中所涉及的通常阶段。方法200开始于操作210,其中图服务器120接收对托管的关系图的视图的查询。

转到操作220,使用查询来访问关系图的视图。为了说明查询,考虑代码2中示出的例子。在代码2中,查询是对组织中与alice在同一建筑物中工作的人员姓名的请求的一部分。代码2中示出的查询从关系图中请求具有与“alice”和“工作场所”的参数匹配的属性的实体,并且返回将这些实体的名称作为被查询的关系图的列表或视图(例如,子图)的结果。

代码2:match(a:user{name:“alice”})-[r1:works_in]->(b:building)<-[r2:works_in]-(u:user)

returnu.name

在操作230处,对子图进行缓存。根据一个方面,将子图缓存到图服务器120以供后续查询进行访问。

在操作240处,将查询的结果发送到用户设备110。关于代码1,查询的结果标识“alice”的user节点、以及用于标识在同一建筑物中工作的人员的works_in边。然后,方法200结束。

虽然上面的示例代码1和代码2涉及“alice”,但还应当注意,子图缓存对于回答源自不同用户的查询也很有用。具体而言,如果先前描述的图描述了大型组织,则管理者层次结构可能包含多个层级。例如,如果“paul”是首席执行官(ceo),则paul有多个用户向他报告,其中一个是“joe”。joe也管理多个用户,而沿着管理者链的几个链是alice,而“maria”是alice管理的用户之一。因此,在代码3中示出了对用户的管理者链的一个查询。

代码3:match(u:user{name:“username”})<-[:manager_of*]-(m:user)

returnm.name

在示例代码3中,星号指示可以存在多个层级的“管理者”关系。因此,如果joe执行查询,以“joe”作为用户名,则获得的子图将是与joe和paul相对应的两个节点、以及将两者连接起来的“其管理者”边。接着,alice查询她的管理者链。如果不利用子图缓存,这将导致沿着从alice到她的管理者的边,沿着从她的管理者到下一个管理者的边,以此类推直到最终命中paul并且查询终止为止。但是,如果利用子图缓存,则当alice的查询命中已经由joe的查询所跨越的关系图的一部分(其被缓存为子图)时,则使用来自joe的先前查询的缓存子图。此外,如果maria查询她的管理者链,那么唯一需要做的工作就是沿着单一边缘,并且对管理者链的其余部分进行缓存并且可使用其来回答查询。

图3是示出用于将缓存的子图集成到图查询结果中的示例方法300所涉及的通常阶段的流程图。例如,可以在图2中的示例方法200已经发生并且对先前的子图进行了缓存之后,发生示例方法300。

方法300开始于操作310,其中图服务器120接收对托管的关系图的视图的请求。在各个方面,该请求是关系图的查询。为了说明查询,考虑代码4中示出的例子。在代码4中,可以对查询进行如图所示地格式化,该查询是对组织中人员的名称的请求的一部分,其中“alice”是“其管理者”并且“工作于”特定的项目。代码4中示出的查询从关系图中请求具有与名称和项目标题相匹配的属性的实体,作为被查询的关系图的列表或视图(例如,子图)。

代码4:match(a:user{name:“alice”})-[r:manager_of]->(u:user)-[:works_on]->(p:project)

returnu.name,p.title

在操作320处,对查询进行分析,以获得标识缓存的子图的信息。根据一个方面,缓存的子图包括用于标识关于与缓存子图相关联的先前查询的信息的特征。

例如,先前缓存的子图可以对在执行图遍历时使用的原始中间数据结构进行缓存。因此,在一个例子中,当查询到达时,对其解析并且转换为抽象语法树(ast)。ast级别的匹配允许对缓存的子图进行重用,但删除对查询公式的任何限制。因此,通过使用适合于缓存子图的数据结构,图服务器120识别ast级上的子图模式,然后加载与该子图模式相对应的缓存的中间数据结构。这些数据结构可以用于直接执行图遍历的下一步骤。具体而言,对于查询的中间数据结构中的每个节点,生成与节点标识符和部分ast相对应的缓存密钥,并且查询该缓存。因此,对查询进行分析以识别任何初始锚定节点。参考代码4,相关的锚定节点可以包括用于alice的user节点。

在操作330处,图服务器120识别与特征相关的任何相关的缓存子图。任何识别的缓存子图可以包括与查询的一部分或整个查询相关的结果。根据一个方面,当执行查询/图遍历时,针对所访问的每个节点来查询缓存。因此,节点标识符是在查询缓存时使用的密钥的一部分;但是,单独的节点标识符是不够的,这是因为可以针对图中的每个节点缓存多个子图。例如,图服务器120可以利用包括根节点标识符和子图的散列的元组作为缓存密钥,其允许对缓存进行高效的恒定时间查找。此外,如果基础图结构是只读的,则不需要缓存的无效。但是,如果图是非静态的,则受到基础图更改影响的所有子图都将失效。根据一个例子,对于每个锚定节点,生成缓存密钥并且查询缓存。如果发生缓存未命中,则遍历来自该节点的边(其受查询约束),并且将该遍历到达的节点插入到遍历引擎所使用的中间数据结构中。但是,如果缓存产生命中,则可以返回该节点对应的缓存子图。参考代码1,缓存的子图可以识别“alice”的user节点以及标识alice指导的人的manger_of边。

根据各个方面,图服务器120利用子图模式识别来识别任何相关的缓存子图。在一个例子中,使用关于查询字符串上的精确匹配来实现子图模式识别。使用精确匹配进行子图模式识别,允许在识别查询的精确匹配时重用缓存的子图,但不允许子图的组合。因此,在另一个例子中,使用关于查询字符串的子字符串匹配来实现子图模式识别。使用子字符串匹配进行子图模式识别,允许在识别查询的精确匹配时重用缓存的子图,并且在识别查询的部分匹配时允许子图的组合。

在操作340处,图服务器120使用其它节点来扩展缓存的子图。因此,当识别出与查询的一部分有关的相关缓存子图时,使用相关缓存子图作为用于使用查询的剩余元素来扩展缓存子图的起点,提供了计算节省。此外,当相关的缓存子图对应于查询时,缓存子图的识别和传输提供了显著的计算节省。例如,不必从“alice”的user节点枚举和遍历所有的manager_of边,可以将缓存的子图直接使用成进一步扩展到project节点的起点。因此,将缓存的子图扩展为识别出遍历图以识别各种project节点的works_on边。

在操作350处,对新子图进行缓存。对于代码1,当对该先前的缓存子图进行扩展时,对获得的子图(即,对应于alice的节点、她的指导和项目以及它们之间的边缘)进行缓存以供未来使用。根据一个方面,将子图缓存到图服务器120以便后续查询进行稍后访问。

在操作360处,将查询的结果发送到用户设备110。在各个方面,可以将结果发送成关系图的视图、子图或者回答解析的另一种格式的数据,例如,字符串、整数、双浮点数等等。然后,方法300可以结束。

图4是示出用于将缓存的子图集成到图查询结果中的示例方法400所涉及的通常阶段的流程图。例如,可以在图2中的示例方法200已经发生并且对先前的子图进行了缓存之后,发生示例方法400。

方法400开始于操作410,其中图服务器120接收对托管的关系图的视图的请求。在各个方面,该请求是关系图的查询。为了说明查询,考虑代码5中示出的例子。在代码5中,可以对查询进行如图所示地格式化,该查询是对组织中人员的名称的请求的一部分,其中“alice”是“其管理者”并且“工作场所”与“alice”在相同的建筑物。

代码5:match(a:user{name:“alice”})-[r:manager_of]->(u:user)-[:works_on]->(p:project)

returnu.name,p.title

在操作420处,对查询进行分析,以获得标识缓存的子图的信息。根据一个方面,缓存的子图包括用于标识关于与缓存子图相关联的先前查询的信息的特征。在一个例子中,对于查询的中间数据结构中的每个节点,生成与节点标识符和部分ast相对应的缓存密钥,并且查询该缓存。因此,对查询进行分析以识别任何初始锚定节点。

在操作430处,图服务器120识别与特征相关的任何相关的缓存子图。任何识别的缓存子图可以包括与查询的一部分或整个查询相关的结果。在一个例子中,对于每个锚定节点,生成缓存密钥并且查询缓存。如果发生缓存未命中,则遍历来自该节点的边(其受查询约束),并且将该遍历到达的节点插入到遍历引擎所使用的中间数据结构中。但是,如果缓存产生命中,则可以返回该节点对应的缓存子图。参考代码5,缓存的子图可以识别与代码1和代码2相关联的缓存子图。

在操作440处,图服务器120对缓存的子图进行组合。具体而言,通过组合多个缓存的子图来确定查询。关于代码5,图服务器120将与代码1相关联的缓存子图(其对应于针对向alice报告的所有用户的第一查询)和与代码2相关联的缓存子图(其对应于在alice的建筑物内工作的所有用户的第二查询)进行组合。因此,对这两个缓存的子图进行组合以回答与代码5相关联的查询。

在操作450处,对新子图进行缓存。关于代码5,当对该先前的缓存子图进行扩展时,对获得的子图(即,对应于alice的节点、她的指导和建筑物以及它们之间的边缘)进行缓存以供未来使用。根据一个方面,将子图缓存到图服务器120以便后续查询进行稍后访问。

在操作460处,将查询的结果发送到用户设备110。在各个方面,可以将结果发送成关系图的视图、子图或者另一种格式的数据。然后,方法400可以结束。

虽然在程序模块的通常背景下描述了实施方式,其中这些程序模块结合在计算机上的操作系统上运行的应用程序来执行,但本领域普通技术人员应当认识到,各方面还可以结合其它程序模块来实现。通常,程序模块包括例行程序、程序、组件、数据结构、以及执行特定任务或者实现特定的抽象数据类型的其它类型的结构。

本发明描述的方面和功能可以经由多种多样的计算系统来操作,其中这些计算系统包括但不限于:桌面型计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板设备或者平板型计算机、笔记本计算机和膝上型计算机)、手持设备、多处理器系统、基于微处理器的或者可编程消费电子、微型计算机和大型计算机。

此外,根据一个方面,本发明描述的方面和功能可以在分布式系统(例如,基于云的计算系统)上操作,其中,应用功能、存储器、数据存贮和获取以及各种处理功能可以彼此之间通过分布式计算网络(例如,互联网或者内联网)来远程操作。根据一个方面,可以经由板载计算设备显示器或者经由与一个或多个计算设备相关联的远程显示单元,来显示用户界面和各种类型的信息。例如,可以在将用户界面和各种类型的信息所投影到的墙壁表面上,显示用户界面和各种类型的信息并且进行交互。与可以实现实施方式的多种多样的计算系统进行的交互,包括:键击输入、触摸屏输入、语音或者其它音频输入、手势输入(当相关联的计算设备装备有用于捕捉和解释用户手势的检测(例如,摄像头)功能,以控制该计算设备的功能时)等等。

图5-7以及相关联的描述提供了可以实现本发明的示例的各种操作环境的讨论。但是,参照图5-7所示出和讨论的设备和系统只是用于举例和说明目的,而不是对本发明所描述的可以用于实现各方面的众多数量的计算设备配置进行限制。

图5是示出可以实现本公开内容的示例的计算设备500的物理部件(即,硬件)的框图。在基本配置中,计算设备500包括至少一个处理单元502和系统存储器504。根据一个方面,根据计算设备的配置和类型,系统存储器504包括但不限于:易失性存储(如,随机存取存储器)、非易失性存储(如,只读存储器)、闪存或者这些存储器的任意组合。根据一个方面,系统存储器504可以包括操作系统505和适合于运行软件应用550的一个或多个程序模块506。根据一个方面,系统存储器504包括图数据库130。例如,操作系统505适合于对计算设备500的操作进行控制。此外,各方面结合图形库、其它操作系统或者任何其它应用程序来实现,并且不受限于任何特定的应用或系统。在图5中,通过位于虚线508之内的那些部件来示出该基本配置。根据一个方面,计算设备500具有另外的特征或功能。例如,根据一个方面,计算设备500包括另外的数据存储设备(可移动和/或不可移动),比如磁盘、光盘或磁带。在图5中通过移动存储设备509和非移动存储设备510的方式,来示出这种另外的存贮设备。

如上所述,根据一个方面,在系统存储器504中,存储多个程序模块和数据文件。当在处理单元502上执行时,程序模块506(例如,图数据库130)执行包括但不限于图2-4中所示出的方法300的阶段中的一个或多个的处理。根据一个方面,根据示例使用的其它程序模块,包括诸如电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片呈现应用、绘图或计算机辅助应用程序等等之类的应用。

根据一个方面,计算设备500具有诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等等之类的一个或多个输入设备512。根据一个方面,还包括诸如显示器、扬声器、打印机等等之类的输出设备514。前述的设备只是示例性的,可以使用其它设备。根据一个方面,计算设备500包括允许与其它计算设备518进行通信的一个或多个通信连接516。适当通信连接516的例子包括但不限于:射频(rf)发射机、接收机和/或收发机电路;通用串行总线(usb)、并口和/或串口。

如本发明所使用的术语计算机可读介质包括计算机存储介质。计算机存储介质包括利用存储信息(如,计算机可读指令、数据结构或程序模块)的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。系统存储器504、可移动存储设备509和不可移动存储设备510都是计算机存储介质的例子(即,存储器存贮)。根据一个方面,计算机存储介质包括ram、rom、电可擦除只读存储器(eeprom)、闪存或其它存储器技术、cd-rom、数字通用光盘(dvd)或其它光存储技术、盒式磁带、磁带、磁盘存储或其它磁存储设备、或者可以用于存储信息并能由计算设备500进行存取的任何其它制品。根据一个方面,任何这种计算机存储介质是计算设备500的一部分。计算机存储介质不包括载波波形或者其它传播的数据信号。

根据一个方面,通信介质通过计算机可读指令、数据结构、程序模块、或者调制的数据信号(如,载波波形或其它传输机制)中的其它数据来体现,并包括任何信息传送介质。根据一个方面,术语“调制的数据信号”描述具有一个或多个特性,以关于将信息编码在该信号之中的方式来进行设置或者改变这些特性的信号。举例而言,但非做出限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质、以及诸如声波、射频(rf)、红外线和其它无线介质之类的无线介质。

图6a和图6b示出了可以使用其来实现各方面的移动计算设备600(例如,移动电话、智能电话、平板个人计算机、膝上型计算机等等)。参见图6a,该图示出了用于实现这些方面的移动计算设备600的一个例子。在基本配置中,移动计算设备600是具有输入单元和输出单元的手持计算机。通常,移动计算设备600包括显示器605和用于允许用户向该移动计算设备600输入信息的一个或多个输入按键610。根据一个方面,移动计算设备600的显示器605也可以充当为输入设备(例如,触摸屏显示器)。如果包括的话,可选的侧输入单元615也允许另外的用户输入。根据一个方面,侧输入单元615是旋转开关、按键或者任何其它类型的手工输入单元。在替代的示例中,移动计算设备600合并更多或更少的输入单元。例如,在一些例子中,显示器605可以不是触摸屏。在替代的例子中,移动计算设备600是便携式电话系统,例如,蜂窝电话。根据一个方面,移动计算设备600包括可选的键盘635。根据一个方面,可选的键盘635是物理键盘。根据另一个方面,可选的键盘635是在触摸屏显示器上生成的“软”键盘。在各个方面,输出单元包括用于显示图形用户界面(gui)的显示器605、视觉指示器620(例如,发光二极管)和/或音频换能器625(例如,扬声器)。在一些例子中,移动计算设备600合并振动换能器,以向用户提供触觉反馈。在另一个例子中,移动计算设备600合并输入和/或输出端口,例如,音频输入(如,麦克风插孔)、音频输出(如,耳机插孔)和视频输出(如,hdmi端口),以向外部设备发送信号或者从外部设备接收信号。在另一个例子中,移动计算设备600合并外围设备端口640,例如,音频输入(如,麦克风插孔)、音频输出(如,耳机插孔)和视频输出(如,hdmi端口),以向外部设备发送信号或者从外部设备接收信号。

图6b是示出移动计算设备的一个例子的架构的框图。也就是说,移动计算设备600合并系统(即,架构)602来实现一些例子。在一个例子中,将系统602实现成能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息客户端、游戏和媒体客户端/播放器)的“智能电话”。在一些例子中,将系统602集成为计算设备,例如,集成的个人数字助理(pda)和无线电话。

根据一个方面,一个或多个应用程序650装载到存储器662中,在操作系统664上运行或者关联操作系统664来运行。这些应用程序的例子包括电话拨号程序、电子邮件程序、个人信息管理(pim)程序、文字处理程序、电子表格程序、互联网浏览器程序、消息程序等等。根据一个方面,图数据库130装载到存储器662中。系统602还包括位于存储器662中的非易失性存贮区域668。非易失性存贮区域668用于存储当系统602关闭时,不应当丢失的持久信息。应用程序650可以使用非易失性存贮区域668中的信息,在非易失性存贮区域668中存储信息(例如,电子邮件或者电子邮件应用所使用的其它消息等等)。此外,同步应用(没有示出)也位于系统602上,并被编程为与位于主机计算机上的相应同步应用进行交互,以保持非易失性存贮区域668中存储的信息与主机计算机处存储的相应信息相同步。应当理解的是,其它应用也可以装载到存储器662中,并运行在移动计算设备600上。

根据一个方面,系统602具有电源670,其中电源670实现成一个或多个电池。根据一个方面,电源670还包括外部电源,例如,ac适配器或者对电池进行补充或充电的供电对接支座。

根据一个方面,系统602包括用于执行发送和接收无线电频率通信的无线电装置672。无线电装置672有助于经由通信载波或服务提供商,实现系统602和“外部世界”之间的无线连接。在操作系统664的控制之下,进行去往和来自无线电装置672的传输。换言之,可以经由操作系统664将无线电装置672接收的通信传播到应用程序650,反之亦然。

根据一个方面,使用视觉指示器620来提供视觉通知,和/或使用音频接口674来经由音频换能器625来产生可听见的通知。在所示出的例子中,视觉指示器620是发光二极管(led),音频换能器625是扬声器。这些设备可以直接地耦合到电源670,使得当被激活时,它们仍保持通知机制所指示的持续时间(即使处理器660和其它部件关闭以节省电池电量)。可以对led进行编程以无限期地保持开启,直到用户采取动作来指示该设备的开机状态为止。音频接口674用于向用户提供可听见的信号和从用户接收可听见的信号。例如,除了耦合到音频换能器625之外,音频接口674还可以耦合到麦克风以接收可听见的输入,例如以便促进电话会话。根据一个方面,系统602还可以包括视频接口676,后者实现板载摄像头630的操作以记录静止图像、视频流等等。

根据一个方面,实现系统602的移动计算设备600可以具有另外的特征或功能。例如,该移动计算设备600包括诸如磁盘、光盘或磁带之类的其它数据存储设备(可移动和/或不可移动)。在图6b中,通过非易失性存贮区域668的方式来示出这种另外的存贮。

根据一个方面,由移动计算设备600生成或捕捉并且经由系统602来存储的数据/信息,本地地存储在移动计算设备600上(如上所述)。根据另一个方面,该数据存储在任意数量的存储介质上,其中该设备可以经由无线电装置672或者经由移动计算设备600和与该移动计算设备600相关联的单独计算设备(例如,诸如互联网的分布式计算网络中的服务器计算机)之间的有线连接来访问该任意数量的存储介质。应当理解的是,移动计算设备600可以经由无线电装置672或者经由分布式计算网络,来访问该数据/信息。类似地,根据一个方面,根据公知的数据/信息传送和存储方式(其包括电子邮件和协作式数据/信息共享系统),在计算设备之间进行容易地传送该数据/信息以进行存储和使用。

图7示出了一种系统的架构的一个例子,其中该系统用于缓存子图并且将缓存的子图集成到图查询结果中,如上所述。利用图数据库130进行内容开发、与图数据库130进行交互、或者与图数据库130进行关联地编辑,以便存储在不同的通信信道或其它存储类型中。例如,可以使用目录服务722、web门户724、邮箱服务726、瞬时消息存储728或社交网络站点730来存储各种文档。图数据库130用于使用这些类型的系统等等中的任何一种,来缓存子图并且将缓存的子图集成到图查询结果中,如本发明所描述的。根据一个方面,服务器720向客户端705a、b、c提供图数据库130。举一个例子,服务器720是通过web来提供图数据库130的web服务器。服务器720通过网络740,在web上向客户端705提供图数据库130。举例而言,该客户端计算设备实现并且体现在在个人计算机705a、平板计算设备705b或移动计算设备705c(例如,智能电话)或者其它计算设备中。客户端计算设备的这些示例中的任何一个可以从存储716获得内容。

例如,上面参照根据本发明的方面的方法、系统和计算机程序产品的框图和/或操作说明,来描述实施方式。这些方框中所述的功能/动作可以按不同于任何流程图所示的次序来出现。例如,根据所涉及的功能/动作,连续示出的两个框可以事实上基本同时地执行,或者这些框有时可以以相反顺序来执行。

本申请中提供的一个或多个例子的描述和说明,并非是旨在以任何方式来限制或者限定所要求的本发明的保护范围。本申请中提供的方面、例子和细节被认为足以传达拥有所主张的本发明,并使他人能够制造和使用所主张的本发明的最佳模式。实施方式不应被解释为限于本申请中提供的任何方面、例子或者细节。不管是以组合方式还是单独地进行示出和描述,各种特征(包括结构和方法)旨在进行选择性地包括或者省略,以产生具有一组特定特征的例子。在提供本申请的描述和说明之后,本领域普通技术人员可以预想落入本申请所体现的更广泛方面的发明构思的精神之内的变型、修改和替代例子,而不脱离本发明的更广泛的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1