CN102402420A - 解析可观察集合 - Google Patents

解析可观察集合 Download PDF

Info

Publication number
CN102402420A
CN102402420A CN2011103217685A CN201110321768A CN102402420A CN 102402420 A CN102402420 A CN 102402420A CN 2011103217685 A CN2011103217685 A CN 2011103217685A CN 201110321768 A CN201110321768 A CN 201110321768A CN 102402420 A CN102402420 A CN 102402420A
Authority
CN
China
Prior art keywords
resolver
data
observing
combined
combined symbols
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011103217685A
Other languages
English (en)
Other versions
CN102402420B (zh
Inventor
H·J·M·梅杰
J·W·戴尔
D·J·P·莱延
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102402420A publication Critical patent/CN102402420A/zh
Application granted granted Critical
Publication of CN102402420B publication Critical patent/CN102402420B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)
  • Measuring And Recording Apparatus For Diagnosis (AREA)
  • Sampling And Sample Adjustment (AREA)
  • Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及解析可观察集合。解析技术被应用于可观察集合。更具体而言,诸如组合符解析器等解析器能被用来对一个或多个可观察集合执行句法分析。进而,多个可观察集合可被组合为单一集合且可通过注释集合项或生成时间项来捕捉时间。

Description

解析可观察集合
技术领域
本发明涉及解析技术,尤其涉及解析可观察集合。
背景技术
解析器使得程序能够识别与形式语法相匹配的模式。更具体而言,解析器能够以多个步骤对输入序列执行句法分析。首先,可对字符序列进行词法分析以尤其识别诸如关键词、运算符和标识符等权标。换言之,输入序列被预处理。例如,考虑包括空白的下述输入序列:“{,v,a,r,,x,,=,,x,,+,,1,;,}”。词法分析能够生成下述权标序列“{,”“var,”“x,”“=,”“x,”“+,”“1,”“;”“}”。接下来,这些权标可被用来根据编程语言语法产生解析树或更紧凑的抽象句法树(AST),该解析树或更紧凑的抽象句法树可被用于后续的分析、优化和代码生成。关于上述示例,“{var x=x+1;}”还能以分层格式表示。
解析常规上是一种基于拉取(pull-based)的运算。例如,解析器能够请求下一权标。响应之,执行词法分析的词法分析器(lexer)在输入序列上拉取以读取形成被提供回解析器的权标的接下来的一个或多个字符。随后,解析器请求下一权标而该过程继续。输入序列通常例如以串(string)或文件形式存在,而发现输入中的模式或结构的过程是基于拉取的。只要当消费过程需要知道更多时,它就请求下一值。例如,解析器请求下一权标,而词法分析器请求下一字符。
许多解析器是手写的,而其它解析器是自动生成的。例如,可提供语法,其中解析器从该语法生成。特别是,正则表达式可用来促进基于语法自动生成解析器,其中正则表达式提供例如在现有串或文件中寻找或匹配字符序列的精确手段。无论如何,解析器以及正则表达式是基于拉取的,从而输入的消费者控制数据获取。
而且,解析器和正则表达式引擎均能利用任意前瞻和/或回溯(负前瞻)来促进对输入的模式的识别。例如,就解析而言,前瞻指定在决定使用什么语法规则之前可使用的权标的最大数量。回溯指的是使用一个或多个之前获取的权标来标识适当的语法规则。在前瞻和回溯的情况下,这样的功能可以通过简单地在输入序列中将指针向前或向后移动,随后在指针标识的位置处从序列拉取输入来实现。
发明内容
下面呈现了简化的发明内容,以便提供对所公开主题的某些方面的基本概念。本发明内容不是广泛性的概观。它并不旨在标识关键/重要元素,也不旨在划定所要求保护主题的范围。其唯一目的是以简化形式呈现一些概念,作为稍后呈现的更具体实施例的序言。
简言之,本公开大体涉及解析可观察集合(observable collection)。尤其是,使用解析技术来促进关于可观察集合的模式识别。依照一个实施例,组合符解析器(combinator parser)可被生成并用于识别一个或多个可观察集合中的模式。而且,来自两个或更多个可观察集合的项可被添加到单一可观察集合以便于处理,并且通过用时间对可观察集合项进行注释或生成时间项可以捕捉时间。
为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护主题的范围之内。当结合附图阅读以下详细描述时,本发明的其它优点和新颖特征将变得显而易见。
附图说明
图1是数据处理系统的框图。
图2是代表性集合处理器组件的框图。
图3A描绘了项时间的第一表示。
图3B示出了项时间的第二表示。
图4是代表性识别器组件的框图。
图5描绘了对具有失败的事件的样本左因子提取(left factoring)。
图6是数据处理系统的框图。
图7是处理数据的方法的流程图。
图8是集合组合的方法的流程图。
图9是捕捉项时间的方法的流程图。
图10是捕捉项时间的方法的流程图。
图11是数据处理的方法的流程图。
图12是示出用于本公开各方面的合适操作环境的示意性框图。
具体实施方式
下面的细节大体针对解析可观察集合。传统上,解析器被用来对串、文件或其它基于拉取的或可枚举的集合进行操作。然而,解析器还可以用来对基于推送的数据(或换言之,诸如事件流等可观察集合)标识模式。在一个实施例中,可使用组合符解析器,组合符解析器是一种从原始的或较不复杂的解析器分段构造的解析器。换言之,可以使用解析器组合符,所述解析器组合符利用基本解析器来构建较复杂的解析器并利用复杂的解析器来构建更复杂的解析器。进而,多个可观察集合可被组合成单一可观察集合,并且可以用时间来注释可观察集合项或者可生成独立的时间项来便于解析。
传统的解析器技术可被改造成便于对基于推送的或可观察的集合使用。传统解析系统对基于拉取的或可枚举的集合常使用回溯和前瞻。然而,可观察的或基于推送的数据的异步性使得对输入的回溯或缓冲困难或不可能。而且,就还没有被提供的、基于推送的数据而言,解析器不能进行前瞻。尽管如此,如本文进一步描述的,在需要时可提供有限的回溯和前瞻功能以解析可观察集合。
现在参考附图更详细地描述本公开的各个方面,在全部附图中用相似的标记来指示相似或相应的元素。然而应该理解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护主题的精神和范围之内的所有修改、等效和替换的方案。
首先参考图1,示出了数据处理系统100。数据处理系统100包括可观察集合110,可观察集合110表示动态的数据集合,其中除了其他方面外,数据与在任意时间被推送到该数据的项相对应。如所示,一个或多个数据源120(数据源1-数据源M,其中M是大于或等于1的整数)可向可观察集合110提供项。换言之,数据源120相对于基于推送的运算模型进行操作,其中数据源120向消费者异步推送数据,而不是由消费者从数据源120拉取数据。
由于该集合的动态性,可观察集合110可被认为是或被表示为数据流。相应地,事件(或换言之,事件流)可以是一种类型的可观察集合110。例如,可观察集合110可以是在任意时间提供的股票价格流或天气数据流。当然,可观察集合110不限于事件。其它在传统上不被视为事件的、基于推送的集合可以是一种类型的可观察集合110,诸如但不限于异步运算的结果。
而且,在一个具体实施例中,可观察集合110可指代关于编程语言(诸如但不限于C#)的“IObserveable”接口等的数据集合,其提供一种用于基于推送的通知的通用机制,也被称为观察者设计模式。更具体而言,“IObservable”接口可暴露“IObserver”接口,其中“IObservable<T>”表示发送通知的类(提供者)而“IObserver<T>”表示接收通知的类(观察者)。这里“T”表示通知的类或类型。
数据处理系统100还包括集合处理器组件130,集合处理器组件130与可观察集合110通信地耦合并被配置成对可观察集合110执行某种动作。例如,集合处理器组件130可对可观察集合110执行某种预处理以便于由识别器组件140进一步处理。
识别器组件140与可观察集合110通信地耦合并被配置成分析该可观察集合并输出识别的模式、错误或其它消息。如后面将进一步描述的,识别器组件140可利用在此之前被保留用于处理串、文件或其它基于拉取的或可枚举的数据集合的解析器技术。
除其它事项之外,识别器组件140提供的函数功能还能允许较低抽象层次的基于推送的数据间的模式被发现并被用来创建较高抽象层次的模式等。例如,假定在鼠标事件的事件流中,期望通过寻找模式“mouseover(鼠标在...上),...,mousemove(鼠标移动),mouseout(鼠标离开)”来检测鼠标已被移动到某个控件上方。这种模式现在能被更高层次的抽象取代,诸如“鼠标在控件上方事件(mouse over control events)”。
转向图2,详细示出了代表性集合处理器组件130。如所示,集合处理器组件130包括组合器组件210和时间组件220。组合器组件210从两个或更多个可观察集合生成单一可观察集合而不丢失信息。特别是,组合器组件210能够为特定可观察集合生成新项,其中该新项是用项的类或类型注释的并包括由该项提供的相关联数据。然后这个新项可被添加到包括来自多个不同的可观察集合的项和相关联数据的单一可观察集合。
作为示例而非限制,事件流可提供股票价格事件,而组合器组件210可从股票价格事件生成新的事件以被添加到记录如下事实的流:该事件是股票价格并包括诸如实际股票和价格等数据。用这种方式,该事件可在单一流中区别于从其它流(诸如例如提供与天气相关的事件的流)提供的其它事件。更抽象而言,分别具有事件“A1”、“B1”和“C1”的三个事件流“A”、“B”和“C”可被组合成包括事件“A1”、“B1”和“C1”的单一流“D”。
时间组件220捕捉项时间。在任意时间推送到可观察集合的数据项,以及项所提供的数据的重要性,可以是时间相关的(例如,提供项的时间,项之间的时间段……)。时间组件220可以以各种方式捕捉与项的供应(provisioning)相关联的时间。
在一个实例中,一旦从源接收到项之后,事件被接收的时间可被记录并以某种方式添加到该事件。例如,可用时间戳注释项。结果是,因为项之间的时间很容易被计算,所以捕捉数据项间的持续时间变得无关。
暂时将注意力转移到图3A,时间由时间线300上的竖线或刻度表示且增量为1,并且项被示出为可观察集合310的一部分。从时间线300确定的时间可被映射到可观察集合310中的相应项。具体而言,第一项312可被注释有时间“5”而第二项314可被注释有时间“17”,其中第一项312和第二项314的发生之间的持续时间可被计算为这两个时间之间的差,即,“12”个刻度或其它时间单位。
在另一实施例中,时间组件220可将时间项注入到新的或现有的可观察集合(例如,时间流)中。例如,时间项可表示与其它项相关的某个重要时间。作为示例,某一模式可指定两个项是在一特定时间帧内获取的。更具体而言,如果项“M”在事件“B”的五分钟内出现,则某一模式可指定匹配。
图3B提供了这样的时间表示情形的图形表示。如所描绘的,有三个可观察集合“集合1”320、“集合2”330和“集合3”340。“集合1”320包括“M”项并包括第一“M”项322和第二“M”项324。“集合2”330包括一个“F”项332,而“集合3”340包括单一时间项342。这里,时间项每五分钟创建一次。给定指定“M”项在“F”项的五分钟内发生的模式,如果时间项“T”在“M”项和“F”项之间发生,则没有匹配,而如果在“M”项和“F”项之间没有时间项“T”发生,则有匹配。在图3B中,第一“M”项322和第一“F”项332之间没有匹配,因为时间项“T”342发生。然而,第二“M”项342和第一“F”项332之间有匹配,因为在这两个项之间没有时间项“T”。
注意,无论实现如何,图2的时间组件220可返回相同的结果。在第一实例中,时间戳之间的差可用来确定匹配。与之相对,可使用两个项之间的生成的时间项的发生。
参考图4,示出了代表性识别器组件140。如同前面提到的,识别器组件140可被用来识别或以其它方式标识可观察集合间的指定模式。依照一个实施例,识别器组件140可被实现成具有解析器组件410,解析器组件410在句法上分析项的发生以试图定位特定模式。替代地,正则表达式组件420可利用正则表达式来标识指定的模式。再进一步,解析器组件410和正则表达式组件420两者均可被使用,其中正则表达式组件420执行词法分析功能(lexing function)以生成权标并随之将权标提供给解析器组件410以供其使用。相应地,要领会,解析器组件410能够比正则表达式组件420检测更复杂的模式。
而且,解析器组件410和正则表达式组件420在性质上是可组合且可合成的。具体而言,解析器组件410可被具体化为组合符解析器,其中解析器组合符(在一些上下文中被称为运算符)被用来限定基本解析器,基本解析器又被用来构建更复杂的解析器,该更复杂的解析器能被用来构建愈加复杂的解析器。换言之,解析器能够从原始或较不复杂的解析器逐段构建。例如,考虑以下样本解析器组合符:
Figure BSA00000596034100061
Figure BSA00000596034100071
这里,原语是“原子(Atom)”和“空(Empty)”。“原子”指示在给定值“a”的情况下用于该值的解析器可被返回,而“空”表示如果没有输入则可以返回返回“1”的解析器。“序列(Sequence)”采用用于“a”的解析器和用于“b”的解析器并返回用于“a”和“b”的解析器。“选择(Choice)”采用用于“b”的解析器和用于“c”的解析器并返回用于“b”或“c”解析器。“星(Star)”采用用于“b”的解析器并返回用于表示为“b*”的另一“b”的解析器,这解决了递归问题。最后,“尝试(Try)”采用用于“b”的解析器并返回用于“b”的另一解析器以允许连续搜索“b”。就正则表达式实现而言,可使用类似的组合符。
而且,就正则表达式模式匹配而言,可生成确定性有限状态机,该状态机根据下一进入项而在各状态之间转换。然而,一般而言,期望重复识别同一模式。为了高效地完成这一动作,通过在下一进入值可开始一模式时开始一新的识别有限状态机(或预先计算有限状态机的并行合成),可使用Boyer-Moore串匹配算法的一种变型。然而,通过为每个合适的前缀“R”或模式“P”和每个字符“x∈∑”创建转换“R-->x-->S”,这可呈现有限字母表,其中“S”是模式“P”的最长的前缀,也是“Rx”的后缀。
对可观察集合工作的两个结果是不能像传统上对串、文件等所做的那样使用任意回溯和前瞻。更具体而言,因为数据的项是在任意时间发出的,所以不能够前瞻到尚未被提供的项。并且,回溯的量可能是无限的,因此不期望以传统方式缓冲项以允许回溯。
尽管如此,依照本发明的一个方面,在必要时可使用有限的前瞻和回溯。按照前瞻,通过对项的集合进行时移从而被评估的当前项不是最新的项,可以实现这一点。至于回溯,可以使用左因子提取。此处,如果例如解析器在不消费任何输入的情况下失败(而不是在某一值上获得成功),则另一解析器可以“退回”或查看未消费的输入。换言之,关于在不消费输入的情况下的失败,状态信息可得以维护。
暂时参考图5,事件流500被示出为具有多个事件。在510处在没有消费输入的情况下失败之后,未消费的事件520可被加到510处的失败之后发生的事件之前,从而在某个点那些事件可被分析和消费。失败的这种表示协助组合符解析器的逐段构造,同时还允许对多个结果的标识,例如在有歧义的情况下。总体上,不是允许传统的无限的或无约束的回溯,对诸如事件等项的记录或缓冲可被更精确地操纵(在何时开始和停止对未消费的项的缓冲方面)。
而且,应当领会,解析器组件410可以是一元体(monad),或更具体而言是一元体式组合符解析器,用于可观察集合,其中一元体是表示运算而不是数据的某一类型的抽象数据类型构造器。作为实际上的副作用,其它一元体可被映射到一元体式组合符解析器,诸如一元体综合(comprehension)或查询综合,所述综合为对任意数据集合的过滤、变换、联接、分组和聚集指定一元体式原语。因此,各种查询运算符(例如,Where,Select,Join,Take,Skip...)或利用查询运算符的查询表达式可被用来以比否则会需要的形式更容易理解且更常见的形式表达解析器。在一种具体实现中,解析器可用语言集成查询(LINQ)来指定,其中查询运算符可被用来指定主编程语言(例如,C#
Figure BSA00000596034100081
,VisualBasic
Figure BSA00000596034100082
...)内的查询表达式。
更具体而言,识别器组件140可实现LINQ序列运算符从而识别器组件140可用LINQ查询定义。对于解析器,一个重要的运算符可以是“choice(选择)”:
IParser<T>Choice<T>(thisIParser<T>left,IParser<T>right)(IParser<T>选择<T>(此IParser<T>左侧,IParser<T>右侧))
若第一项(左侧)不消费任何输入,则“choice”运算符对其第二选择(右侧)求值。解析器“p.SelectMany(p)”的顺序合成可跟踪“p”是否已消费了输入。
图6示出一种数据处理的系统600。发布者组件610和订阅者组件620被包括在内。依照发布者/订阅者模型,发布者组件610发布数据或事件,而订阅者组件620订阅发布,指示从发布者组件610接收数据或事件的希望。而且,此处,订阅者组件620可与服务组件630交互,服务组件630提供与过滤数据有关的功能。例如,服务组件630能生成诸如解析器和/或正则表达式等识别器组件140,识别器组件140可用来关于发布者组件610提供的基于推送的数据标识一个或多个模式。利用解析器或类似技术的能力能够使得标识比关于发布者/订阅者模型传统上可用的更具体和更相关的信息。例如,过滤传统上是很粗粒度的,诸如通过主题来过滤。然而,解析器能够进行粒度精细得多的过滤或模式识别。
依照一种实现,服务组件630可以是网络可访问服务,诸如web服务。而且,服务组件630能基于订阅者组件620提供的凭证来提供变化的功能,这可反映对不同特征的选择,例如作为与服务相关联的付费或非付费的结果。作为示例,除其它事项之外,还可针对要处理的事件的数量或要过滤掉的事件的数量的限制进行控制。此外,识别器组件140的复杂度更能被修改,而与有限回溯相关联的存储可被设定并调整到与特定凭证相对应的层次。换言之,服务可以任意或预定的层次被划分和分配。
已经关于若干组件之间的交互描述了上述系统、架构、环境等。应该理解,这样的系统和组件可以包括这些组件或其中指定的子组件,某些指定的组件或子组件,和/或附加的组件。子组件也可以被实现为在通信上被耦合到其它组件而不是被包括在父组件中的组件。此外,一个或多个组件和/或子组件可以被组合成提供聚集功能的单个组件。系统、组件、和/或子组件之间的通信可以根据推送(push)和/或拉取(pull)模型来实现。各组件也可以与一个或多个其它组件进行交互,出于简要考虑在此未具体描述这些其它组件,但本领域的技术人员均已知。
此外,应该理解以上所公开的系统及以下方法的各部分可以包括或包含人工智能、机器学习或基于知识或规则的组件、子组件、进程、手段、方法或机制(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类器……)。这样的组件和其它组件可以自动化其执行的某些机制或进程,由此使得系统和方法的各部分更为自适应以及高效和智能。作为示例而非限制,识别器组件140能被实现为具有这样的机制以能够对基于推送的数据进行模式的智能指定和标识。
考虑到以上描述的示例性系统,参考图7-11的流程图将可以更好地理解依照所公开的主题实现的方法。尽管为了说明简洁起见,作为一系列框示出和描述了方法,但是,应该理解,所要求保护的主题不仅限于所描述框的顺序,一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。此外,并非全部所示出的框都是实现下面所描述的方法所必需的。
参考图7,示出了数据处理的方法700。在附图标记710,例如从一个或多个事件流获取基于推送的数据。在标记720,可使用例如解析器和/或正则表达式分析数据。而且,在一种实现中,解析器能对应于从原始或较不复杂的解析器逐段构建的组合符解析器。再进一步,在标号720处的事件分析可采用最多有限的回溯和/或前瞻。例如,可利用左因子提取,从而如果解析器在不消费任何输入的情况下失败(而不是在一值上获得成功),则另一解析器能“退回”或查看未消费的输入。在附图标记730,可将作为该分析动作的结果而标识的任何模式标识或以其它方式输出到感兴趣实体。依照本发明的一个方面,可利用较低抽象层次的所发现的模式来创建较高抽象层次的可观察集合。例如,“mouseover(鼠标在...上),mousemove(鼠标移动),mouseout(鼠标离开)”可由“mousepassed(鼠标通过)”取代。
图8是集合组合的方法的流程图800。在附图标记810,可获取两个或更多个可观察数据集合。在标号820,可从两个或更多个集合生成单一集合,其中所述两个或更多个集合包括具有类型和数据的项。换言之,有关项的类型或种类的信息可被添加到项(包括项数据)以使得来自两个或更多个集合的项能在单一可观察集合中彼此区分。用这种方式,分析来自跨多个集合的项的问题可被简化为分析单一可观察集合中的项。换言之,多个集合或流变得与分析项无关。
图9描绘了捕捉项时间的方法900。在附图标记910,例如从基于推送的数据源可获取基于推送的项。在920,确定项被接收的时间。在附图标记930,可用所确定的时间注释或以其它方式标记获取的项。换言之,方法900可对项添加时间戳。用这种方式,持续时间变得无关,因为可以按照时间戳之间的差很容易地将其计算出来。
图10示出了捕捉项时间的方法1000。在附图标记1010,时间可被确定。在本实例中,可以以一个或多个预定间隔确定时间,预定间隔可与一个或多个基于推送的项相关。在标记1020,可在所确定的时间将时间项添加到可观察集合。换言之,时间项被添加到可观察集合以反映持续时间的流逝(例如,5分钟)。
作为示例而非限制,在事件的上下文中,如果某一模式指定第一事件在第二事件的五分钟内发生,则可每五分钟将一时间事件插入流。为了确定是否存在匹配模式,分析可确定在第一和第二事件之间是否发生一时间事件。如果在两个事件之间存在时间事件,则没有匹配,因为已经过去了超过5分钟。然而,如果时间事件不存在,则存在匹配,因为在第一和第二事件的发生之间过去了5分钟或小于5分钟。
图11是数据处理的方法的流程图1100。在附图标记1110,接收、检索或以其它方式获得或获取与所需信息有关的信息。例如,可接收查询,该查询声明性地指定信息或兴趣。在附图标记1120,可从在1110接收的信息生成模式识别器。在一个实施例中,模式识别器可对应于组合符解析器,附加的或替代地,正则表达式可指定要匹配的模式。在附图标记1130,在1120生成的模式识别器可被用来相对于诸如事件流等可观察集合识别所需的信息。而且,应当领会,生成的识别器的复杂度和使用的方式(例如,处理的事件、过滤的事件、利用的存储……)可被调整以使得功能能被控制并潜在地货币化(例如,购买对某些或全部功能的权利)。
所公开的主题的各方面与至少表面上看上去类似的一些传统技术——即对XML(可扩展标记语言)的基于推送和基于拉取的解析以及复杂的事件处理、流和数据库上下文中的连续查询——不同。
XML的基于推送和基于拉取的解析指的是解析器与其消费者通信的方式。更具体而言,流式拉取解析指的是一种编程模型,在该编程模型中客户机应用在需要与XML信息集(将XML文档表示为一组信息项的抽象数据模型)交互时对XML解析库调用方法。即,客户机只在显式请求XML数据时取得(拉取)XML数据。另一方面,流式推送解析是指一种编程模型,在该编程模型中,当XML解析器遇到XML信息集中的元素时,XML解析器将XML数据发送(推送)至客户机。即,无论那时候客户机是否准备好使用数据,解析器均发送数据。本公开涉及识别可观察集合中的模式的机制,而不是对涉及枚举集合(例如,存储器内集合)的模式的传统解析和识别。
复杂事件处理(CEP)、流以及连续查询在数据库社区中很常见。那里的模型是对表(tables)进行查询的模型,其中新的行被不断地添加到该表中以及从该表中除去。然而,查询通常是对表而不是直接对事件流进行的。
与传统解析和正则表达式匹配相比,可观察集合面临的一个问题是:异步性使得回溯或缓冲输入困难或不可能。而且,因为可观察集合是基于推送的,前瞻输入是不实际的,而前瞻输入对于传统识别器是很常见的。相应地,需要在有有限回溯或前瞻或没有回溯或前瞻的情况下识别模式。
此处使用的术语“组件”和“系统”及其各种形式旨在表示与计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于是,在处理器上运行的进程、处理器、对象、实例、可执行程序、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多的计算机之间。
在本文中使用的词语“示例性”或其各种形式意味着用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,各示例只是出于清楚和理解的目的来提供的并且并不意味着以任何方式限制或约束所要求保护主题或本发明的相关部分。可以理解,本来可呈现不同范围的多个附加或替换示例,但出于简明的目的已被省略。
如此处所使用,术语“推论”或“推断”通常指的是从经由事件和/或数据捕捉的一组观察结果来推理或推断系统、环境、和/或用户的状态的过程。可以使用推断来标识特定上下文或动作,也可以生成例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑,运算在感兴趣状态上的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或动作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。可采用各种分类方案和/或系统(例如,支持向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎……)来执行关于所要求保护主题的自动化和/或推断的动作。
而且,对于在详细描述或权利要求书中使用术语“包括”、“包含”、“具有”、“含有”或其它形式的变型而言,这样的术语旨在以类似于术语“包括”的方式体现包含性,如同“包括”在用作权利要求书中的过渡词时所解释的那样。
为了为所要求保护主题提供上下文,图12以及以下讨论旨在提供对其中可以实现本主题的各方面的合适环境的简要、概括描述。然而,合适的环境只是示例并且并非旨在对使用范围或功能提出任何限制。
尽管能够在可以在一台或多台计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是,本领域的技术人员将认识到,各方面也可以与其它程序模块等相结合地实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件和数据结构等。此外,本领域技术人员可以理解,上述系统和方法可用各种计算机系统配置实现,包括单处理器、多处理器或多核处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表……)、基于微处理器或可编程消费者或工业电子设备等。各方面也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,所要求保护主题的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中的一个或两者中。
参考图12,示出了示例性通用计算机1210或计算设备(例如,台式机、膝上型计算机、服务器、手持式设备、可编程消费或工业电子产品、机顶盒、游戏系统……)。计算机1210包括一个或多个处理器1220、系统存储器1230、系统总线1240、大容量存储1250、以及一个或多个接口组件1270。系统总线1240与至少上述系统组件通信地耦合。然而,可以理解,在其最简单的形式中,计算机1210可包括耦合到系统存储器1230的一个或多个处理器1220,该一个或多个处理器执行各种计算机可执行动作、指令和/或组件。
处理器1220可以用通用处理器、数字信号处理器(DSP)、应用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或被设计为执行此处描述的功能的其任意组合来实现。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何处理器、控制器、微控制器、或状态机。处理器1220还可被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、结合一个DSP核的一个或多个微处理器、或任何其它这种配置。
计算机1210可包括各种计算机可读介质或以其它方式与各种计算机可读介质交互以便于控制计算机1210来实现所要求保护主题的一个或多个方面。计算机可读介质可以是能由计算机1210访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如,硬盘、软盘、磁带盒、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、以及固态设备(例如,固态驱动器(SSD)、闪存驱动器(例如,卡、棒、键驱动器……)……)、或者可用于存储所需信息并且可由计算机1210访问的任何其它介质。
通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其它无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。
系统存储器1230和大容量存储1250都是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,系统存储器1230可以是易失性的(例如RAM)、非易失性的(例如ROM、闪存……)或是两者的某种组合。作为示例,基本输入/输出系统(BIOS),包括诸如在启动期间在计算机1210内的元件之间传输信息的基本例程,可被存储在非易失性存储器中,而易失性存储器可担当外部高速缓存存储器以便于处理器1220的处理等。
大容量存储1250包括相对于系统存储器1230来说用于存储大量数据的可移动/不可移动、易失性/非易失性计算机存储介质。例如,大容量存储1250包括但不限于,诸如磁盘或光盘驱动器、软盘驱动器、闪存存储器、固态驱动器、或记忆棒的一个或多个设备。
系统存储器1230和大容量存储1250可包括或其中存储有操作系统1260、一个或多个应用1262、一个或多个程序模块1264和数据1266。操作系统1260用于控制和分配计算机1210的资源。应用1262包括系统和应用软件中的一个或两者,并且可通过存储在系统存储器1230和/或大容量存储1250中的程序模块1264和数据1266来利用操作系统1260对资源的管理以执行一个或多个动作。因此,应用1262可根据由此提供的逻辑来将通用计算机1210变成专用机器。
所要求保护主题的全部或各部分可以使用产生控制计算机以实现所公开功能的软件、固件、硬件或其任意组合的标准编程和/或工程技术来实现。作为示例而非限制,集合处理器组件130和识别器组件140可以是应用1262或形成应用1262的一部分,并且包括存储在存储器和/或大容量存储1250中的一个或多个模块1264和数据1266,其功能可以在由所示的一个或多个处理器1220执行时实现。
计算机1210还包括通信地耦合到系统总线1240并方便与计算机1210的交互的一个或多个接口组件1270。作为示例,接口组件1270可以是端口(例如,串行、并行、PCMCIA、USB、火线……)或接口卡(例如,声音、视频……)等等。在一个示例实现中,接口组件1270可被具体化为用户输入/输出接口,该用户输入/输出接口使得用户能够通过一个或多个输入设备(例如,诸如鼠标的指向设备、跟踪球、指示笔、触摸垫、键盘、话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪、相机、其它计算机……)来将命令和信息输入到计算机1210中。在另一示例实现中,接口组件1270可被具体化为输出外围接口,该输出外围接口向显示器(例如,CRT、LCD、等离子……)、扬声器、打印机和/或其它计算机等提供输出。此外,接口组件1270可被具体化为网络接口,该网络接口使得能够诸如通过有线或无线通信链路与其它计算设备(未示出)通信。
以上所已经描述的内容包括所要求保护主题的各方面的示例。当然,出于描绘所要求保护主题的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,所要求保护主题的许多进一步的组合和排列都是可能的。从而,所公开的主题旨在涵盖落入所附权利要求书的精神和范围内的所有这样的变更、修改和变化。

Claims (10)

1.一种处理可观察集合的方法,包括:
利用被配置成执行存储在存储器中的计算机可执行指令的至少一个处理器来执行以下动作:
用组合符解析器对一个或多个可观察集合执行句法分析。
2.如权利要求1所述的方法,其特征在于,还包括将多个可观察集合组合为单一可观察集合,其中所述单一可观察集合的项包括项类型和数据。
3.如权利要求1所述的方法,其特征在于,还包括根据查询表达式来生成所述组合符解析器。
4.如权利要求1所述的方法,其特征在于,执行句法分析而不回溯。
5.如权利要求1所述的方法,其特征在于,维护与在不消费所述一个或多个可观察集合的项的情况下的解析器失败相对应的状态信息。
6.一种数据处理系统,包括:
耦合到存储器的处理器,所述处理器被配置成执行以下存储在所述存储器中的计算机可执行组件:
被配置成发现关于一个或多个可观察集合的模式的组合符解析器组件。
7.如权利要求6所述的系统,其特征在于,还包括被配置成将来自所述一个或多个可观察集合中的两个或更多个可观察集合的项组合为单一可观察集合的第二组件。
8.如权利要求6所述的系统,其特征在于,所述组合符解析器是至少部分基于查询表达式生成的。
9.如权利要求6所述的系统,其特征在于,所述组合符解析器被配置成标识模式而不回溯。
10.如权利要求6所述的系统,其特征在于,所述组合符解析器被配置成维护与在不消费输入的情况下的解析器组合符失败相对应的状态。
CN201110321768.5A 2010-10-14 2011-10-10 解析可观察集合 Expired - Fee Related CN102402420B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/904,831 US20120095750A1 (en) 2010-10-14 2010-10-14 Parsing observable collections
US12/904,831 2010-10-14

Publications (2)

Publication Number Publication Date
CN102402420A true CN102402420A (zh) 2012-04-04
CN102402420B CN102402420B (zh) 2015-08-26

Family

ID=45884657

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110321768.5A Expired - Fee Related CN102402420B (zh) 2010-10-14 2011-10-10 解析可观察集合

Country Status (4)

Country Link
US (1) US20120095750A1 (zh)
EP (1) EP2628096A4 (zh)
CN (1) CN102402420B (zh)
WO (1) WO2012050797A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021082832A1 (zh) * 2019-11-01 2021-05-06 华为技术有限公司 用于订阅事件流的方法和装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806451B2 (en) * 2011-06-16 2014-08-12 Microsoft Corporation Monad based cloud computing
CN105068925B (zh) * 2015-07-29 2017-09-01 北京理工大学 软件安全缺陷发现系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301124A1 (en) * 2007-05-29 2008-12-04 Bea Systems, Inc. Event processing query language including retain clause
CN101329665A (zh) * 2007-06-18 2008-12-24 国际商业机器公司 解析标记语言文档的方法和解析器
CN101494050A (zh) * 2008-01-22 2009-07-29 台达电子工业股份有限公司 语音辨识装置及其方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2004856A1 (en) 1988-12-21 1990-06-21 Fred B. Wade System for automatic generation of message parser
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
US7058567B2 (en) * 2001-10-10 2006-06-06 Xerox Corporation Natural language parser
US7089541B2 (en) * 2001-11-30 2006-08-08 Sun Microsystems, Inc. Modular parser architecture with mini parsers
US7653636B2 (en) * 2003-02-28 2010-01-26 Bea Systems, Inc. Systems and methods for streaming XPath query
US7364086B2 (en) * 2003-06-16 2008-04-29 Ewinwin, Inc. Dynamic discount card tied to price curves and group discounts
US7509677B2 (en) * 2004-05-04 2009-03-24 Arcsight, Inc. Pattern discovery in a network security system
US9098476B2 (en) * 2004-06-29 2015-08-04 Microsoft Technology Licensing, Llc Method and system for mapping between structured subjects and observers
US8739022B2 (en) * 2007-09-27 2014-05-27 The Research Foundation For The State University Of New York Parallel approach to XML parsing
US8521512B2 (en) * 2008-04-30 2013-08-27 Deep Sky Concepts, Inc Systems and methods for natural language communication with a computer
US20100131556A1 (en) * 2008-11-25 2010-05-27 Microsoft Corporation Unified event programming and queries
US20110107392A1 (en) * 2009-11-05 2011-05-05 Microsoft Corporation Management of observable collections of values
US20110191784A1 (en) * 2010-02-02 2011-08-04 Microsoft Corporation Processing observable events using join patterns
US9015667B2 (en) * 2010-10-06 2015-04-21 Microsoft Technology Licensing, Llc Fuzz testing of asynchronous program code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301124A1 (en) * 2007-05-29 2008-12-04 Bea Systems, Inc. Event processing query language including retain clause
CN101329665A (zh) * 2007-06-18 2008-12-24 国际商业机器公司 解析标记语言文档的方法和解析器
CN101494050A (zh) * 2008-01-22 2009-07-29 台达电子工业股份有限公司 语音辨识装置及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GRAHAM HUTTON等: "Monadic Parser Combinators", 《UNIVERSITY OF NOTTINGHAM TECHNICAL REPORT》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021082832A1 (zh) * 2019-11-01 2021-05-06 华为技术有限公司 用于订阅事件流的方法和装置
CN112787970A (zh) * 2019-11-01 2021-05-11 华为技术有限公司 用于订阅事件流的方法和装置
US11863368B2 (en) 2019-11-01 2024-01-02 Huawei Technologies Co., Ltd. Method and apparatus for subscribing to event streams
CN112787970B (zh) * 2019-11-01 2024-04-16 华为技术有限公司 用于订阅事件流的方法和装置

Also Published As

Publication number Publication date
CN102402420B (zh) 2015-08-26
WO2012050797A3 (en) 2012-06-14
EP2628096A2 (en) 2013-08-21
WO2012050797A2 (en) 2012-04-19
US20120095750A1 (en) 2012-04-19
EP2628096A4 (en) 2014-11-26

Similar Documents

Publication Publication Date Title
US11526338B2 (en) System and method for inferencing of data transformations through pattern decomposition
CN109684352B (zh) 数据分析系统、方法、存储介质及电子设备
Chen et al. A survey on the use of topic models when mining software repositories
CN100587693C (zh) 从多个数据源获取数据的方法及系统
US9317567B1 (en) System and method of computational social network development environment for human intelligence
CN102541992A (zh) 用于高效地查询数据库的同态定理
CN102708121A (zh) 异构源上的动态分布式查询执行
CN102339316A (zh) 使用基于类型的状态机的查询约束编码
CN102508852A (zh) 数据模型对偶化
CN103020150A (zh) 多维分组运算符
US11055631B2 (en) Automated meta parameter search for invariant based anomaly detectors in log analytics
CN102402420B (zh) 解析可观察集合
Kasemsap Mastering big data in the digital age
Bailis et al. Macrobase: Analytic monitoring for the internet of things
WO2021055868A1 (en) Associating user-provided content items to interest nodes
Cramer et al. Detecting Anomalies in Device Event Data in the IoT.
CN107391613B (zh) 一种工业安全主题多文档自动消歧方法及装置
US8713015B2 (en) Expressive grouping for language integrated queries
Espinosa-Oviedo et al. Comparing electoral campaigns by analysing online data
Manu et al. A current trends in big data landscape
Jiang et al. Gvos: a general system for near-duplicate video-related applications on storm
AlShaer et al. Prolod: An efficient framework for processing logistics data
CN102541636A (zh) 反应性的重合
Nama et al. Issues and Challenges in Mining Large Data Sets
CN112989084A (zh) 一种基于特征值的社会行为分析方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150723

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150723

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150826

Termination date: 20191010