提供协作智能和约束计算的数据隐私管道
背景技术:1.商业和技术越来越依赖于数据。许多类型的数据可以被观察、收集、派生(derive)和分析,以获取启发科学和技术进步的见解。在许多情况下,有价值的智能可以从数据集派生,并且有用的产品和服务可以基于该智能开发。这种类型的智能可以帮助推动诸如银行、教育、政府、医疗保健、制造、零售以及几乎任何其他行业等行业。然而,在许多情况下,特定数据所有者拥有或可用的数据集以某种基本方式是不完整或有限的。信息共享是弥合数据集差距的一种方式,并且共享数据已成为越来越普遍的做法。共享数据有许多益处。然而,也存在许多担忧和障碍。
技术实现要素:2.本公开的实施例涉及用于基于约束计算和查询派生协作智能的技术。在高级别上,数据受托人可以操作受托人环境,该受托人环境在不共享原始数据的情况下派生受可配置约束的协作智能。受托人环境可以包括数据隐私管道,通过该数据隐私管道,数据可以被摄取、融合、派生和清洁以生成协作数据而不损害数据隐私。协作数据可以被存储和查询,以提供受可配置约束的协作智能。在一些实施例中,数据隐私管道被提供为在受托人环境中实现的分布式计算或云计算服务(云服务),并且可以根据需要加速和减速。
3.为了实现约束计算和查询,约束管理器可以监测和编排受约束的受托人环境中的协作数据的使用和生成。如本文使用的,协作数据是指从共享输入数据(例如来自不同用户的数据)派生的数据。共享输入数据可以来自任何数量的源(例如不同的用户),并且可以被处理以生成中间数据,该中间数据本身可以被处理以生成协作数据。协作数据可以包括被允许共享的可公开部分和不被允许共享的限制部分。尽管协作数据的限制部分可能未被共享,但它可以包括可操作部分,其可以被用于派生可以被共享的协作智能。在一些实施例中,协作智能可以从可公开数据和/或限制数据派生,并且协作智能可以在不公开限制数据的情况下被提供。
4.用户界面可以被提供,以使租户(例如客户、企业、用户)能够指定对受托人环境中的数据的使用和访问的期望计算和约束,包括合格的数据源以及其数据可以如何被处理或共享。任何数量的各种类型的约束可以被实现,包括数据访问约束、数据处理约束、数据聚合约束和数据清洁约束,仅举几例。约束管理器可以与受托人环境中的各种组件通信,以实现约束。例如,执行诸如命令或函数调用等可执行逻辑单元的请求可以向约束管理器发布,该约束管理器可以许可或拒绝权限。权限可以根据实现约束的一个或多个条件许可,诸如需要用约束可执行逻辑单元代替特定的可执行逻辑单元。当约束被应用于生成协作数据和中间数据时,模式、约束和/或属性元数据的任何组合都可以与数据相关联。因此,约束管理器可以在受托人环境中编排约束计算。
5.在一些实施例中,约束查询可以被应用,以允许与受托人环境相关联的数据消费者在受约束的受托人环境中查询协作数据。约束查询可以允许数据消费者访问协作数据或派生协作智能,同时强制执行约束以防止公开指定数据(已被标识用于强制执行特定约束
的数据)。约束可以响应于查询以多种方式应用,包括在执行之前重新格式化查询,在执行查询之后应用约束,约束合格查询以供执行,在执行之前应用访问约束等。为了根据约束重新格式化查询,查询可以被解析为包括分层布置的可执行逻辑单元的执行树,该可执行逻辑单元在被执行时实现查询。通过用与约束一致的自定义可执行逻辑单元代替与特定约束不一致的可执行逻辑单元,执行树可以被重新格式化为约束执行树。约束执行树可以被翻译为由受托人环境使用的语言,并被转发以用于执行。
6.该发明内容被提供,来以简化的形式介绍对下面在详细描述中进一步描述的概念的选择。该发明内容不旨在标识要求保护的主题的关键特征或者必要特征,也不旨在被隔离使用来辅助确定要求保护的主题的范围。
附图说明
7.本发明在下面参照所附附图详细描述,其中:
8.图1是根据本文描述的实施例的示例协作智能环境的框图;
9.图2是根据本文描述的实施例的示例约束查询组件的框图;
10.图3a是所发布的查询的示例,并且图3b是根据本文描述的实施例的对应执行树的示例;
11.图4a是约束执行树的示例,并且图4b是根据本文描述的实施例的对应查询的示例;
12.图5是示出了根据本文描述的实施例的用于生成协作数据的示例方法的流程图;
13.图6是示出了根据本文描述的实施例的用于生成协作数据的示例方法的流程图;
14.图7是示出了根据本文描述的实施例的用于在数据受托人环境中为协作数据提供约束计算的示例方法的流程图;
15.图8是示出了根据本文描述的实施例的用于在数据受托人环境中提供对协作数据的约束访问的示例方法的流程图;
16.图9是示出了根据本文描述的实施例的用于约束查询的示例方法的流程图;
17.图10是示出了根据本文描述的实施例的用于约束查询的示例方法的流程图;
18.图11是适用于实现本文描述的实施例的示例计算环境的框图;以及
19.图12是适用于实现本文描述的实施例的示例计算环境的框图。
具体实施方式
20.概述
21.共享数据有许多益处。例如,共享数据通常会导致更完整的数据集,鼓励协作努力并产生更好的智能(例如对事件或情况的理解或知识,或关于不同类型实体的信息、关系和事实)。研究人员受益于更多数据可用。进一步地,共享可以激发对研究的兴趣,并可以激励产生更高的数据质量。通常,共享可能会导致研究和开发的协同效应和效率。
22.然而,共享数据也存在许多担忧和障碍。实际上,不同行业共享数据的能力和意愿各不相同。数据隐私和机密性问题是诸如医疗保健和银行等许多行业的基础。在许多情况下,法律、法规和消费者需求对共享数据的能力施加了限制。此外,观察、收集、派生和分析数据集的行动通常是昂贵且劳动密集型的活动,并且许多人担心共享数据会失去竞争优
势。即使有足够的动机来共享数据,控制和访问共享数据的问题通常也是共享的障碍。实际上,这些障碍常常防止数据共享以及随之而来的进步机会。因此,需要数据共享技术来促进协作智能的开发,同时确保数据隐私并促进对共享数据的控制和访问。
23.因此,本公开的实施例涉及用于基于约束计算和约束查询派生协作智能的技术。在高级别上,数据受托人可以操作受托人环境,该受托人环境被配置为派生受可配置约束的租户的协作智能,而不公开由租户提供的底层原始数据或者由受托人环境屏蔽的协作数据。如本文使用的,协作数据是指从共享输入数据(例如来自不同用户的数据)派生的数据。共享输入数据可以来自任何数量的源(例如不同的用户),并且可以被处理以生成中间数据,该中间数据本身可以被处理以生成协作数据。协作数据可以包括被允许共享的可公开部分和不被允许共享的限制部分。尽管协作数据的限制部分可能未被共享,但它可以包括可操作部分,其可以被用于派生可以被共享的协作智能。在一些实施例中,协作智能可以从可公开数据和/或限制数据派生,并且协作智能可以在不公开限制数据的情况下提供。例如,可配置约束可以以编程方式管理对某些底层数据(例如个人可标识信息、一些其他敏感信息或收集、存储或使用的任何其他指定信息)的限制(例如允许一些操作,但不允许其他操作)以及底层数据如何可以和无法被访问、使用、存储或显示(或其变化)。进一步地,可配置约束可以以编程方式支持对可访问数据的协作智能操作(例如派生聚合统计数据),而无需显示被操作的单个数据条目。
24.通过依赖于受托人计算来执行数据处理,租户可以从彼此的数据中派生协作智能,而不会损害数据隐私。为了实现这一点,受托人环境可以包括一个或多个数据隐私管道,通过这些管道,数据可以被摄取、融合、派生和/或清洁以生成协作数据。数据隐私管道可以被提供为在受托人环境中实现的分布式计算或云计算服务(云服务),并且可以根据需要加速和减速。在一些实施例中,向数据隐私管道提供数据的租户无法访问该管道。相反,管道输出受由一个或多个租户提供的约束的协作数据。取决于指定的约束,协作数据可以从受托人环境输出(例如因为它已经根据指定的约束进行了清洁)和/或可以被存储在受托人环境中并由受托人环境屏蔽。屏蔽协作数据可以被查询以派生受可配置约束(例如不公开屏蔽协作数据)的协作智能。
25.通常,数据隐私管道可以接受由一个或多个租户提供的数据。最初,数据隐私管道可以根据与一个或多个租户的合同或其他租户协议来确定输入数据是否是联合数据。被确定为联合数据的数据可以被摄取,并且被确定为不是联合数据的数据可以被丢弃。在这方面,联合数据是指在生成协作数据时被指定用于摄取的任何共享数据(例如在与一个或多个租户的租户协议中指定或以其他方式标识)。摄取数据可以包括来自多个源的数据,因此数据隐私管道可以根据租户协议中指定的计算和约束来融合来自多个源的数据。例如,约束数据融合可以实现一个或多个约束,来以任何数量的方式组合摄取数据以形成融合的联合数据,包括使用一个或多个联合操作(例如左侧、右侧、内部、外部、反向)、自定义联合(例如经由命令式脚本)、数据附加、归一化操作、其某种组合等。
26.在一些实施例中,数据隐私管道可以执行约束计算以生成派生的联合数据。约束计算可以从一个源获取数据(例如摄取数据、融合的联合数据),并执行任何数量的指定计算(例如算术运算、聚合、概括、滤波、排序、设界)。约束计算的简单示例是计算每个城市的平均年龄,其中如果底层数据集包括城市中的至少五个人的条目,则计算仅对城市执行。附
加地或备选地,数据隐私管道可以执行数据清洁,以生成实现对存储、访问、精度等的约束的协作数据。例如,数据清洁可以实现租户协议中指定的约束,指定协作数据(例如存储在受托人环境中)是否应该被屏蔽,协作数据是否可以被导出,导出的协作数据是否应该被限制(例如不导出电子邮件、信用卡号及其部分)等。因此,数据隐私管道可以从由一个或多个租户提供的数据生成协作数据,并提供对协作数据的商定访问,而无需与所有租户共享底层原始数据。
27.在一些实施例中,为了实现约束计算和查询,受托人环境中的协作数据的使用和生成可以根据可配置的约束进行监测和编排。在高级别上,约束可以通过用户界面提供,以使租户(例如客户、企业、用户)能够在受托人环境中指定对其数据的使用和访问所需的计算和约束,包括合格的数据源及其数据可以如何被处理或共享。任何数量的各种类型的约束可以被实现,包括数据访问约束、数据处理约束、数据聚合约束和数据清洁约束。
28.例如,数据访问约束可以被指定以允许或禁止访问(例如对具体用户、账户、组织)。在一些实施例中,指定的约束可以是通用的,使得约束适用于所有潜在的数据消费者(例如只允许访问平均年龄而不管数据消费者)。在一些实施例中,指定的约束可以被应用于指定的用户、账户、组织等(例如不允许组a访问工资数据,但允许组b访问它)。通常,租户可以指定定义租户数据可以如何与指定数据集或其部分合并的约束、限制从租户数据读取的数据模式的约束(例如指定要被应用于租户数据的水平滤波)、限制摄取数据的大小的约束(例如指定存储限制、租户数据的子采样、被应用于租户数据的垂直滤波)、限制可以被输出的协作数据模式的约束、定义协作数据的所有权的约束、定义协作数据是否应该被开放、加密或屏蔽(例如存储在受托人环境中)的约束等。
29.在一些实施例中,各种类型的数据处理约束可以被指定,诸如指定什么操作可以被执行的约束(例如可允许计算和限制计算、二进制检查)、限制比较精度的约束(例如针对数字数据、地理数据、日期和时间数据)、限制累积精度的约束(例如针对地理数据、数字数据、日期或时间数据)、限制位置边界精度(例如将可允许的地理围栏确定限制到具体网格、最小地理划分,诸如街区、县、市、州或国家等)以及其他精度和/或数据处理要求的约束。
30.附加地或备选地,一个或多个数据聚合约束可以被指定,诸如需要最小聚合量的约束(例如至少n行或不同字段值)、需要一些统计分布条件有效的约束(例如最小标准偏差)、定义允许聚合函数的约束(例如允许最小值、最大值、平均值,但不是百分位数),仅举几例。
31.在一些实施例中,一个或多个数据清洁约束可以被指定,诸如需要对个人可标识信息进行清洁的约束(例如移除电子邮件、姓名、id、信用卡号)、需要较低精度清洁的约束(例如降低数字、数据和时间和/或地理精度)、需要清洁来自具体字段的值的约束(这可能需要追踪在数据隐私管道中应用的变换)、需要自定义清洁的约束(例如需要执行一个或多个自定义和/或第三方清洁脚本)、需要数据掩蔽的约束(例如输出某些数据,诸如电话号码、信用卡、日期,但掩蔽了数字的一部分)等。
32.除了上面列出的约束之外或作为其替代,一个或多个约束可以被指定以限制每单位时间(例如分钟、小时、天)允许的查询和/或数据访问量。这种约束可以通过在相对较小的时间窗口内询问略有不同的问题集合来操作,以降低蛮力尝试对屏蔽数据进行逆向工程的风险。通常,一个或多个自定义约束可以被指定,诸如需要一些指定属性与一些指定标准
相匹配的约束。这些和其他类型的约束被设想在本公开内。
33.在一些实施例中,约束管理器可以根据指定的约束来监测和编排数据流、生成和访问。例如,约束管理器可以与受托人环境中的各种组件(例如数据隐私管道)进行通信以实现约束,这些约束可以被维护在约束管理器可访问的合同数据库中。在一些实施例中,组件可以向约束管理器发布请求,以获得权限来执行特定命令、函数调用或其他可执行逻辑单元。约束管理器可以评估请求,并许可或拒绝权限。在一些情况下,权限可以根据与一个或多个约束相对应的一个或多个条件许可。通过非限制性示例,可以被实现的一些可能条件包括需要对数据进行移位、滤波或整形的操作(例如比较约束的应用,诸如仅允许具有特定精度的合并),需要用一个或多个约束的可执行逻辑单元替换一个或多个可执行逻辑单元(例如命令或操作)(例如用约束的平均值代替平均值)等。
34.通常,约束可以在任何时间或步骤(例如与数据隐私管道的任何部分、约束查询相关联)检查、验证或以其他方式强制执行。因此,强制执行约束的对应功能性可以在任何步骤或多个步骤应用。在一些实施例中,某些约束的强制执行可以被分配给数据隐私管道的某些部分(例如在摄取期间应用的数据访问约束、在数据融合和/或约束计算期间应用的处理和聚合约束、在数据清洁期间应用的清洁约束)。在另一示例中,特定的数据访问约束(例如仅传递参与至少五个不同研究的患者的数据)可以在数据融合期间应用。这些仅旨在作为示例,并且任何合适的约束强制执行体制可以在本公开内实现。
35.对特定的可执行逻辑单元(例如针对指定的计算、所请求的操作)强制执行约束(例如精度或聚合约束)可能会导致任何数量的场景。在一个示例中,特定的可执行逻辑单元可以被完全拒绝。在另一示例中,特定的可执行逻辑单元可以被允许,但结果被滤波(例如没有值针对特定行或数据条目返回)。在又一示例中,特定的可执行逻辑单元可以被允许,但结果被改变(例如精度降低,问题的回答为假)。这些和其他变化可以被实现。
36.当约束被应用于生成协作数据时,模式、约束和/或属性元数据的任何组合都可以与协作数据、用于获得协作数据的中间数据等相关联。通常,约束可以跨多个步骤和计算强制执行。因此,在一些实施例中,每个步骤的适用和/或满足的约束可以被追踪和/或与由给定步骤产生的数据相关联。将聚合约束作为示例,一旦聚合约束已经在特定步骤期间满足,后续步骤就不再需要考虑该约束。在不同约束已经针对要被合并的不同数据集指定的另一示例中,合并操作可能只需要应用更严格的约束。通常,当数据流过数据隐私管道时,适当的分配或约束组合可以被应用和/或追踪。这种追踪可以促进验证特定约束是否已被应用于特定数据。因此,当约束被应用并且数据被生成时,对应的模式、适用或满足的约束和/或指示所有权或天意的属性元数据可以与数据集或对应的条目、行、字段或其他数据元素相关联。在一些实施例中,用于获得协作数据的任何中间数据(例如摄取数据、融合的联合数据、派生的联合数据)可以被删除,并且协作数据可以被存储在受托人环境中和/或作为输出提供,取决于适用的约束。
37.在一些实施例中,约束查询可以被应用以允许数据消费者在受可配置约束的受托人环境中查询协作数据。在高级别上,约束查询可以作为搜索引擎运行,允许数据消费者访问协作智能或从协作数据派生协作智能,而不会公开由租户提供的底层原始数据或由受托人环境屏蔽的协作数据。约束可以响应于查询以任何数量的方式应用,包括在执行之前重新格式化查询,在执行查询之后应用约束,约束合格查询以供执行,在执行之前应用访问约
束等。
38.通过非限制性示例,通过确保查询包含至少一个聚合元素并确保(多个)聚合元素与聚合约束一致,所发布的查询可以针对指定的聚合约束验证。在另一示例中,与所发布的查询相对应的执行计划可以被执行,并且结果可以针对查询的聚合约束和/或(多个)聚合元素验证(例如确认结果对应于请求数量的不同行、字段、统计分布)。在一些实施例中,约束可以通过基于约束修改元素(例如限制对应数量的不同行、字段、统计分布)、通过在查询的其他元素之前执行修改元素、其某种组合或其他方式来对查询的对应元素强制执行。
39.通过背景,查询通常不是可执行代码。为了执行查询,它通常被转换为可执行的执行计划。在一些实施例中,为了对接收到的查询强制执行约束,查询可以被解析为包括分层布置的可执行逻辑单元的对应执行树,该可执行逻辑单元在被执行时实现查询。适用的约束可以被访问,并且可执行逻辑单元可以针对约束验证。在一些实施例中,如果一个或多个可执行逻辑单元不被允许,则查询可以通过基于一个或多个约束更改一个或多个可执行逻辑单元来有效地重新格式化。更具体地,通过遍历执行树并且用与约束一致的自定义可执行逻辑单元替换与特定约束不一致的可执行逻辑单元,与查询相对应的执行树可以被重新格式化为约束执行树。附加地或备选地,一个或多个可执行逻辑单元可以被添加到约束执行树以对输出强制执行约束(例如精度约束)。这些仅旨在作为示例,并且用于生成约束执行树的任何合适技术可以被实现。
40.通常,执行树的可执行逻辑单元可以针对对应的约束上下文来验证,该约束上下文包括适用的访问约束和运行时信息,诸如标识发布查询的请求数据消费者的信息、标识适用的租户协议的信息、标识要操作的目标协作数据的信息等。可执行逻辑单元的验证可以涉及对组成命令或操作、一个或多个组成参数和/或执行树的其他部分的考虑的验证。可执行逻辑单元的验证可能会产生许多可能的结果。例如,可执行逻辑单元可以被允许(例如可执行逻辑单元可以被复制到约束执行树中),可执行逻辑单元可以被禁止(例如查询可以被完全禁止),或者可执行逻辑单元可以被允许但有改变(例如将对应约束的可执行逻辑单元复制到约束执行树中)。在一些实施例中,所得的约束执行树被翻译为由受托人环境使用的语言。所得的执行树可以被执行(例如通过遍历和执行树的可执行逻辑单元的层次结构),并且结果可以被返回给请求数据消费者。
41.因此,使用本文描述的实现,用户可以通过允许他们派生协作智能的数据受托人高效且有效地共享数据,同时确保数据隐私并提供对共享数据的可配置控制和访问。
42.示例协作智能环境
43.现在参照图1,适用于实现本发明的实施例的示例协作智能环境100的框图被示出。通常,协作智能环境100适合于生成协作智能,并且除其他外,促进约束计算和约束查询。协作智能环境100或其一部分(例如数据受托人环境110)可以但不需要在分布式计算环境(诸如分布式计算环境1100)中实现,如下面相对于图11讨论的。协作智能环境100的任何或所有组件可以被实现为任何种类的计算设备或其一些部分。例如,在实施例中,租户设备101a至101n和数据消费者设备103a至103n可以分别是诸如计算设备1200等计算设备,如下面参照图12描述的。进一步地,数据受托人环境可以使用一个或多个这种计算设备来实现。在实施例中,这些设备可以是个人计算机(pc)、膝上型计算机、工作站、服务器、移动计算设备、pda、手机等的任何组合。协作智能环境100的组件可以经由一个或多个网络彼此通信,
该网络可以包括但不限于一个或多个局域网(lan)和/或广域网(wan)。这种联网环境在办公室、企业范围计算机网络、内联网和互联网中是常见的。
44.协作智能环境100包括数据受托人环境110,其能够从由受可配置约束的数据所有者或提供方(例如租户)提供的原始数据派生协作数据和/或协作智能,而不共享原始数据。通常,任何数量的租户可以将其数据(例如数据集105a至105n)输入到数据受托人环境110中,并且指定一个或多个约束(例如来自租户设备101a至101n中的一个租户设备)。数据受托人环境110可以基于一个或多个约束派生协作数据(例如协作数据集107a至107n、屏蔽协作数据集160)。任何数量的数据消费者(例如操作数据消费者设备103a至103n中的一个数据消费者设备)可以对屏蔽协作数据集160发布查询,并且数据受托人环境110可以从屏蔽协作数据集160派生协作智能,受一个或多个约束。在一些情况下,授权数据消费者(例如其可以由一个或多个约束定义)可以是拥有或提供原始数据(例如数据集105a至105n中的一个或多个)或拥有派生的协作数据(例如屏蔽协作数据集160)的同一人或实体。在一些情况下,授权数据消费者可能是一些其他人或实体。
45.在图1所图示的实施例中,数据受托人环境110包括约束管理器115。在高级别上,寻求共享数据的租户可以通过数据受托人环境110的用户界面向约束管理器115提供一个或多个期望的计算和约束(其可以被实施在合同协议中)。用户界面可以使租户能够指定将控制其数据在数据受托人环境110中的使用的期望计算和约束,包括合格的数据源(例如数据集105a至105n中的一个或多个)以及其数据可能如何被处理或共享。各种类型的约束可以被实现,包括数据访问约束、数据处理约束、数据聚合约束、数据清洁约束、其某种组合等。指定的计算和约束以及租户协议的其他特征可以被存储在约束管理器115可访问的联系人数据库(未描绘)中。
46.在图1所图示的实施例中,数据受托人环境110包括数据隐私管道120。在高级别上,数据隐私管道120可以接受来自一个或多个指定源(例如数据集105a至105n中的一个或多个)的数据。数据可以基于一个或多个指定的计算和/或约束来摄取、融合、派生和/或清洁,以生成协作数据(例如协作数据集107a至107n中的一个或多个、屏蔽协作数据集160)。数据隐私管道120可以被提供为在受托人环境110中实现的分布式计算或云计算服务(云服务),并且可以根据需要加速和减速。在一些实施例中,向数据隐私管道120提供数据的租户无法访问该管道。相反,管道输出受适用约束的协作数据。取决于指定的约束,协作数据可以作为协作数据集107a至107n中的一个或多个从数据受托人环境110输出(例如因为它已经根据指定的约束进行了清洁)和/或可以被屏蔽(例如存储为屏蔽协作数据集160)在数据受托人环境110中。如下面更详细地解释的,协作数据集160可以被查询以派生受可配置约束的协作智能。
47.在图1所图示的实施例中,数据隐私管道120包括摄取组件125(产生摄取数据130)、约束融合组件135(产生融合的联合数据140)、约束计算组件145(产生派生的联合数据150)和清洁组件155(产生协作数据集107a至107n和160)。最初,数据集105a至105中的一个或多个可以被提供给数据隐私管道120(例如通过用户界面、编程界面或数据受托人环境的一些其他界面)。摄取组件125可以根据合同或其他租户协议确定输入数据或其某个部分是否是联合数据。例如,输入数据或其某个部分可以以某种方式标识,并且摄取组件125可以与约束管理器115通信以根据合同数据库中表示的租户协议确认所标识的数据是否是联
合数据。被确定为联合数据的数据可以被存储为摄取数据130,并且被确定为不是联合数据的数据可以被丢弃。
48.摄取数据可以包括来自多个源的数据,因此约束融合组件135可以根据租户协议中指定的计算和约束来融合来自多个源的摄取数据。例如,约束融合组件135可以与约束管理器115通信,以根据合同数据库中表示的租户协议获得、验证或请求指定的融合操作。通过非限制性示例,约束融合组件135可以实现一个或多个约束以组合摄取数据(例如摄取数据130),来以任何数量的方式形成融合的联合数据(例如融合的联合数据140),包括使用一个或多个联合操作(例如左侧、右侧、内部、外部、反向)、自定义联合(例如经由命令式脚本)、数据附加、归一化操作、其某种组合等。
49.通常,约束计算组件145可以执行约束计算(例如对摄取数据130、融合的联合数据140),以生成派生的联合数据(例如派生的联合数据150)。约束计算可以涉及任何数量的指定计算(例如算术操作、聚合、概括、滤波、排序、设界)。通常,约束计算组件145可以与约束管理器115通信,以根据合同数据库中表示的租户协议获得、验证或请求指定计算。通过简单示例,许多零售商可能同意公开平均销售数据,因此对应的计算可能涉及求平均值。约束计算的简单示例是计算每个城市的平均年龄,其中如果底层数据集包括城市中的至少五个人的条目,则计算仅对城市执行。这些仅旨在作为示例,并且任何类型的计算和/或约束可以被实现。
50.在一些实施例中,清洁组件155可以执行数据清洁(例如对派生的联合数据150),来以实现用于存储、访问、精度等的约束的方式生成协作数据(例如协作数据集107a至107n中的一个或多个、屏蔽协作数据集160)。例如,清洁组件155可以与约束管理器115通信,以根据合同数据库中表示的租户协议获得、验证或请求指定的清洁操作。因此,清洁组件155可以实现在租户协议中指定的约束,该约束指定协作数据是否应该被屏蔽(例如存储为数据受托人环境110中的屏蔽协作数据集160),协作数据是否可以被导出(例如作为协作数据集107a至107n中的一个或多个),导出的协作数据是否应该被限制(例如不导出电子邮件、信用卡号、其部分)、其某种组合等。在一些实施例中,用于获得协作数据的任何或所有中间数据(例如摄取数据、融合的联合数据、派生的联合数据)可以被删除,例如与减速数据隐私管道120相关联。因此,数据隐私管道120可以从由一个或多个租户提供的数据生成协作数据。
51.如上面解释的,约束管理器115可以监测和编排受一个或多个指定约束的协作数据的使用和生成。附加地或备选地,约束管理器115可以监测和编排对受约束的协作数据的访问。通常,约束管理器115可以与数据受托人环境110和/或数据隐私管道120中的各种组件通信,以实现指定的计算和/或约束,这些计算和/或约束可以被维护在约束管理器115可访问的合同数据库中。在一些实施例中,组件可以向约束管理器115发布请求,以获得权限来执行特定命令、函数调用或其他可执行逻辑单元。约束管理器115可以评估请求,并许可或拒绝权限。在一些情况下,权限可以根据与一个或多个约束相对应的一个或多个条件许可。通过非限制性示例,可以被实现的一些可能条件包括需要对数据进行移位、滤波或整形的操作(例如比较约束的应用,诸如仅允许具有特定精度的合并),需要用一个或多个约束的可执行逻辑单元替换一个或多个可执行逻辑单元(例如命令或操作)(例如用约束的平均值代替平均值)等。
52.通常,约束可以在任何时间或步骤(例如与数据隐私管道120、数据受托人环境110的任何组件相关联)检查、验证或以其他方式强制执行。因此,强制执行约束的对应功能性可以在任何步骤或多个步骤应用。在一些实施例中,某些约束的强制执行可以被分配给数据隐私管道120的某些部分(例如由摄取组件125应用的数据访问约束、由约束融合组件135和/或约束计算组件145应用的处理和聚合约束、由清洁组件155应用的清洁约束)。在另一示例中,特定的数据访问约束(例如仅传递参与至少五个不同研究的患者的数据)可以由约束融合组件135应用。这些仅旨在作为示例,并且任何合适的约束强制执行体制可以在本公开内实现。
53.在一些实施例中,约束管理器115可以通过通信、指示或以其他方式促进任何数量的处置来对特定的可执行逻辑单元(例如用于指定的计算、所请求的操作)强制执行约束(例如精度或聚合约束)。在一个示例中,约束管理器115可以完全拒绝特定的可执行逻辑单元。在另一示例中,约束管理器115可以允许特定的可执行逻辑单元,但需要结果被滤波(例如没有值针对特定行或数据条目返回)。在又一示例中,约束管理器115可以允许特定的可执行逻辑单元,但需要结果被改变(例如精度降低,问题的回答为假)。这些和其他变化可以被实现。
54.由于约束被应用于生成协作数据(例如协作数据集107a至107n、屏蔽协作数据集160),模式、约束和/或属性元数据的任何组合可以与协作数据、用于获得协作数据(例如摄取数据130、融合的联合数据140、派生的联合数据150)的中间数据等相关联。通常,约束可以跨多个步骤和计算强制执行。因此,在一些实施例中,每个步骤的适用和/或满足的约束可以被追踪和/或与由数据隐私管道120的给定组件产生的数据相关联。将聚合约束作为示例,一旦聚合约束由数据隐私管道120的特定组件满足,下游组件不再需要考虑该约束。在不同约束已经针对要被合并的不同数据集指定的另一示例中,合并操作可能只需要应用更严格的约束。通常,当数据流过数据隐私管道120时,适当的约束分配或组合可以被应用和/或追踪。这种追踪可以促进验证特定约束是否已被应用于特定数据。因此,当约束被应用并且数据被生成时,对应的模式、适用或满足的约束和/或指示数据的所有权或天意的属性元数据可以与数据集或对应的条目、行、字段或其他数据元素相关联。通常,模式、适用或满足的约束和/或属性元数据可以根据合同数据库中表示的租户协议(例如经由与约束管理器115的通信)来生成。在一些实施例中,用于获得协作数据的任何或所有中间数据(例如摄取数据130、融合的联合数据140、派生的联合数据150)可以被删除,并且协作数据可以被存储在受托人环境110中作为屏蔽协作数据集160和/或被导出为协作数据集107a至107n中的一个或多个,取决于适用的约束。
55.在一些实施例中,数据受托人环境110包括约束查询组件170,其可以应用约束查询以允许数据消费者(例如操作数据消费者设备103a至103n中的一个数据消费者设备)在受一个或多个指定约束的数据受托人环境110中查询协作数据(例如屏蔽协作数据集160)。在高级别上,约束查询组件170可以作为搜索引擎进行操作,允许数据消费者访问或派生来自屏蔽协作数据集160的协作智能,而不公开由租户提供的原始数据(例如数据集105a至105n中的一个或多个)、用于生成屏蔽协作数据集160的中间数据(例如摄取数据10、融合的联合数据140、派生的联合数据150)和/或屏蔽协作数据集160。通常,约束查询组件170可以与约束管理器115通信,以根据合同数据库中表示的租户协议获得、验证或请求指定的操
作。约束查询组件170可以促进响应于查询以任何数量的方式强制执行约束,包括在执行之前重新格式化查询,在执行查询之后应用约束,约束合格查询以供执行(例如仅允许白名单查询集合),在执行之前应用访问约束等。
56.现在转到图2,图2是根据本文描述的实施例的示例约束查询组件00的框图。约束查询组件200可以对应于图1的约束查询组件170。在高级别上,约束查询组件200可以作为搜索引擎操作,使数据消费者能够查询协作数据并从中派生协作智能,受对应租户协议中指定的一个或多个约束。通过背景,查询通常不是可执行代码。为了执行查询,查询通常被转换为执行树,作为可执行的执行计划的基础。通常,约束查询组件200可以通过重新格式化与接收到的查询相对应的执行树以在执行之前考虑任何适用的约束来强制执行约束或促进约束的强制执行。在简单示例中,约束可能允许查询补偿数据,但结果必须被舍入。因此,查询和/或其对应的执行树可以在执行之前被重新格式化,使得任何返回的搜索结果考虑适用的约束。在图1所图示的实施例中,约束查询组件200包括访问约束组件220、查询解析器230、约束查询格式器240、翻译组件250和执行组件260。该配置仅旨在作为示例,并且具有类似或不同功能性的其他配置可以根据本公开实现。
57.在高级别上,约束查询组件200可以接收由数据消费者(例如操作图1的数据消费者设备103a至103n中的一个数据消费者设备)基于协作数据(例如图1的屏蔽协作数据集160)请求协作智能发布的查询210。查询210可以采用任何合适的形式或查询语言,并且可以包括对协作数据的一个或多个请求的操作。在一些实施例中,查询210可以指定运行时信息或以其他方式与其相关联,诸如标识发布查询的请求数据消费者的信息、标识适用的租户协议的信息、标识要操作的目标协作数据的信息等。
58.在一些实施例中,访问约束组件220可以使用与查询210相关联的运行时信息来触发适用的数据访问约束的查找和强制执行(例如经由与图1的约束管理器115的通信)。例如,访问约束组件220可以针对包括适用的数据访问约束和与查询210相关联的运行时信息的对应约束上下文来验证查询210。通常,在数据消费者未被授权访问协作数据集、协作数据集内的目标协作数据(例如特定行的数据)、要被派生的特定类型的请求协作智能的场景中,访问约束组件220可以拒绝该请求。在这种情况下,访问约束组件220可以向发布数据消费者返回通知,以报告数据消费者所请求的查询被拒绝。如果所请求的访问被确定为被授权和/或符合适用的数据访问约束,则查询210可以被传递给查询解析器230。
59.通常,查询解析器230可以解析查询210,并生成对应的执行树235。在高级别上,执行树235包括分层布置的可执行逻辑单元,当被执行时,其实现查询210。可执行逻辑单元可以包括命令、操作、函数调用等的任何合适布置和组合。约束查询格式器240可以访问适用的约束(例如经由与图1的约束管理器115的通信),并且可以针对约束验证执行树235的可执行逻辑单元。在一些实施例中,如果一个或多个可执行逻辑单元不被允许,则查询210可以通过基于一个或多个约束添加、移除和/或更改一个或多个可执行逻辑单元来有效地重新格式化。
60.更具体地,通过遍历执行树235并且用与约束一致的自定义可执行逻辑单元替换与特定约束不一致的可执行逻辑单元,约束查询格式器240可以将执行树235重新格式化为约束执行树245。附加地或备选地,约束查询格式器240可以添加或移除一个或多个可执行逻辑单元,以对输出强制执行约束(例如精度约束)。通常,约束查询格式器240可以针对包
括适用约束和与查询210相关联的运行时信息的对应约束上下文来验证执行树235的可执行逻辑单元。该检查可以涉及组成命令或操作、一个或多个组成参数和/或执行树235的其他部分的考虑的验证,并且可能会导致许多可能的结果。例如,可执行逻辑单元可以被允许(例如可执行逻辑单元可以被复制到约束执行树245中),可执行逻辑单元可以被禁止(例如查询210可以被完全禁止),或者可执行逻辑单元可以被允许但有改变(例如将对应约束的可执行逻辑单元复制到约束执行树245中)。这些仅旨在作为示例,并且其他变化被设想在本公开内。
61.因此,约束查询格式器240可以针对约束评估每个可执行逻辑单元,添加或移除可执行逻辑单元,和/或用包含和/或应用约束的自定义可执行逻辑单元代替与约束不一致的一个或多个可执行逻辑单元。可执行逻辑单元与自定义可执行逻辑单元和/或对应于一个或多个约束(例如规则列表)的可执行逻辑单元可以以任何合适的方式(例如本地存储、经由与图1的约束管理器115的通信访问、其某种组合等)取回、访问和/或维护。映射可以是一对一、一对多或多对一。
62.在一些实施例中,接收到的查询可能与由目标协作数据集(例如图1的屏蔽协作数据集160)使用的查询语言不同。因此,翻译组件250可以将约束执行树245从第一查询语言翻译为第二查询语言。即,翻译组件可以将约束执行树245翻译为翻译后的约束执行树255。任何合适的查询语言可以被实现(例如sql、sparkql、kusto查询语言、c#linq)。在一些实施例中,约束执行树245和/或翻译后的约束执行树255可以被执行以测试失败,并且失败可能会导致拒绝特定执行、可执行逻辑单元集合、整个查询210等。
63.所得的执行树(例如约束执行树245和/或翻译后的约束执行树255,视情况而定)可以被传递给执行组件260以用于执行(例如对应执行计划的执行)。通常,该执行操作以从协作数据派生协作智能270。在一些实施例中,协作智能270被原样返回给请求数据消费者。在一些实施例中,一个或多个约束可以附加地或备选地在传输给请求数据消费者之前对协作智能270强制执行。
64.通过非限制性示例,假设根据特定租户协议,许多零售商已同意公开包括不应被公开的一些敏感客户信息的销售数据。在该示例中,租户协议指定了许多约束,包括每个聚合至少有20个唯一客户的要求,聚合必须跨越至少48小时,不能按用户id聚合,无法导出用户id并且将数值结果舍入到最接近的两个数字。进一步假设租户协议允许数据消费者派生由每个客户每周在每个商店中花费的平均金额。图3a图示了结构化查询语言(sql)的对应查询310的示例。该查询语言仅旨在作为示例,并且任何合适的查询结构可以被实现。
65.查询310可以被解析并转换为对应的执行树(例如由图2的查询解析器230)。图3b图示了与图3a的查询310相对应的示例执行树320的简化表示。通常,在查询执行树中,每个可执行逻辑单元接收来自前一可执行逻辑单元的数据和用于变换数据的一个或多个参数。当执行执行树320时,数据沿着执行树320的左侧分支从底部传递到顶部。随着数据的传递,每个可执行逻辑单元都会应用一个或多个关联的命令或操作。如由本领域的普通技术人员将了解的,执行树320包括分层布置的可执行逻辑单元,如果被执行,其将实现查询310。
66.为了考虑适用的约束,执行树320可以被转换为图4a的约束执行树410(例如由图2的约束查询格式器240)。图3b的执行树320和图4a的约束执行树410之间的差异用围绕不同元素绘制的框来图示。例如,约束执行树410包括实现上述约束的舍入操作415,其中数值结
果必须被舍入到最接近的两个数字。在另一示例中,约束执行树410包括实现上述约束的滤波操作425,其中聚合必须包括至少20个唯一客户的数据。约束执行树410的这种配置仅旨在作为示例,并且任何合适的配置可以被实现。出于图示的目的,图4b图示了对应于约束执行树410的对应查询420的示例。如要了解的,查询420包括查询310中不存在的附加元素,其用于强制执行上述示例约束。如将由本领域的普通技术人员了解的,约束执行树410可以通过沿着左侧分支从底部到顶部遍历和执行树的可执行逻辑单元的层次结构来执行。因此,约束执行树410可以被执行以派生协作智能,并且协作智能可以被返回给请求数据消费者。
67.示例流程图
68.参照图5至图10,图示了与协作智能的生成相关的各种方法的流程图被提供。这些方法可以使用本文描述的协作智能环境来执行。在实施例中,在由一个或多个处理器执行时,在其上实施有计算机可执行指令的一个或多个计算机存储介质可以使一个或多个处理器执行自主升级系统中的方法。
69.现在转到图5,图示了用于生成协作数据的方法500的流程图被提供。最初在框510中,基于多个租户之间的租户协议,来自由多个租户提供的多个输入数据集的数据被摄取,以生成多个摄取数据集。在框520中,多个摄取数据集基于租户协议来融合,以生成融合的联合数据。在框530中,至少一个约束计算基于租户协议对融合的联合数据执行,以生成派生的联合数据。在框540中,至少一个清洁计算基于租户协议对派生的联合数据执行,以生成协作数据。协作数据包括从输入数据集派生的被允许共享的可公开部分和从输入数据集派生的不被允许共享的限制部分。
70.现在转到图6,图示了用于生成协作数据的方法600的流程图被提供。最初在框610中,多个数据集基于至少一个指定计算或约束来融合,以生成融合的联合数据。在框620中,至少一个约束计算基于至少一个指定计算或约束来对融合的联合数据执行,以生成派生的联合数据。在框630中,至少一个清洁计算基于至少一个指定计算或约束来对派生的联合数据执行,以生成协作数据。协作数据包括从多个数据集派生的被允许共享的可公开部分和从多个数据集派生的不被允许共享的限制部分。在框640中,对协作数据的可公开部分的访问基于至少一个指定计算或约束来提供。
71.现在转到图7,图示了用于在数据受托人环境中为协作数据提供约束计算的方法700的流程图被提供。最初在框710中,请求被接收以获得权限来执行与在数据受托人环境中从由多个租户提供的多个输入数据集生成协作数据相关联的所请求的可执行逻辑单元。在框720中,响应于接收到请求,与协作数据相关联的至少一个约束被访问。在框730中,协作数据的生成通过基于至少一个约束解决请求来实现。协作数据包括被允许共享的可公开部分和不被允许共享的限制部分。数据受托人环境被配置为向多个租户提供对协作数据的可公开部分的访问,而不公开限制部分。
72.现在转到图8,图示了用于在数据受托人环境中提供对协作数据的约束访问的方法800的流程图被提供。最初在框810中,请求被接收以获得权限来执行与访问协作数据相关联的所请求的可执行逻辑单元。协作数据基于由多个租户提供的多个输入数据集。协作数据包括从多个输入数据集派生并被允许共享的可公开部分。协作数据包括从多个输入数据集派生并不被允许共享的限制部分。在框820中,响应于接收到请求,与协作数据相关联的至少一个约束被访问。在框830中,对协作数据的访问通过基于至少一个约束解决请求来
实现。
73.现在转到图9,图示了用于约束查询的方法900的流程图被提供。最初在框910中,从屏蔽协作数据生成协作智能的查询是从数据消费者接收的。屏蔽协作数据是从由多个租户提供的多个输入数据集生成的。屏蔽协作数据包括被允许共享的可公开部分和不被允许共享的限制部分。在框920中,获得权限来执行对应于查询的至少一个可执行逻辑单元的请求被发布。在框930中,基于在多个租户之间的租户协议中指定的一个或多个约束来解决请求的响应被接收。在框940中,协作智能基于查询和解决请求的响应从屏蔽协作数据生成。
74.现在转到图10,图示了用于约束查询的方法1000的流程图被提供。最初在框1010中,对存储在数据受托人环境中的屏蔽协作数据的查询是从数据消费者接收的。屏蔽协作数据是从由多个租户提供的多个输入数据集生成的。屏蔽协作数据包括从多个输入数据集派生并被允许共享的可公开部分和从多个输入数据集派生并不被允许共享的限制部分。在框1020中,查询被解析为执行树。在框1030中,约束执行树基于执行树和在多个租户之间的租户协议中指定的一个或多个约束来生成。在框1040中,协作智能基于约束执行树从屏蔽协作数据生成。
75.示例分布式计算环境
76.现在参照图11,图11图示了本公开的实现可以被采用的示例分布式计算环境1100。具体地,图11示出了示例云计算平台1110的高级架构,其可以托管协作智能环境或其一部分(例如数据受托人环境)。应该理解的是,本文描述的这种和其他布置仅作为示例陈述。进一步地,如上面描述的,本文描述的许多元件可以被实现为离散或分布式组件或者结合其他组件,并且以任何合适的组合和位置实现。除了所示的那些之外或代替所示的那些,其他布置和元件(例如机器、接口、功能、顺序和功能分组)可以被使用。
77.数据中心可以支持分布式计算环境1100,其包括云计算平台1110、机架1120和机架1120中的节点1130(例如计算设备、处理单元或刀片)。协作智能环境和/或数据受托人环境可以使用跨不同数据中心和地理区域运行云服务的云计算平台1110来实现。云计算平台1110可以实现用于供应和管理云服务的资源分配、部署、升级和管理的结构控制器1140组件。通常,云计算平台1110用于以分布式方式存储数据或运行服务应用。数据中心中的云计算基础设施1110可以被配置为托管和支持特定服务应用的端点的操作。云计算基础设施1110可以是公共云、私有云或专用云。
78.节点1130可以被供应有在节点1130上运行定义软件栈的主机1150(例如操作系统或运行时环境)。节点1130还可以被配置为在云计算平台1110内执行专门的功能性(例如计算节点或存储节点)。节点1130被分配以运行租户的服务应用的一个或多个部分。租户可以指使用云计算平台1110的资源的客户。支持特定租户的云计算平台1110的服务应用组件可以被称为租户基础设施或租约。术语服务应用、应用或服务在本文中可互换使用,并且泛指在数据中心之上运行或访问数据中心内的存储和计算设备位置的任何软件或软件部分。
79.当多于一个单独的服务应用由节点1130支持时,节点1130可以被分割为虚拟机(例如虚拟机1152和虚拟机1154)。物理机也可以并发地运行单独的服务应用。虚拟机或物理机可以被配置为由云计算平台1110中的资源1160(例如硬件资源和软件资源)支持的个性化计算环境。设想资源可以被配置用于具体的服务应用。进一步地,每个服务应用可以被划分为功能部分,使得每个功能部分能够在单独的虚拟机上运行。在云计算平台1110中,多
个服务器来可以被用于运行服务应用,并在集群中执行数据存储操作。具体地,服务器可以独立地执行数据操作,但公开为称为集群的单个设备。集群中的每个服务器都可以被实现为节点。
80.客户端设备1180可以被链接到云计算平台1110中的服务应用。例如,客户端设备1180可以是任何类型的计算设备,其可以对应于参照图11描述的计算设备1100。客户端设备1180可以被配置为向云计算平台1110发布命令。在实施例中,客户端设备1180可以通过虚拟互联网协议(ip)和负载平衡器或将通信请求定向到云计算平台1110中的指定端点的其他方式与服务应用通信。云计算平台1110的组件可以通过网络(未示出)彼此通信,该网络可以包括但不限于一个或多个局域网(lan)和/或广域网(wan)。
81.示例操作环境
82.已经简要地描述了本发明的实施例的概述,本发明的实施例可以被实现的示例操作环境在下面描述,以便为本发明的各个方面提供一般上下文。具体地,最初参照图12,用于实现本发明的实施例的示例操作环境被示出,并且通常被指定为计算设备1200。计算设备1200只是合适的计算环境的一个示例,并且不旨在暗示对本发明的用途或功能性的范围的任何限制。计算设备1200也不应被解释为具有与所图示的组件中的任何一个或组合相关的任何相关性或要求。
83.本发明可以在计算机代码或者机器可用指令的一般上下文中描述,包括计算机可执行指令,诸如由计算机或者其他机器(诸如个人数据助理或者其他手持式设备)执行的程序模块。通常,包括例程、程序、对象、组件、数据结构等的程序模块是指执行特定任务或者实现特定抽象数据类型的代码。本发明可以以各种系统配置实践,包括手持式设备、消费性电子产品、通用计算机、更专业的计算设备等。本发明还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。
84.参照图12,计算设备1200包括直接或间接地耦合以下设备的总线1210:存储器1212、一个或多个处理器1214、一个或多个呈现组件1216、输入/输出端口1218、输入/输出组件1220以及说明性电源1222。总线1210表示可以是一个或多个总线(诸如地址总线、数据总线或其组合)。为了概念清晰起见,图12的各种框用线示出,并且所描述的组件和/或组件功能性的其他布置也被设想在内。例如,可以将呈现组件(诸如显示设备)认为是i/o组件。而且,处理器具有存储器。我们认识到这是本领域的本质,并且重申图12的图仅说明了可以结合本发明的一个或多个实施例使用的示例计算设备。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等类别之间没有区别,因为所有这些都被设想在图12的范围内并且参照“计算设备”。
85.计算设备1200通常包括各种计算机可读介质。计算机可读介质可以是可以由计算设备1200访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。通过示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
86.计算机存储介质包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术实现的易失性和非易失性介质、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或者其他存储器技术、cd
‑
rom、数字通用盘(dvd)或者其他光盘存储装置、磁盒、磁带、磁盘存储装置或者其他磁性存储设备或者可以被用于存储期望信息并且可以由计算设备1200访问的任何其他介质。计算机存储介质本
身不包括信号。
87.通信介质通常以诸如载波或其他输送机制等调制数据信号来实施计算机可读指令、数据结构、程序模块或者其他数据,并且包括任何信息递送介质。术语“调制数据信号”表示其一个或多个特点以对信号中的信息进行编码的这种方式设置或改变的信号。通过示例而非限制,通信介质包括诸如有线网络或者直接有线连接等有线介质以及诸如声学、rf、红外和其他无线介质等无线介质。以上任何组合也应该被包括在计算机可读介质的范围内。
88.存储器1212包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的或其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备1200包括从各种实体(诸如存储器612或者i/o组件1220)读取数据的一个或多个处理器。(多个)呈现组件1216将数据指示呈现给用户或者其他设备。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等。
89.i/o端口1218允许计算设备1200被逻辑地耦合至包括i/o组件1220的其他设备,其中一些可以被内置。说明性组件包括麦克风、操纵杆、游戏板、卫星碟、扫描仪、打印机、无线设备等。
90.参照本文描述的协作智能环境,本文描述的实施例支持约束计算和/或约束查询。协作智能环境的组件可以是集成组件,包括支持协作智能系统内的约束计算和/或约束查询功能性的硬件架构和软件框架。硬件架构是指物理组件及其相互关系,并且软件框架是指提供可以用在设备上实施的硬件实现的功能性的软件。
91.端到端的基于软件的系统可以在系统组件内操作,以操作计算机硬件提供系统功能性。在低级别上,硬件处理器执行从机器语言(也称为机器代码或本机)指令集中针对给定处理器选择的指令。处理器识别本机指令,并执行对应的低级功能,例如与逻辑、控制和存储器操作相关。以机器代码编写的低级软件可以为更高级别的软件提供更复杂的功能性。如本文使用的,计算机可执行指令包括任何软件,包括以机器代码编写的低级软件、诸如应用软件等高级软件及其任何组合。在这方面,系统组件可以管理资源,并为系统功能性提供服务。任何其他变化及其组合是用本发明的实施例设想的。
92.通过示例,协作智能系统可以包括api库,该api库包括例程、数据结构、对象类和变量的规范,可以支持设备的硬件架构和协作智能系统的软件框架之间的交互。这些api包括协作智能系统的配置规范,使得其中的不同组件可以在本文描述的协作智能系统中彼此通信。
93.已经标识了本文使用的各种组件,应该理解的是,任何数量的组件和布置可以被采用以在本公开的范围内实现期望的功能性。例如,为了概念清晰起见,附图中描绘的实施例中的组件用线示出。这些和其他组件的其他布置也可以被实现。例如,虽然一些组件被描绘为单个组件,但本文描述的许多元件可以被实现为离散或分布式组件或与其他组件结合,并且以任何合适的组合和位置来实现。一些元件可以被完全省略。而且,本文描述的由一个或多个实体执行的各种功能可以由硬件、固件和/或软件执行,如下面描述的。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。因此,除了所示的那些之外或代替所示的那些,其他布置和元件(例如机器、接口、功能、顺序和功能分组)可以被使用。
94.在下面的段落中描述的实施例可以与一个或多个具体描述的替代方案组合。具体
地,要求保护的实施例可以包含替代方案中对多于一个其他实施例的参考。要求保护的实施例可以指定对要求保护的主题的进一步限制。
95.本发明的实施例的主题在本文中被具体描述以满足法定要求。然而,描述本身并不旨在限制本专利的范围。相反,本发明人已经设想过,要求保护的主题也可以以其他方式实施,以包括与本文中描述的步骤类似的不同步骤或步骤组合,结合其他现有技术或未来技术。而且,尽管术语“步骤”和/或“框”在本文中可以被用于表示所采用的方法的不同元件,但是这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非单个步骤的顺序被明确描述并且除此之外。
96.出于本公开的目的,词语“包括(including)”与词语“包括(comprising)”具有相同的广泛含义,并且词语“访问”包括“接收”、“参考”或“取回”。进一步地,词语“通信”与词语“接收”或“发送”具有相同的广泛含义,这些含义由使用本文描述的通信介质的基于软件或硬件的总线、接收器或发送器促进。另外,除非另有相反指示,否则诸如“一”和“一个”等词语包括复数以及单数。因此,例如当存在一个或多个特征时,“特征”的约束被满足。而且,术语“或者”包括连接词、转折连词和两者(a或b,因此包括a或b以及a和b)。
97.出于以上详细讨论的目的,本发明的实施例参照分布式计算环境描述;然而,本文描述的分布式计算环境仅仅是示例性的。组件可以被配置用于执行实施例的新颖方面,其中术语“被配置用于”可以指“被编程为”使用代码执行特定任务或实现特定抽象数据类型。进一步地,虽然本发明的实施例通常可以指协作智能环境和本文描述的示意图,但是要理解的是,所描述的技术可以被扩展到其他实现上下文。
98.本发明的实施例已经关于特定实施例进行了描述,其在所有方面中都旨在是说明性的而非限制性的。在不脱离其范围的情况下,替代实施例对于本发明所属领域的普通技术人员将变得显而易见。
99.通过前述内容将看到,本发明非常适用于实现上文陈述的所有目标和目的以及显而易见且结构固有的其他优点。
100.要理解的是,某些特征和子组合是实用的,并且可以在不参照其他特征或子组合的情况下采用。这由权利要求的范围设想并且在其范围内。