基于轻量级事件检测的RFID数据清洗方法技术

技术编号:25598743 阅读:43 留言:0更新日期:2020-09-11 23:56
本发明专利技术公开了一种基于轻量级事件检测的RFID数据清洗方法,该方法通过将应用场景中RFID标签的行进路径形式化定义为一些轻量级的事件,构建一个包含正常读写路径、重复读写路径、漏读标签路径的规则库,在RFID应用系统中间件层进行实时数据清洗。本发明专利技术全面考虑RFID应用场景阅读器的部署实施问题,不需要从硬件层面进行过多的阅读器位置设置,数据清洗规则可以根据应用场景添加、删除和修改,规则的定义可以使用任何事件描述语言。数据清洗的过程位于应用的中间件层,属于轻量级操作,不会给系统性能带来太大的影响,对原始数据流的处理更符合上下文环境,数据清洗结果更为准确可靠。

【技术实现步骤摘要】
基于轻量级事件检测的RFID数据清洗方法
本专利技术属于RFID数据清洗领域,尤其涉及一种基于轻量级事件检测的RFID数据清洗方法。
技术介绍
利用射频识别技术(RFID)进行对象识别及跟踪是物联网应用中最流行的技术方案。不同的应用场景采用不同型号的RFID标签和中间件进行数据传输和数据管理。由于应用场景的限制,RFID部署实施过程中会产生RFID标签的重复读写、误读及漏读等不确定信息,缺乏及时有效的前端RFID数据清洗导致后台业务系统效率低下。在RFID应用前端进行数据清洗的算法一类为采用概率模型填补某个时间区间漏读RFID数据,但该方法计算量较大;另一类为采用RFID阅读器交叉覆盖的方式进行验证,该方法应用部署成本较高,对重复读,交叉读还需要依赖后台中间件,伸缩性不佳。现有RFID数据清洗算法缺少有效的上下文环境信息、没有利用标签运动路径信息进行交叉验证、且不易实施部署,在RFID应用前端发展一种易于部署且低成本的RFID数据清洗算法非常必要。
技术实现思路
本专利技术的目的在于针对现有技术的不足,提供一种基于轻量级事件检测的RFID数据清洗方法。本专利技术的目的是通过以下技术来实现的:一种基于轻量级事件检测的RFID数据清洗方法,包括以下步骤:S1.根据RFID应用场景,定义RFID数据清洗规则,在中间件层读入RFID数据清洗事件定义,初始化数据清洗规则库,生成各规则对应的状态机及堆栈数据结构;S2.从RFID数据流上读取一个数据ei,分别送入重复读清洗规则线程、交叉读清洗规则线程、漏读清洗规则线程;所述重复读清洗规则线程为:在滑动窗口内,从RFID数据流中读取的每个类型为A的数据,如果读取次数超过2次,则为重复读;只保留第一次读到的数据和最后一次读写到的数据,其余的重复数据被清洗掉;所述交叉读清洗规则线程为:在应用场景中,RFID读写器C和D不存在交叉读,判断读写器A和B之间是否存在交叉读;在滑动窗口内,如果从RFID数据流检测到序列事件A和C或序列事件A和D,则在读写器B读到的RFID数据为交叉读,对交叉读数据进行清洗;如果从RFID数据流检测到序列事件B和C或序列事件B和C,则在读写器A读到的RFID数据为交叉读;对交叉读数据进行清洗;所述漏读清洗规则线程为:RFID标签行进的路径为从读写器A到读写器B再到读写器C,判断RFID读写器B是否存在漏读;在滑动窗口内,如果从RFID数据流检测到序列事件A和C且B不发生,则读写器B存在漏读;将读写器B漏读的数据插入到数据流中,插入数据的时间戳根据RFID标签在读写器A和读写器C及路径的长度进行设置。进一步地,所述重复读清洗规则线程包括以下子步骤:(1.1)在当前滑动窗口内,读取一个A类RFID数据,与堆栈A1中已有的A类型事件比较OID:如果OID相同,但该A类RFID数据的时间戳大于已有的A类型事件,则将该A类事件放入A2堆栈;如果无OID相同的A类事件,则将当前的A类事件压入堆栈A1;(1.2)读取下一个A类RFID数据,重复步骤(1.1)中的操作,并判断堆栈A2中是否存在与该A类RFID数据OID相同的数据且该A类RFID数据时间戳小于A2中对应的当前数据的记录,如果存在,用当前数据更新A2中对应的数据;(1.3)在滑动窗口结束时,按A2的指针输出最先进入及最后离开读写器A的RFID数据;(1.4)滑动窗口前移一个单位。进一步地,所述交叉读清洗规则线程包括以下子步骤:(2.1)初始化各事件类型对应的堆栈,读取一个RFID数据,如果是类型A,则放入A堆栈,如果是类型B,则放入B堆栈;(2.2)读取一个类型为C的事件,通过OID查询A堆栈是否存在相同的记录,如果存在则进行关联,同时以该OID查询堆栈B,如果存在则可判断堆栈B中的数据为交叉读数据,删除堆栈B中数据,将堆栈A和C中的数据释放到数据流;如果堆栈B中不存在OID相同的记录,则未出现交叉读,将堆栈A和C中的数据释放到数据流;(2.3)读取一个类型为D的事件,通过OID查询B堆栈是否存在相同的记录,如果存在则进行关联,同时以该OID查询堆栈A,如果存在则可判断堆栈A中的数据为交叉读数据,删除堆栈A中数据,将堆栈B和D中的数据释放到数据流;如果A中不存在OID相同的记录,则未出现交叉读,将堆栈B和D中的数据释放到数据流;(2.4)滑动窗口结束时,清空各堆栈数据,释放RFID数据流,滑动窗口前移一个单位。进一步地,所述漏读清洗规则线程包括以下子步骤:(3.1)读取数据流中A类型的事件,置入堆栈A;(3.2)读取堆栈B中的B类型事件,通过OID与堆栈A的事件进行比较,如果存在相同OID的数据,则将该B类型事件关联到A类型事件上;(3.3)读取一个C类型事件,通过OID与堆栈A的事件进行比较,如果存在相同OID的数据,且该A类事件没有关联B类型的事件,为漏读;用事件A的时间戳加上对象从读写器A到达读写器B的平均时间计算B类型事件的时间戳为:B的时间戳=A的时间戳+A读写器到B读写器的平均时间根据B类型事件的时间戳和该A类事件的OID构建漏读的B类型的RFID数据,然后将B类型的RFID数据插入到数据流;(3.4)滑动窗口结束时,清空各堆栈数据,释放RFID数据流,滑动窗口前移一个单位。本专利技术的有益效果是:本专利技术通过将应用场景中RFID标签的行进路径形式化定义为一些轻量级的事件,构建一个包含正常读写路径、重复读写路径、漏读标签路径的规则库,在RFID应用系统中间件层进行实时数据清洗。本专利技术全面考虑RFID应用场景阅读器的部署实施问题,不需要从硬件层面进行过多的阅读器位置设置,数据清洗规则可以根据应用场景添加、删除和修改,规则的定义可以使用任何事件描述语言。数据清洗的过程位于应用的中间件层,属于轻量级操作,不会给系统性能带来太大的影响,对原始数据流的处理更符合上下文环境,数据清洗结果更为准确可靠。附图说明图1为基于自动机模型的RFID数据流去重示意图;图2为基于自动机模型的RFID数据流去交叉读示意图;图3为基于自动机模型的RFID数据流补充漏读示意图。具体实施方式事件检测(EventProcessing)是一种实时的数据分析技术,已在物联网、工作流等领域得到广泛的应用。RFID事件检测指将简单事件或复杂事件的RFID事件通过关联的方式组合成语义更加复杂事件的过程。RFID简单事件是指一次RIFD标签被读写器读到的动作,是不可再分割的事件(原子事件),用三元组(RID,OID,timestamp)表示,其中RID是RFID读写器标识(事件类型标识),OID是对象标识,timestamp为读写器读写标签的时间。在RFID数据流中原始事件用小写字母ei表示,事件类型(即RFID阅读器标识)用大写字母A,B和C等表示。事件检测算子包括AND与算子,OR或算子,NOT非算子,SEQ序列算子(事件按先后顺序本文档来自技高网...

【技术保护点】
1.一种基于轻量级事件检测的RFID数据清洗方法,其特征在于,包括以下步骤:/nS1.根据RFID应用场景,定义RFID数据清洗规则,在中间件层读入RFID数据清洗事件定义,初始化数据清洗规则库,生成各规则对应的状态机及堆栈数据结构。/nS2.从RFID数据流上读取一个数据e

【技术特征摘要】
1.一种基于轻量级事件检测的RFID数据清洗方法,其特征在于,包括以下步骤:
S1.根据RFID应用场景,定义RFID数据清洗规则,在中间件层读入RFID数据清洗事件定义,初始化数据清洗规则库,生成各规则对应的状态机及堆栈数据结构。
S2.从RFID数据流上读取一个数据ei,分别送入重复读清洗规则线程、交叉读清洗规则线程、漏读清洗规则线程等。
所述重复读清洗规则线程为:在滑动窗口内,从RFID数据流中读取的每个类型为A的数据,如果读取次数超过2次,则为重复读;只保留第一次读到的数据和最后一次读写到的数据,其余的重复数据被清洗掉。
所述交叉读清洗规则线程为:在应用场景中,RFID读写器C和D不存在交叉读,判断读写器A和B之间是否存在交叉读;在滑动窗口内,如果从RFID数据流检测到序列事件A和C或序列事件A和D,则在读写器B读到的RFID数据为交叉读,对交叉读数据进行清洗;如果从RFID数据流检测到序列事件B和C或序列事件B和D,则在读写器A读到的RFID数据为交叉读;对交叉读数据进行清洗。
所述漏读清洗规则线程为:RFID标签行进的路径为从读写器A到读写器B再到读写器C,判断RFID读写器B是否存在漏读;在滑动窗口内,如果从RFID数据流检测到序列事件A和C且B不发生,则读写器B存在漏读;将读写器B漏读的数据插入到数据流中,插入数据的时间戳根据RFID标签在读写器A和读写器C及路径的长度进行设置。


2.如权利要求1所述基于轻量级事件检测的RFID数据清洗方法,其特征在于,所述重复读清洗规则线程包括以下子步骤:
(1.1)在当前滑动窗口内,读取一个A类RFID数据,与堆栈A1中已有的A类型事件比较OID:如果OID相同,但该A类RFID数据的时间戳大于已有的A类型事件,则将该A类事件放入A2堆栈;如果无OID相同的A类事件,则将当前的A类事件压入堆栈A1;
(1.2)读取下一个A类RFID数据,重复步骤(1.1)中的操作,并判断堆栈A2中是否存在与该A类RFID数据OID相同的数据且该A类RFID数据时间戳小于A2中对应的当前数据的记录,如果存在,用当前数据更新A2中对应的数据;
(1.3)在滑动窗口...

【专利技术属性】
技术研发人员:娄颖安晶彭商濂方美玉刘贤锋
申请(专利权)人:浙江外国语学院杭州可有科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1