Abstract:
Methods and apparatus, including computer program products, implementing and using techniques for protecting data residing in a repository of an electronic product code information service against undesired data disclosure. One or more disclosure policies are defined for an item tagged with an electronic product code. The item has associated data stored in the repository. The disclosure policies describe one or more of: who is permitted to query the repository for information, what type of information is permitted to be obtained from the repository in response to a query, and under what condition the repository can be queried. The disclosure policies are enforced in response to a received query from a party by only disclosing a subset of the data from the repository, the subset being determined in accordance with the defined one or more disclosure policies. A web-based tool for defining disclosure policies is also described.

Description:
BACKGROUND 
     This invention relates to security management of electronic product code information. Electronic Product Codes (EPC) is a family of coding schemes for RFID (Radio Frequency IDentification) tags. The EPC is designed to meet the needs of various industries, while guaranteeing the uniqueness for all EPC-compliant tags. All EPC numbers contain a header identifying the encoding scheme that has been used. This in turn dictates the length, type and structure of the EPC. EPC coding schemes typically contain a serial number which can be used to uniquely identify a single object. For example, a 96-bit EPC number allows approximately 1.3×10 16  items to be coded annually, roughly corresponding to the number of grains of rice consumed globally each year. 
     The RFID and EPC technologies provide the basis for new traceability applications for items such as products to emerge everywhere. In this document, the term product refers to any physical object or item that is associated with an EPC. Parties that want to share their data in order to create increased business value need new mechanisms for querying traceable data. In addition to business considerations, companies are more likely to share their data if the services infrastructure is scalable, secure and easy to use. 
     The EPCglobal Network architecture describes components and interfaces for EPC-related information exchange between servers that contain information about items identified by EPC numbers. The servers, typically known as EPCISs (EPC Information Services), which are linked through a set of network services, store relevant product information related to specific EPC numbers. Typically, events are submitted directly from systems that sense EPCs, such as RFID readers and 1D- or 2D-barcode scanners. Events can also be submitted from systems that have received RFID data and “cleaned up” the data, for example, by applying filtering and transformation on the raw data events delivered by the RFID sensors. For example, a submitted event can describe a read operation of an RFID reader or an aggregation operation, where a set of EPCs is associated with another EPC. Such an aggregation operation can occur, for example, when several RFID-tagged items are packed into a container which is itself tagged with an RFID chip. The EPCISs are typically queried by other EPCIS systems, by extract-transform-load (ETL) systems that extract bulk data from the EPCIS and import the extracted data into a data warehouse for business intelligence applications, or by other customized applications that continuously monitor events. 
     The need for protecting information traces of items in supply chains is a challenge, in particular in new information infrastructures such as the EPCglobal networks, where partners want to share information, such as EPC events, with the help of EPCIS repositories. The current EPCglobal standard does not require EPCIS implementations to enforce authorization of queries, but suggests ideas of how an EPCIS could react in order to provide some notion of authorization. Some of the suggested reactions described in the standard document state that the EPCIS service could refuse to honor the request altogether, that the service could respond with less data than requested and that the service could hide information. However, no details are provided as to how these suggested reactions could be implemented in a secure way. 
     SUMMARY 
     In general, in one aspect, the invention provides methods and apparatus, including computer program products, implementing and using techniques for protecting data residing in a repository of an electronic product code information service against undesired data disclosure. One or more disclosure policies are defined for an item tagged with an electronic product code. The item has associated data stored in the repository. The disclosure policies describe one or more of: who is permitted to query the repository for information, what type of information is permitted to be obtained from the repository in response to a query, and under what condition the repository can be queried. The disclosure policies are enforced in response to a received query from a party by only disclosing a subset of the data from the repository, the subset being determined in accordance with the defined one or more disclosure policies. 
     In general, in another aspect, the invention provides methods and apparatus, including computer program products, implementing and using techniques for defining disclosure policies for data residing in a repository of an electronic product code information service. A user interface is presented through which a user can define one or more disclosure policies for the data residing in the repository. User input defining the one or more disclosure policies is received. The defined disclosure policies are applied to the data residing in the repository. 
     The various embodiments of the invention can realize one or more of the following advantages. Standard compliant implementations are provided that fulfill the suggestions about “query authorization” of the current EPCIS standard. As a result, users of EPCIS implementations do not need to be concerned about the security of their EPC-related information assets inside EPCIS repositories. By using master data to describe the conditions under which event data is disclosed, significantly less overhead is needed to ensure security for a potentially large number of events associated with a product. Data disclosure for entire product classes, that is, several individual items, can be controlled. In particular, the disclosure control can be based on specific product details such as brand, country of origin, or based on detailed location information about where the item was sensed, such as GPS coordinates, postal address, name of a distribution center, and so on. 
     The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features and advantages of the invention will be apparent from the description and drawings, and from the claims. 
    
    
     
       DESCRIPTION OF DRAWINGS 
         FIG. 1  shows a schematic view of an entity in accordance with one embodiment of the invention. 
         FIG. 2  shows an excerpt of a data schema in accordance with one embodiment of the invention. 
         FIG. 3  shows a schematic process for enforcing data disclosure control in accordance with one embodiment of the invention. 
         FIG. 4  is a screenshot showing an overview of policies in accordance with one embodiment of the invention. 
         FIG. 5  is a screenshot showing an overview of the policy rules in accordance with one embodiment of the invention. 
         FIGS. 6-9  are screenshots showing policy rules in accordance with one embodiment of the invention. 
     
    
    
     Like reference symbols in the various drawings indicate like elements. 
     DETAILED DESCRIPTION 
     Overview 
     The need for protecting information traces of items in supply chains is a challenge, in particular in new information infrastructures such as the EPCglobal networks, where partners want to share information (typically EPC events) with the help of EPCIS repositories. The EPCIS query interfaces allow retrieval of events related to EPCs that have been submitted to the EPCISs&#39; event capture interfaces, as well as information about the items that are associated with the EPCs. 
     These two kinds of data are referred to as event data and master data, respectively. Event data arises in the course of carrying out business processes, and is captured through an EPCIS Capture Interface and made available for query through the EPCIS Query Interfaces. Master data is additional data that describes a company&#39;s vocabulary, that is, the business entities, terminology, definitions and classifications used to describe business information, and that provides the necessary context for interpreting the event data. Informally, event data and master data can be understood as follows. Event data grows in quantity as more business is transacted, and refers to things that happen at specific moments in time. An example of event data is “At 1:23 pm on 15 Mar. 2004, EPC X was observed at Location L.” Master data, on the other hand, does not generally grow merely because more business is transacted (though master data does tend to grow as organizations grow in size), is not typically tied to specific moments in time (though master data may change slowly over time), and provides interpretation for elements of event data. An example of master data is “Location L refers to the distribution center located at 123 Elm Street, Anytown, US.” The rate of change to master data over time is generally expected to be very slow relative to the rate at which new event data is generated. Other examples of master data include locations of EPC sensing devices, such as the position of RFID readers inside a warehouse (“dock door 5” or “store floor” or “shelf G-16”), and product details such as color, size, or a best-before date for perishable goods. 
     The various embodiments of the invention described herein provide methods and apparatus that provide security and privacy for the query interface of EPCIS. A partner that queries an EPCIS can retrieve only those data values of an attribute in a query result object for which a policy rule has been specified for the attribute, and the condition of the policy rule is fulfilled for the result object. If no policy rule has been specified, the value is missing (or NULL in SQL terminology). 
     The various embodiments described herein provide methods for data disclosure enforcement for queries against EPCIS, which can use master data to control the data disclosure of query results, as well as tools for managing security policies that are used by the disclosure control methods. The methods include policy-based, role-based, fine-grained (cell-level) data disclosure control for EPC information, which encompasses both event information and master data, to protect unwanted disclosure of query results against EPCIS repositories. A data disclosure control technique is applied based on query rewriting. Queries that are submitted to an EPCIS through a query interface are intercepted transparently, that is, the querying partner does not have to know whether any security policies have been used to filter or suppress information stored by the EPCIS. 
     The tools for managing security policies, which will be described in detail below, have an intuitive graphical user interface that allows users to specify security policies for different user roles. The security policies pertain to which event attribute values and what master data attribute values can be disclosed and under what conditions. In some embodiments the tools allow one or more of creation, modification, deletion, activation and deactivation, and import and export of policies. The import and export functionality for policies is useful to easily deploy security policies in other EPCIS once the security policies have been defined for one EPCIS. In some embodiments the exported artifact is an XML file that has a well-defined document format. 
     In accordance with various embodiments of the invention, master data is used to describe the conditions under which event data is disclosed. As a result, the overhead needed to ensure security for a potentially large number of events associated with a product is greatly reduced. Typically, parties in a supply chain are not interested in ensuring the data visibility for a single EPC event or a single item (that is, an instance of a product), although, of course, this can also be done using the methods and apparatus in accordance with the various embodiments described herein. Instead, supply chain partners are typically interested in controlling data disclosure for an entire product class, that is, several items, and in particular based on specific product details, such as brand or country of origin, or based on detailed location information about where the item was sensed, such as GPS coordinates, postal address, name of a distribution center, and so on, which can all be described by master data. 
     As an illustrative example, consider a pharmaceutical wholesaler that manages its own EPCIS installation. The wholesaler has as partners M 1  and M 2 , which are two competing pharmaceutical manufacturers that each delivers events to the wholesaler&#39;s EPCIS and query the EPCIS to track shipments. The wholesaler also has partners P 1  and P 2 , which are two competing pharmacies. Pharmacy P 1  orders painkillers only from manufacturer M 1  and no products from manufacturer M 2 . Pharmacy P 2  orders any type of products from both manufacturers M 1  and M 2 . The EPCIS of the wholesaler receives EPC events about shipments from each partner. Each partner must also have access to their information in the wholesaler&#39;s EPCIS in order to manage their inventory and to track their shipments. To enable secure sharing of data, the EPCIS must ensure that M 1  is not able to query data pertaining to products of M 2  and vice versa, since they are competitors and want to protect their information assets. Furthermore, the EPCIS should allow each of P 1  and P 2  to see only shipment event information destined to them, respectively. P 1  should not be able to query for shipment and product detail information other than pain killers. How this is accomplished will now be explained in further detail with reference to the drawings. As the skilled reader realizes, the description is not limited to the specific examples described herein, but should rather be viewed as explanatory examples of embodiments of the invention, as defined in the claims. 
     Entities 
     In some embodiments of the invention, the objects referenced in policy rules are defined on a higher conceptual level than objects of the EPCIS repository, thus shielding the user from implementation details when using the graphical user interface of the policy-definition tool, as will be described below. These high-level objects, referenced to by the policies, are referred to herein as entities. The entity concept is schematically illustrated in  FIG. 1 . As can be seen in  FIG. 1 , the EPCIS standard describes two types of data: events and master data. The master data, in turn, can include different types of context information, such as products, locations and vocabularies. Example attributes of products are the brand name or a stock keeping unit (SKU) identifier. Locations can have attributes like address, read point, or business location name. A vocabulary is the set of permissible values that can appear in an event or master data attribute, such as a set of available location names. Vocabularies typically provide context and define standard terms for business steps, dispositions, and transaction types. It should be noted that the term “entity” is not used herein as a database term (that is, it does not mean “entity” according to the entity-relationship (ER) model). An entity is any one of: event, location, product, further context that may be specified in a vocabulary. 
     As a result of providing an entity abstraction of the information specified in a physical data model, a person defining security policies does not need to have the skills or knowledge of a database administrator. For example, the person defining the security policies does not need to know that EPC values are stored in an EPCList table but can only see that an EPC is one among several attributes of an entity named event, or that an address is an attribute of an entity named location, or that brand is an attribute of the an entity named product, as will be discussed in further detail below with reference to  FIG. 5 . The linking of events, products, locations, and further context information with each other and the linking of all lower-level objects that belong to an entity is done transparently to the user issuing the query. 
     The structure of the physical data model, including the relationships between entities, is defined in the metadata. Additionally, metadata allows the administrator of an EPCIS to define extensions to the EPCIS standard schema for events and master data, such as new attributes for events or for products. In some embodiments of EPCISs, metadata is defined in the form of XML documents that conform to defined XML schemas and that are used by a software component to create (deploy) the physical data model. This lower-level data model consists of several relational database objects for each entity as well as several database relations for security policies. 
     Physical Data Model 
     The user who sets up security policies does not need to be aware that the entities in the EPCIS repository are represented using a different data model, such as a relational database schema. A small excerpt of the schema used in one implementation of EPCIS is schematically illustrated in  FIG. 2 . As can be seen in  FIG. 2 , in the illustrated implementation, the events have a relationship with location details. In fact, according to the EPCIS standard, there are two relationships; a first relationship for the business location and a second relationship for the RFID reader location, but only one relationship type is shown in  FIG. 2 , for the sake of clarity. The location attributes can be represented by a separate LocationsAttributes table. 
     Query Execution Control 
       FIG. 3  shows a process ( 300 ) for enforcing data disclosure control in accordance with one embodiment. As can be seen in  FIG. 3 , the process starts with an EPCIS administrator defining a disclosure policy for the EPCIS (step  302 ). The disclosure policy includes a set of one or more rules, typically one rule for each type of entity. It should be noted that not every entity must have a rule defined. Depending on the metadata definitions, a rule for one entity can refer to several database objects (typically, tables and views). For example, if a product policy rule declares the attributes that can be disclosed and the conditions under which these attributes can be disclosed, both the Product and the ProductAttributes tables are affected, as can be seen in  FIG. 2 . In some implementations, the effect of defining policies on entities is that security views on relational database objects are created. If complex operators are used in the query interface such as the hypothetical EPCIS query operator “get-children-of” for traversing a hierarchy, the resulting view definitions may be (deeply) nested and may reference several database objects. 
     Next, a query is submitted to the EPCIS (step  304 ). The query is rewritten based on the policies that are in effect (step  306 ). An incoming query is first translated such that the query references the database objects according to the relationships between database objects defined in the metadata. Then, the query is transformed such that the query uses the appropriate security views instead of the original database objects. 
     After rewriting the query, view definitions are derived from the policy rules (step  308 ). By way of example, the derivations of the view definitions will be described here in terms of relational database objects and a relational database system. It should however be noted that the derivation of the view definitions can also be implemented using a different data model. In the relational database implementation of the EPCIS repository, attributes used in queries map to columns in database tables or views. 
     For each combination of a user role r and a table t in a database that is to be protected according to policies and the metadata, a special view named v_r_t exists that has the same schema as t and that defines which table cells in t that can be disclosed to r. In most real-world application domains for EPC data repositories, the number of roles |r| and the number of tables |t| are small and the maximum number of views is |r|*|t| is sufficiently small for all practical purposes. 
     The query rewrite method is based on a table semantics model, where the main idea is that attribute values which are not to be disclosed will be replaced by NULL values. For each combination of a table t that can be queried according to the query interface of the EPCIS and a user role r, zero or more security policies can be created. For practical purposes, the number of security policies can be restricted to zero or one policy per role and table. Each policy is a collection of rules. A rule specifies the name of the table (t), the set of column names of t whose values may be disclosed (A), and the condition (c), for example, a complex Boolean expression, under which the values in A for a row in t may be disclosed. 
     A policy rule can be compared to an SQL view on table t, where A is the SELECT list, and c is the expression in the WHERE clause, illustrated below. 
     
       
         
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 CREATE VIEW 
               
               
                   
                 &lt;view_over_t_for_role_r_according_to_the_policy_rule&gt; 
               
               
                   
                   AS 
               
               
                   
                 SELECT A 
               
               
                   
                 FROM t 
               
               
                   
                 WHERE c 
               
               
                   
                   
               
             
          
         
       
     
     Finally, the data defined by the view is returned to the querying party (step  310 ). The data returned by the view defines exactly the attribute values of rows in t that may be disclosed to users having the role r. No other values of rows in t will be disclosed. 
     When a query q that references a table t is issued by a user who has role r, every occurrence of a table tin q is replaced by its respective view v_r_t, as will be described in further detail below by way of example. These views are created when the security polices for r and t are created. If any policy for the combination r and t is modified, the view v_r_t is dropped and a new view definition with the same name is created. The new view again reflects the current disclosure rules. 
     In one embodiment, the view definition method works as follows. Let P be the set of all policies. Let (r, t, A, c) be a policy rule. Let U(r′, t′)={(r, t, A, c)εP|r=r′^t=t′} be the set of rules for a table t′ of policies that pertain to a role r′. The WHERE clause of the view is a logical OR of all conditions in U. For each column name a of t, if the column name does not appear in an attribute set A in U, the column appears in the column list of the SELECT clause as: 
     NULL as a
         Otherwise, let C be the set of conditions that have been defined for attribute a: C(r′, t′, a)={p.c|pεU(r′, t′)^aεp.A}. Then, the column a appears as an expression that involves a logical OR of all conditions c1, . . . , cn in C:       

     CASE WHEN &lt;c1&gt; OR . . . OR &lt;cn&gt; THEN a ELSE NULL AS a 
     Enabled and Disabled Policies 
     In various embodiments of the invention, a security administrator of an EPCIS can activate/enable or deactivate/disable a subset of the policies. This can be convenient when an EPCIS installation is undergoing security tests by a security administrator. Only the policies that are enabled are used in the security view definition process. Enabling and disabling individual policies can be implemented by dropping all policies and creating new views according to the current policies. Of course, it is also possible to analyze what policies have been disabled and enabled and to drop and recreate only those views whose definition needs to change while leaving all other views unchanged. 
     A Security Policy Example 
     The rewriting of queries will now be explained in greater detail by way of example of views that are generated based on policies and how these views are used to rewrite a query. First, assume there is a hypothetical entity E (a, b, c, d, e, f, g). The metadata declares that E refers to two relational tables t 1  ( a , b, c, d, e) and t 2  ( a, f, g ) (primary keys underlined), where t 2 .a→t 1  is a foreign key constraint between the two tables. 
     The user has been assigned to role r and three policies p 1 , p 2 , and p 3  have been created that are all enabled. The policies are illustrated below in Table 1. 
     
       
         
               
               
               
               
             
           
               
                   
                 TABLE 1 
               
               
                   
                   
               
               
                   
                 Policy p 1  for role r 
                 Policy p 2  for role r 
                 Policy p 3  for role r 
               
               
                   
                   
               
             
             
               
                   
                 Rule 1: 
                 Rule 1: 
                 Rule 1: 
               
               
                   
                 Table: t 1   
                 Table: t 1   
                 Table: t 1   
               
               
                   
                 Attributes: a, b 
                 Attributes: a, c 
                 Attributes: a, c, d 
               
               
                   
                 Condition: c 1   
                 Condition: c 2   
                 Condition: c 3   
               
               
                   
                   
                   
                 Rule 2: 
               
               
                   
                   
                   
                 Table: t 2   
               
               
                   
                   
                   
                 Attributes: a, g 
               
               
                   
                   
                   
                 Condition: c 4   
               
               
                   
                   
               
             
          
         
       
     
     The resulting views v_r_t 1  and v_r_t 2  formulated as SQL DDL statements, where &lt;c i &gt; are placeholders for the conditions, are: 
     
       
         
               
               
             
               
               
               
             
               
               
               
               
             
               
               
             
               
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 CREATE VIEW v_r_t1 AS 
               
             
          
           
               
                   
                 SELECT a 
                 AS a, 
               
             
          
           
               
                   
                 CASE WHEN &lt;c1&gt; 
                 THEN b ELSE NULL 
                 AS b, 
               
               
                   
                 CASE WHEN &lt;c2&gt; OR &lt;c3&gt; 
                 THEN c ELSE NULL 
                 AS c, 
               
               
                   
                 CASE WHEN &lt;c3&gt; 
                 THEN d ELSE NULL 
                 AS d, 
               
               
                   
                 NULL 
                   
                 AS e 
               
             
          
           
               
                   
                 FROM t1 
               
               
                   
                 WHERE &lt;c1&gt; OR &lt;c2&gt; OR &lt;c3&gt; 
               
               
                   
                 CREATE VIEW v_r_t2 AS 
               
             
          
           
               
                   
                 SELECT 
                 a  
                 AS a, 
               
               
                   
                   
                 NULL 
                 AS f, 
               
               
                   
                   
                 g 
                 AS g 
               
               
                   
                 FROM 
                 t2 
               
               
                   
                 WHERE 
                 &lt;c4&gt; 
               
               
                   
                   
               
             
          
         
       
     
     It should be noted that the first element in the SELECT list of v_r_t1, 
     a AS a
         could have been written as       

     CASE WHEN &lt;c1&gt; OR &lt;c2&gt; OR &lt;c3&gt; THEN a ELSE NULL AS a 
     without altering the semantics of the query. This optimization can advantageously be incorporated into various embodiments. The reason is that the WHERE clause of the query will select only rows that fulfill the expression c1           c2         c3. Similarly, the third element of the select list of view v_r_t2,
     g AS g 
     is equivalent to 
     CASE WHEN &lt;c4&gt; THEN g ELSE NULL AS g 
     Based on these policies, suppose a user in role r submits the query “Get the attribute values for b, c, f, and g from all objects of entity E,” which can be translated into the following SQL query: 
     
       
         
               
               
               
             
           
               
                   
                   
               
             
             
               
                   
                 SELECT 
                 b, c, f, g 
               
               
                   
                 FROM 
                 t1, t2 
               
               
                   
                 WHERE 
                 t1.a = t2.a AND 
               
               
                   
                   
                 &lt;c5&gt; 
               
               
                   
                   
               
             
          
         
       
     
     The rewrite method produces the following query by replacing the table references by view names and adjusting the attribute names to reference the respective view. 
                                                 SELECT   b, c, f, g           FROM   v_r_t1, v_r_t2           WHERE   v_r_t1.a = v_r_t2.a AND               &lt;c5&gt;                        
Security Policy Editor Tool
 
     As was described above, various embodiments provide a web-based graphical user interface tool, referred to herein as a “Security Policy Editor,” which can be used to manage the disclosure rules for queries against an EPCIS. This Security Policy Editor will now be described in further detail with reference to the above example of an EPCIS of a pharmaceutical wholesaler that has several trading partners that need to query the EPCIS repository in a secure way. The main focus of the following description will be on the policy rules for one of the partners, Pharmacy  1 . 
       FIG. 4  is a screenshot ( 400 ) showing an overview of the policies that are defined for the wholesaler&#39;s EPCIS. As can be seen in  FIG. 4 , every partner has their own policy that has been set up by the security administrator of the EPCIS. Three policy rules have been defined for Pharmacy  1 . The state indicators ( 402 ) show that all policies are enabled, that is, queries coming from any of the partners (that is, Manufacturer  1 , Manufacturer  2 , Pharmacy  1  and Pharmacy  2 , respectively) are under disclosure control. The checkboxes ( 404 ) indicate that each policy can be selected and subject to one or more operations that are defined by the clickable buttons ( 406 ) above the policy listing. That is, each policy can be exported, enabled or disabled, a new policy can be imported, and the states of a set of selected policies can be toggled. Toggling means that if a policy is selected in a checkbox, its state changes, that is, it either changes from enabled to disabled or from disabled to enabled. 
       FIG. 5  shows an overview ( 500 ) of the three policy rules pertaining to Pharmacy  1 . As can be seen in  FIG. 5 , the rule summary ( 502 ) gives the security administrator of the EPCIS a concise description of the disclosed attributes and the conditions under which the attributes may be disclosed. The policy name and user group are also clearly displayed, and options for creating and deleting policies are provided. 
       FIG. 6  shows details for the first rule belonging to the policy of the partner “Pharmacy  1 ” that declares that any location information (including associated events) that pertains to products which are labeled “Pain killer” can be disclosed to Pharmacy  1 . Furthermore, only the product identifier and the brand name are disclosed as product details; the product details “short description” and SKU would yield the value NULL in queries that reference these attributes. 
       FIG. 7  shows details for the second rule belonging to the policy of the partner “Pharmacy  1 ” that declares that any information (including events) that pertains to events whose origin is the location “123 Pharma Ave, San Jose, Calif. 95141” can be disclosed to Pharmacy  1 . No attributes of the location details are suppressed. 
       FIG. 8  shows details for the third rule belonging to the policy of the partner “Pharmacy  1 .” The effect of this rule is that queries coming from Pharmacy  1  that involve event information will never disclose quantity information. If this attribute is referenced in a query of Pharmacy  1 , its values will be NULL. 
     Because of the policy rules for Pharmacy  1 , shown in  FIGS. 5-7 , any query about EPC events against the EPCIS that comes from Pharmacy  1  will return only information that pertain to pain killers only and the location of the events that originate from the location “123 Pharma Ave, San Jose, Calif. 95141.” Typically, the location describes where the (RFID, 1D- or 2D-barcode, and so on) readers have sensed the EPC attached to an item. However, events can also pertain to activities other than “reading” codes. An example is packing and unpacking of goods, which is expressed by the so-called AggregationEvent type, defined by EPCglobal (see the event type values in  FIG. 8 ). 
       FIG. 9  shows another rule belonging to the policy of “Pharmacy  1 .” It describes what types of queries (for example, as a web service) Pharmacy  1  can issue to the EPCIS. As can be seen in  FIG. 9 , only queries of type SimpleEventQuery can be executed, but not SimpleMasterData queries. These types of queries are defined in the EPCglobal standard for EPCIS. 
     The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc. 
     Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. 
     The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device). Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD. 
     A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
     Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers. 
     Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters. 
     A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, the query interface of the EPCIS may be realized as a web service or an application programming interface (API). Entities other than events, products, and locations may be used to specify security policies. A user vocabulary typically specifies such further context types. Furthermore, although the EPCglobal consortium specifies standards for products, items that may be tagged could also be human beings, money, and parts of products (not full products). It should be clear that EPCIS can be used also for tracking these other types of objects. Accordingly, other embodiments are within the scope of the following claims.