使用查询语言扩展web服务应用编程接口的方法

文档序号:6533342阅读:150来源:国知局
使用查询语言扩展web服务应用编程接口的方法
【专利摘要】要求保护的主题的实施例提供了支持使用查询语言扩展web服务应用编程接口的方法。在一个实施例中,提供一种方法,该方法包括修改对社交图谱的接口。社交图谱包括节点,该节点由表示节点之间的关系的边缘所连接,该节点形成与社交图谱的用户相关联的多个树。修改接口包括将节点添加到至少一个用户的树并且对节点附加一个或多个查询。附加的查询对所添加的节点的子树进行操作。该接口响应于用户调用被配置为执行关于子树的查询的服务而被修改。
【专利说明】使用查询语言扩展WEB服务应用编程接口的方法

【技术领域】
[0001]本申请一般地涉及基于处理器的系统,并且更具体地,涉及用于基于处理器的系统的应用编程接口。

【背景技术】
[0002]该部分介绍了可以有助于促进更好地理解本发明的各方面。因此,该部分的陈述要从这个角度进行阅读,并且不应当被理解为承认什么在现有技术中或者什么不在现有技术中。
[0003]在一些公知的通信方案中,用户使用社交网络彼此进行通信。社交联网服务可以被定义为在线服务、平台或网站,其基于可能分享共同背景、兴趣或活动的人之间的社交关系的表示来向订户提供服务。社交网络通常由每个用户(通常是简档)、他/她的社交联系以及诸如照片、状态报告、web链接等的各种附加元素的表示组成。大多数社交网络服务是基于web的,并且提供允许用户通过因特网进行交互的工具/服务,诸如电子邮件和即时消息。社交联网网站允许用户在其各自网络内分享想法、活动、事件和兴趣。示例性社交网络包括脸书(Facebook)、谷歌 + (Google+)、推特(Twitter)、领英(LinkedIn)、VKonkatke、奥库特(Orkut)和人人网。
[0004]社交网络表示使用社交图谱的个体及其关系。通常;社交图谱描述在订户的在线角色(也称为用户的化身)和其他订户的在线角色之间的关系。因此,社交图谱反映了订户之间的真实世界关系,其通常被称为社交网络。例如,社交网络的社交图谱可以被构建为一系列节点(例如,“订户”、“好友列表”、“密友”等),该节点使用由节点之间的关系定义的边缘(也可以称为作为关联或连接)而彼此相关联。叶节点与父节点相关联,但是其不具有子节点。例如,与“密友”节点相关联的叶节点可以各自包括数据结构,该数据结构包括订户的好友之一的信息。社交图谱还可以包括诸如针对不同类型的关系的节点,诸如与具体兴趣相关联的组,以及针对不同类型的信息的节点,诸如照片、音乐和web链接。
[0005]社交网络的提供商使用其社交图谱中的信息来实现服务或应用(app)。开发者可以使用由社交网络提供商开发和支持的应用编程接口(API)来创建服务或应用。例如,用于诸如脸书的社交网络的API包括超文本传输协议(HTTP)请求消息的被定义的集合,以及例如可扩展标记语言(XML)或JavaScript对象符号(JSON)格式的响应消息的结构的定义。用于社交网络的API通常实施由客户端和服务器组成的表述性状态转移(REST)架构。客户端发起对服务器的请求,服务器处理请求并且向客户端返回适当的响应。请求和响应被关于资源的表示的转移而构建。资源实际上可以是可以被寻址的任何连贯和有意义的概念。资源的表示通常是捕获资源的当前文档或期望状态的文档。通常,带有REST性质的(REST-ful)架构必须是基于客户端-服务器的、无状态的、可缓存的、分层的、使用统一接口,并且可以按需提供代码。


【发明内容】

[0006]下面给出以对所公开的主题的简单总结,以提供对所公开的主题的一些方面的基本理解。该总结不是所公开的主题的详尽概述。这不旨在确定所公开的主题的关键或重要元素,或者描述所公开的主题的范围。其唯一目的在于以简化的形式呈现一些概念,作为对后面所论述的更具体描述的前序。
[0007]在一个实施例中,提供了一种用于使用查询语言扩展web服务应用编程接口的方法。该方法包括修改到社交图谱的接口。社交图谱包括节点,所述节点由表示节点之间的关系的边缘所连接,该节点形成与社交图谱的用户相关联的多个树。修改接口包括将节点添加到至少一个用户的树并且对节点附加一个或多个查询。被附加的查询对所添加的节点的子树进行操作。该接口响应于用户调用被配置为对子树执行查询的服务而被修改。还可以提供用于执行该方法的实施例的装置。
[0008]在另一实施例中,提供了一种用于使用查询语言扩展web服务应用编程接口的方法。该方法包括调用被配置为对社交图谱的一部分执行查询的服务,社交图谱包括节点,所述节点由表示节点之间的关系的边缘所连接。该节点形成与社交图谱的用户相关联的多个树。该方法还包括接收用于授权通过对与调用服务的用户相关联的树添加节点来修改对社交图谱的接口的请求。该接口将通过向节点附加一个或多个查询而被修改,并且该查询对所添加的节点的子树进行操作。还可以提供用于执行该方法的实施例的装置。
[0009]在又一实施例中,提供了一种用于使用查询语言扩展web服务应用编程接口的方法。该方法包括通过提供对与关联于用户的社交图谱的一部分相关联的一个或多个查询的支持来修改对该社交图谱的所述一部分的接口。该接口响应于用户调用实施该查询的服务而被修改。该方法还包括对与用户相关联的社交图谱的一部分执行查询中的一个或多个查询。还可以提供用于执行该方法的实施例的装置。

【专利附图】

【附图说明】
[0010]可以通过参考以下结合附图进行的描述来理解所公开的主题,在附图中,相同的附图标记标识相似的元素,并且其中:
[0011]图1概念性地图示了通信系统的一个示例性实施例;
[0012]图2概念性地图示了社交图谱的一部分的第一示例性实施例;
[0013]图3概念性地图示了用于修改对社交图谱的接口的方法的第一示例性实施例;
[0014]图4概念性地图示了查询经修改的对社交图谱的应用编程接口的方法的第一示例性实施例;
[0015]图5概念性地图示了移除对社交图谱的应用编程接口的修改的方法的一个示例性实施例;
[0016]图6概念性地图示了社交图谱的部分的第二示例性实施例;
[0017]图7概念性地图示了用于修改对社交图谱的接口的方法的第二示例性实施例;以及
[0018]图8概念性地图示了查询经修改的对社交图谱的应用编程接口的方法的第二示例性实施例。

【具体实施方式】
[0019]说明性的实施例描述如下。为了清楚起见,在该说明书中没有描述实际实施的所有特征。当然应当理解,在任何这样的实际实施例的开发中,应当做出很多特定于实现的决定以实现开发者的特定目标,诸如符合与系统相关和业务相关的约束,这将根据实施而变化。此外,应当理解,这样的开发努力可能是复杂和费时的,但是对于受益于本公开的本领域技术人员来说仍然是例行任务。说明书和附图仅说明了要求保护的主题的原理。因此,应当理解,本领域技术人员能够设计各种布置,虽然这里没有明确描述或示出,但是各种布置体现这里描述的原理,并且可以被包括在要求保护的主题的范围内。此外,这里阐述的所有示例主要出于教导的目的,以帮助读者理解要求保护的主题的原理以及发明人对发展本领域所贡献的概念,并且所有示例应当被解释为不限于这样的具体阐述的示例和条件。
[0020]现在将参考附图描述所公开的主题。各种结构、系统和设备出于说明的目的在附图中被示意性地描述,并且从而不使本说明书与本领域技术人员公知的细节相混淆。尽管如此,附图被包括进来以描述和解释所公开的主题的说明性示例。本文使用的词语和短语应当被理解和解释为具有与本领域技术人员对该词语和短语的理解一致的含义。本文中术语或短语的一致使用并不旨在于暗示术语或短语的特殊定义,即与本领域技术人员所理解的通常和常规含义不同的定义。在期望术语或短语具有特殊含义的程度上,即与本领域技术人员所理解的不同的意义,这样的特殊定义将在该说明书中以直接并且明确提供该术语或短语的特殊定义的定义方式来明确阐述。此外,如本文使用的,术语“或”指非排他性“或”,除非另有说明(例如,“否则”或“或替代地”)。而且,本文所描述的各种实施例不一定是相互排斥的,因为一些实施例可以与一个或多个其他实施例组合,以形成新的实施例。
[0021]社交网络的社交图谱可以被构建为一系列节点(例如,“订户”、“好友列表”、“密友”等),该一系列节点可以使用由节点之间的关系定义的边缘而彼此相关联。许多社交图谱包括大量节点和关系。例如,脸书快速接近十亿用户。社交网络服务的提供商可以投入大量时间和资源来收集信息并且构建社交图谱,该社交图谱指定社交网络服务的不同订户(或其用户)之间的关系。社交网络服务的价值可能几乎完全依赖于社交图谱以及基于包括在社交图谱中的信息向用户/订户提供有用服务的应用。这样,提供商可以创建社交图谱接口,该社交图谱接口控制社交图谱中的数据的可见性和可访问性,以平衡以下相矛盾的期望:(1)防止第三方擅用社交图谱中的数据,并且(2)允许开发者对社交图谱中的数据的充分可见和访问以创建提供有用服务的应用。
[0022]本申请描述了接口的实施例,该接口允许开发者通过定义用户/订户的节点(例如,作为用户/订户的根节点的子节点的节点)并且然后将一个或多个查询关联或附加到新的节点来扩展提供商定义的接口。然后,查询的实施例可以对被附加到新的节点的子树中的节点进行操作。查询还可以使用由新的节点的上下文所定义的参数或者由开发者包括在查询中的参数。使用新的节点和查询的接口的扩展可能需要社交图谱的用户、订户或提供商的授权。可以使用社交图谱中的信息来填充新的节点的叶节点。然后,修改的接口然后可以被用于使用新的查询来为订户创建新的服务。
[0023]图1概念性地图示了通信系统100的一个示例性实施例,在图示的实施例中,通信系统100包括多个用户或订户105。如本文所使用的术语“订户”将被理解为指已经订阅了支持社交图谱的社交网络服务的用户。术语“用户”指在社交图谱中被引用、或者与社交图谱相关联但是不一定是社交网络服务的订户的人或实体。因此,订户可以是与社交网络服务相关联的用户的子集。例如,订户可以被称为社交网络服务的注册用户。用户105被描绘为诸如智能电话的移动通信设备。然而,受益于本公开的本领域普通技术人员应当理解,术语“用户”可以指用于访问通信系统100的电子设备或者拥有或操作该设备的人。此夕卜,本领域普通技术人员应当理解,电子设备不限于移动通信设备,并且在一些实施例中诸如平板计算机、膝上型计算机、台式计算机等的设备也可以被用于访问该通信系统100。在各种实施例中,用户105可以使用有线连接、无线连接或其任何组合访问通信系统100。
[0024]用户105可以订阅一个或多个社交网络服务110、115。示例性社交网络服务包括由脸书提供的社交网络服务110和由谷歌+提供的社交网络服务115。然而,受益于本公开的本领域普通技术人员应当理解,通信系统100的替代实施例可以包括其他社交网络服务,诸如推特、领英、VKonkatke、奥库特、人人网等。在图示的实施例中,用户105(1-2)已经订阅了社交网络服务110,并且用户105(2-3)已经订阅了社交网络服务115。因此,用户105可能已经创建了简档并且建立了与社交网络服务110、115的社交图谱中的其他订户的关系。用户105、与用户105相关的信息、或用户105之间的关系可以通过社交图谱的结构来表示。例如,社交网络110的社交图谱可以包括节点(例如,“订户”、“好友列表”、“密友”等),该节点使用由节点之间的关系所定义的边缘而彼此相关联。
[0025]应用开发者120可以开发使用社交网络110、115的社交图谱中的信息来生成并且向用户105或第三方提供有用信息的应用(app)或服务,该第三方是诸如尝试向用户105提供定向广告的广告商。应用开发者120使用分别对社交网络服务110、115的应用编程接口 (API) 125、130来创建或定义应用或服务。API 125、130最初由社交网络服务110、115的提供商或拥有者来定义,并且对所有的用户105支持相同的API 125。如本文中所讨论的,常规接口无法由开发者120来改变或修改,这限制了可以由开发者120创建的可能的应用或服务以及可以被访问或传播的“用户数据”的范围。因此,本申请描述了用于例如在每个用户或每个服务的基础上修改提供商定义的API 125,130的技术。应用开发者120可以使用所谓的查询语句来扩展web服务API 125、130,而不是尝试预测对新的应用可能需要的服务资源的访问的粒度,查询语句表示来自社交网络110、115的社交图谱中的数据的新的视图,其可以被动态地插入到资源层级(例如,社交图谱)以扩展web服务API 125、130。
[0026]在一个实施例中,API 125、130符合通过表述性状态转移(REST)架构所施加的限制。对社交联网网站110、115的具有REST性质的web服务API 125、130可以提供(由服务API定义的)资源层级,并且支持对与每个用户105相关联的社交网络信息的各种元素的读取或写入访问。例如,资源层级可以限定包括非叶节点的树,非叶节点定义信息的类别或子集。该树还可以定义表示可以通过web服务API 125、130读取或写入的数据的实例的节点或叶。该布置通常具有很多web服务。在传统的web服务中,资源命名方案由服务提供商来定义并且是不可扩展的。
[0027]通信系统100的实施例可以允许具有适当权限的开发者120通过添加叶节点来扩展该资源树,叶节点表示由该新的叶节点所附加到的节点所表示的数据的新的“视图”。这些节点可以由开发者120来命名,并且与查询相关联,该查询对其中插入了新的叶节点的树的分支所标识的数据子集(或子树)进行操作。在各种实施例中,开发者120可以或可以不能“看到”树中的数据,例如,服务可以仅能够提供从原始数据得到的信息,而不是原始数据本身。这些节点可以通过离线web接口被添加或通过HTTP POST请求被插入。查询/视图可以由开发者120来命名或定义,或者查询/视图可以从预先定义的“查询/视图”菜单中选择,该预先定义的“查询/视图”菜单可从社交网络服务110、115的提供商提供。在各种替代实施例中,查询参数可以由开发者来定义、由上下文/节点来确定、或由服务或应用来动态地确定。
[0028]图2概念性地图示了社交图谱的一部分200的一个示例性实施例。在所示的实施例中,部分200是整个社交图谱的子树,其包括与特定订户“Joe订户”相关联的节点。该部分200可以经由入口节点或父节点205来访问。该部分200可以被存储在一个或多个服务器中,并且客户机可以使用适当的统一资源指示符(URI)或其他地址来访问入口节点205。例如,可以使用地址 http: //www.fakesocialnetwork.com/Toe.Subscriber 来访问入口节点205。该部分200还包括连接到入口节点205或该部分200内的其他节点的子节点210。子节点210可以与信息、类别、其他订户等相关联。例如,子节点210可以与“好友”、“照片”、“简档”、“音乐”等相关联。节点200还可以与共享兴趣的订户或用户的组或者指示用户/订户之间的关系的性质的组相关联,诸如家人、密友、熟人、职业联系人等。可以使用相应的地址来访问节点 210,诸如:http://www.fakesocialnetwork.com/Joe.Subscriber/FriendsLists/CloseFri ends。
[0029]在所示的实施例中,开发者或其他第三方可以对与订户相对应的社交图谱的一部分200添加一个或多个节点215。例如,开发者可以使用HTTP POST命令来插入与子树200的节点210(4)相关联或附加到子树200的节点210(4)的节点215。然后,可以使用适当的URI或其他地址来访问节点215。例如,节点210 (3)可以与Joe订户的“好友列表”相关联,节点210(4)可以与Joe订户的“密友”相关联,并且节点215可以与包括Joe订户的“密友”的电话号码的类别相关联。节点215还可以与另一子树220相关联或附加到另一子树220,其在所示实施例中包括多个叶节点225。然而,受益于本公开的本领域普通技术人员应当理解,子树220可以包括节点或叶节点的不同组合。子树220或叶节点225可以由开发者、第三方、订户填充,或者由服务提供商自动地填充。可以使用诸如以下地址来访问节点215:
[0030]http://www.fakesocialnetwork.com/Joe.Subscriber/FriendsLists/CloseFriends/CloseFriends_with_Numbers。
[0031]在一些实施例中,开发者或第三方可能需要获得用于将节点215添加到社交图谱的权限或授权。例如,开发者或第三方可能需要从Joe订户或社交图谱的服务提供商或拥有者获得权限或授权。授权可能仅在有限量的时间中是有效的,例如,在订户已经调用或发起利用节点215的应用或服务之后并且直至该订户终止该应用或服务。因此,节点215可以是由提供商存储的临时或动态节点。
[0032]对社交图谱200的接口可以被修改为支持查询,该查询对树200,诸如开发者添加的节点215的子树220,中的节点进行操作。在一个实施例中,开发者可以使用消息或命令以定义查询并且将该查询附加到一个或多个节点,以修改对社交图谱200的应用编程接口(API)。例如,节点215可以被创建并且查询230可以响应于Joe订户调用利用该查询230的服务而被附加到节点215 (例如,密友_具有_号码节点)。查询230还被附加到社交图谱的一部分200中的其他节点。例如,查询230可以由查询节点“fof-电话-号码”来表示,其可以被设计为被附加到节点好友列表或被附加到进一步限制好友的列表的诸如密友的节点。查询230可以对由好友列列表所参考的好友的列表中的每一个好友进行操作或者对列表(例如,密友)之一中所参考的好友中的每一个好友进行操作,以定位好友中的好友,并且将电话号码与自己的好友的每个好友的电话号码作比较。调用该查询的地址的一个示例是:
[0033]http://www.fakesocialnetwork.com/Toe.Subscriber/FriendsLists/fof-phone-number,
[0034]其调用附加到好友列表节点的查询。另一示例是:
[0035]http://www.fakesocialnetwork.com/Toe.Subscriber/FriendsLists/CloseFriends/fof-phone-number,
[0036]其调用附加到好友列表/密友节点的查询。常规查询语言的实施例通常可以灵活得足以允许单个查询被设计,该单个查询可以在社交图谱200内的不同位置或节点中被应用。该节点可以由开发者针对每个查询230进行选择,或者该节点可以使用自动化的过程或算法来选择。例如,社交联网网站可以检查查询230,选择对其应用查询230的适当节点,对树中的所选择的节点迭代地(或同时)应用查询230,并且组合结果。
[0037]在可以作为对本文描述的其他实施例的附加或替代被实践的一个替代实施例中,经修改的Web服务API可以提供将Joe订户的“好友列表”定义为资源层级中的节点的API。(具有适当权限的)开发者可以向该节点添加叶节点“有-好友-具有-呼叫方-1d(has-friend-with-caller-1d) ”,并且使该新的节点与(以SQL、SPARQL等表达的)查询相关联,其提供可以被访问以确定呼叫方id是否与订户的好友的好友相关联的新资源。查询230的一个示例可以是:
[0038]http://www.fakesocialnetwork.com/Toe.Subscriber/FriendsLists/CloseFriends/CloseFriends with Number/fof-phone-number ? phone-number = 212-555-1212.。
[0039]当Joe订户的一个密友的电话号码与查询230中的电话号码相同时,查询230返回为真的布尔值。当没有Joe订户的任何密友指示了他们具有查询230中的电话号码时,查询230返回为假的布尔值。
[0040]图3概念性地图示了用于修改对社交图谱的接口的方法300的第一示例性实施例。在所示实施例中,查询由开发者或第三方来生成(在305)。该查询可以被用作由开发者或第三方创建的服务或应用的一部分。该查询可以对由开发者或第三方定义的节点的子树进行操作,并且期望被插入到与一个或多个用户相关联的社交图谱的一部分中,该一个或多个用户是例如已经调用了利用该查询的服务的订户。然后,开发者或第三方可以传送(在310)创建节点并且将该查询附加到新创建的节点的请求。例如,查询表达可以被写作具有REST性质的POST请求,其请求对社交图谱的API的程序员视图的修改。在具有适当授权的情况下,对 URI:http: //www.fakesocialnetwork.com/Toe.Subscriber/FriendsLists/的用于扩展API的post请求可以写成如下:
[0041]POST/Joe.订户 / 好友列表 /HTTP/1.0
[0042]内容-类型:文本/xml
[0043]< 扩展 >
[0044]〈节点〉有-好友-具有-电话-号码〈/节点>
[0045]〈请求〉选择…〈/请求〉
[0046]</ 扩展 >
[0047]然而,受益于本公开的本领域技术人员应当理解,对该请求可以使用其他查询表达或格式。
[0048]在所示的实施例中,该请求可以要求来自用户/订户的授权。用户授权过程可以(在315)被执行以验证该用户已经授权了将新的节点插入到用户的社交图谱。用户授权可以使用各种技术来执行。例如,用于创建节点和附加查询的请求可以包括请求发起认证/授权过程,该认证/授权过程允许用户(在315处)指示其是否批准或允许创建新节点并且实施该新的查询。如果用户没有提供确认或验证,则请求(在320处)被拒绝。如果订户确认或认证该请求,则该请求可以继续。
[0049]在图示的实施例中,该请求还可以要求来自社交网络(SN)服务的提供商或所有者的授权。提供商授权过程可以(在325处)被执行以验证该提供商/所有者已经授权了将新的节点插入到用户的社交图谱中。提供商授权可以使用各种技术来执行。例如,用于创建节点和附加查询的请求可以包括用于发起认证/授权过程的请求,该认证/授权过程允许提供商(在315处)指示其是否批准或允许创建新节点或者实施新的查询。在一个实施例中,提供商可以使用自动化的系统来执行认证/授权过程,该自动化系统检查该请求,并且确定该请求是否符合提供商所建立的安全性、保密性或其他策略。在安装到web服务之前,查询可以被机械地验证,以确保其符合web服务的安全性/使用策略。例如,web服务可以仅允许返回布尔值结果或计数器的值的查询,并且可以限制这样的查询可以被相关联到的节点类型(例如,仅“好友列表”节点)。如果提供商不提供确认或验证,则请求(在320处)被拒绝。如果订户确认或认证该请求,则该请求可以继续。受益于本公开的本领域普通技术人员应当理解,在图3中所描绘的具体认证序列旨在是说明性的。替代实施例可以同时或以与在图3中描绘的不同的顺序来执行用户和提供商认证过程。此外,其他替代实施例可以仅执行用户认证或提供商认证而不是二者,或者可以完全不执行任何认证。
[0050]一旦请求被授权,所请求的节点可以(在330处)被插入在社交图谱内的所选择的位置处。然后,对社交图谱的接口可以通过(在335处)将查询附加到的新的节点来进行修改。开发者或第三方或其他实体可能然后能够使用经修改的接口来开发利用该新的查询的应用或服务。例如,上述的POST请求可能导致扩展用于订户(Joe订户)的API,使得现在能够对URI作出获取(GET)请求:
[0051]http: //www.fakesocialnetwork.com/Joe.Subscriber/FriendsLists/has-friend-with-phone-number ? friend = Jane.Subscriber&phone-number =202-555-1313。
[0052]因此,该方法300的实施例可以支持经修改的接口,其提供更广并且更多变的查询集合,同时减少提供对表示社交图谱的基本数据库的过多的或完全访问的风险。通过POST请求作出的修改可能仅影响授权该请求的用户(Joe订户),并且可以通过相应的HTTP删除(DELETE)请求或其他操作来撤销。在一个实施例中,用于插入查询的机制可以被用于创建与最终用户相关联的记录。所插入的记录可以包含要在GET请求中使用的查询和关联路径。在各种实施例中,Web服务支持一个或查询语言,并且发布伴随该查询语言的概要(schema)。
[0053]图4概念性地图示了查询经修改的对社交图谱的应用编程接口的方法400的一个示例性实施例。在所示的实施例中,方法400在每个用户和每个应用的基础上修改应用编程接口,使得接口并不总是全局地改变,而是仅在特定用户调用使用经修改的该接口时才被改变,并且在一些实施例中,仅针对已经调用了对社交图谱的相关部分的接口的授权修改和相关服务的用户而改变。一个或多个用户可以(在405处)发起服务或应用。发起的应用可以利用未被提供商定义的API所支持的查询。然后,可以创建一个或多个新的节点,并且该查询可以(在410处)被附加到新的节点。在图3中描绘了用于创建节点和附加查询的技术的实施例。
[0054]然后,服务提供商(例如,使用由服务提供商所拥有或操作的一个或多个服务器上实施的软件)可以(在410处)监测与该服务相关联的查询。只要服务提供商没有检测(在410处)到任何查询,监测就可以继续。当服务提供商(在415处)检测到查询时,例如,检测到作为由订户请求或调用的服务的一部分而被执行的查询时,可以(在420处)对包括在与该查询相关联的节点的子树中的信息执行查询。例如,查询可以(在420处)返回布尔值、计数值或基于包括在节点的子树中的信息所确定的其他值。
[0055]图5概念性地示出了移除或撤销对社交图谱的应用编程接口的修改的方法500的一个示例性实施例。在图示的实施例中,先前已经响应于一个或多个用户调用使用经修改的接口的服务,并且在一些实施例中,仅针对已经调用了对社交图谱的相关部分的接口的授权修改和相关服务的用户,而在每个用户和每个应用的基础上修改(例如,如本文参考图3-4所述)了应用编程接口。先前发起服务的用户中的一个或多个用户可以决定终止该应用,该服务导致对其社交图谱的接口的修改。因此,服务提供商可以(在505处)接收用于终止该应用的请求。然后,服务提供商可以(在510处)识别在社交图谱中创建的用于支持经修改接口的临时结点。临时节点的(在510处)识别可以使用由服务提供商存储的信息或由用户提供的信息来执行。然后,(在515处)临时节点可以被删除,并且应用可以被(在520处)终止。在一个实施例中,(在515处)临时节点的删除可以包括节点、叶节点、子树或与该临时节点相关联的其他信息的移除。
[0056]图6概念性地图示了社交图谱600的一部分605的第二示例性实施例。在所示的实施例中,部分605是包括与两个订户“Joe订户”和“Frank Friendly”相关联的节点的完整社交图谱的子树。每个部分605可以经由入口节点或父节点610来访问。如本文所讨论的,部分605可以被存储在一个或多个服务器中,并且客户机可以使用适当的统一资源指示符(URI)或其他地址来访问入口节点610。例如,入口节点610(1)可以使用该地址来访问:
[0057]http://www.fakesocialnetwork.com/Joe.Subscriber。
[0058]该部分605还包括连接到入口节点610或该部分605内的到其他节点的子节点。子节点615可以与信息、类别、其他订户等相关联。例如,子节点615可以与“好友”、“照片”、“简档”、“音乐”等相关联。节点615还可以与共享兴趣的用户的组相关联。节点615可以使用相应的地址来访问,诸如:
[0059]http://www.fakesocialnetwork.com/Joe.Subscriber/FriendsLists。
[0060]在图示的实施例中,订户“Joe订户”和“Frank Friendly”是在社交图谱600中通过“好友”关系连接的好友。例如,该部分605(1)中的节点615(2)可以表示Joe订户的“密友”组中的人,并且可以与社交图谱600的一部分605 (2)相关的信息相关联或包括该信息。然而,Joe订户仅“拥有”与Frank Friendly的关系,但是可能不具有对Frank Friendly所拥有的社交图谱600的一部分605(2)执行任何修改的权限或授权。因此,Joe订户可能无法例如以本文关于图2-5描述的方式将新的节点插入到子树605 (2)中或者将查询附加到子树605 (2)中的现有或新的节点。
[0061]对社交图谱600的接口可以替代地通过将一个或多个影子节点620添加到该部分605(1)并且然后将一个或多个请求625附加到影子节点620来修改。在一个实施例中,插入到该部分605 (I)中的影子节点620 (1-2)对应于部分610 (2)中的节点615 (3_4),如双箭头所指示的。影子节点620(1-2)以与节点615(3-4)相同的方式被互连或连接,并且因此从节点615(2)通过影子节点620(1)并且到影子节点620(2)的路径与从入口节点610(2)到节点615(3)和节点615(4)的路径相同。例如,影子节点620可以是表示或投影节点615(3-4)的稀疏树的一部分。添加影子节点620和附加查询625可以在由社交网络的用户或提供商/拥有者进行的对请求的认证或授权之后被执行。
[0062]查询625可以被定义为对节点615(4)的子树630进行操作,其可以包括叶节点635以及在图6中未示出的其他节点。然后,对社交图谱的接口可以通过将查询附加到新的节点620(2)而被修改。开发者或第三方或其他实体可以使用经修改的接口来开发利用新的查询的应用或服务。例如,用于用户(Joe订户)的API可以被扩展为使得现在能够进行对与Frank Friendly相关联的URI的获取(GET)请求:
[0063]http://www.fakesocialnetwork.com/Joe.Subscriber/FriendsLists/CloseFriends/Frank.Friendly/FriendsLists/CloseFriends/number ? friend = Nancy.Friendly&phone-number = 202—555—1414
[0064]可以使用路径匹配技术或其他技术来“追踪”在用于查询625的地址/请求中所指示的路径,并且使由影子节点620(1-2)所指示的路径)与由节点615(3-4)所指示的路径相匹配。然后,可以对子树630执行查询625。因此,使用影子节点620可以允许对社交图谱600的接口被扩展,以允许开发者或第三方定义一个订户的查询,该查询对其他订户所拥有或关联的社交图谱的一部分进行操作。
[0065]图7概念性地图示了用于修改对社交图谱的接口的方法700的第二示例性实施例。方法700的第二示例性实施例不同于图3所示的方法300的第一示例性实施例,因为被插入的节点是影子节点并且被附加的查询可以对与其他用户相关联的节点进行操作。在所示的实施例中,由开发者或第三方,例如,响应于订户调用利用该查询的服务而(在705处)生成查询。然后,开发者或第三方可以(在710处)传送请求,以在社交图谱的用户的部分中创建影子节点,并且将查询附加到新创建的影子节点。例如,查询表达可以被写作具有REST性质的POST请求,其请求对社交图谱的API的程序员视图的修改,如本文所讨论的。
[0066]在所示的实施例中,该请求可能需要来自用户的授权。用户授权过程可以(在715处)被执行,以验证该用户已经授权了将新的节点插入到社交图谱。用户授权可以使用各种技术来进行,如本文中所述。如果用户没有提供确认或验证,则请求(在720处)被拒绝。如果订户确认或认证该请求,则该请求可以继续。在图示的实施例中,该请求还可能需要来自社交网络(SN)服务的提供商或所有者的授权。提供商授权过程可以(在725处)被执行以验证该提供商/所有者已经授权了将新的节点插入到社交图谱中,如本文所讨论。如果提供商没有提供确认或验证,则请求(在720处)被拒绝。如果提供商确认或认证该请求,则该请求可以继续。受益于本公开的本领域普通技术人员应当理解,在图7中所描绘的具体认证顺序旨在是说明性的。替代实施例可以同时或以与在图7中所描绘的不同的顺序来执行用户和提供商认证过程。此外,其他替代实施例可以仅执行用户认证或提供商认证而不是二者,或者可以完全不执行任何认证。
[0067]一旦请求被授权,所请求的影子节点可以(在730处)被插入在社交图谱内的所选择的位置处。然后,对社交图谱的接口可以通过(在735处)将查询附加到的新的影子节点来进行修改。然后,开发者或第三方或其他实体能够使用经修改的接口来开发利用新的查询的应用或服务,其对与其他用户相关联的社交图谱节点的部分中的节点进行操作,如本文所述。修改可以例如通过相应的HTTP删除(DELETE)请求而被撤销。在一个实施例中,用于插入查询的机制可以是创建与最终用户相关联的记录。所插入的记录可以包含要在GET请求中被使用的查询和相关联的路径。在各种实施例中,Web服务支持一个或查询语言并且发布伴随该查询语言的概要(schema)。
[0068]图8概念性地图示了查询对社交图谱的经修改的应用编程接口的方法800的第二示例性实施例。在所示的实施例中,方法800在每个用户和每个应用的基础上修改应用编程接口,使得接口并不总是全局地改变,而是仅在特定用户调用使用经修改的接口时才被改变,并且在一些实施例中,仅针对已经调用了对社交图谱的相关部分的接口的授权修改和相关服务的用户而改变。方法800的第二示例性实施例不同于图4所示的方法400的第一示例性实施例,因为插入的节点是社交图谱中的影子节点,并且附加的查询可以对与其他订户相关联的节点进行操作。
[0069]在图示的实施例中,一个或多个用户可以(在805处)发起服务或应用。所发起的应用可以利用提供商定义的API所不支持的查询。另外,该查询可以对社交网络中的其他用户的子树中的节点进行操作。然后,可以在请求用户的子树中创建一个或多个新的影子节点,并且该查询可以被附加到新的影子节点(在810处)。如本文中所述,影子节点可以被创建(在810处)并且被插入在社交图谱中与通过对社交网络的其他订户的子树的路径匹配或对应的位置处。在图7中描绘了用于创建影子节点和附加查询的技术的实施例。
[0070]然后,服务提供商(例如,使用由服务提供商所拥有或操作的一个或多个服务器上实施的软件)可以(在810处)监测与该服务相关联的查询。只要服务提供商没有检测(在815处)到任何查询,监测就可以继续。当服务提供商检测(在815处)到查询时,例如,检测到作为由用户请求或调用的服务的一部分而被执行的查询时,可以使用查询来识别(在820处)一个或多个其他子树中的相应节点和影子节点,例如使用图案匹配技术。可以对包括在其他用户的社交图谱中的节点的子树中的信息执行(在825处)查询。例如,查询可以返回(在825处)布尔值、计数值或基于被包括在由被附加到查询的影子节点所指示的节点的子树中的信息确定的其他值。如本文中所讨论的,影子节点可以响应于利用该影子节点的服务或应用的终止而被删除或移除。
[0071]图9概念性地图示了服务器900的一个示例性实施例,服务器900可以用于存储的社交图谱的部分、实施对社交图谱的应用编程接口、提供对社交图谱的资源的访问控制、或实施社交网络服务。在图示的实施例中,服务器900包括处理器905、数据存储910和输入/输出(I/O)接口 915。处理器905被配置为,例如使用存储在数据存储910中或其他位置处的数据或指令,来控制服务器900的操作。在本文中,结合图1-8来描述可以由服务器900执行的操作。在一个实施例中,数据存储910存储表示对社交图谱的一个或者多个应用编程接口的信息920,包括提供对社交图谱的资源的访问控制的信息、表示社交图谱的各部分的信息925、或表示可以使用存储在社交图谱中的信息的社交网络服务的信息930。
[0072]虽然图9示描绘了单个服务器900,但是受益于本公开的本领域普通技术人员应该认识到,替代实施例可以使用多个服务器,并且可以在多个服务器中分布图9所描绘的功能的各部分。在一些实施例中,服务器900可以是虚拟机。在一些实施例中,虚拟机可以包括来自不同机器或者在地理上分散的组件。例如,数据存储910和处理器905可以在两个不同的物理机器中。当在处理器905上实施诸如社交网络服务930的处理器可执行的程序时,程序代码段与处理器905组合,以提供类似于特定逻辑电路进行操作的独特装置。
[0073]在软件或算法和对计算机存储器内的数据比特的操作的符号表示方面呈现了所公开的主题和相应的详细描述中的各部分。这些描述和表示是本领域普通技术人员借以将其工作的实质内容传递给其他本领域普通技术人员的描述和表示。在这里所使用、并且通常使用的术语的算法,被认为是导致期望结果的一系列有条理的步骤。步骤是需要物理量的物理操纵的那些。通常,尽管不是必须的,这些量采取能够被存储、传送、组合、比较和以其他方式操纵的光、电或磁信号的形式。已经证明有时是方便的,主要出于通用的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等。
[0074]然而,应当牢记的是,所有这些和类似的术语将与适当的物理量相关联,并且仅仅是应用于这些量的方便标记。除非特别另外声明,或者根据讨论是显而易见的,诸如“处理”或“计算”或“运算”或“确定”或“显示”等的术语是指计算机系统或类似的电子计算设备的动作和过程,其将计算机系统的寄存器和存储器内的表示为物理、电子量的数据操纵和变换成在计算机系统存储器或寄存器或其他这样的信息存储、传输或显示设备内的类似地表示为物理量的其他数据。
[0075]还注意,所公开的主题的软件实施的方面通常被编码在某种形式的程序存储介质上,或者通过某种类型的传输介质来实施。程序存储介质可以是磁性(例如,软盘或硬盘驱动器)或光学(例如,光盘只读存储器或“CD R0M”),并且可以是只读或随机存取。类似地,传输介质可以是双绞线、同轴电缆、光纤或本领域已知的某种其他适当传输介质。所公开的主题不受任何给定实施的这些方面的限制。
[0076]上面公开的特定实施例仅仅是说明性的,因为所公开的主题可以以对于受益于本文的教导的本领域技术人员来说显而易见的不同但是等同的方式来修改和实践。此外,除了以下权利要求中所描述的,不期望限制本文示出的构建或设计的细节。因此,明显的是,以上公开的特定实施例可以被改变或修改,并且所有这些变体被认为在所公开的主题的范围内。因此,本文所寻求的保护如以下权利要求中所阐述的。
【权利要求】
1.一种方法,包括: 修改到社交图谱的接口,所述社交图谱包括节点,所述节点由表示所述节点之间的关系的边缘所连接,其中所述节点形成与所述社交图谱的用户相关联的多个树,并且其中修改所述接口包括: 将第一节点添加到至少一个用户的树;以及 对所述第一节点附加至少一个查询,其中所述至少一个查询对所述第一节点的子树进行操作, 并且进一步其中所述接口响应于所述至少一个用户调用被配置为对所述子树执行所述至少一个查询的服务而被修改。
2.根据权利要求1所述的方法,其中将所述第一节点添加到所述至少一个用户的树包括:响应于确定所述至少一个用户授权了添加所述第一节点、或者拥有所述社交图谱的服务提供商授权了添加所述第一节点而添加所述第一节点,并且将所述至少一个查询添加到所述第一节点。
3.根据权利要求1所述的方法,其中对所述第一节点附加所述至少一个查询包括:附加下述中的至少一个:由第三方开发者定义的查询、或从由拥有所述社交图谱的服务提供商所定义的查询集合中选择的查询。
4.根据权利要求1所述的方法,其中添加所述第一节点包括将与第二节点相关联的影子节点添加在至少一个其他用户的树中,并且其中对所述第一节点附加所述至少一个查询包括对所述影子节点附加至少一个查询,其中附加到所述影子节点的所述至少一个查询对所述至少一个其他用户的树中的所述第二节点的子树进行操作。
5.一种方法,包括: 调用被配置为对社交图谱的一部分执行查询的服务,所述社交图谱包括节点,所述节点由表示所述节点之间的关系的边缘所连接,其中所述节点形成与所述社交图谱的用户相关联的多个树;以及 接收用以授权通过向与调用了所述服务的用户相关联的树添加节点来修改到所述社交图谱的接口的请求,其中所述接口将通过向所述节点附加至少一个查询而被修改,其中所述至少一个查询对所添加的节点的子树进行操作。
6.根据权利要求5所述的方法,包括授权用以修改所述接口的所述请求,并且其中响应于所述请求的授权来修改到所述社交图谱的所述接口。
7.根据权利要求6所述的方法,其中响应于到所述社交图谱的所述接口的修改而发起所述服务的操作,并且进一步包括请求所述服务的终止,并且其中响应于对所述服务的终止的请求而提供用以删除所述节点的请求,并且在删除所述节点之后终止所述服务。
8.一种方法,包括: 通过提供对与关联于用户的社交图谱的一部分相关联的至少一个查询的支持来修改到所述社交图谱的所述一部分的接口,其中所述接口响应于所述用户调用实施所述至少一个查询的服务而被修改;以及 对关联于所述用户的所述社交图谱的所述一部分执行所述至少一个查询。
9.根据权利要求8所述的方法,其中修改所述接口包括将所述节点添加到所述用户的树,并且将所述至少一个查询附加到所述节点,其中所述至少一个查询对所述节点的子树进行操作。
10.根据权利要求9所述的方法,其中修改所述接口包括将影子节点添加到所述用户的树,并且将所述至少一个查询附加到所述影子节点,其中所述至少一个查询对另一用户的树中的节点的子树进行操作,并且其中所述影子节点与其他用户的树中的节点相关联,并且其中执行所述至少一个查询包括对所述其他用户的树中的所述节点的所述子树执行所述至少一个查询。
11.根据权利要求8所述的方法,包括:响应于所述用户调用所述服务,而从所述用户或拥有所述社交图谱的服务提供商中的至少一个请求用以修改所述接口的授权,并且其中修改所述接口包括响应于从所述用户或所述服务提供商中的所述至少一个接收到对所述修改的授权而修改所述接口。
12.一种用于提供对社交图谱的部分的访问控制的装置,所述装置包括数据存储以及通信地耦合到所述数据存储的处理器,所述处理器被配置为执行如在权利要求1至4中的任何一项中所述的方法。
13.一种用于提供对社交图谱的部分的访问控制的装置,所述装置包括数据存储以及通信地耦合到所述数据存储的处理器,所述处理器被配置为执行如在权利要求5至7中的任何一项中所述的方法。
14.一种用于提供对社交图谱的部分的访问控制的装置,所述装置包括数据存储以及通信地耦合到所述数据存储的处理器,所述处理器被配置为执行如在权利要求8至11中的任何一项中所述的方法。
【文档编号】G06F17/30GK104169915SQ201380015091
【公开日】2014年11月26日 申请日期:2013年3月18日 优先权日:2012年3月19日
【发明者】L·E·门滕 申请人:阿尔卡特朗讯
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1