3.4 过滤和分组标签数据
用户定义的 ECSpec 中包含一个或多个Report,每个Report 由一个或多个filterSpec 或groupSpec 组成,每个filterSpec 有一个或多个includePattern 和excludePattern 组成,每个groupSpec 也包含一个或多个groupPattern 命令。这些过滤和分组命令可以方便用户选择出所需标签数据。因此,需要实现两种数据库操作:filter 和group。
3.4.1 过滤
filter 是根据所给规则对数据进行过滤筛选,找出符合过滤条件的标签数据。整个filter命令包含若干includePattern 和若干excludePattern,结果集为包含于任何一个或多个includePattern 中但是不包含于任何一个excludePattern 中的EPC 码。用集合形式表示为:
其中,R 为EPC 数据源集合,Ii 为EPC 集中符合第i 个includePattern 的数据集,Ei 为EPC集中的符合第i 个excludePattern 的数据集。
过滤操作的 URI 命令中可出现:确定数值/部分值[low-high]/所有值*,如:urn:epc:pat:sgtin-96:0.0867360217.[001-1000].*。查询时直接使用SELECT 操作,对各个字段逐个判断格式类型生成SQL 语句,将各部分生成的SQL 语句汇总到一句中即可完成过滤操作。
3.4.2 分组
group 是根据用户所给规则对标签数据进行分组归类,不属于任何group 命令条件的EPC 码自动归为default group 组中。分组操作的URI 命令可出现:确定数值/部分值[low-high]/所有值*/分组X(即按该字段分组,有不同的值就分组,相同值的EPC 码分到同一组中)。如:urn:epc:pat:sgtin-96:0.0867360217.X.*。
当使用多个 groupPattern 命令时,为使EPC 码只被归为一个groupPattern 组中,要求URI 命令设置时,几个groupPattern 不能有重叠区域。命令集:G = (Pat_1, Pat_2, ..., Pat_N)。Pat_i 和 Pat_j 为命令集G 中任意两个URI 命令。
Pat_i = urn:epc:pat:type_i:field_i_1.field_i_2.field_i_3...
Pat_j = urn:epc:pat:type_j:field_j_1.field_j_2.field_j_3...
Pat_i 和Pat_j 满足下面任一规则时两个URI 命令是无重叠区域的,允许使用。