Context-based navigation through a database

A processor-implemented method, system, and/or computer program product navigates through a database. A non-contextual data object, which ambiguously relates to multiple subject-matters, is associated with a context object to define a synthetic context-based object. The context object provides a context that identifies a specific subject-matter, from the multiple subject-matters, of the non-contextual data object. The synthetic context-based object is associated with a first data node and a second data node within a database. In response to receiving a request for identifying and retrieving data from a data node that has a same context as the first data node, data from the second data node is retrieved.

BACKGROUND

The present disclosure relates to the field of computers, and specifically to the use of databases in computers. Still more particularly, the present disclosure relates to a context-based search for data in data nodes in a database.

A database is a collection of data. Examples of database types include hierarchical databases, non-hierarchical databases, relational databases, graph databases, network databases, and object-oriented databases. Each type of database presents data in a non-dynamic manner, in which the data is statically stored.

SUMMARY

In one embodiment of the present invention, a processor-implemented method, system, and/or computer program product navigates through a database. A non-contextual data object, which ambiguously relates to multiple subject-matters, is associated with a context object to define a synthetic context-based object. The context object provides a context that identifies a specific subject-matter, from the multiple subject-matters, of the non-contextual data object. The synthetic context-based object is associated with a first data node and a second data node within a database. In response to receiving a request for identifying and retrieving data from a data node that has a same context as the first data node, data from the second data node is retrieved.

DETAILED DESCRIPTION

With reference now to the figures, and in particular toFIG. 1, there is depicted a block diagram of an exemplary system and network that may be utilized by and/or in the implementation of the present invention. Note that some or all of the exemplary architecture, including both depicted hardware and software, shown for and within computer102may be utilized by software deploying server150and/or a data storage system152.

Exemplary computer102includes a processor104that is coupled to a system bus106. Processor104may utilize one or more processors, each of which has one or more processor cores. A video adapter108, which drives/supports a display110, is also coupled to system bus106. System bus106is coupled via a bus bridge112to an input/output (I/O) bus114. An I/O interface116is coupled to I/O bus114. I/O interface116affords communication with various I/O devices, including a keyboard118, a mouse120, a media tray122(which may include storage devices such as CD-ROM drives, multi-media interfaces, etc.), a printer124, and external USB port(s)126. While the format of the ports connected to I/O interface116may be any known to those skilled in the art of computer architecture, in one embodiment some or all of these ports are universal serial bus (USB) ports.

As depicted, computer102is able to communicate with a software deploying server150, using a network interface130. Network interface130is a hardware network interface, such as a network interface card (NIC), etc. Network128may be an external network such as the Internet, or an internal network such as an Ethernet or a virtual private network (VPN).

Application programs144in computer102's system memory (as well as software deploying server150's system memory) also include a database navigation program (DNP)148. DNP148includes code for implementing the processes described below, including those described inFIGS. 2-8. In one embodiment, computer102is able to download DNP148from software deploying server150, including in an on-demand basis, wherein the code in DNP148is not downloaded until needed for execution. Note further that, in one embodiment of the present invention, software deploying server150performs all of the functions associated with the present invention (including execution of DNP148), thus freeing computer102from having to use its own internal computing resources to execute DNP148.

The data storage system152stores an electronic database, which in one embodiment is a hierarchical database, such as a graph database, a tree database, etc. In one embodiment, computer102contains the synthetic context-based object database storage system described and claimed herein, while the database storage system is stored within hierarchical database storage system152and/or within computer102.

Note that DNP148is able to generate and/or utilize some or all of the databases depicted in the context-based system200inFIG. 2.

With reference now toFIG. 2, a process for generating one or more synthetic context-based objects in a system200is presented. Note that system200is a processing and storage logic found in computer102and/or data storage system152shown inFIG. 1, which process, support, and/or contain the databases, pointers, and objects depicted inFIG. 2.

Within system200is a synthetic context-based object database202, which contains multiple synthetic context-based objects204a-204n(thus indicating an “n” quantity of objects, where “n” is an integer). Each of the synthetic context-based objects204a-204nis defined by at least one non-contextual data object and at least one context object. That is, at least one non-contextual data object is associated with at least one context object to define one or more of the synthetic context-based objects204a-204n. The non-contextual data object ambiguously relates to multiple subject-matters, and the context object provides a context that identifies a specific subject-matter, from the multiple subject-matters, of the non-contextual data object.

Note that the non-contextual data objects contain data that has no meaning in and of itself. That is, the data in the context objects are not merely attributes or descriptors of the data/objects described by the non-contextual data objects. Rather, the context objects provide additional information about the non-contextual data objects in order to give these non-contextual data objects meaning. Thus, the context objects do not merely describe something, but rather they define what something is. Without the context objects, the non-contextual data objects contain data that is meaningless; with the context objects, the non-contextual data objects become meaningful.

For example, assume that a non-contextual data object database206includes multiple non-contextual data objects208r-208t(thus indicating a “t” quantity of objects, where “t” is an integer). However, data within each of these non-contextual data objects208r-208tby itself is ambiguous, since it has no context. That is, the data within each of the non-contextual data objects208r-208tis data that, standing alone, has no meaning, and thus is ambiguous with regards to its subject-matter. In order to give the data within each of the non-contextual data objects208r-208tmeaning, they are given context, which is provided by data contained within one or more of the context objects210x-210z(thus indicating a “z” quantity of objects, where “z” is an integer) stored within a context object database212. For example, if a pointer214apoints the non-contextual data object208rto the synthetic context-based object204a, while a pointer216apoints the context object210xto the synthetic context-based object204a, thus associating the non-contextual data object208rand the context object210xwith the synthetic context-based object204a(e.g., storing or otherwise associating the data within the non-contextual data object208rand the context object210xin the synthetic context-based object204a), the data within the non-contextual data object208rnow has been given unambiguous meaning by the data within the context object210x. This contextual meaning is thus stored within (or otherwise associated with) the synthetic context-based object204a.

Similarly, if a pointer214bassociates data within the non-contextual data object208swith the synthetic context-based object204b, while the pointer216cassociates data within the context object210zwith the synthetic context-based object204b, then the data within the non-contextual data object208sis now given meaning by the data in the context object210z. This contextual meaning is thus stored within (or otherwise associated with) the synthetic context-based object204b.

Note that more than one context object can give meaning to a particular non-contextual data object. For example, both context object210xand context object210ycan point to the synthetic context-based object204a, thus providing compound context meaning to the non-contextual data object208rshown inFIG. 2. This compound context meaning provides various layers of context to the data in the non-contextual data object208r.

Note also that while the pointers214a-214band216a-216care logically shown pointing towards one or more of the synthetic context-based objects204a-204n, in one embodiment the synthetic context-based objects204a-204nactually point to the non-contextual data objects208r-208tand the context objects210x-210z. That is, in one embodiment the synthetic context-based objects204a-204nlocate the non-contextual data objects208r-208tand the context objects210x-210zthrough the use of the pointers214a-214band216a-216c.

Consider now an exemplary case depicted inFIG. 3, in which the data within a non-contextual data object308rare merely a combination of numbers and/or letters, and thus are meaningless. In this example, the data “104-106” contained within a non-contextual data object308r, standing alone without any context, are meaningless, identify no particular subject-matter, and thus are completely ambiguous. That is, “104-106” may relate to subject-matter such as a medical condition, a physics value, a person's age, a quantity of currency, a person's identification number, etc. In this example, the data “104-106” is so vague/meaningless that the data does not even identify the units that the term describes, much less the context of these units.

In the example shown inFIG. 3, then, data (i.e., the term/values “104-106”) from the non-contextual data object308r(found in a non-contextual data object database306) are associated with (e.g., stored in or associated by a look-up table, etc.) a synthetic context-based object304a, which is devoted to the subject-matter “hypertension”. The term/values “104-106” from non-contextual data object308ris also associated with a synthetic context-based object304b, which is devoted to the subject-matter “human fever” and a synthetic context-based object304n, which is devoted to the subject-matter “deep oceanography”. In order to give contextual meaning to the term/values “104-106” (i.e., define the term/values “104-106”) in the context of “hypertension”, context object310x, from a context object database312and which contains the context data “millimeters of mercury” and “diastolic blood pressure″” is associated with (e.g., stored in or associated by a look-up table, etc.) the synthetic context-based object304a. Thus, multiple data can provide not only the scale/units (millimeters of mercury) context of the values “104-106”, but the data can also provide the context data “diastolic blood pressure” needed to identify the subject-matter (hypertension) of the synthetic context-based object304a.

Associated with the synthetic context-based object304bis a context object310y, which provides the context/data of “degrees on the Fahrenheit scale” and “human” to the term/values “104-106” provided by the non-contextual data object308r. Thus, the synthetic context-based object304bnow defines term/values “104-106” as that which is related to the subject matter of “human fever”. Similarly, associated with the synthetic context-based object304nis a context object310z, which provides the context/data of “atmospheres” to the term/values “104-106” provided by the non-contextual data object308r. In this case, the generator of the synthetic context-based object database302determines that high numbers of atmospheres are used to define deep ocean pressures. Thus, the synthetic context-based object304nnow defines term/values “104-106” as that which is related to the subject matter of “deep oceanography”.

In one embodiment, the non-contextual data object may provide enough self-context to identify what the datum is, but not what it means and/or is used for. For example, consider the datum “statin” contained within the non-contextual data object408rfrom a non-contextual data object database406shown inFIG. 4. In the example shown inFIG. 4, datum (i.e., the term “statin”) from the non-contextual data object408ris associated with (e.g., stored in or associated by a look-up table, etc.) a synthetic context-based object404a, which is now part of a synthetic context-based object database402and which is devoted to the subject-matter “cardiology”. The term “statin” from non-contextual data object408ris also associated with a synthetic context-based object404b, which is devoted to the subject-matter “nutrition” and a synthetic context-based object404n, which is devoted to the subject-matter “tissue inflammation”. In order to give contextual meaning to the term “statin” (i.e., define the term “statin”) in the context of “cardiology”, context object410x, from context object database412and which contains the context data “cholesterol reducer” is associated with (e.g., stored in or associated by a look-up table, etc.) the synthetic context-based object444a. Thus, the datum “cholesterol reducer” from context object410xprovides the context to understand that “statin” is used in the context of the subject-matter “cardiology”.

Associated with the synthetic context-based object404bis a context object410y, which provides the context/datum of “antioxidant” to the term “statin” provided by the non-contextual data object408r. That is, a statin has properties both as a cholesterol reducer as well as an antioxidant. Thus, a statin can be considered in the context of reducing cholesterol (i.e., as described by the subject-matter of synthetic context-based object404a), or it may considered in the context of being an antioxidant (i.e., as related to the subject-matter of synthetic context-based object404b). Similarly, a statin can also be an anti-inflammatory medicine. Thus, associated with the synthetic context-based object404nis the context object410z, which provides the context/data of “anti-inflammatory medication” to the term “statin” provided by the non-contextual data object408r. This combination identifies the subject-matter of the synthetic context-based object404nas “tissue inflammation”.

Once the synthetic context-based objects are defined, they can be linked to specific nodes, including data nodes in a hierarchical database and/or a non-hierarchical database. With reference now toFIG. 5, an exemplary hierarchical database502, which is contained within a hierarchical database server such as data storage system152shown inFIG. 1, contains multiple data nodes504a-504j(indicating a “j” number of data nodes, where “j” is an integer).

In an embodiment in which the hierarchical database502is a graph database, such a graph database is a schema-less database in which data is organized as a set of nodes (objects) with properties (attributes or values). These nodes are linked to other nodes through edges, which describe the relationship between two nodes. Regardless of whether the hierarchical database502is a graph database or another type of hierarchical database, the data nodes504a-504jin the hierarchical database are organized hierarchically (as the name “hierarchical database” indicates). That is, data node504ais at the top of the hierarchy, and is a parent data node to lower data nodes504b-504cin a second tier. Similarly, data nodes504band504care over data nodes504d-504fin a third tier, while data nodes504d-504fare over data nodes504g-504jin a fourth (bottom) tier. Thus, each parent data node (from a higher tier) can have many children data nodes (from one or more lower tiers). The hierarchical database502depicted inFIG. 5contains parent nodes that have a 1-to-many relationship with their children, grandchildren, great-grandchildren, etc. nodes, in which each parent data node has many children, but each child data node has only one parent data node. Alternatively, the hierarchical database502may have children nodes that are linked to one or more parent nodes. Such a database (not depicted) is described as having parent/child nodes that have a many-to-many relationship.

Note that a higher hierarchy is defined as containing a parent data node that describes data from multiple child data nodes. Similarly, multiple child data nodes from a lower hierarchy contain data that is inclusively described by data in a parent node. This parent node may be shared by sibling data nodes (i.e., data nodes within a same hierarchy that are all subordinate to the parent node), and/or the parent node may be shared by multi-generational (i.e., children, grand-children, etc.) data nodes.

In a traditional hierarchical database search, the data nodes must be traversed sequentially whether navigating up or down through hierarchies. For example, in order to obtain the data from data node504jwhen starting at data node504a, the link from data node504ato data node504cmust first be traversed, followed by “traveling” down to data node504fand then finally arriving at data node504j. This “traveling” is accomplished by the use of pointers that create a data pathway from the data node504ato the target data node504j. In this example, the data pathway would look something like datanode504a/datanode504c/datanode504f/datanode504j. (Note that this type of data pathway may also be used by a non-hierarchical database, in which different data nodes are logically connected by the data pathway.) Traversal through nodes in the hierarchical database502by using such a data pathway is slow and expensive in terms of processing time/resources. However, one or more of the data nodes504a-504jshown in the hierarchical database502are novel in that they contain references to one or more of the synthetic context-based objects described herein.

For example, consider hierarchical database602shown inFIG. 6. The data nodes604a-604jare organized in a manner that is similar to that described above for data nodes504a-504jshown inFIG. 5. That is, data node604ais in a top tier/hierarchy, while data nodes604b-604care in the next lower tier/hierarchy, data nodes604d-604fare in the still lower tier/hierarchy, and data nodes604g-604jare in the bottom tier/hierarchy. As noted above, one or more of these data nodes also contain, or at least point to or otherwise relate to/from (e.g., via a lookup table, set of pointers, etc.) a particular synthetic context event node.

In the example shown inFIG. 6, assume that the top data node604acontains data about all types of “cardiovascular disease”. As suggested by the name, “cardiovascular diseases” include diseases of the heart (“cardio”) and blood vessels (“vascular”). As such, associating the synthetic context-based object404awith data node604aindicates that the context of data in the data node604ain one embodiment is “cardiology”. In order to find medication used to treat “atherosclerosis” (a disease related to “cardiology”), the present invention allows a user to “jump” to data node604j(containing data about medication used to treat atherosclerosis), rather than traversing through data nodes604cand604f. This “jumping” is accomplished by pointers606aand606b. Pointers606a/606bpoint from synthetic context-based object404a, which as described above contains the non-contextual data object408rfor “statin”, as well as the context object410xfor “cholesterol reducer”, which together give the context for the synthetic context-based object404a(“cardiology”).

Note that while all of the data nodes604a-604jare related to some variation of the context “cardiovascular disease”, only data nodes604aand604j(and in one embodiment, data nodes604cand604f) have been previously determined to be related to the context of “cardiology”. Data nodes604b,604d,604e,604g,604h, and604i, however, are all within the context of “vascular diseases”.

As described herein, “jumping” directly from data node604ato data node604jwithout traversing through data nodes604cand604f(e.g., through the use of pointers606a-606b, which point to a memory address, identifier, etc. used by data nodes604aand604f) allows data node604jto be located without the use of a node pathway from the data node604ato data node604j.

In one embodiment, the association of the context of the synthetic context-based object404awith the context of the data nodes604aand604jis manually accomplished by a user deciding that synthetic context-based object404aand these two data nodes604aand604jhave the same context (“cardiology”). However, in another embodiment, this correlation is performed intelligently by computer logic (e.g., DNP148shown inFIG. 1).

In one embodiment, this correlation is made by the computer logic data mining and analyzing mined data from data nodes604aand604j. For example, if certain combinations of words are found in both data nodes604aand604j, then computer logic (e.g., DNP148shown inFIG. 1) will determine that these nodes are related to the context of “cardiology”. Note, however, that this is not merely a data search for key words within data nodes604aand604j. That is, synthetic context-based object404awill point to data nodes604aand604jif there is a match of the context (“cardiology”, as determined by DNP148), rather than there simply being a match of key words found in data nodes604aand604j. In one embodiment, the context identifier (which is created after the context of the data node is determined) is not a word/term (e.g., “cardiology”), but rather is a flag, symbol, or other non-textual marker that indicates that data nodes604aand604jand synthetic context-based object404ashare a same context and/or subject matter.

Note that in one embodiment, in which the correlation of the particular synthetic context-based object and one or more data nodes is intelligently performed by computer logic, the context of one or more data nodes is independent of the actual data stored in the data node. That is, rather than determining the context of the data node according to the data itself (through data mining as described above), the context of the data node is determined by non-data factors.

In one embodiment, the non-data factor used to determine the context of the data stored within the data node is the source of the data that is stored in the data node. Thus, if the data that is stored within a data node came from a journal on cardiology, then the context of the data node would be “cardiology” rather than “vascular diseases”.

In one embodiment, the non-data factor used to determine the context of the data stored within the data node is the data channel that was used to populate the data node. For example, data delivered by a cell phone network is determined to have a different context than data delivered over a high-speed internet connection. That is, the cell phone network is more apt to deliver smaller amounts of data than the high-speed internet connection. Thus, if the term “heart” is found in a cell phone network transmission (e.g., a cell phone text message), the context of the term “heart” is less likely to be related to scientific details on how to perform heart surgery (which is more likely to be found in a data transmission on a high-speed internet connection) and is more likely to be related to “affection”.

In one embodiment, the non-data factor used to determine the context of the data stored within the data node is the type of device that is used to receive and/or store the data that populates the data node. For example, if the term “heart” is stored in a cell phone, the context is likely to be “affection.” If the term “heart” is stored in a tablet computer, the context is likely to be “mainstream news reports”. If the term “heart” is stored in a server of a medical school, the context is likely to be “surgical procedures” or other cardiology-related subjects.

In one embodiment, the non-data factor used to determine the context of the data stored within the data node is the format of the data that populates the data node. For example, if the data is a music file that contains a lyric “heart” (e.g., which is determined by converting the music file into a text file), then the context is likely to be “affection.” If the data is an original text file that contains the term “heart”, then the context is likely to be “medical science”.

While the present invention has been demonstrated in the context of a hierarchical database602inFIG. 6, the use of a synthetic context-based object to point to data nodes having a same context is also useful in non-hierarchical databases. For example, consider the non-hierarchical database702depicted inFIG. 7, which includes data nodes704a-704j(where “j” is an integer, indicating a “j” number of nodes), and which is contained within a non-hierarchical database server such as data storage system152shown inFIG. 1.

In one embodiment, the non-hierarchical database702is a relational database, which is a collection of data items (i.e., the data nodes704a-704j) organized through a set of formally described tables. A table is made up of one or more rows, known as “tuples”. Each of the tuples share common attributes, which in the table are described by column headings. Each tuple also includes a key, which may be a primary key or a foreign key. A primary key is an identifier (e.g., a letter, number, symbol, etc.) that is stored in a first data cell of a local tuple. A foreign key is typically identical to the primary key, except that it is stored in a first data cell of a remote tuple, thus allowing the local tuple to be logically linked to the foreign tuple.

In one embodiment, the non-hierarchical database702is an object oriented database, which stores objects (i.e., the data nodes704a-704j). As understood by those skilled in the art of computer software, an object contains both attributes, which are data (i.e., integers, strings, real numbers, references to another object, etc.), as well as methods, which are similar to procedures/functions, and which define the behavior of the object. Thus, the object oriented database contains both executable code and data.

In one embodiment, the non-hierarchical database702is a spreadsheet, which is made up of rows and columns of cells. Each cell (i.e., one of the data nodes704a-704j) contains numeric or text data, or a formula to calculate a value based on the content of one or more of the other cells in the spreadsheet.

Thus, as depicted inFIG. 7, data node704aand data node704jhave been deemed to be related to the context of “cardiology”. Thus, if a request is made (e.g., in the form of a data stream the contains data/instructions to be processed by a receiving processor) to identify and retrieve data from a data node that has the same context as that of data node704a, then a pointer706apoints to synthetic context-based object404a, which has a same context indicator/flag/symbol as that found in data node704a. This same context indicator/flag/symbol (for “cardiology”) is also found in data node704j, and thus pointer706bpoints to data node704j. The data from data node704jis then returned to the requester.

Note that in one embodiment, the request may simply be a request for any data node (hierarchical or non-hierarchical) that has a same context as that found in synthetic context-based object404a. In this embodiment, pointers706aand706bwould point to, and thus enable retrieval of data from, respective data nodes704aand704j.

With reference now toFIG. 8, a high-level flow chart of one or more steps performed by a computer processor to navigate through a hierarchical database through the use of a synthetic context-based object is presented. After initiator block802, a non-contextual data object is associated by a processor with a context object to define a synthetic context-based object (block804). This non-contextual data object ambiguously relates to multiple subject-matters. However, the context object provides a context that identifies a specific subject-matter, from the multiple subject-matters, of the non-contextual data object, as described herein.

As described in block806, the processor associates the synthetic context-based object with a first data node and a second data node within a hierarchical database, as depicted in exemplary detail above inFIG. 6. The first data node is in a first hierarchy in the hierarchical database, the second data node is in a second hierarchy in the hierarchical database, and the first hierarchy is higher than the second hierarchy. In one embodiment, at least one intermediate hierarchy is between the first hierarchy and the second hierarchy.

As described in block808, the processor receives a request for data that is in a data node that 1) is in a lower hierarchy in the hierarchical database than the first data node and 2) shares a context of the synthetic context-based object with the first data node. As described in block810, the processor utilizes a pointer from the synthetic context-based object to the second data node to retrieve data from the second data node. Thus, the second data node is located without use of a node pathway from the first data node to the second data node. The process ends at terminator block812.

In one embodiment, the processor associates the synthetic context-based object with all data nodes in a pathway from the first data node to the second data node within a hierarchical database. For example, a pointer606cpoints to a data node604c, and a pointer606dpoints to a data node604f, both of which are in intermediate hierarchies between data node604aand data node604jshown inFIG. 6. In one embodiment, all data nodes in these intermediate hierarchies (e.g., data node604cand data node604f) contain context data that is contained within the synthetic context-based object (e.g., synthetic context-based object404a). In another embodiment, however, these intermediate hierarchy data nodes do not contain context data that is contained within the synthetic context-based object. Thus, when retrieving data from these intermediate hierarchy data nodes that do not contain context data that is contained within the synthetic context-based object, the context from the synthetic context-based object is imposed on these intermediate hierarchy data nodes. In either embodiment, in response to receiving the request, the processor returns data from all data nodes in a pathway from the first data node to the second data node within the hierarchical database. In one embodiment, this imposition of the context on data nodes604cand604fresults in data from these nodes being returned whenever a data search, which is made via the synthetic context-based object404a, is performed.

In one embodiment, rather than associating the intermediate hierarchy data nodes with the context found in the synthetic context-based object, an association of the synthetic context-based object with specific data nodes in said at least one intermediate hierarchy in the hierarchical database is blocked by the processor. In this embodiment, when responding to the request for data from a lower-tiered (i.e., from a lower hierarchy) data node, the processor returns data from all data nodes in a pathway from the first data node to the second data node within the hierarchical database, except for these specific data nodes that have been blocked from associating with (e.g., being pointed to) the synthetic context-based object.

Note that in one embodiment, locating data nodes that have a same context as the synthetic context-based object is achieved by receiving a request for any data node that has this same context. Thus, the request is first received at the synthetic context-based object, which then points to (using pointers as described herein) any data node (in the database) that has the same context as the synthetic context-based object that is handling the data/data node request.