FORM 2
THE PATENTS ACT, 1970
(39 of 1970)
&
THE PATENT RULES, 2003
COMPLETE SPECIFICATION
(See Section 10 and Rule 13)
Title of invention:
METHOD AND SYSTEM FOR NOTIFYING A USER SUBSCRIBED TO A PLURALITY OF SOFTWARE APPLICATIONS
APPLICANT:
Tata Consultancy Services Limited A company Incorporated in India under the Companies Act, 1956
Having address:
Nirmal Building, 9th floor,
Nariman point, Mumbai 400021,
Maharashtra, India
The following specification describes the invention and the manner in which it is to be performed.
CROSS-REFERENCE TO RELATED APPLICATIONS AND PRIORITY
[001] The present application claims priority from an Indian patent application
number 3587/MUM/2013.
TECHNICAL FIELD
[002] The present disclosure described herein, in general, relates to systems and
methods for notifying a user subscribed to a plurality of software applications.
BACKGROUND
[003] Smart notification systems have been deployed and being utilized in varied
applications, especially in applications pertaining to smart cities. The Smart notification systems may generate either generic event alerts like weather alerts which may be related to a city or specific event alerts like lift `out-of-order' which may be specific to a particular building. In this context, events may be considered as a cause, whereas notifications may be considered to be an effect corresponding to the cause. Therefore, any notification system may be considered to be event-driven. A typical event may comprise attributes like time, location, involved entities and description. In one example, a gun shooting and robbery can be considered to be an event E which has location L, time T and description D which are all well described; however finding involved entities (i.e. persons who will be affected by this event) is a non-trivial problem. Specifically, there is challenge in identification of the relevant entities those need to be affected and notified accordingly corresponding to various events.
[004] One of the existing methods to identify the relevant entities corresponding to a
specific event may include analyzing persons’ present and future context, the persons' profile and learned locomotion pattern. In one example, consider a person P is heading towards a location L or is currently on the location L, the person P should receive an alert. If the person P's home or office is near the location L, the person P should be alerted. If the person P has a child who is heading towards the location L or is at the location L, the person P should be alerted. If usually around time T, the person P visits the location L then an alert can be transmitted to the person P if the person P's current location is not far from the location L. So a rule-based solution can be foreseen from these examples. Further, much research has been carried out on the notification systems that are targeted at specific domains. The different
types of notifications can be like public alerts, social or sports event alerts, news feeds, health alerts and personal alerts. The main problem in the existing systems may be that the notification systems exist as disconnected solutions. Moreover, most of the notification systems either do not address or partially address the needs of semantically rich context-aware and personalized notifications.
SUMMARY
[005] This summary is provided to introduce aspects related to systems and methods
for notifying a user subscribed to a plurality of software applications and the aspects are further described below in the detailed description. This summary is not intended to identify essential features of the claimed disclosure nor is it intended for use in determining or limiting the scope of the claimed disclosure.
[006] In one implementation, a method for notifying the user subscribed to a
plurality of software applications is disclosed. The method may comprise receiving data and storing the data in a database. In one embodiment, the data may be received from the plurality of sources. The plurality of sources may comprise at least one of a user interface (UI), an application programming interface (API), a database management system (DBMS) using a wrapper layer, or resource description framework (RDF) stores or flat RDF files, a plurality of sensors, a web comprising social web and semantic web, and a global positioning system (GPS). Further, the data may comprise a user profile data, a geo-spatial data, a social and semantic data, a sensor data, and a learnt behavior data. In one embodiment, the user profile data is received from the user through the user interface (UI), the geo-location data is received through the GPS, the social and semantic data is received through the APIs, and the sensor data may be received from the plurality of sensors comprising a hard sensor and a soft sensor. The hard sensor data may comprise of data related to temperature obtained from thermometer and whereas the soft sensor data may comprise of Rich Site Summary (RSS) feeds about weather alert. The method may further comprise classifying the plurality of software applications into a plurality of groups based on a first set of data and a second set of data. In one embodiment, the first set of data may be common among software applications in a group. Moreover, the second set of data may be common among two or more groups of the plurality of groups. Further, the method may comprise assigning a memory area of the database to each group of software applications. The memory area may store the first set of
data corresponding to each group. The method may further comprise identifying one or more groups associated with one or more memory areas based upon a pre-registered query and a pre-registered rule executed on the one or more memory areas of the database. In one embodiment, the pre-registered query and a pre-registered rule are stored in a repository of the database. In one embodiment, the one or more groups of the software applications are identified based upon the first set of data or the second set of data of the database. Further, based on identified groups a notification alert may be generated. The notification alert may be associated with the one or more software applications. In one embodiment, the method may comprise passing the data through a knowledge unification layer (KUL) in order to convert the data to a uniform structured form by applying machine learning and information extraction technique or both. A simple example is conversion of a RSS feed of form “Gun Shooting is going on at StreetX” to the RDF form “ ; ” based on keyword matches against a dataset of city locations and crime types.
[007] In another implementation, a system for notifying the user subscribed to a
plurality of software applications is disclosed. The system may comprise a processor and a memory coupled to the processor for executing a plurality of modules stored in the memory. The plurality of modules may comprise a receiving module, a stream reasoning module, and a notification generation module. The receiving module may be configured to receive and store data associated with the user in a database. In one embodiment, the data may be received from the plurality of sources. The stream reasoning module may be configured to classify the plurality of software applications into a plurality of groups based on a first set of data and a second set of data. The first set of data is common among software applications in a group, whereas the second set of data is common among two or more groups of the plurality of groups. In one embodiment, the stream reasoning module may further configured to assign a memory area of a database to each group, wherein the memory area stores the first set of data corresponding to each group. Furthermore, the stream reasoning module may further configured to identify one or more groups associated with one or more memory areas based upon a pre-registered query executed on the one or more memory areas of the database. The one or more groups are identified based upon the first set of data or the second set of data. The notification generation module may be configured to generate a notification alert associated with one or more software applications classified in the one or more groups.
[008] In yet another implementation, a non-transitory computer readable medium
embodying a program executable in a computing device for notifying the user subscribed to a plurality of software applications is disclosed. The computer program may comprise a program code for storing data associated with the user in a database. In one embodiment, the data may be received from the plurality of sources. The computer program may further comprise a program code for classifying the plurality of software applications into a plurality of groups based on a first set of data and a second set of data, wherein the first set of data is common among software applications in a group, wherein the second set of data is common among two or more groups of the plurality of groups. Further, the computer program may comprise a program code for assigning a memory area of a database to each group, wherein the memory area stores the first set of data corresponding to each group. The computer program may further comprise a program code for identifying one or more groups associated with one or more memory areas based upon a pre-registered query executed on the one or more memory areas of the database. The one or more groups are identified based upon the first set of data or the second set of data. The computer program may further comprise a program code for generating a notification alert associated with one or more software applications classified in the one or more groups.
BRIEF DESCRIPTION OF THE DRAWINGS
[009] The detailed description is described with reference to the accompanying
figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The same numbers are used throughout the drawings to refer like features and components.
[0010] Figure 1 illustrates a network implementation of a system, hereinafter referred
to as Universal Notification System (UNS), for notifying a user subscribed to a plurality of software applications, in accordance with an embodiment of the present disclosure.
[0011] Figure 2 illustrates the Universal Notification System (UNS), in accordance
with an embodiment of the present disclosure.
[0012] Figure 3 illustrates architecture of the Universal Notification System (UNS)
based on Stream Reasoning, in accordance with an embodiment of the present disclosure.
[0013] Figure 4 illustrates interconnectivity of software applications, in accordance
with an embodiment of the present disclosure.
[0014] Figure 5 illustrates a method for notifying a user subscribed to a plurality of
software applications, in accordance with an embodiment of the present disclosure.
DETAILED DESCRIPTION
[0015] Systems and methods for notifying a user subscribed to a plurality of software
applications are described. The systems and methods enable a universal notification system (UNS) facilitating sharing of data or knowledge (hereinafter referred to as data) between the plurality of software applications. This is in view of the fact that output from one software application may have some use in another software application. Functionally similar or closely inter-related software applications may be grouped together to take advantage of common shared data and inter-dependence, while dissimilar software applications may be grouped far apart. However, the UNS facilitate a connection between the groups for occasional dependency. This is based on principle of high cohesion and low coupling. Further, the end-user will only have to interface with a single point of User Interface (UI) where the personal details, preferences and settings may be entered and accordingly notification alerts may be received by the user. Administrators may be enabled to manage the UNS from the single point of the user interface. Similarly, developers may deploy software applications in the UNS (after selecting required data) with an option to connect with existing software applications.
[0016] In order to facilitate the usability of the administrators, the developers and the
end user over the single UI, the universal notification system (UNS) is provided. The UNS may comprise a stream reasoning module applying a logical reasoning, in real time or in a near real time, on multiple heterogeneous, gigantic and inevitably noisy data streams to support the decision process of extremely large numbers of concurrent users. The basic requirement of the UNS is to enable high relevance and minimum latency of alerts. Usage of a semantically rich knowledge in the UNS ensures high relevance, whereas using stream processing techniques will support latency requirements.
[0017] In one embodiment, the UNS may support integration of any type of software
application. Additionally, the UNS may be enabled to support interplay of the data between varied software applications along with processing of massive, heterogeneous data (including streams), thereby enabling the UNS to serve a large number of concurrent users. The stream reasoning module may be divided into Memory Areas (MAs) each for functionally similar
software applications. The Memory Areas (MAs) represents working memory (WM) of the database, where static and dynamic data exists. Further pre-registered rules and pre-registered queries may be executed on the MAs to produce results. The results indicate notification alerts for the plurality of software applications. It may be understood that the notification alerts may comprise public alerts, social or sports event alerts, news feeds, health alerts and personal alerts.
[0018] While aspects of the described UNS for notifying the user subscribed to the
plurality of software applications may be implemented in any number of different computing systems, environments, and/or configurations, the embodiments are described in the context of the following exemplary system.
[0019] Referring now to Figure 1, a network implementation 100 of a system 102 for
notifying a user subscribed to the plurality of software applications is illustrated, in accordance with an embodiment of the present disclosure. In one embodiment, the UNS may be configured to receive data and store the data in a database. The UNS may be further configured to receive the data from the plurality of sources. Further, the UNS may be configured to classifying the plurality of software applications into a plurality of groups based on a first set of data and a second set of data of the database. In one embodiment, the first set of data may be common among software applications in a group. Moreover, the second set of data may be common among two or more groups of the plurality of groups. Further, the method may comprise assigning the memory area of the database to each group of software applications, wherein the memory area stores the first set of data corresponding to each group. The UNS may further be configured to identify one or more groups associated with one or more memory areas based upon the pre-registered query executed on the one or more memory areas of the database. In one embodiment, the one or more groups of the software applications are identified based upon the first set of data or the second set of data of the database. Further, based on identified groups a notification alert is generated, wherein the notification is associated with the one or more software applications.
[0020] Although the present disclosure is explained considering that the system 102 is
implemented as a server, it may be understood that the system 102 may also be implemented in a variety of computing systems, such as a laptop computer, a desktop computer, a notebook, a workstation, a mainframe computer, a network server, and the like. In one implementation, the system 102 may be implemented in a cloud-based environment. It will be understood that the system 102 may be accessed by multiple users through one or more
user devices 104-1, 104-2…104-N, collectively also referred to as a user device 104, or a user 104, hereinafter, or applications residing on the user devices 104. Examples of the user devices 104 may include, but are not limited to, a portable computer, a personal digital assistant, a handheld device, and a workstation. The user devices 104 are communicatively coupled to the system 102 through a network 106.
[0021] In one implementation, the network 106 may be a wireless network, a wired
network or a combination thereof. The network 106 can be implemented as one of the different types of networks, such as intranet, local area network (LAN), wide area network (WAN), the internet, and the like. The network 106 may either be a dedicated network or a shared network. The shared network represents an association of the different types of networks that use a variety of protocols, for example, Hypertext Transfer Protocol (HTTP), Transmission Control Protocol/Internet Protocol (TCP/IP), Wireless Application Protocol (WAP), and the like, to communicate with one another. Further the network 106 may include a variety of network devices, including routers, bridges, servers, computing devices, storage devices, and the like.
[0022] Referring now to Figure 2, the system 102 is illustrated in accordance with an
embodiment of the present disclosure. In one embodiment, the system 102 may include at least one processor 202, an input/output (I/O) interface 204, and a memory 206. The at least one processor 202 may be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units, state machines, logic circuitries, and/or any devices that manipulate signals based on operational instructions. Among other capabilities, the at least one processor 202 is configured to fetch and execute computer-readable instructions stored in the memory 206.
[0023] The I/O interface 204 may include a variety of software and hardware
interfaces, for example, a web interface, a graphical user interface, and the like. The I/O interface 204 may allow the system 102 to interact with a user directly or through the user device 104. Further, the I/O interface 204 may enable the system 102 to communicate with other computing devices, such as web servers and external data servers (not shown). The I/O interface 204 can facilitate multiple communications within a wide variety of networks and protocol types, including wired networks, for example, LAN, cable, etc., and wireless networks, such as WLAN, cellular, or satellite. The I/O interface 204 may include one or more ports for connecting a number of devices to one another or to another server.
[0024] The memory 206 may include any computer-readable medium known in the
art including, for example, volatile memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM), and/or non-volatile memory, such as read only memory (ROM), erasable programmable ROM, flash memories, hard disks, optical disks, and magnetic tapes. The memory 206 may include modules 208 and data 210.
[0025] The modules 208 include routines, programs, objects, components, data
structures, etc., which perform particular tasks, functions or implement particular abstract data types. In one implementation, the modules 208 may include a receiving module 212, a stream reasoning module 214, a notification generation module 216, and other module 218. The other module 218 may include programs or coded instructions that supplement applications and functions of the system 102.
[0026] The data 210, amongst other things, serves as a repository for storing data
processed, received, and generated by one or more of the modules 208. The data 210 may also include a data store 220 and other data 222. The other data 222 may include data generated as a result of the execution of one or more modules in the other module 218.
[0027] In one implementation, at first, a user may use the user device 104 to access
the system 102 via the I/O interface 204. The user may register themselves using the I/O interface 204 in order to use the system 102. The working of the system 102 using the plurality of modules 208 along with other components is explained in detail referring to Figure 3 as explained below.
USER MODULE 304
[0028] Referring now to figure 3, in an embodiment, the user module 304 may form a
medium between the stream reasoning module 214 and the user 306; and may be responsible for gathering user's profile data and displaying relevant notification in user's UI of choice. Contextual learned behavior of the user 306 which may be in “user, context, user model” format, like places often visited under some context may be verified by the user 306 before adding as profile data. The data associated with the user 306 may be captured by the receiving module 212, details of which are explained hereinafter as below.
RECEIVING MODULE 212
[0029] The receiving module 212 may be configured to receive and store the data
associated with the user in the database 220. In one embodiment, the data may be received from the plurality of sources. Further, the data may comprise a user profile data, a geo-spatial
data, a social and semantic data, a sensor data, and a learnt behavior data. In another embodiment, the user profile data may be received from the user through the user interface (UI), the geo-spatial data may be received through the GPS sensors, the social and semantic data may be received through the APIs, and the sensor data may further comprises the hard sensor data and, the soft sensor data. The hard sensor data may comprise of data related to temperature obtained from thermometer and whereas the soft sensor data may comprise of Rich Site Summary (RSS) feeds about weather alert. Further, in one embodiment, the data may be received from other sources including a database management system (DBMS) using a wrapper layer or resource description framework (RDF) stores or flat RDF files, a web comprising social web and semantic web, a global positioning system (GPS) and a plurality of sensors. In one more aspect, in learnt behavior data 308, the contextual learned behavior of the user like places often visited under some context is stored.
[0030] The data may be passed through a knowledge unification layer (KUL) 316 in
order to convert the data to a uniform structured form by applying information extraction technique and machine learning or both before sending the data to the stream reasoning module 214 for further processing, the details of which are explained in detail hereinafter.
STREAM REASONING MODULE 214
[0031] In one embodiment, the stream reasoning module 214 may be configured to
classify the plurality of software applications into a plurality of groups based on a first set of data and a second set of data. In one aspect, the first set of data is common among software applications in a group, and wherein the second set of data is common among two or more groups of the plurality of groups. The classification of the software applications is further explained with an example as described below.
[0032] In this example, consider the software applications subscribed by the user 306
include Facebook®, LinkedIn®, Orkut®, Twitter®, Naukri.com®, NDTV®, and ToI®. Further,
consider the data received by the receiving module 212 comprises name, family information, personal contact details, sex, birth date, daily route information, and social networking information. The stream reasoning module 214 may classify the software applications into at least three groups based on the nature of the software applications. Specifically, social networking applications which may comprise Facebook®, Orkut®, and Twitter® may be grouped together to form a social networking application group. Similarly, professional websites such as LinkedIn®, and Naukri.com® may be grouped together to form a
professional website group. Further, NDTV® and ToI® may be grouped together to form a news feed alert application group.
[0033] In this example, it may be observed that the social networking application
group may share set of data like name, sex, birth date, family information, wherein this set of data will be common for social networking application group. Similarly, the professional website group may share other set of data like daily route information, date of birth, personal contact details, wherein this other set of data will be common for professional website group. Here the set of data being common to the social networking application group and the other set of data being common to the professional website group forms the first set of data. Further, the data related to personal contact details may be required by the social networking application group, therefore this type of data forms the second set of data in the database 220. Thus, based upon the above logic, the plurality of software applications may be grouped into a plurality of groups.
[0034] Subsequent to the grouping of the plurality of software applications, the
stream reasoning module 214 may be configured to assign memory area (MA) to each group of the plurality of groups. The Memory Areas (MAs) represents working memory (WM) of the database 220, where the static data and the dynamic data exist. Further, figure 4 illustrates interconnectivity of software applications where similar software applications may be gathered together based on the first set of data. The second set of data may be shared among similar applications in a group. The architecture of interconnectivity of software applications as shown in figure 4, the pre-registered queries and the pre-registered rules form the medium by which the various software application groups get logically connected. The pre-registered rules and pre-registered queries may be executed on the MAs to produce results. The pre-registered queries and the pre-registered rules may form the part of the repository of the database 220. The results obtained after executing the pre-registered queries may generate notification alerts for the plurality of software applications. The execution of the query and the rule in order to obtain the results related to the notification alerts is further explained with an example as described below.
[0035] According to an exemplary embodiment of the present disclosure, consider
two software applications subscribed by the user 306 is a city event alert application and a meeting application. In this embodiment, the city event alert application and the meeting application may be associated with MA1 as shown in figure 3. If the user 306 who is also an attendee of a meeting schedule in a city is also affected by an event associated with the city,
then an entailment generated by the alert application using the pre-registered queries and pre-registered rules may be used by the meeting application to mark the meeting to be delayed.
[0036] In another example, consider two software applications subscribed by the user
are electricity supply alert application and gas supply alert application associated with the MA1 and MA2 respectively, as illustrated in figure 3. Each of the electricity supply alert application and the gas supply alert application may have separate notification types such as consumption alerts like one have consumed more electricity than pre-set. However, such an alert may not be generated at the low threshold pre-set if MA1 knows that gas supply has stopped due to strike, which is a rare event from MA2, and high electricity usage is normal. The working of the execution of the pre-registered rules and pre-registered queries using the stream reasoning module 214 is further explained with the help of an example.
[0037] In one exemplary embodiment, consider an attendee arranges a meeting and
invites other attendees by using an online calendar. On the day of the meeting, if certain events happen to the attendee, the information is circulated to all the other attendees. This illustrates the case where the affected attendee due to said event will get the notification because of a public alerting app's registered logic, and the other attendees will get the notification because of a meeting app's registered logic. The present example demonstrates the concept of functionally cohesive apps of the UNS. In the present example, it may be observed that since App 1 and App 2 belongs to the same memory area, therefore App 1 and App 2 shares common `event' data; whereas the data about the meeting is only specific to App 2. In one embodiment, the present disclosure utilizes the rules and SPARQL queries in order to execute the logic of the software applications to conclude that the data entailed in App 1 is of use in App 2. This is further explained in detail by way of an example as given below:
App 1. Personalized Alert Application Logic:-Query: select ?person ?event where {?event e:affects ?person}
Rule: (?person s:isAt ?loc)(?event s:at ?loc) -> (?event e:affects ?person) App 2. Meeting use case Application Logic:-Query: select ?meeting ?event ?person where {?person e:isAnAttendeeAt ?meeting . ?event e:affects ?person}
Thus, based on the above example, it may be observed that the system 102 associates App 1 and App2 based on the queries and rules. Since the rule specific to App1 infers that both the App 1 and App2 use the same MA, no rule may be required corresponding to App 2 for deriving facts.
[0038] In one embodiment, a Knowledge Manager 326 of the stream reasoning
module 214 may be responsible for passing the data or the knowledge to the MAs and inter-knowledge communication between MAs. The inter-knowledge communication between MAs may be achieved by registering the pre-registered query to find patterns of facts for use in other MAs. The patterns of fact may be interpreted as either the first set of data or the second set of data of the database. Only portions of the data required by any MA may be loaded, rest may be kept in the Knowledge Store 330 for future use. The repository 332 stored in the database 220 may comprise of the pre-registered rules and the pre-registered queries.
[0039] In one exemplary embodiment of the present disclosure, performance of the
UNS was tested using a 3GHz Intel Core2Duo Processor with 2 GB RAM. In this embodiment, Washington D.C., of United States of America (USA) was selected as a target smart city whose dataset was used to carry out the experiments. The data included Open Street Map geospatial data and simulated profile data of 2,000 citizens. The UNS monitored live crime feeds while context data of citizens was posted by simulation. Real recorded data was played back to simulate events in city so as to get matches of events with user's data in experiments. Two metrics namely response time and processing time were used. The response time is the average difference in time between an event actually happening (detected by the UNS) and the time it is shown in the UI of the relevant user. The processing time is the average time taken to fire the rules and run corresponding query due to insertion of an event in the memory area. The response time and processing time obtained are 2.5 s and 8.5 ms, respectively.
[0040] In another aspect of the present disclosure, dynamic change of logic of the
software application may be supported for each software application. Considering the case where logic is expressed in form of SPARQL like the queries and the rules, the same may be changed at run-time by updating the old logic attached to a working memory with the new one. So a query Q1 can be changed to Q2 if requirements are such:-There are 2 cases in such a query change. And third case being a combination of both these cases:-
Case 1: Query numeric value changes
Query Q1:- select ?event where {?event ?loc. ?loc ?noOfCars. filter( ?noOfCars > 1000 ) }
Query Q2:- select ?event where {?event ?loc. ?loc ?noOfCars. filter( ?noOfCars > 2500 ) }
Case 2: Query pattern requirement changes
Query Q1:- select ?event where {?event ?loc. ?person ?loc}
Query Q2:- select ?event where {?event ?loc. ?person ?loc}
Case 2 requires more computation than case 1, as simply changing the logic bonded to a working memory may not help, because the data required to satisfy the pattern might not be in the software application group’s data which may be the first set of data or second set of data; it may be in common shared data, or in the first set of data or second set of data of some other application group. Knowledge Manager 326 in Figure 3 keeps track of the data sets (the first set of data or the second set of data) in a registry and when one set is not available in the working memory of an software application group, but is required by an software application due to logic change, the same may be fetched from the common shared data or first set of data from other application group by looking up the registry. Also considering some other cases, if it is found that the logical change demanding new set(s) needs a relatively high volume of data instances present in another software application group, and then the present software application may be shifted to that software application group. The data instances satisfying the set if no longer needed by any other software application which is detected by registry of Knowledge Manager 326 in the software application group may be removed to save memory.
[0041] Further, in another aspect of the present disclosure, strategies to share common data among various software applications for reusability of the data are disclosed, when a software application is registered, updated or removed from the UNS, Knowledge Manager 326 checks the data and the software application grouping based on the policies explained as-Case 1: If the data needed by the software application is already loaded in some software application group, then it will be better to assign the software application to that particular software application group. If the data is in multiple software application groups, then the one
with the least memory consumption will be assigned. If the data is not loaded in any software application group, a fresh group with current software application will be created.
Case 2: If software application was in a unary group, that group will be deleted on removal of that software application. If software application was in a group with other software applications, then the data needed just by that software application will be unloaded. If deleting the data of that software application makes a group spurious, then the other existing software applications may be shifted to another similar group if possible (merging with another similar group with low memory load).
A combination of strategies for cases 2 and 3 may be applied.
DEVELOPER MODULE 318
[0042] The developer module 318 may form a point of interaction between developer 322 and the stream reasoning module 214. The developer 322 may write new rules/queries by selecting the data and ontology on which the rules/queries will be run. The control to modify the software application logic lies only with that particular software application developer 322 and the system administrator 324.
[0043] Furthermore, the strategies for a developer 322 to share and reuse logic are also disclosed in the present disclosure. When the developer 322 is trying to register a new software application or update a software application, the developer 322 may choose from an existing list of software application logic expressed in form of the queries and the rules that is used in some other software applications. The developer 322 may have a black box view of the logic as well, i.e. the developer 322 might be concerned with only the output of one software application and plug it as an input to his software application. This needs re-usage rights and grants for each software application. The developer 322 can not only see what software application’s output might be of use to him; but also get suggestions what other software applications may get benefitted by current software applications output. There may be a mutual agreement between the developers 322 of different software applications for sharing logic, to prevent unauthorized usage. When the developer 322 wants to remove a logical expression, first logical connectivity is checked, i.e., whether some other software applications use the logic or not; if none uses, then the software application can be easily deleted. In the other case, the software application logic will be retained so that other dependent software applications do not get affected by its removal. The developers 322 will
be able to see what are the outputs and inputs of other software applications. This will lead to collaborative software application development.
ADMINISTRATOR MODULE 320
[0044] The administrator module 320 forms an interface between stream reasoning module 302 and the administrator 324 of the UNS. The responsibilities of the administrator 324 include plugging ontologies, selecting apt data sources, adding/deleting the rules and queries from/to repositories 332, starting/stopping the stream reasoning module 214 , monitoring the developer resources and the software applications and carrying out normal administrative tasks.
NOTIFICATION GENERATION MODULE 216
[0045] The notification generation module 216 configured to generate a notification alert associated with the one or more software applications classified in the one or more groups.
[0046] Exemplary embodiments discussed above may provide certain advantages. Though not required to practice aspects of the disclosure, these advantages may include those provided by the following features.
[0047] Some embodiments of the present disclosure allow different software notification applications to connect to share data or knowledge.
[0048] Some embodiments of the present disclosure that allow dynamic change of logic for each software application.
[0049] Some embodiments of the present disclosure facilitate strategies to share common data among software applications for reusability and meeting resource constraints.
[0050] Some embodiments of the present disclosure allows single user interface for varied software applications.
[0051] Some embodiments of the present disclosure facilitate provision for data entered or learned for one software application can be used by other software applications.
[0052] Some embodiments of the present disclosure allow the administrators in the system a managerial control of the data and the software applications.
[0053] Referring now to Figure 5, a method 500 for identifying a sensor, from a plurality of sensors, to be deployed in a physical environment is shown, in accordance with an embodiment of the present disclosure. The method 500 may be described in the general
context of computer executable instructions. Generally, computer executable instructions can include routines, programs, objects, components, data structures, procedures, modules, functions, etc., that perform particular functions or implement particular abstract data types. The method 500 may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
[0054] The order in which the method 500 is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method 500 or alternate methods. Additionally, individual blocks may be deleted from the method 500 without departing from the spirit and scope of the disclosure described herein. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. However, for ease of explanation, in the embodiments described below, the method 500 may be considered to be implemented in the above described system 102.
[0055] At block 502, the data 212 associated with the user 306 may be stored in the database 220. The data may be received from a plurality of sources.
[0056] At block 504, classification of the plurality of software applications into a plurality of groups based on a first set of data and a second set of data.
[0057] At block 506, assigning a memory area of the database 220 to each group.
[0058] At block 508, one or more groups associated with one or more memory areas may be identified based upon a query executed on the one or more memory areas of the database 220.
[0059] At block 510, a notification alert associated with one or more software applications may be generated, wherein one or more software applications may be classified in the one or more groups.
[0060] Additionally, the method 500 may further comprise of passing the data through the KUL in order to convert the data to a uniform structured form by applying information extraction technique and machine learning or both. Further the method 500 may comprise the updating the pre-registered queries thereby updating the classification of the software application.
[0061] Although implementations for methods and systems for the user subscribed to a plurality of software applications have been described in language specific to structural features and/or methods, it is to be understood that the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as examples of implementations for receiving the data associated with the user, classifying the plurality of software applications, assigning the memory area of the database to each group, identifying one or more groups associated with one or more memory areas based upon the pre-registered query and the pre-registered rule and thereby generating the notification alert associated with one or more software applications.
WE CLAIM:
1. A method for notifying a user subscribed to a plurality of software applications, the
method comprising:
storing data associated with the user in a database;
classifying the plurality of software applications into a plurality of groups based on a first set of data and a second set of data, wherein the first set of data is common among software applications in a group, wherein the second set of data is common among two or more groups of the plurality of groups;
assigning a memory area of a database to each group, wherein the memory area stores the first set of data corresponding to each group;
identifying one or more groups associated with one or more memory areas based upon a pre-registered query and a pre-registered rule executed on the one or more memory areas of the database, wherein the one or more groups are identified based upon the first set of data or the second set of data; and
generating a notification alert associated with one or more software applications classified in the one or more groups.
2. The method of claim 1, wherein the data is received from a plurality of sources, and
wherein the plurality of sources comprises at least one of a user interface (UI), an application
programming interface (API), a database management system (DBMS) using a wrapper layer
or resource description framework (RDF) stores or flat RDF files, a plurality of sensors, a
web comprising social web and semantic web, and a global positioning system (GPS).
3. The method of claim 2, wherein the data comprises a user profile data, a geo-spatial
data, a social and semantic data, a sensor data, and a learnt behavior data, wherein the user
profile data is received from the user through UI, wherein the geo-location data is received
through the GPS sensor of a mobile device of the user, wherein the social and semantic data
is received through APIs, and wherein the sensor data further comprises a hard sensor data
and, a soft sensor data.
4. The method of claim 1, wherein the classification of the software application is further based on the pre-registered queries and the pre-registered rules.
5. The method of claim 1, wherein the database may comprise the repository storing the pre-registered queries and the pre-registered rule.
6. The method of claim 5, the pre-registered queries and the pre-registered rules may be updated thereby updating the classification of the software application.
7. The method of claim 1, wherein the data is passed through a knowledge unification layer (KUL) in order to convert the data to a uniform structured form by applying information extraction technique and machine learning or both.
8. A system for notifying a user subscribed to a plurality of software applications, the system comprising:
a processor; and
a memory coupled to the processor, wherein the processor is capable of executing a plurality of modules stored in the memory, and wherein the plurality of module comprising:
a storing module configured to receive and store data associated with the user in a database;
a stream reasoning module configured to
classify the plurality of software applications into a plurality of groups based on a first set of data and a second set of data, wherein the first set of data is common among software applications in a group, wherein the second set of data is common among two or more groups of the plurality of groups,
assign a memory area of a database to each group, wherein the memory area stores the first set of data corresponding to each group, and
identify one or more groups associated with one or more memory areas based upon a pre-registered query and a pre-registered rule executed on the one or more memory areas of the database, wherein the one or more groups are identified based upon the first set of data or the second set of data;
a notification generation module configured to generate a notification alert associated with one or more software applications classified in the one or more groups.
9. A non-transitory computer readable medium embodying a program executable in a computing device for notifying a user subscribed to a plurality of software applications, the program comprising:
a program code for storing data associated with the user in a database;
a program code for classifying the plurality of software applications into a plurality of groups based on a first set of data and a second set of data, wherein the first set of data is common among software applications in a group, wherein the second set of data is common among two or more groups of the plurality of groups;
a program code for assigning a memory area of a database to each group, wherein the memory area stores the first set of data corresponding to each group;
a program code for identifying one or more groups associated with one or more memory areas based upon a pre-registered query and a pre-registered rule executed on the one or more memory areas of the database, wherein the one or more groups are identified based upon the first set of data or the second set of data;
a program code for generating a notification alert associated with one or more software applications classified in the one or more groups.