The subject matter described herein relates generally to the fusion and communication of field collected event data. More particularly, the subject matter described herein relates to methods, systems, and computer program products for extensible, profile- and context-based information correlation, routing, and distribution. Even more particularly, the subject matter described herein relates to an extensible software architecture for allowing individuals, groups, and organizations to contextually gather, correlate, distribute, and access information, both manually and automatically, over a multiplicity of communication pathways to a multiplicity of end user communication devices.
With the overwhelming proliferation of sensors in the world today, there is a demand for systems that operate at a layer above these sensors and that have the capability to take the filtered (or even raw) output from these sensors, understand the output within a real-world context, compare the data and context against a defined set of policies and/or rules, then quickly and precisely get this fused information into the hands of those that need to be aware of it.
As used herein, a “sensor” refers to any of a wide number of systems, devices, software, or live observers that are able to capture and transmit data regarding one or more characteristics of the environment, software, database or system that they have been tasked with monitoring. A sensor may include any mechanical, electro-mechanical, or electronic device capable of producing output based on observed or detected input. As used herein, “rules” are algorithmic constructs that are used for the analysis or comparison of variables (typically received from sensors). As used herein, “policies” are organizationally defined procedures or rules, typically found as standard operating procedures logged in operations manuals, experience captured from subject matter experts, or experience captured from operations personnel. As used herein, “sensor fusion” refers to the real-time process of aggregating data from disparate sensors, applying one or more layers of policies/rules to sort out the important events from the background noise, and the subsequent creation of context-rich alerts when the rules are satisfied.
It is no longer a surprise to discover that at any particular time and in nearly any public environment that a person's picture may be being taken, that a person's frequent-shopper ID is being requested and recorded, that a person's movements are automatically triggering sensors to turn on lights or open doors or issue personalized vouchers, that a person's personal identification must be used as a required key for entry, that a guard enters the person's name and license number as they enter a protected community, that a person's credit card must be swiped to initiate or conclude a transaction, or that any of a multiplicity of other facts, data points or alerts are almost continually requested, collected and recorded as an artifact of a person's presence or participation within nearly any public environment. This data collection from an array of sensors is, of course, even more prevalent in environments that are specifically designed to be secure and thereby designed to know very precisely who and what is allowed to pass and who must be kept out, such as with automated sensor systems for perimeter, border or facility security.
One problem with the proliferation of sensors, both in secure and non-secure uses, is a lack of sensor fusion. The sensors operate, alarm, and communicate their individual alarms independently from one another. The only point where all of the sensors are looked at as a unified system is in the control room or “war room” where a handful of trained observers are tasked to visually and/or audibly monitor the alerts from the termination points of each of the individual systems. These human observers become the manual fusion system by watching for the alarms being issued by each separate system and are trained to recognize the cross-system patterns of alarms that would suggest that there is something noteworthy of interest happening within the range of the sensors. These observers are tasked not only with maintaining a visual, aural, and mental alertness for hours on end, but also with being experts in the interpretation of the stream of alerts being issued by each of the systems and understanding when the combined pattern from multiple systems is more than just “typical” noise and consequently that some action should be undertaken. This use example is true not only for facility security, but also for manufacturing lines, network operations centers, transportation hubs, shipping ports, event security, operations centers, and any place where more than one type of sensor is deployed with the intent to assist, augment or improve upon a limited number of field-deployed human observers.
Furthermore, when these human observers who are tasked with the responsibility of being the point of fusion do determine that something of interest or concern is occurring, they must then consult an additional policy manual and/or directory to find some means to concisely communicate this information to the appropriate individual(s) via some appropriate communications path (phone, email, pager, radio, fax, etc). This task is not always straightforward since the individual(s) best suited to receive this information may be unavailable or unreachable via their primary communication method. Furthermore, it may be important to get the information quickly transmitted to more than one individual, each with their own particular need for specific components of the fused information.
The need for sensor fusion systems can be thought of as being directly analogous to the need for the trained observers who sit in front of the tens or hundreds of video screens watching the alarms and video surveillance systems as they are individually issuing alerts, then making an informed decision about the particular groupings and/or timings of the alarms as being important, based on their knowledge of policy and experience, and then determining the appropriate means for communicating this information to the people who need it.
However, while the solution of having highly trained observers has worked reasonably in the past, as more and more sensors of increasing complexity become available and are installed, the ability for even a team of human observers to make sense of the aggregate sum becomes impossible. Additionally, the policy manuals which dictate the nature of how the aggregate is interpreted change more and more frequently with the introduction of the new sensors, and finally, so do the contact policies and individual's contact information. Making sense of the plethora of data emitting from even a typical installation is quickly becoming unmanageable. This inability to manage and interpret the sensor data is leading to a significantly lowered situational awareness and an inability to react to events that are critical.
Accordingly, there exists a quickly growing need for methods and systems that are able to examine a wide variety of information based on defined rules for sensor fusion and which enable the distribution of this information and its relevant context to individual users and other systems in an automated fashion based on their personal contact profiles.
According to one aspect, the subject matter described herein includes a system for merging data from a plurality of different sensors and for achieving sensor fusion based on a rule or policy being satisfied. The system includes a plurality of source plug-ins for receiving data from a plurality of different sensors. A content manager merges the data from the sensors together with metadata that is representative of a context and aggregates the information and context metadata into knowledge items. A scenario engine achieves sensor fusion by comparing the sensor data and its context metadata against a predefined set of policies or rules and for providing an action when a rule or policy is satisfied.
The subject matter described herein includes a system that includes the capability to define and utilize scenario-based rule and policy definitions in order to correlate event-based data across a multitude of sensor systems to determine, in real time, if the criteria for the specified policy(ies) have been successfully satisfied. This capability will be referred to herein as sensor fusion, and the system which incorporates this capability will be referred to herein as a knowledge switch (KSX). Additionally, the present subject matter includes a system for providing the capability to record a specified accumulation of data and the current context (metadata) at the point that the rule/policy is satisfied and for encapsulating this set of disparate data into a self-encapsulated, decomposable data object. The bundle of fused data, along with its metadata context and history will be referred to herein as a knowledge item.
Moreover, the subject matter described herein includes methods for initiating predefined sequences of events when the rule(s)/policy(ies) become valid, which can include the pinpoint distribution of the data object, starting an application, triggering an alarm or handing off the data to another set of rules/policies. Additionally, the subject matter described herein includes the routing of the knowledge item (with additional pre-defined message information, if desired) to people or systems that need to be made aware of this information, based on the recipient's personal profile, as well as both static and dynamic organizational-based delivery rules. This includes the ability to transmit the data object to a second knowledge switch to allow for two-way switch-to-switch communication. Furthermore, the system-based software architecture of the subject matter described herein can be dynamically extended, with its functionalities and capabilities enhanced through the addition of external software modules which are plugged in to the base framework of the application.
Sensor Fusion
Accordingly, it is an object of the subject matter described herein to provide methods and systems for correlating diverse, event-based data across a multiplicity of sensor systems, based on scenario-type rules and policy definitions. The event data collected can be of any type (such as any of the types described in the above-referenced priority applications) and as a part of the rules/policies can be compared directly to other data (for example: “If the value of input flow is greater or lesser than output flow by more than 2% . . . ”), can be compared in parallel with other data (for example: “If the external temperature is lower than 50, and the internal temperature is lower than 70, and the external vents are reading as being open, then . . . ”), or can be evaluated on its own (for example: “If the poisonous gas sensor reads as TRUE, then . . . ”).
Data Object (Knowledge Item)
It is another object of the subject matter described herein to provide a method to encapsulate received event data, its history, and its metadata context in response to a rule or policy being triggered and encapsulate the data into a self-defined module. For a simple example, rather than just recording the integer data 86 output from a sensor, the context is included and shipped with metadata indicating that the data is a thermostat reading, taken at 3:02 am, on sensor number 1a2b3c-4, in facility XYZ, in building ABC, has triggered 14 times in the past 7 hours, and is important because it triggered a scenario that was put in place to monitor the temperature inside a mission critical machine room and trigger if any computers in the room are operational and the thermometer is reading at or above 70. The data object that this information is accumulated into is decomposable such that an individual data element can be quickly recovered upon request. This data object is referred to herein as a knowledge item.
A knowledge item may include a dollop of content that has actions and whose values over time are preserved, further, a knowledge item may:
It is yet another object of the subject matter described herein to provide methods and systems for highly granular, automated routing of the data and its context to people and other machines based not only on the recipient's profile, but also on organizational rules, security rules, no-response rules, and next-in-line rules. This methodology allows individuals and systems to be delivered information in a precise way so that not only is the best contact method used, but the message can also be filtered to suit the specific expectations of the recipient, as well as having security measures put in place (authorization methods to prove you are who the system believes you to be and access restrictions to ensure that no information reaches the recipient that they are not allowed to see). Additionally, information within the profile can define logical next-tier recipients for both personal and organizational messages if the message still cannot be delivered after all possible routes have been exhausted. This methodology also allows for the transmission of queries and/or questions (multi-choice or open-ended) to individuals or systems to respond to and in turn directly influence a next tier of questions or provide important information to be subsequently transmitted out to other individuals or systems.
This methodology involves a complex series of filtering and qualifying of the content, the recipient, and the device that may happen prior to a message being presented to recipient. The combination of all of these filters existing within a single system and using these filters to qualify the delivery of a message to an appropriate recipient is believed to be advantageous. Exemplary qualifiers that may be used as follows:
Another example would be an override profile for an urgent alarm priority message that would attempt authenticated contact by phone or pager no matter the time of the day or night.
It is yet another object of the subject matter described herein to provide methods for the asynchronous routing of messages and data through notification and authentication. For example, it is possible to send a message via pager and within a timeframe, have that person contact the delivery system, authenticate himself, and have the information delivered as though the system had contacted the person directly. This methodology allows for time-independent contact. Current telephone call delivery methods require only that a call to be picked up and answered in order for an acknowledgement of receipt to be assumed. This current methodology can fail if the person picking up the call is not the intended recipient (for example, a child picks up), it can fail if voice mail picks up, and it leaves no options if the intended recipient is busy, or cannot be beside a phone. With the present subject matter, a message can be transmitted (simultaneously if desired) to a pager, email, or a message left on voice mail that defines a range of time for the recipient to respond before the recipient recorded as having not acknowledged the message. In addition to this, a pass-code system can be placed as a front gate (so to speak) that would allow the option of verified access, including access to secure information when the recipient contacts the system. Without this option, all that is known by the transmission system is that the receipt of the transmission was initiated by someone/something. Finally, the same methods can be used at the close of the transmission to verify not only that the transmission was sent, but also that the same person who initiated the transmission completed the transmission and verifies that the person received and understood the transmission.
Dynamic, Rule-Based Group Membership Filtering
It is yet another object of the subject matter described herein to provide methods for dynamic groups where the active members of the overall group are determined only at the time that the request is made. U.S. Pat. No. 6,658,414 discloses in detail a method referred to as microbroadcasting. This method includes the ability to request GPS-based location data as a part of the process of logging in to a user's personal microbroadcast. As an extension the methods disclosed in the '414 patent, the subject matter described herein includes a knowledge switch that can continuously collect this user-profile-specific data such that these fields can be dynamic rather than static. This dynamic data (such as location, time, schedule, duty roster, access control ID) can be utilized within rules (see Roles and Advanced Scenario Logic above) to make moment-by-moment assessments of a rule. This dynamic data can be utilized along with other dynamic data or static data to provide topics of relevance (local forecast or emergency weather alerts for wherever a person is located at that specific time, even if the recipient is driving), access control for physical and content access, roles (as described above), KSX to KSX communications (as described above), and any other mechanism that utilized dynamic input as a factor within a rule to determine the appropriateness of an action or capability.
An example of the subject matter described herein could be the use of the dynamic profile data of duty roster, access control, location, and time to make an assessment about a specific user's ability to have the appropriate privileges as dictated by the role of “Tower Chief”. By defining a rule that includes all of these variables (in English: Give UserX appropriate systems access and authorization to perform as Tower Chief if and only if the following is true: 1) User is geographically within fifty feet of the center of the tower; 2) User has used the appropriate credentials to gain access to the tower floor; 3) User is scheduled within the duty roster to perform this role; and 4) the time is currently between the start and end time on the duty roster that this user is scheduled to perform this role. A dynamic group however does not have to be used exclusively for people; it is limited only by objects that can be grouped and the rules available to filter the group at the time it is requested.
Extensions to Rule and Policy Development
It is yet another object of the subject matter described herein to provide methods for enabling the provision of precise and flexible evaluation criteria for rules and policy definitions within a knowledge switch. The concept of a logic engine that is able to take a logical statement with one or more data points and return a true/false response is described in the above-referenced U.S. patent application Ser. No. 10/020,260, filed Dec. 14, 2001. Additional capabilities of such a logic engine may include:
It is yet another object of the subject matter described herein to provide methods for two-way communications between two or more individual knowledge switch. As described in U.S. patent application Ser. No. 10/020,260, the ability for a knowledge switch to communicate with another knowledge switch via the transmission of alerts to a series of predetermined templates has significant benefits for the scaling of systems. In addition to such capabilities, the present subject matter may include a facility for allowing administrative-based changes to a knowledge switch's provisioning (content, logic, distribution, profiles) based on a hierarchical relationship. Additionally, methods of making information available based on “need-to-know” rights management within a peer-to-peer relationship are provided. Geographical proximity may also be used as a deterministic factor in the proactive dissemination of information between knowledge switches.
With a hierarchical relationship utilized for KSX-to-KSX communications, some amount of administrative rights are assigned for a parent KSX to proactively and securely provision a child KSX with new logic, new scenarios, new content, new profiles or new rules for the dissemination of information. This ability to do administrative level provisioning allows a parent KSX to define and control the flow of information across a large umbrella of distributed systems. All communications can be managed through a secure web services layer, and administrative rights can be managed locally for each domain. A top down approach can be used for the hierarchical distribution of information and control logic. This methodology minimizes the direct management that a parent needs to maintain for a child node and allows for a true distributed awareness system with localized, domain specific implementation that allows for a large overall umbrella of awareness for the parent KSX. An example of a hierarchical topology would be the Federal Aviation Administration (FAA) knowledge switch as the top parent node, FAA airport regional coordinator knowledge switches as the next tier in the hierarchy, individual airport knowledge switches as the subsequent tier, and other knowledge switches at individual airports as the lowest tier. For example, at the larger airports, individual divisions (such as security, tower, airline, and so forth) may have each have its own KSX for each respective domain. Each KSX may have some administrative oversight by the next logical tier up to allow for discovery and transmission of specific data that may or may not be being scanned for by the local KSX.
The peer-to-peer deployment method presumes a flat topology where all KSX nodes maintain domain-specific knowledge, and there are no administrative rights given to KSX systems to modify another system's provisioning. However, rather than administratively dictated communications flow as exists in a hierarchical topology, a peer-to-peer deployment allows communications via subscription and/or need-to-know messaging. Here the operators of each deployment make determinations of what information to publish and make available to other KSX systems. In a peer-to-peer deployment, information may be passed by request rather than by command. An example of this deployment could be all local police stations sharing information about gang-related crime in their respective regions so that similarities or transient gangs can be more quickly spotted and isolated.
Finally, a geographic-proximity-activated KSX-to-KSX communications methodology allows for domain specific deployment where the sphere of awareness extends to an approximation of a volumetric boundary around the KSX. These spheres of awareness can be located upon a mobile platform (car, train, ship, plane) and can intersect with other spheres of awareness that are also mobile or even perhaps stationary (tunnel, depot, emergency, services). When the intersection of these spheres of awareness is established, the communication of vital information is initiated between the two systems in a directed, peer-to-peer fashion. An example of this type of deployment could be a train carrying dangerous toxins moving between stations and various emergency districts. The train, once it crosses into a new jurisdiction (sphere of awareness based on an emergency services geographical boundary), could pass basic information about cargo types, wheel reports, and emergency information in case of an accident. Information passed into the train could include emergency services contact information for that jurisdiction as it passes through, delays or safety bulletins, and proximity to other known obstacles such as other trains in the area, or traffic tie-ups that could potentially affect an upcoming train crossing.
System Extensibility with Local Provisioning
It is yet another object of the subject matter described herein to provide an overall software architecture that is extensible through the addition of external software modules that are added into the base framework of the application to modify, extend, or add functionality to the base set of functionalities across all major functional modules in the application. The use of a plug-in to extend the standard core architecture has significant merit over the current methods utilized for developing large, enterprise- or facility-wide unifying architectures. Current methods derive solutions through the purpose-developed solution that is largely customized and non-reusable in nature. In all large deployments into existing sites, there is always a great deal of existing legacy equipment, infrastructure, or systems that must be integrated and utilized, or else replaced with new equipment, and then the new equipment or infrastructure or systems must be integrated. This is a time-intensive and expensive method to create a solution and frequently leads to unmaintainable and failure prone systems that require large staffs of administrative and support teams to support. This method of integration and deployment also requires the starting and stopping of a system to add new customized or purpose-built software and/or hardware and begin utilizing the newly added resource. Finally, these systems typically become overly burdened with unused software as the older systems are taken off line and replaced with newer systems that require yet more additional code to be created.
By utilizing a central core to the system that can be used as a standard for knowledge switch deployments and then extending this core through specific and reusable plug-ins that enable the use of the existing infrastructure and existing sensors and legacy systems, the KSX minimizes all of the above risks of a purpose-built solution. A plug-in in this instance is a piece of software that is adapted (or removed) to the core system during run-time (to avoid starting and stopping the system when operating) that allows the externalized systems (sensors, content provider, content rendering definitions, logic engines, external databases of users, delivery systems and devices) to be added (or removed) in to an operating system and begin the immediate utilization of that resource without affecting the remainder of the systems operations. These plug-ins are created to act as intermediaries between the existing deployed systems and the core of the KSX so that the core system does not have to be modified or even stopped in order to extend the capabilities of the overall system.
An example of this could be a KSX deployed as a perimeter security system at a secure facility. A newly developed motion and object detection system has just arrived at the facility along with a new radio communications device. Each of these newly arrived systems has a respective piece of software (plug-in) that was developed by the company to allow their equipment to be utilized as a component of a deployed KSX. The systems are set up and tested separately from the KSX until all the installation bugs are worked out, and the system is ready to be integrated into the operation of the currently operational KSX. The KSX administrator loads the plug-ins from an administrative interface (while the KSX continues to maintain a security watch on the perimeter of the facility), and through the options provided via the plug-in, establishes the way that the subsystem will communicate with the KSX and how the data can be accessed when the provisioning of these new subsystems begins. Once the options are completed by the administrator, the plug-in is activated, and data begins to be transferred between the KSX and the subsystems. Following activation, operations experts can provision the KSX with scenarios that utilize this data from the new systems and cross link it when desirable with the data that was previously in the system.
The use of a plug-in architecture allows the overall deployment configuration to be maintained and optimized over time by:
The knowledge switch utilizes a hot-pluggable and swappable plug-in model that allows for the extensibility of functionality for a KSX during run-time with no need to restart any part of the system. A plug-in is a stand-alone, reusable, extensible, language and platform independent piece of software that is written to adapt any external network available data stream to a fixed, published knowledge switch application programming interface (API) layer which is available for extensible modules within the knowledge switch (content manager, scenario engine, profiles manager, message engine and delivery engine). Plug-ins are write once and reuse over and over, such that once a custom plug-in is created to interface an external system's data stream to the knowledge switch, it is not necessary to create any code to interface this same system to another KSX. The plug-in can be re-used with another knowledge switch. The API layer is the handshake point for all data entering and leaving the KSX and thus allows for a highly customized, site-specific configuration without the need to customize the core system. A plug-in can be created as a generic interface to the KSX such that it conforms to a known data transfer standard, such as a web services standard, XML, SNMP, or other recognized standard. Plug-ins can also be created to interface non-standard data streams from systems, and thus the high levels of flexibility and adaptability that plug-ins afford the KSX can be achieved.
The subject matter described herein may be implemented using a computer program product comprising computer-executable instructions embodied in a computer-readable medium. Exemplary computer-readable media suitable for implementing the subject matter described herein include chip memory devices, disk memory devices, programmable logic devices, application specific integrated circuits, and downloadable electrical signals. In addition, a computer program product that implements the subject matter described herein may be located on a single device or computing platform or may be distributed across multiple devices or computing platforms.
Objects of the present subject matter having been stated hereinabove, other objects will become evident as the description proceeds when taken in connection with the accompanying drawings as best described hereinbelow.
Preferred embodiments of the present subject matter will now be explained with reference to the accompanying drawings, of which:
Message database 114 stores messages to be delivered to individuals or other knowledge switches when a scenario is triggered. Profiles manager 120 stores contact profiles to determine how a message is to be delivered to a recipient. If the contact profile does not require contact, then the message is placed into a construct referred to as a topic for later retrieval by the recipient via microbroadcasting portal 118. If the contact profile requires contact, the message is placed in a topic and a request is placed to delivery engine 116 to connect to recipient with his or her personal microbroadcast via a specified device and/or based on specified schedule. Delivery engine 116 is responsible for delivery of messages to recipients using information specified in their contact profiles and for interfacing with specific delivery devices via device-specific plug-ins 108.
Message engine 113 receives notifications from triggered scenarios and organizes them appropriately. Messages are then associated with a topic via a topic template and a contact profile for the intended recipient. The topic template may specify how a message should be presented. The contact profile may specify unique user preferences for delivering the message.
As stated above, content manager 111 merges data from different sensors with metadata identifying the source of the data using source plug-ins 104. The metadata that can be linked to the sensor data may include information about where a specific sensor is known to reside (geographical location, building, facility room, or other positional information), links back to knowledge item database 112 to other data that is known to be relevant to the context of the sensor data (links to historical data readings, links to data from other sensors in the same general region), current time and date information, context about the type of sensor collecting the data (such as thermostat, range of acceptable data readings, known standard limits), links to history data (when installed, offline times, repair records) and links to any previous points in history when this data was involved in triggering of a scenario.
The distribution of information may further be qualified by dynamic groups, asynchronous routing, and authentication and acknowledgement methods. For example, a dynamic group may be defined by a profile maintained by profiles manager 120. The profile for a dynamic group may contain an identifier, such as “first shift management team,” which is linked with the profiles of individuals that are current members of the management team so that alerts that are generated during the first shift will be distributed to the appropriate individuals and in the appropriate formats. Asynchronous routing refers to a routing method defined in an individual's profile where a message is first attempted to be delivered to the individual. Delivery may be reattempted for a time period defined in the individual's profile. If delivery fails within the time period, delivery may be attempted to a fallback individual defined within the first individual's profile. Authenticated delivery refers to the requiring an individual to provide credentials as a condition to receiving a message. Confirmed delivery refers to requiring the recipient to confirm receipt of a message by providing an acknowledgement when a message is received an understood. These aspects of information delivery may be controlled by delivery engine 116 under the control of profiles provided by profiles manager 118.
The system illustrated in
Example of a Sensor Plug-in:
“Foo Bar” company provides a weather station aggregator sensor system, which periodically reports temperature, humidity, and wind speed recorded by a number of remote devices. Using an API provided by the developer of knowledge switch 100, the plug-in developer:
Similar plug-ins may be provided for extending the functionality scenario engine 122, delivery engine 116, and message engine 118 illustrated in
Providing a core set of modules that is sensible through plug-ins allow the size of the system to be kept to an potable minimum while enabling full functionality for real world deployments. As new sensors are brought on line and old sensors are taken off line, the plug-in layer can be added to or removed from as needed to keep the deployment from becoming top heavy and having to maintain processing logic for hundreds or even thousands of sensors which do not figure in to a particular deployment. More importantly, the flexibility derived from the plug-in layer and the ability to abstract sensors into a real world deployment over time allows newly created sensors that did not exist at the time the system was conceived to be able to be added with real time addition of a new plug-in that is associated with a sensor.
The system illustrated in
As described above, in peer-to-peer deployments, communications may be initiated through publish and subscribe methodologies. In hierarchical deployments, communications between knowledge switches may be initiated by higher nodes querying lower nodes or lower nodes transmitting accumulated data from satisfied rules to higher nodes. Within systems deployed using an area of awareness, communications between systems may be initiated by the geographical functional boundaries from separate systems overlapping or triggering a conversation between systems to determine if and what information needs to be exchanged. This is a hybrid of the two previous systems in that a triggering event initiates the initial communications. In instance of a railway, a train may have a knowledge switch located on board that is traveling through a specified path, such as path 800. Along the journey, the geographic areas of awareness boundaries 804, 806, 808, and 810 may intersect or not intersect with area of awareness boundary 802 of knowledge switch 100K. When intersection occurs, the stationary systems may communicate with mobile system 100K. These stationary systems may represent car reporting stations or track repair warnings located at stations. The stations may also represent other transit systems, like another train that could relay operating conditions weather, notices, and other relevant information regarding where they have been and where they are traveling.
In the pseudo-code scenario example above, the code determines whether the motion.detected field in a motion sensor knowledge item is true. If this field indicates that motion was detected, the content manager searches the knowledge item database for a camera knowledge item for the same location and time where the motion was detected. The content manager then calls a send function that invokes the delivery engine to send the camera image, the recording location, and the recording time to members of a contact list. Thus, using knowledge items and the exemplary scenario above, data from different sensors is merged with context metadata, the context metadata is used to locate and compare the data from the different sensors, and the data and the context metadata are communicated to an appropriate set of recipients when a rule is satisfied.
As stated above, the present subject matter may include a library of mathematical and other functional expressions usable to define logic implemented by knowledge switch 100. More particularly, this library may be available to scenario programmers to define scenarios usable by scenario engine 116 to operate on knowledge items stored in database 112 and perform or provide for performance of an action in response to a rule or policy being satisfied. The follow are examples of functional expressions that may be included in such a library:
Exemplary Scenario
The following is an example of a scenario that is written using the anynwithin( ) function illustrated in Table 1. The anynwithin( ) function determines if any number of events occur within a specific timeframe, and if any events occur, the expression is declared valid.
Explanation: Trigger when a camera detects motion and a check is transacted within 5 seconds (correlates a check transaction with a video clip)
In the code example above:
“Seconds(5)” is the timeframe within which the following events must occur, where it could also be Minutes(15), days(3) or years(2).
The following refinements and examples are intended to be within the scope of the subject matter described herein. For example, a knowledge switch may include one or more of the following capabilities:
The sensor plug-ins that extend the capabilities of the knowledge switch may interface may receive and store the data output from a first sensor and data from a second sensor which have no relationship to one another, where a sensor is defined as (but not limited to):
The content manager may provide the ability to merge the received data from the individual sensors with metadata that is representative of a real world context where the contextual metadata is (but is not limited to):
The scenario engine may provide the capability to define rules and policy definitions for sensor fusion by:
The scenario engine may, when a policy or rule is satisfied, initiate an action where the action can be (but is not limited to):
The content manager may generate a data object (called a knowledge item) which:
The delivery engine may transmit knowledge item(s) which:
The delivery engine may automatically transmit the knowledge item utilizing dynamic contact profile information which:
The dynamic contact information referred to in the preceding paragraph may include references for other profiles for other recipients to target if the initial recipient is not available. Such references may include:
The dynamic contact information referred to above may include a default timeframe to delay before proceeding to the next contact method and/or fallback recipient such that the original recipient has time to receive the message on a non-interactive device, get to an agreed to communications device, and appropriately respond before being skipped.
The delivery engine may provide secure, authorized, and authenticated transmission of knowledge items including
The delivery engine under control of the profiles provided by the profiles manager may provide the capability to define and utilize dynamic groups, which
The scenario engine may utilize libraries of function calls as a part of the evaluation criteria for the rule/policy definitions. These function libraries may include:
The subject matter described herein may include a distributed group of knowledge switch systems where:
A knowledge switch may provide the ability to extend each aspect of the system with software modules which can be added or removed in real-time that allow the modification or addition to existing system functionality without having to restart the base application.
It will be understood that various details of the present subject matter may be changed without departing from the scope of the present subject matter. Furthermore, the foregoing description is for the purpose of illustration only, and not for the purpose of limitation.
This application is a continuation-in-part of U.S. patent application Ser. No. 10/020,260, filed Dec. 14, 2001, which is a continuation-in-part of U.S. patent application Ser. No. 09/800,371, filed Mar. 6, 2001 (now U.S. Pat. No. 6,658,414), and this application further claims the benefit of U.S. Provisional Patent Application No. 60/655,152, filed Feb. 22, 2005, the disclosures of each of which are hereby incorporated herein in their entireties.
Number | Date | Country | |
---|---|---|---|
60655152 | Feb 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10020260 | Dec 2001 | US |
Child | 11359888 | Feb 2006 | US |
Parent | 09800371 | Mar 2001 | US |
Child | 10020260 | Dec 2001 | US |