Research Article

Processing Uncertain RFID Data in Traceability Supply Chains

Algorithm 1

//Processing data.
Input: READING; threshold value TV, aggregation level of time interval , aggregation level of position
; acceptable rate acra; adjustable time interval adj; adjustable parameters and
Output: clean ghost and redundant data, remark incomplete data, repair missing and inconsistent data;
size of smooth window sw
Begin
Aggregation (READING, , );
Builddirectedgraph ( , , );
; number of tuples in table READING;
 For each record’s in READING do
  If only appears once except the root node or only appears at the root node without
    references
     Delete the tuple; //clean ghost data
  Else if with an unchanged position appears twice or more
     Delete the tuple with later timestamp; //clean redundant data
  Else if don’t appears at the root node
     Remark as a non-cloned fake; //distinguish non-cloned fake
  Else if with a complete path appears at the root node but don’t appears at several adjacent
   nodes
     Remark as a cloned fake; //distinguish cloned fake
  Else if appears at the root node and disappear at some continue nodes
     Remark as a stolen object; //distinguish stolen object
  Else if doesn’t appear at a node
     ra++;
     Remark as a missing object at the missing node; //distinguish missing readings
     For to the number of paths do
      = the weight of the ith path from parent to child of the missing nodes;
      If ≥ TV
        Insert into ’s missing node into STAY; //infer group of missing readings
        with certain paths
      Else repair ’s missing node in STAY by further aggregating higher and ;
        //aggregate node of inconsistent readings with fuzzy paths
      End if
     End for
  Else if appears at two nodes at a same timestamp
    Remark the tuple as an inconsistent object at the inconsistent node; //distinguish inconsistent
    readings
    For to the number of paths do
       the weight of the th path from parent to child of the inconsistent nodes;
      If ≥ TV
        Repair ’s inconsistent node into STAY; //infer group of inconsistent readings
        with certain paths
      Else repair ’s inconsistent node in STAY by further aggregating higher and ;
      //aggregate node of inconsistent readings with fuzzy paths
      End if
    End for
  End if
 End for
/ ;
number of tuples of in cleaned table READING/ ;
;
End