本系列文章描述了一个单一的语义数据模型,以支持物联网和建筑、企业和消费者数据的转换。该模型必须简单且可扩展,以实现跨行业领域的可插拔性和互操作性。对于一个目前从事智能硬件的老码农来说,我觉得这句话有积极的借鉴意义。本节讨论常见的数据格式和应用程序编程接口(API),以及如何利用这些常见的本体。当您第一次尝试解决问题时,您想到的第一个解决方案非常复杂,以至于大多数人都会停下来。但是如果你坚持下去,面对问题,剥掉更多的洋葱层,你通常会得到一些非常优雅和简单的解决方案。大多数人只是没有时间和精力去那里。———史蒂夫·乔布斯在对象世界中管理数据在新兴的数字世界中,数十亿人、系统和设备将实时交互,需要分布式数据管理、互操作性和基于规则的事件处理采用新方法来实现颠覆性创新。除了统一的本体之外,“物联网标准”和“业务标准”联盟还需要汇聚一个通用的数据交换格式和API模型,以支持广泛的跨行业领域用例之间的即插即用互操作性。可操作性。分布式数据管理和互操作性依赖于通用本体(语义)和通用数据格式(语法),使服务能够识别和解释连接系统之间交换的结构化数据。在本文中,“对象管理”是指在分布式环境中创建、存储、更新、访问和共享本体对象实例状态的机制。什么是服务?术语“服务”根据上下文具有不同的含义。因此,当人们试图区分应用程序服务、领域服务、基础设施服务、面向服务的体系结构(SOA)服务等时,围绕服务的概念存在一些混淆。在所有这些情况下,术语“服务”都是有效的,但有所不同并且可以跨越应用程序的所有层[15]。在领域驱动设计(DDD)中,一个“领域”服务是基于领域概念(本体类)的,非常细粒度(比如微服务),可以被认为是一个流程封装。“应用程序”服务为域服务提供了一个托管环境,并将域的功能作为API暴露给外部服务。应用服务基于通用信息模型的标识值和原始数据结构(在上层本体中)。模糊世界中的模型服务鉴于物联网中的海量数据和对实时通信流的需求,Gartner预测到2022年,75%的企业生成数据将在数据中心或云之外创建和处理。很明显,纯云方法无法再应对必要的容量、延迟、可靠性和安全挑战。分布式计算模型(例如雾计算)可以通过提供一种标准的通用方式来管理、管理和分发从云到物的必要资源和服务,从而使数字世界具有功能性和互操作性(图50)。图50语义互操作性和雾计算服务模型该模型可以“混合”流行的架构风格(例如DDD、模型驱动设计、事件溯源和命令查询责任分离CQRS)来定义可互操作的操作系统系统中的对象管理简单且可扩展应用服务。这些系统可以跨越物联网设备、商业、车辆和城市子系统。这些服务可以利用上层本体和信息模型(见第II节)来支持系统连接、统一数据交换、事件和查询处理、单元和标识符转换以及语义注释。为了扩展,这些服务必须稳定、不可变和独立,并且可以嵌入到从边缘控制器到云服务器的任何类型的机器中。该模型可以定义一组对象管理服务(类似于IETF的可扩展供应协议(EPP)),这些服务没有明确绑定到特定的对象,可以扩展到所有本体类中的对象。尽管对象管理类似于面向对象编程,但这种服务模型可以表示类似于模型驱动开发编程中的元数据抽象。这些服务可以创建元数据并在运行时解释该元数据。表示本体的元数据可以在完全从任何编程环境中抽象出来的存储库中维护。Mendix等低级代码即服务平台可以利用此服务模型在完全通过元数据解释执行的应用程序之间提供固有的互操作性。虽然服务和安全模型之间存在密切关系,但本系列的这一部分将重点关注与语义相关的服务,这些服务与任何特定的安全模型无关。有效载荷网格为了创造价值,物联网设备生成的数据越来越多地在时间序列中加上时间戳,并按时间间隔或在状态变化时传输。随着业务应用程序变得更加以物联网为中心并围绕事件驱动的架构构建,来自业务事件的数据也可以构建为时间序列。查询响应可能包括设备的当前状态和基于这些事件而改变的信息对象。时间序列和查询响应数据代表了大部分分布式数据交换,并且最有效地包含在网格(表)结构中。网格(类似于Haystack网格)可以作为分布式数据管理的核心数据格式,可以以适合特定通信协议的同步格式传输(图51)。例如,可以将网格编码为JSON数组(二维),以便通过HTTP消息进行传输。或者可以将其编码为紧凑型二进制对象识别(CBOR)阵列,以便通过CoAP进行传输。图51连接的系统在二维网格中交换序列化数据组织定义的数据交换服务支持的同步格式各不相同(图52)。最初主要为服务器实施设计的服务(GS1EDI和IETFEPP)支持XML,而那些针对资源受限设备的服务支持更多压缩编码格式(例如JSON和CBOR)。网格数据可以编码成这些格式中的任何一种。图52消息负载的数据序列化/编码格式应用服务的通用API网关通用API网关可以在控制器设备中实现,作为连接系统所有入站消息的单一入口点,通用API可以在控制器设备一种网关,充当连接系统的所有入站消息的单一入口点。网关可以对每条消息进行身份验证,并将反序列化的网格负载转发给应用程序服务,而应用程序服务又可以调用网关处理的其他服务来生成出站消息。通过将通用API作为所有控制器设备的前端,可以抽象出不同设备类型和微服务分区的复杂性。然后可以将该设备转换为服务(设备即服务)并由其他服务使用。根据网格数据的类型,网关可以调用单独的事件和查询处理服务(类似于CQRS架构),该服务可以更新和检索“事件存储”中持久保存的对象的状态(图53)。图53事件/查询职责分离以及与事件存储的交互时间序列事件存储自动驾驶Teslas、自主华尔街交易算法、智能家居和当日订单履行服务有哪些共同点?这些应用程序依赖于一种衡量事物随时间变化情况的数据形式,其中时间不仅是一个指标,而且是一个轴。这是时间序列数据。它开始在我们的世界中发挥更大的作用,远远超出了传感器数据流的范围。事实上,时间序列数据库(TSDB)已经成为增长最快的数据库类别之一,可以高效地建立索引、查询、共享和分析。当应用于“事件源”的概念时,TSDB可以被认为是一个“事件存储”,它将对象状态视为时间序列中的一系列状态变化事件。当一个对象的状态改变时,一个新的事件被附加到事件存储中,这在本质上是原子的。通过禁止更改或删除事件,事件存储可以提供对对象所做的所有更改的可靠审计日志。在图54中,事件存储反映了从9月18日的事件创建的Location对象(实例),该事件在9月18日02:15分配给新对象的所有参与方。该事件还为对象分配一个标识符和类,这是它的主键。这个键包含在所有通过给属性赋值来改变对象状态的后续事件中。location对象的当前状态可以从对象的每个属性***事件中导出。图54通过事件存储中的时间序列事件获取Location实例(对象)的当前状态事件可以通过为根对象类的“deleted”属性分配一个布尔值来删除(或删除)一个对象。通过这种方法,事件和事件处理可以高效地创建、更新和删除对象,从而取代单独的命令和命令处理(读取可以通过查询和查询处理来处理)。区块链或事件存储区块链和事件存储都是数据存储机制,可以提供分布式环境中对象状态变化的额外审计线索。虽然区块链最近大肆宣传,但事件存储/事件订阅方法可以提供区块链承诺的许多好处,而无需开销、社区建设和成为矿工的风险。区块链基于账本和交易的概念,非常适用于金融行业。然而,这些概念是否适合支持可互操作设备的系统?一种“混合”可扩展方法可以将事件存储中面向对象事件的粒度与区块链的防篡改验证相结合。事件处理服务表示时间序列事件的网格数据可以被构造成一种通用格式,使控制器设备上实现的所有事件消费应用程序和域服务能够进行高效处理。这种通用事件格式可以支持反映对象状态(属性值)变化的设备和业务事件。图55中的顶部网格显示了这种格式的人类可读值,但实际值可以反映底部网格中显示的机器可读标识符。图55使用事件处理服务从通用格式持久化时间序列事件通用API网关可以调用事件处理服务来处理入站时间序列事件,并可以将出站事件发布到连接控制器系统。事件处理程序可以根据所有系统进程(例如微服务)的规则来处理事件,这些事件可以发出新的事件(包括类似于OCFpost/response的确认事件)。事件处理程序可以将事件发布到事件存储以维护状态(类似于Haystack的写操作)。基于上层本体的数据映射可以被从稀缺资源接收传感器数据的事件处理程序引用。然后,事件处理器可以使用数据映射实例中包含的语义来注释从传感器接收到的语义,以以通用事件格式填充所有元数据(图56)。图56.使用事件处理服务和上层本体注释时间序列语义。此注释可能包括将特定于联盟的数据格式转换为通用事件格式(图57)。例如,温度传感器可以提交一个带分隔符的名称/值对集合,这些名称/值对除了值之外还提供语义。这些数据可以转换为只包含值端的网格,因为网格列定位对应于特定的数据元素。图57使用事件处理服务将不同的事件格式转换为通用格式事件处理器可以参考系统属性(图58),上层本体定义读写设置(类似于OCF的只读属性)。基于这些设置,事件处理程序可以监视(读取)和(写入)连接到控制器的组件设备(传感器、执行器)的运行状态。图58使用事件处理服务根据系统属性实例的读写设置获取/设置风扇转速例如,如果一个系统属性可以同时读取和写入风扇的速度属性,那么事件处理程序可以从fan中获取当前值(类似于OCFget),并根据时间序列事件设置其值(类似于OCFpost)。基于发布/订阅的系统连接事件存储可以充当“服务注册表”,存储定义系统连接和连接系统属性的事件。基于上层本体建模的系统连接可以表示实时数据订阅(类似于Haystack的“手表”)。当一个设备发起与另一个设备的系统连接(EPP会话)时,该设备可以响应其系统属性。设备可以在系统之间交换包含公共属性的事件和查询。这些属性表示系统进程的内部输入/输出。图59事件处理服务使用事件存储(注册表)将事件发布到具有共同属性的连接系统。例如,一个控制器的HVAC系统可以连接到另一个控制器的气流控制系统。两个系统都可以引用共同本体中定义的“风扇”设备的“速度”属性。HVAC系统中的进程(域微服务)可以生成时间序列事件,当触发事件(例如气温变化)发生时改变风扇速度。系统控制器的事件处理程序可以将此事件发布到气流控制系统控制器,后者调用其事件处理程序来更改所连接的风扇电机的速度。数字孪生的状态管理从设计到预测分析,“数字孪生”的使用越来越普遍。这个概念非常简单——基本上,孪生是指实际物理资产的动态软件模型(数字实例化)。该模型能够实时公开设备及其连接系统的内部工作并与之交互。数字孪生可以整合感官和上下文信息,使组织能够从资产信息中获益。最终结果是有可能创造更高的资产绩效并使制造商能够管理服务设备。由对象管理服务组成的通用服务模型可以通过支持状态更改的同步和发布来管理数字孪生的状态(类似于EclipseDitto)。查询处理服务网格数据可以表示查询请求和响应。查询请求可以被构造成一种通用格式,使应用程序服务能够在控制器设备上实现。一个通用API网关,可以调用查询处理服务来处理通用查询格式的入站查询请求(图60)。查询处理器可以从事件存储中检索满足查询条件的相关对象的当前状态,并将出站查询响应返回给请求服务。图60使用查询处理服务和通用查询格式从事件存储中检索对象状态查询处理器可以参考上层本体中的词汇术语(图61),为全球应用提供多国语言支持。通用查询格式可以包含一个元素,该元素指定查询响应中包含的数据的人类语言。例如,如果图61中显示的查询指定“西班牙语”语言,则响应网格中返回的楼层名称将以西班牙语而不是英语显示。图61使用查询处理服务和上层本体检索请求语言中的词汇项标识符转换服务应用程序服务可以引用上层本体中的属性和单元(图62)来转换时间序列事件标识符中包含的备选方案.图62使用应用程序服务和上层本体转换时间序列事件中的备用标识符例如,事件处理程序可以调用服务来转换由属性标识符限定的备用单元标识符(例如“degF”)。服务可以引用单元对象,它包含一个标识属性(“ISO代码”)和一个备用标识符(“degF”)。该服务将事件中单位标识符的值转换为单位对象的主要标识符(例如,0华氏度)。作为另一个示例,转换服务可以转换用于标识RFID传感器生成的时间序列事件中的“对象”和“值”元素的替代标识符。图63中的“值”元素包含符合GS1的EPCIS标准(例如“urn:epc:id:sgln”)的备用位置标识号(“0123456789012”)。翻译服务可以引用位置对象,该对象包含带有备用标识符(“012345...”)的标识属性(“GLN”)。该服务将事件中的“Value”元素转换为Location对象的主标识符(“3100Main...”)。图63将GS1EPCIS事件对齐并转换为通用事件格式GS1KeyUnitConversionService应用服务可以参考上层本体建模的计量单位,转换时间序列事件中包含的“单位”和“价值”元素。例如,事件处理程序可以通过引用关联单元格对象的“转换因子”和“偏移量”属性值,将图64中的温度值(“77.4”)从华氏度转换为摄氏度。图64.域微服务利用应用程序服务和上层本体来转换时间序列事件中的测量和单位域特定本体。虽然应用服务的目的是稳定不变的,但可以动态地实现领域微服务,高效地实现系统所有者(方)的目标。每个系统都可以包含一组微服务(流程和规则的封装),这些微服务引用特定领域本体(例如,医疗保健、零售、智能建筑等)中的属性。这些狭义的、协作的微服务可以根据规则消费时间序列事件,并从它们的操作中产生时间序列事件。事件处理程序可以协调域微服务的执行以进行复杂的事件处理。图65提供了一个域微服务的示例,它可以引用在特定域本体中建模的场景定义,以根据时间变化等触发事件更改位置的“场景”。图65使用领域服务和本体在OfficeSuite中更改“场景”另一个领域微服务可以引用在通用业务本体上建模的业务信息对象来生成事件,以根据触发事件的故障设备定义替换序列(图66).同一个控制器可以改变连接元素(图论)设备(如传感器和执行器)的状态,也可以用来改变信息对象(如订单)和连接的业务系统的状态。图66使用领域服务和公共业务本体从设备故障中生成替换序列公共服务模型和公共本体可以形成支持系统、对等系统语义互操作的“公共对象管理框架”。该框架可以分解数据仓库,消除复杂的系统集成,仅使用元数据统一信息空间。参考文献:15Vernon,Vaughn,ImplementingDomain-DrivenDesign,Addison-Wesley,201316Murdock,Paul,Davies,John,etal.,“SemanticInteroperabilityfortheWebofThings”,ResearchGate,Aug201617Hambley,Lee,“区块链orEventSourcing”,201718年7月Richardson,Chris,http://microservices.io19Byers,Charles.,Swanson,Robert,etal.,OpenFogReferenceArchitecture,OpenFogConsortium,2017年2月
